本章的主要内容是软件演化

软件演化的特性

            1985 年,Lehman 和 Belady 总结了软件在更改过程中演化的特性:1. 软件维护是一个必然的过程;2. 软件的不断修改会导致软件的退化;3. 软件系统的演化特性是在早起的开发阶段建立起来的。4. 软件开发的效率与投入的资源无关;5. 在软件系统中添加新功能无可避免的会产生新的缺陷。对于软件变更引起的各种问题,人们通常采用不同的策略进行处理:软件维护和软件再工程。

软件维护

      软件维护的概念

            软件维护是指在软件运行或维护阶段对软件产品所进行的修改,这些修改可能是改正软件中的错误,也可能是增加新的功能以适应新的需求,但是一般不包括软件系统结构上的重大改变,根据软件维护的不同原因,软件维护可以分成三种类型:改正性维护、适应性维护和完善性维护。

      软件维护的特点

            1. 软件维护受开发过程影响大;2. 软件维护困难多;3. 软件维护成本高。

      软件维护的过程

            1. 改正性维护:首先应该评价软件错误的严重程度,对于十分严重的错误,维护人员应该立即实施维护;对于一般性的错误,维护人员可以将有关的维护工作与其他开发任务一起进行规划。在有些情况下,有的错误非常严重,以致不得不临时放弃正常的维护控制工作程序,即不对修改可能带来的负作用作出评价,也不对文档作相应的更新,而是立刻进行代码的修改。这是一种救火式的改正性维护,只有在非常紧急的情况下才使用,这种维护在全部维护中只占一小部分比例。应当说明的是,救火式不是取消,只是推迟了维护所需要的控制盒评价。一旦危机取消,这种控制和评价活动必须进行,以确保当前的修改不会增加更为重要的问题。

            2. 适应性维护:首先应该确定软件维护的优先次序,再与其他开发任务一起进行规划。

            3. 完善性维护:考虑到商业上的需要和软件的发展趋势,有些完善性维护可能不会被接受。杜宇被接受的维护申请,应该确定其优先次序并规划其开发工作。

软件再工程

      软件再工程以系统理解为基础,结合逆向工程、重构和正向工程等方法,将现有系统重新构造成为新的形式。形象的说,就是”把今天的方法学用于昨天的系统以满足明天的需要“。典型的软件再工程过程,主要包括:对象选择、反向工程、文档重构、代码重构、数据重构和正向工程等活动。

posted on 2015-03-02 16:46  Tilefish  阅读(235)  评论(0编辑  收藏  举报