第9章 软件维护 (软件工程的近期进展、管理与环境)

  • 软件产品交付用户后,就进入生存周期的最后一个时期 —— 运行时期
  • 维护是生存周期中花钱最多、延续时间最长的活动

1. 软件维护的种类

  • 目的:满足用户对已开发产品的性能与运行环境不断提高的需要,进而延长软件的寿命

  • 定义:软件系统交付使用以后,为了改正或满足新的需要而修改软件的过程

  • 种类:

    1. 完善性维护(perfective maintenance) :加强软件功能为目标
    2. 适应性维护(adaptive maintenance):为了适应运行环境变化
    3. 纠错性维护(corrective maintenance):纠正软件在开发期间的遗留错误
    4. 预防性维护(preventive maintenance):改进软件的可维护性、减少将来的维护工作量
    

2. 软件的可维护性

2.1 可维护性的含义

  • 软件维护的含义:指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。

  • 可维护性是衡量维护容易程度的一种软件属性

  • 影响可维护性的软件属性(定性说法) :

    可理解性(understandability) 
    可修改性(modifiability) 
    可测试性(testability)
    

2.2 提高可维护性的方法

  • 提高软件的可维护性,最根本的目的是是每个开发人员懂得维护的重要性,在开发阶段就以减少今后的维护工作量为努力的目标,可以提供完整和一致的文档(帮助维护人员读懂程序,方便被维护软件的测试),采用现代化的开发方法

3. 软件维护的实施

  • 维护申请单和软件修改报告单:这是维护时期新增加的两个文档,分别用于维护开始之前和结束之后

  • 维护申请单(MRF,maintenance request form)又称修改申请单或软件问题报告单(SPR,software problem report)

  • 维护的副作用:

    1. 修改编码的副作用:
      修改源代码时可能引入错误:
        删除或修改一个标号、标识符、子程序
        修改文件的打开或关闭
    
    2. 修改数据的副作用 
      容易导致设计与数据不相容的错误可以有:
        重新定义局部的或全局的常量
        重新定义记录或文件的格式
        重新初始化控制标志或指针
        重新排列输入/输出或子程序的参数
    
    3. 修改文档的副作用 
      对数据流、软件结构、 模块逻辑或任何其它有关特性进行修改时,必须对相关技术文档进行相应修改
    

4. 软件维护的管理

  • 维护管理文档:维护申请单、软件修改报告单、维护日志、维护申请摘要报告(定期报告)、维护趋势图(不定期报告)

5. 软件配置管理

  • 软件配置管理定义:对软件开发组所建立的软件的修改进行标识、组织和控制的艺术,其目标使减少错误和提高生产力

  • 软件配置项:

    软件过程的输出信息可以分为3个主要类别

    1. 计算机程序(源代码和可执行程序)
    2. 描述计算机程序的文档(针对技术开发者和用户)
    3. 数据(包含在程序内部或外部)

    这些项包含了所有在软件过程中产生的信息,总称为软件配置项(software configuration item,简称SCI

6. 软件再工程

  • 软件再工程(software reengineering)含义:就是将新技术和新工具应用于老的软件的一种较“彻底”的预防性维护
  • 软件工程不同于一般的软件维护,后者是局部的,以完成纠错或适应需求变化为目的,而软件再工程则是运用逆向工程、软件重构等技术,在充分理解原有软件的基础上,进行分解、综合,并重新构建软件,用以提高软件的可理解性、可维护性、可复用性或演化性

6.1 软件再工程过程模型

  • 定义软件工程6种活动

6.2 逆向工程

  • 逆向工程:从源代码出发,重新恢复设计文档和需求规格说明书

6.3 软件重构

  • 软件重构又可区分为:
    1. 代码重构
    2. 数据重构
  • 重构不改变系统的整体体系结构,否则就变成了正向工程

6.4 正向工程

  • 正向工程:改变或重构现存系统
posted @ 2024-12-19 14:35  awei040519  阅读(173)  评论(0)    收藏  举报