软件维护
(一) 软件维护的基本概念和基本活动
1、软件维护的定义
①改正新维护:诊断和改正用户使用软件时所发现的软件错误过程
②适应性维护:为了使软件和改变了的环境适当地配合而进行的修改软件的活动
③完善性维护:用户在使用软件的过程中,往往提出增加新功能或改变某些已有功能的要求,还可能要求进一步提高程序的性能。为了满足这类要求而修改软件的活动。
④预防性维护:为了提高未来的可维护性或可靠性而主动地修改软件的活动。
2、软件维护的特点
①理解别人写的程序通常非常困难
②需要维护的软件往往没有合格的文档,或者文档资料显著不足
③不能指望开发人员给人们说明软件
④绝大多数软件在设计时没有考虑将来的修改
⑤软件维护不是一项吸引人的工作
(二) 软件维护过程
①维护组织
②维护报告
③维护的事件流
④保存维护记录
⑤评价维护活动
(三) 软件可维护性
1、决定软件可维护性的因素
①可理解
②可测试性
③可修改性
④可为移植性
⑤可重用性
2、文档是影响可维护性的决定因素
①用户文档:描述系统的功能和使用方法
②系统文档:描述系统设计、实现和测试等各方面的内容
(四) 软件再工程技术 (也称预防性维护)
下列四种第一种很盲目,通常人们采用后3中做法,其中第4种做法成为软件再工程。
1、反复多次地做修改程序的尝试,与不可见的设计及源代码“顽强战斗”,以实现所有要求的修改
2、通过仔细分析程序尽可能多的掌握程序内部工作细节,以便有效修改它
3、在深入理解原有设计的基础上,用软件工程方法重新设计、重新编码和测试那些需要变更的软件部分
4、以软件工程方法学为指导,对程序全部重新设计、重新编码和测试,为此可以使用CASE工具(逆向工程和再工程工具)来帮助理解原有的设计。
软件再工程过程
(1)库存目录分析
(2)文档重构
(3)逆向工程:分析程序以便在比源代码更高的抽象层次上创建出程序的某种描述的过程
(4)代码重构
(5)数据重构
(6)正向工程:也称革新或改造,不仅仅从现有程序恢复设计信息,而且使用该信息去改变或重构现有系统,以提高其整体质量。