8.4 软件维护中存在的问题


  • 软件维护困难的表现
    1. 软件维护的困难主要表现在以下几个方面:
      • 读懂别人的程序是很困难的,而文档的不足更增加了这种难度;
      • 文档的不一致性是软件维护困难的又一个因素, 解决方法就是要加强开发工作中文档的版本管理;
      • 软件开发和软件维护在人员和时间上存在差异;
      • 软件维护不是一件吸引人的工作。
  • 软件维护的副作用
    1. 维护的副作用是指由于修改软件而导致新的错误的出现或者新增加一些不希望发生的情况。一般维护产生的副作用主要有如下 3 种:
      • 修改代码的副作用
        1. 删除或修改一个子程序、删除或修改一个标号、删除或修改一个标识符、改变程序代码的时序关系、改变占用存储的大小、改变逻辑运算符、修改文件的打开或关闭、改进程序的执行效率,以及把设计上的改变翻译成代码的改变、为边界条件的逻辑测试做出改变时,都容易引入错误。
      • 修改数据的副作用
        1. 在重新定义局部的或全局的常量、重新定义记录或文件的格式、增大或减小一个数组或高层数据结构的大小、修改全局或公共数据、重新初始化控制标志或指针、重新排列输入/输出或子程序的参数时,容易导致设计与数据不相容的错误。
      • 修改文档的副作用
        1. 对交互输入的顺序或格式进行修改,如果没有正确地记入文档中,就可能引起重大的问题
  • 软件维护的代价
    1. 影响维护工作量的因素主要有以下六种:
      • 系统的大小;
      • 程序设计语言:语言的功能越强,生成程序的模块化和结构化程度越高,所需的指令数就越少,程序的可读性越好;
      • 系统年龄:系统使用时间越长,所进行的修改就越多,而多次修改可能造成系统结构变得混乱;
      • 数据库技术的应用:可以简单而有效地管理和存储用户程序中的数据,减少生成用户报表应用软件的维护工作量;
      • 先进的软件开发技术 :可减少大量的维护工作量;
      • 其它一些因素,如应用的类型、数学模型、任务的难度、开关与标记、IF嵌套深度、索引或下标数等,对维护工作量也有影响。
    2. 有形的软件维护成本是花费了多少钱,而其他非直接的成本有更大的影响。例如,无形的成本可以是:
      • 一些看起来是合理的修复或修改请求不能及时安排,使得客户不满意;
      • 变更的结果把一些潜在的错误引入正在维护的软件,使得软件整体质量下降;
      • 当必须把软件人员抽调到维护工作中去时,就使得软件开发工作受到干扰;
        维护工作量可以分成生产性活动(如分析和评价、设计修改和实现)和“轮转”活动(如力图理解代码在做什么、试图判明数据结构、接口特性、性能界限等)
    3. Belady 和Lehman 提出一个软件维护工作量的模型如下:M=P+K * exp(C-D)其中,M 表示维护中消耗的总工作量;P 表示上面描述的生产性活动工作量;K 是一个经验常数;C 表示由非结构化维护(缺乏好的设计和文档)而引起的程序复杂性的度量;D 表示对维护软件熟悉程度的度量;
    4. 由上式可以发现,C 越大,D 越小,那么维护工作量就成指数的增加。
    5. 也就是说,如果使用了不好的软件开发方法(未按软件工程要求做),原来参加开发的人员或小组不能参加维护的话,则维护工作量(及成本)将按指数级增加。

文章作者: Chipfron
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Chipfron !
  目录