【菜鸟日记】软件构造笔记 6.1 面向可维护性的软件构造方法(详细版)

6.1.1 软件维护的基本概念

软件维护的类型

  • 纠正性维护
  • 适应性维护
  • 完善性维护
  • 预防性维护
    ps:尽量保证软件的熵值较小,当熵值变大时,要注意修补使熵值变小。

评价软件可维护性的指标

  • 易于纠正错误和提升性能
  • 易于增加功能
  • 易于改变
  • 适应用户个性化需求
  • 发布后,软件受支持的程度常用的

常用的软件可维护性指标

  1. 独立路径的个数 :越多,软件可维护性越差,需要测试的数据越多
    ps:独立路径仅与不同的点的个数有关,和产生的环的圈数多少无关,一圈和两圈效果相同。(下图中R1出现一次和两次为同一个独立路径)

在这里插入图片描述

  1. 运算符和操作数的数目
  2. 可维护性指数(MI):越大可维护性越好
  3. 继承的深度:越深可维护性越差
  4. 类耦合度:好的软件应该是高内聚,低类耦合
  5. 单元测试覆盖率高

一些其他的指标
在这里插入图片描述

6.1.2设计模块的原则

评估模块性的五个标准

  • 可分解性:将问题分解为各个可独立解决的子问题,使模块之间的依赖关系显式化和最小化
  • 可组合性:可容易的将模块组合起来形成新的系统,使模块可在不同的环境下复用
  • 可理解性:每个子模块都可被系统设计者容易的理解
  • 可持续性:规格说明小的变化将只影响一小部分模块,而不会影响整个体系结构
  • 保护性:运行时的不正常将局限于小范围模块内

模块设计原则

  • 直接映射:模块的结构与现实世界中问题领域的结构保持一致,不考虑计算机的底层实现(影响持续性和可分解性)
  • 尽可能少的接口:模块应尽可能少的与其他模块通讯(影响可持续性、保护性、可理解性、可组合性)
  • 尽可能小的接口:如果两个模块通讯,那么它们应交换尽可能少的信息(影响可持续性和保护性)
  • 显式接口:当A与B通讯时,应明显的发 生在A与B的接口之间
  • 信息隐藏:经常可能发生变化的设计决策应 尽可能隐藏在抽象接口后面

巧记
在这里插入图片描述

6.1.3内聚性和耦合性

左边低内聚高耦合,有边高内聚低耦合,右边更好
在这里插入图片描述

6.1.4 SOLID

SOLID的含义:

(SRP) The Single Responsibility Principle :单一责任原则

类中的方法必须要有紧密的联系

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(OCP) The Open-Closed Principle: 开发封闭原则

OCP的含义:对扩展开放,对修改封闭,通过继承和组合改变/扩展功能
举一个反例:这个不利于扩展,一旦要扩展必须有要修改之前的类在这里插入图片描述
整体替换
在这里插入图片描述

(LSP) The Liskov Substitution Principle :Liskov替换原则

子类型必须能够替换其基类型,有一个反例:基类型中setWidth只改变m_width,而在子类型中m_height也被改变了,所以它不能替换基类型中的setWidth;SetHeight同理

在这里插入图片描述

(ISP) The Interface Segregation Principle :接口替换原则

接口尽可能的小,如果接口中有用户用不上的接口,应该去掉。比如:机器人不应该有eat的选项,eat应该作为worker的私有方法在这里插入图片描述
在这里插入图片描述

(DIP) The Dependency Inversion Principle :依赖转置原则

在这里插入图片描述
在这里插入图片描述

6.1.5 GRASP:通用责任分配软件模式(原则)

它包含:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值