维 护
维 护
8.1 软件维护的类型
软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。按照不同的维护目的,维护工作可分成4类。
一、软件维护的类型
-
完善性维护(Perfective Maintenance)
扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要。 -
纠错性维护(Corrective Maintenance)
对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。 -
适应性维护(Adaptive Maintenance)
要使运行的软件能适应运行环境的变动而修改软件的过程。 -
预防性维护(Preventive Maintenance)
为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进行修改。
四类软件维护的比例
二、维护的步骤
三、维护工作的组织管理
软件维护工作不仅是技术性的,它还需要大量的管理工作与之相配合,才能保证维护工作的质量。管理部门应对提交的修改方案进行分析和审查,并对修改带来的影响作充分的估计,对于不妥的修改予以撤销。需修改主文档时,管理部门更应仔细审查。
8.2 软件维护的特性
一、结构化维护与非结构化维护
- 结构化维护 — 指软件开发过程是按照软件工程方法,软件的维护过程,有一整套完整的方案、技术、审定过程。
- 非结构化维护 — 缺乏必要的文档说明,难于确定数据结构、系统接口等特性。维护工作令人生畏,事倍功半。
二、软件维护的代价
维护费用高达开发费用的55% — 70%,而且逐年上涨。
维护中还可能引入新的潜在错误。
Belady 和 Lehman 提出软件维护工作模型:
M=P+K*e(C – D)
其中:
M—维护总工作量
P—生产性活动 K—经验常数
C—程序复杂度(由非结构化维护引起的)
D—对维护软件熟悉程度的度量。
8.3 软件维护的技术
一、面向维护的技术
在软件开发阶段用来减少错误,提高软件可维护性的技术。涉及到软件开发的所有阶段。
可维护性(可测试性、可理解性、可修改性、可移植性、可重用性)
二、软件支援技术
在软件维护阶段用于提高维护工作的效率和质量的技术。主要用到测试阶段的技术。