1、内容提纲 软件演化不可避免 软件演化的处理策略 软件维护 维护的分类 维护的特点 维护的过程 软件再工程第1页/共19页软件演化是不可避免的软件演化是不可避免的 软件的缺陷需要修复 软件在使用过程中,新的需求不断出现 商业环境在不断地变化 计算机软件、硬件环境升级,需要更新现有系统 软件的性能和可靠性需要改进采取适当的策略,有效地处理软件演化引起的各种问题第2页/共19页软件演化的处理策略软件演化的处理策略 软件维护 为了修改软件缺陷或增加新的功能而 对软件的组件进行变更 不对软件的体系结构做重大改变 软件再工程方法 为了避免软件退化而对软件的一部 分、甚至全部重新设计、编码和测 试,提高软件
2、的可维护性、可靠性 等第3页/共19页软件维护的分类 完善性维护(Perfective Maintenance)扩充原有系统的功能,提高原有系统的性 能,或满足用户的实际需要 纠错性维护(Corrective Maintenance)对在测试阶段未能发现的,在软件投入使用所逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。第4页/共19页软件维护的分类 适应性维护(Adaptive Maintenance)要使运行的软件能适应运行环境的变动而修改软件的过程。预防性维护(Preventive Maintenance)为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定
3、更好的基础而对软件进行修改。第5页/共19页四类维护的比例第6页/共19页软件维护受开发过程影响大 结构化维护 采用软件工程方法进行开发,保证每个阶段有完整且详细的文档 非结构化维护 不采用软件工程方法开发软件,软件只有程序而欠缺文档。软件维护的特点第7页/共19页软件维护的特点软件维护的特点 维护的代价高昂第8页/共19页软件维护的特点软件维护的特点 维护的问题很多 理解别人的程序很难 文档资料不齐全 人员组成结构变更 模块独立性不强 软件维护不是一项吸引人的工作第9页/共19页维护的组织形式变更控制管理机构维护请求维护管理员配置管理员维护负责人维护人员第10页/共19页维护的过程维护申请维
4、护分类影响分析版本规划错误修正环境适应新功能开发变更实施软件发布第11页/共19页软件再工程 定义 针对遗留系统,进行维护的过程 选取整个软件或软件中的核心部分,采用先进的软件工程方法进行设计、编写和测试的过程。目的 提高软件的可维护性、可靠性,以保证系统正常运行。优势 减少风险 降低成本第12页/共19页软件再工程软件再工程正向、逆向正向、逆向第13页/共19页软件再工程的过程模型软件再工程的过程模型遗留系统对象选择反向工程文档重构代码重构数据重构正向工程再工程系统第14页/共19页错误修正 救火式改正 错误十分严重,优先级高 立即实施维护 事后,补充副作用评价和更新文档 一般性改正 事前,评价改正的副作用 和其他开发任务一起,规划维护工作 事后,更新文档返回第15页/共19页适应性修改 确定软件维护的优先次序 和其他开发任务一起规划返回第16页/共19页完善性修改 确定是否采纳维护请求 确定软件维护的优先次序 和其他开发任务一起规划返回第17页/共19页数据重构程序1程序2程序3程序m文件1文件2文件n程序1程序2程序3程序mDBMS返回第18页/共19页感谢观看!第19页/共19页