软件工程的主要目的:提高软件的可维护性,减少软件维护所需的工作量,降低软件系统的总成本。
软件维护是软件生命周期的最后一个阶段,大型软件的维护成本高达开发成本的4倍左右,现在国外很多软件开发组织将60%以上的人力用于软件维护。
软件维护的定义:在软件已经交付使用之后,为了改正错误或者满足新的需要而修改软件的过程。
具体的4项软件维护活动:
1)改正性维护:占全部维护活动的17%-21%,是用于诊断和改正错误的过程:因为任何一个大型软件系统都不可能在测试阶段暴露出所有的问题;
2)适应性维护:占全部维护活动的18%-25%,是用于和变化的环境适当配合而进行的修改软件的活动:因为软件的使用寿命往往会超过它的运行环境;
3)完善性维护:占全部维护活动的50%-66%,是用于满足用户提出增加新的功能或修改已有功能的建议,和适应一般性改进意见的修改软件的活动;
4)预防性维护:占全部维护活动的4%左右,是为了改进未来的可维护性或可靠性,为未来的改进奠定更好的基础而修改软件。
软件维护的特点:
1)结构化维护和非结构化维护差别巨大:
2)维护的代价高昂:
3)维护的问题很多:
软件维护过程:
1)维护组织:
2)维护报告:维护申请报告、软件修改报告
3)维护的事件流:
4)保存维护记录:
5)评价维护活动:
软件的可维护性定义:维护人员理解、改正、改动或是改进这个软件的难易程度‘
决定软件可维护性的因素:
A.可理解性:外来读者理解软件结构、功能、接口和内部处理过程的难易程度;
B.可测试性:
C.可修改性:
D.可移植性:
E.可重用性:
文档:
用户文档:功能:主要用于描述系统功能和使用方法,不关心如何实现;
组成:(1)功能描述:系统能做什么;
(2)安装文档:说明怎样安装和配置系统;
(3)使用手册:通过实例描述如何使用系统,以及一般性的出错处理;
(4)参考手册
(5)操作员指南
软件再工程过程:1.库存目录分析;2.文档重构;3.逆向工程;4.代码重构;5.数据重构;6.正向工程。
系统文档:描述系统设计、实现和测试等方面的内容;