1、软件维护

修复错误、改善性能。

修改后要进行回归测试,确保没有引入新的故障。

2、可维护性的度量

圈/环复杂度:独立路径的数量、代码行数、可维护性指数MI、继承的层次数、类之间的耦合度、单元测试的覆盖度

3、模块化设计

高内聚低耦合、分离关注点、信息隐藏。

五个标准:1、可分解性,将问题分解成小问题;2、可组合性;3、可理解性;4、可持续性,发生变化时产生的影响较小;5、保护性,异常、错误的影响小。

五个方法:1、直接映射;2、尽量少的接口;3、尽量小的接口,两个模块交换较少的信息;4、明显的接口;5、信息隐藏。

高内聚低耦合:模块间接口数量少、模块间接口复杂性低。

4、SOLID

SRP(单一责任原则):一个类,一个责任。违反SRP的例子:

OCP(开放/封闭原则):对扩展性开放,对修改内部代码封闭。一个可行的方法是利用抽象,即客户端依赖接口,若要修改功能,在接口上派生子类。

错误示例:如若增加功能,需要改if-else结构。

修改:

ISP(接口隔离原则):使用较小的接口,不同的接口面向不同的客户端提供服务,不要让很多客户端都依赖于一个接口,这样会有很多客户端不需要的方法。

例子:

DIP(依赖转置原则):高层模块不依赖于低层模块,都依赖于抽象(接口);抽象不依赖于实现细节,而是实现细节依赖于抽象。
例子,下图中,黄线上方的部分,是客户端直接调用底层具体类,黄线下方的部分,客户端依赖于抽象接口,而不直接依赖于具体类:

总结:面向对象的两大武器:抽象(使用接口)和分离(使用小接口)。

5、GRASP

GRASP是关于如何为“类”和“对象”指派“职责”的一系列原则

5-1 可维护性的度量和构造原则相关推荐

  1. 第六章代码的可维护性——可维护性的度量和构造原则

    1.软件的维护与演化 我们一直说软件维护,那么什么是软件维护呢?其实就是修改错误.改善性能的过程.运维是软件开发中最困难的工作之一,他需要处理各种来自用户报告的问题与故障. 软件维护主要针对一下几种( ...

  2. 软件构造学习笔记-第九周、第十周

    因为本周五开始五一假期,所以只有一节软件构造课.因为内容还属于创建模式.结构模式.行为模式.将该堂课的内容整合到本博客中.本周的重点是程序开发模式,在写代码之前首先充分考虑采用哪种模式更有利于开发.维 ...

  3. Review of Software Construction

    ソフトウェア構築の復習 @1.0 ver. 文章目录 ソフトウェア構築の復習 @1.0 ver. @[toc] 第一章 第一节 软件构造的多维视图 Buildtime概述 Runtime概述 第二节 ...

  4. 【哈工大软件构造】学习笔记10 第十章、第十一章、第十二章

    目录 第十章 面向可维护性的构造技术 1 软件维护和演化 2 可维护性的度量 3 模块化设计和模块性准则 模块划分的五个准则 模块设计的五个原则 耦合度和聚合度 4 OO设计准则:SOLID SRP ...

  5. 原则,策略,规范也是构架的一部分

    原则,作为大的方向,影响到构架的设计和实现 运行效率和开发效率优先级, 可读性和开发效率 安全性 稳定性 负载量 团队开发 沟通原则 确定原则就是确定一个总体的方向,当一些可选项发生冲突的时候,就可以 ...

  6. 《设计模式之禅》之——六大设计原则解读

    一.单一职责原则(Single Responsibility Principle,SRP) 1. 单一职责原则定义 应该有且仅有一个原因引起类的变更. 2. 单一职责原则好处 类的复杂性降低,实现什么 ...

  7. 设计模式01-七大设计原则

    设计模式01-七大设计原则 文章目录 设计模式01-七大设计原则 开闭原则-Open Close 依赖倒置原则-Dependence Inversion 单一职责原则-Simple ResponsiB ...

  8. OO六大设计原则最全分析总结篇

    文章目录 1. 单一职责原则(SRP) 2. 开放封闭原则(OCP) 3. 里氏替换原则(LSP) 4. 依赖倒置原则(DIP) 5. 接口隔离原则(ISP) 6. 迪米特法则(LOD) 面向对象(O ...

  9. (2019春)软件构造:雨课堂试卷(第6章)

    目录 6-1 可维护性 单选题 第1题 1分 多选题 第2题 2分 多选题 第3题 2分 单选题 第4题 2分 单选题 第5题 1分 单选题 第6题 1分 6-2 面向可维护性的设计模式 单选题 第1 ...

最新文章

  1. 准确率(Precision)、召回率(Recall)以及综合评价指标(F1-Measure )
  2. 将已有项目提交到github/从github上pull到本地
  3. 如何开始企业网站的需求分析?
  4. 计算节点宕机了怎么办?- 每天5分钟玩转 OpenStack(43)
  5. 字典树 ZOJ1109 HDU1251 PKU1204 HDU1075
  6. cortex a7 a53_小号“A7”终于亮相,配4米9车长 大溜背!堪称15万内最强颜值!
  7. UESTC学位论文latex模板下载
  8. 【转】浅谈React、Flux 与 Redux
  9. MongoDB学习总结(五) —— 安全认证
  10. Linux 重定向与连接符详解
  11. android app定时自动重启,android 应用程序自动重启
  12. 阿里云图标icon使用symbol 引用方式
  13. Apollo课程学习2——高精地图HD Map
  14. [Unity-经验]从购买云服务器到发布Unity WebGL项目
  15. python自定义安装选项_Python安装教程详解
  16. 免费制作字体软件 - FontForge
  17. Latex 公式 语法 [维基百科]
  18. linux下gcc编译的四个步骤,linux:gcc编译程序的四个阶段
  19. HZNUOJ1527
  20. 基于安卓系统的SM4-SM2/3加解密软件开发报告

热门文章

  1. DELL服务器故障代码.xlsx
  2. (转):GOF设计模式趣解(23种设计模式)
  3. 【转】 基于C#.NET的高端智能化网络爬虫 2
  4. Docker - 容器编排工具 compose 之安装
  5. Hbuilder开发HTML5 APP之图标和启动页制作
  6. 问题跟踪软件URTracker和Windows域的集成
  7. SysUtils.StrLCat
  8. 《大型数据库技术》MySQL的进阶开发技巧
  9. 【Python笔记】网络爬虫——常用技术
  10. 【初学者必读】—PowerShell 基础详解及设置