软件可维护性理论简介

1.基本定义和说明

我们将一个软件系统可被修改的难易程度称为它的可维护性。
一个软件系统的可维护性由其源代码的多个属性决定。
可维护性(一个软件系统可被修改的难易程度)与性能(一个软件系统执行的时空开销,这里往往指得到输出的快慢)是软件质量的两个重要特征。(根据国际标准,软件质量可以划分为八个特征:可维护性功能可适性性能效率兼容性可使用性可靠性安全性可移植性。)

2.软件维护的四种方式

  • 纠正性维护:发现并修复Bug。
  • 适应性维护:系统需要去适应操作环境的改变——例如,操作系统或者技术的升级。
  • 完善性维护:系统用户(或者其他能够影响到系统的人,例如股东)有新的需求,或者对之前的需求有变化。
  • 预防性维护:确定可以改进质量或者预防将来产生Bug的方法。

3.Why is important?

  • 低可维护性会对业务造成严重影响。
  • 可维护性是其他质量特征的推动者。

4. 十条指导性原则——可维护性软件概述

  • 编写短小的代码单元。
    短小的代码单元(方法和构造函数)更易于分析、测试和重用。
  • 编写简单的代码单元。
    拥有更少决策点的代码更易于分析和测试
  • 不写重复代码。
    任何时候都应该避免源代码重复使用,因为修改时就需要对每处代码进行修改。重复代码也是产生回归bug(regression bug)的一个来源。
  • 保持代码单元的接口简单。
    含有更少参数的代码单元(方法和构造函数)更易于测试和重用。
  • 分离模块之间的关注点。
    松耦合的模块(类)更易于修改,也利于构建模块化的系统。
  • 架构组件松耦合。
    系统顶层组件之间越是松耦合,越易于修改,也利于构建更加模块化的系统。
  • 保持架构组件之间的平衡。
    一个平衡度很好地架构拥有不多不少的组件、统一的代码规模以及最大程度的模块化,并通过有隔离关注点使得修改变得很容易。
  • 保持小规模代码库。
    大型系统之所以难以维护,是因为需要分析、修改并测试更多的代码。同样,大型系统中维护每一行代码的效率也比小型系统要低。
  • 自动化开发部署和测试。
    自动化测试(即测试不需要人工干预即可执行)可以得到对修改的有效性的及时反馈。手动测试难以形成规模。
  • 编写简洁的代码。
    代码库中存在越多的TODO、无用代码等遗留产物,新的团队成员就越难以高效工作,从而影响维护工作的效率。

5.可维护性的三条基本理论

  • 坚持简单的原则最有助于提高可维护性。
  • 可维护性不是开发完才去考虑的,而应该是在项目开发的一开始就加以考虑。每个人的贡献都应该计算在内。
  • 对各个原则违背会带来不同的影响,有些严重程度甚于其他。一个软件系统越遵守原则,可维护性越高。

6.对可维护性的常见误解

  • 可维护性与使用的语言有关。
  • 可维护性与行业有关。
  • 可维护性等价于Bug数量的多少。
  • 可维护性是一个“非此即彼”的是非问题。

7.推荐阅读

  • 《重构:改善既有的代码设计》
  • 《代码整洁之道》
  • 《代码质量》
  • 《设计模式:可复用面向对象软件的基础》
发布了479 篇原创文章 · 获赞 972 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/103163747