软件维护与演化
21-软件维护与演化
软件交付的主要活动
1.安装部署。2.用户培训与文档支持。3.项目评价(汲取经验教训)。
软件维护
软件交付之后修改软件系统或其部件的活动过程,可以修正缺陷,完善系统功能,提高性能或其他属性、适应变化的环境。演化和维护是等价的词汇。
软件维护的类型
完善性维护:为了满足新需求,增加软件功能。
适应性维护:为了使软件适应新环境。
修正性维护:为了排除系统中的缺陷。
预防性维护:为了提高可维护性。
软件维护的高代价性的原因
变更的频繁性:
软件变更的频率和幅度相当大。
新增需求是影响最大的变更类型,缺陷修复是发生最为频繁的变更类型。
维护的困难性:
程序理解:程序理解困难。
影响分析:修改一部分代码时,可能会影响到其他部分。
开发可维护的软件的方法
考虑软件的可变更性:软件开发时就考虑为可能的变更进行设计。如面向对象设计中的开闭原则
为降低维护困难而开发:编写详细的技术文档并保持更新,保证代码的可读性,维护需求跟踪连,维护回归测试基线。
软件演化生命周期模型
初始开发:第一个版本的软件产品开发。
演化:对演化增量进行处理以保持软件产品的持续增值。
服务:用户使用,开发者维护,软件不在持续增加价值。
逐步淘汰:用户仍使用,开发者不维护。
停止:用户不使用,开发者不维护。
(开演服汰停)
软件维护与演化的常见技术
逆向工程
分析目标系统,标识系统的部件及其交互关系,
原理是抽取软件系统的需求和设计而隐藏实现细节,
使用其他形式或更高层的抽象创建系统表现的过程,
作用是理解遗留软件并对其进行维护。
再工程
检查和改造一个目标系统,用新的模式及其实现复原该目标系统,以改善系统或促进系统的再利用,作用是通过修改软件来处理遗留软件。
区别(关注点)
逆向工程关注点是理解软件而不是修改软件,再工程关注如何修改软件,不会花费很大力气理解软件。处理遗留软件时,再工程之前通常需要一个前导的逆向工程。