admin管理员组

文章数量:1579086

1.软件维护与演化

软件维护(Software maintenance) 是在软件产品交付后对其进行的修改,以纠正故障、提高性能或其他属性

修复完代码之后还要测试所做的修改、进行回归测试、记录发生了什么变化

软件维护分为几类:

  • 纠错性维护:交付后对软件产品进行的反应性修改,以纠正发现的问题
  • 适应性维护:交付后对软件产品进行的修改,以保持软件产品在变化或变化的环境中可用
  • 完善性维护(最主要):在交付后增强软件产品,以提高性能或可维护性
  • 预防性维护:在交付后对软件产品进行修改,以便在软件产品中的潜在故障变为有效故障之前检测并纠正这些故障。

软件演化(Software evolution):最初开发软件,然后由于各种原因不断更新的过程。软件的大部分成本来自于维护阶段

2.维修性指标

一些常用的可维护性度量:

  • 圈/环复杂度 :
    用来度量代码的结构复杂性
    计算程序独立路径的数量创建的
    越复杂,越难以实现高代码覆盖率

  • 代码行数:
    指示代码中的大致行数
    表示某个类型或方法做了太多的事情,要进行方法拆分
    也可以表示类型或方法可能很难维护

  • Halstead Volume:
    基于源代码中(不同的)运算符和操作数数量的复合度量

  • 可维护性指数:
    计算一个介于0和100之间的指数值,表示代码维护的相对容易程度

  • 继承的层次数
    指示扩展到类层次结构根的类定义数

  • 类之间的耦合度

  • 单元测试的覆盖度

自然,代码越复杂,越难以维护

3.模块化设计与模块化原则

模块化编程(Modular programming): 是一种设计技术,它强调将程序的功能分离为独立的、可互换的模块,使每个模块都包含执行所需功能的一个方面所必需的一切。

设计的目标是将系统划分为模块,并以以下方式在组件之间分配责任:

  • 高内聚

视类与类之间的关系而定,高,意思是他们之间的关系要简单,明了,不要有很强的关系,不然,运行起来就会出问题。一个类的运行影响到其他的类。

  • 低耦合

耦合:是对模块间关联程度的度量。

模块化降低了程序员在任何时候必须处理的总复杂性:

  • 分离关注点
  • 信息隐藏

内聚和耦合原则可能是评估设计可维护性的最重要的设计原则

3.1 评价模块性的五个标准

  1. 可分解性:较大的组件是否分解为较小的组件
    目标:使模块之间的依赖关系显式化和最小化
  2. 可组合性:较大的部件是由较小的部件组成的吗
    目标:使模块可在不同的环境下复用
  3. 可理解性:组件是否可以单独理解
  4. 可持续性:发生变化时受影响范围最小
  5. 出现异常之后的保护:出现异常后受影响范围最小</

本文标签: 可维护性技术软件