八 维护
考纲:软件维护的概念和特点,软件维护的过程,软件维护过程中所需采用的主要技术,软件可维护的属性,软件再工程
软件维护的概念和特点
定义:在软件交付使用之后,为了改正错误或软件满足新的需求而修改软件的过程
四类维护(改适完预)
- 改正性维护:把诊断和改正错误的过程称为改正性维护。
- 适应性维护:为了和变化了的环境适当的配合而进行修改软件的活动。
- 完善性维护:为了满足用户的新要求而进行的维护。(占比最大)
- 预防性维护:当为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件的活动。
软件维护的特点:
- 结构化维护与非结构化维护差别巨大
- 维护的代价高昂
- 维护的问题很多
软件维护过程
- 建立维护组织
- 书写维护报告
- 规定维护的事件流
- 保存维护记录
- 评价维护活动
软件维护过程中所需采用的主要技术
- 软件重用技术:通过复用现有软件模块或库来减少维护工作量和提高软件质量。可以使用已经测试过的代码、强健性的算法和可信任的组件,降低开发和测试成本。
- 逆向工程:通过对现有软件进行分析,提取和理解它们的结构和功能,从而帮助了解它们的行为和实现,并进行修改或更新。逆向工程可以帮助极大程度地降低维护成本,同时提高生产力。
- 再工程:通过对现有软件进行重构、重新设计和重建,提高软件质量并增强可维护性。再工程通常会涉及到重构和修改代码、更新文档和改进结构等活动。
软件可维护的属性
决定软件可维护性的因素:
- 可理解性
- 可测试性
- 可修改性
- 可移植性
- 可重用性
文档是影响可维护性的决定因素
①用户文档:描述系统的功能和使用方法
②系统文档:描述系统设计、实现和测试等各方面的内容
软件再工程
下列四种第一种很盲目,通常人们采用后3中做法,其中第4种做法成为软件再工程。
1、反复多次地做修改程序的尝试,与不可见的设计及源代码“顽强战斗”,以实现所有要求的修改
2、通过仔细分析程序尽可能多的掌握程序内部工作细节,以便有效修改它
3、在深入理解原有设计的基础上,用软件工程方法重新设计、重新编码和测试那些需要变更的软件部分
4、以软件工程方法学为指导,对程序全部重新设计、重新编码和测试,为此可以使用CASE工具(逆向工程和再工程工具)来帮助理解原有的设计。
软件再工程过程
(1)库存目录分析
(2)文档重构
(3)逆向工程:分析程序以便在比源代码更高的抽象层次上创建出程序的某种描述的过程
(4)代码重构
(5)数据重构
(6)正向工程:也称革新或改造,不仅仅从现有程序恢复设计信息,而且使用该信息去改变或重构现有系统,以提高其整体质量。