第8章 维护(软件工程导论 第6版)

软件工程主要目的:提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本

1、软件维护的定义

1)软件维护:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

2)四项维护活动:

(1)改正性维护:在任何大型程序的使用期间,用户必然会发现程序错误,并且把他们遇到的问题报告给维护人员。诊断和改正错误的过程称为改正性维护。

(2)适应性维护:为了和变化了的环境适当地配合而进行的修改软件的活动,是既必要又经常的维护活动。

(3)完善性维护:在使用软件的过程中用户往往提出增加新功能或修改已有功能的建议,还可能提出一般性的改进意见。为了满足这类需求需要进行完善性维护。

(4)预防性维护:为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件。

2、软件维护的特点

1)结构化维护与非结构化维护差别巨大

2)维护的代价高昂

维护的代价:维护费用(最明显的代价)

                     可用资源供维护任务使用,耽误甚至丧失了开发的良机(无形的代价)

                     当看来合理的有关改错或修改的要求不能及时满足时将引起用户不满(无形的代价)

                     由于维护时的改动,在软件中引入了潜伏的错误,降低了软件的质量(无形的代价)

                     当必须把软件工程师调去从事维护工作时,将在开发过程中造成混乱(无形的代价)

3)维护的问题很多

软件维护的部分问题:

       理解别人写的程序通常非常困难,而且困难程度随着软件配置成分的减少而迅速增加

       需要维护的软件往往没有合格的文档,或者文档资料显著不足

       要求对软件进行维护时,不能指望由开发人员给人们仔细说明软件

       绝大多数软件在设计时没有考虑将来的修改

       软件维护不是一项吸引人的工作

3、软件维护过程

维护过程:本质上是修改和压缩了的软件定义和开发过程

1)建立维护组织

2)书写维护报告

3)规定维护事件流

4)保存维护记录

5)评价维护活动

4、软件的可维护性

1)可维护性:维护人员理解、改正、改动或改进这个软件的难易程度。

2)决定软件可维护性的因素

(1)可理解性:表现为外来读者理解软件结构、功能、接口和内部处理过程的难易程度。

(2)可测试性:诊断和测试的容易程度取决于软件容易理解的程度。

(3)可修改性

(4)可移植性:把程序从一种计算环境转移到另一种计算环境的难易程度。

(5)可重用性:同一事物不做修改或稍加改动就在不同环境中多次重复使用。

3)文档:影响软件可维护性的决定因素。软件系统的文档分:用户文档、系统文档。

6、软件再工程

1)库存目录分析

(1)每个系统组织都应该保存其拥有的所有应用系统的库存目录,该目录包含关于每个应用系统的基本信息。

(2)下述3类程序可能成为预防性维护的对象

✬预定将使用多年的程序

✬当前正在成功地使用着的程序

✬在最近的将来可能要做重大修改或增强的程序

2)文档重构(三种情况+处理方法)

(1)程序相对稳定,可能不会再经历什么变化:文档保持现状

(2)必须更新文档,但资源有限:使用时建文档

(3)系统是完成业务工作的关键,必须重构全部文档:文档最小量重构

3)逆向工程

是分析程序以便在比源代码更高的抽象层次上创建出程序的某种表示的过程。逆向工程是一个恢复设计结果的过程,从现存的程序代码中抽取有关数据、体系结构和处理过程的设计信息。

4)代码重构

最常见的再工程活动。老程序具有比较完整、合理的体系结构,但是个体模块的编码方式是难于理解、测试和维护的。这种情况下,可以重构可疑模块的代码。

5)数据重构

发生在相当低的抽象层次上,是一种全范围的再工程活动。

6)正向工程(革新/改造)

不仅从现有程序中恢复设计信息,而且使用该信息去改变或重构现有系统,以提高其整体质量。

猜你喜欢

转载自blog.csdn.net/weixin_65213208/article/details/127407885
今日推荐