CHAPTER 10 面向可维护性的构造技术

摘要:什么是软件维护;可维护性如何度量;实现高可维护性的设计原则;基于语法的构造技术

  1. Software Maintenance and Evolution

--软件维护:修复错误,改善性能

//老图了,章章见到

--修复代码->测试修改->回归测试->记录变化

--不得引入新故障

--保留足够的文档记录和测试

--软件维护的种类

--定义:软件演化:对软件进行持续更新

--雷曼定律:质量下降,复杂度上升

--面向维护的编程

10.2 维护策略/常用指标

--可扩展/可维护/灵活/可适应/可管理/支持性

--维护性问题:设计结构简单/模块内高内聚/模块外低耦合/继承树结构/委托代替继承/圈复杂度/重复代码

--MI(可维护性指数)based on:

--CC(圈复杂度):计算不同程序流程的数量

--LOC(代码行数)

--COM(注释百分比)

--HV(霍-容积)

10.3 模块化设计-模块化原则

--模块化设计目标:将系统划分为模块

--高内聚/低耦合(该原则是评估设计可维护性的最重要原则);分离关注点;信息隐藏

10.3.1 评价模块性的五个标准

10.3.2 模块化设计的五个原则

--直接映射/尽可能少的接口/尽可能小的接口/显示接口/信息隐藏

10.3.3 高内聚/低耦合

--耦合是模块之间依赖关系的度量,取决于接口数量和接口复杂性

--内聚是对模块的功能或职责之间的相关性的度量,时刻牢记:模块为单一目的而存在

--高内聚势必导致低耦合

10.4 面向对象的设计原则:SOLID

10.4.1 SRP-单一责任原则

10.4.2 OCP:开闭原则

--关键解决方案:抽象技术

10.4.3 LSP:liskov替换原则

--子类型->基类型,派生类->基类接口

--对基类的引用应能够无措地应用到基类的一切派生类

10.4.4 ISP:接口隔离

--实现类只需实现拆分后自己需要的小的接口

10.4.5 DIP:依赖转置

--具体依赖于抽象(单方面)

10.5 语法驱动的构造

--输入/输出流

--RE:正则表达式

10.5.1 语法成分

--为了描述一串可能由各种元素构成的符号,使用语法:一种紧凑表示

--语法定义了一组字符串,称为语法解析树的终止节点/叶节点,无法继续扩展

--语法可由一组产生式描述,每个产生式都对应一个非终结节点

--构造字符串:操作符 + 终止节点 + 非终止节点

--产生式结构如下:

--根是文法的非终结符。语法可识别匹配根非终结符(根节点)的字符串。

10.5.2 Operators in a Grammar

--三个基本操作(正则)

--优先级:后缀运算符

--克林闭包允许匹配空串,而采用S->AA*形式复杂

10.5.3 扩展操作符:由正则操作派生的语法糖

10.5.3 递归

--左右出现相同字母;如下图只有B是递归的

10.5.4 语法树-没什么说的,画就行了

10.5.5 Markdown & HTML

--虽然语法有差,但表达正则表达式的功能是等价的

10.5.6 正则语法和正则表达式

[HITSC] 2021期末复习-第九章相关推荐

  1. 计算机组成与系统结构期末复习 第二章 2.2

    计算机组成与系统结构期末复习 第二章 2.2 1.实现下列各数的转换: (101101.011)2 = (?)10= (?) 8= (?) 16= (?) 8421 (0101 1001 0110.0 ...

  2. 网络经济学期末复习——第一章 导论

    网络经济学期末复习 --第一章.导论 一.课程介绍 二.课本选择 三.思维导图--第一章 导论 四.温馨提示 一.课程介绍 网络经济学简介: 网络经济学是近几年的一门新兴的研究网络环境下经济活动的交叉 ...

  3. 【数字图像处理】2021期末复习考试重点大纲

    本文目录 数字图像处理期末复习 1.填空(每空2分,共20分) 1.均值滤波计算 2.中值滤波计算 3.水平方向一阶锐化计算 4.无方向一阶锐化计算 5.位图文件存储所需要的数据量计算 2.问答(每题 ...

  4. 通信电子线路期末复习第一章和第二章上

    写在前面:本文仅供个人学习使用.本课程授课教师为乐艳芬. 文章目录 第一章 绪论课后作业题 第二章 丙类谐振功率放大器 2.1小信号谐振放大器概述 2.2单谐振回路-LC谐振回路 电容单位的换算 计算 ...

  5. 通信网络基础期末复习-第一章和第二章-概论和端到端的传输协议

    写在前面:本课程授课教师为韩彦芳.本文仅供个人复习学习.构建知识体系所用. 文章目录 第1章 通信网络概述及数学基础 1.1 通信网络的基本构成 1.2 协议体系及分层的概念 1.2.1分层的概念 1 ...

  6. 通信电子线路期末复习第二章下

    文章目录 第二章 高频谐振放大器 2.5 丙类谐振高频放大器 练习题 第二章 高频谐振放大器 2.5 丙类谐振高频放大器 练习题 用到这个图

  7. 樊昌信版通信原理期末复习第一章绪论

    第1章 绪论 一.知识点梳理 1.通信的目的:传递消息中所包含的信息. 2.消息:是物质或精神状态的一种反映. 3.信息:是消息中包含的有效内容. 4.通信系统的一般模型 信源输入变换器:将非电物理量 ...

  8. 操作系统期末复习-第一章:操作系统概论

    目录 1.1操作系统概念功能目标 操作体统的层次结构 定义 功能 裸机 ​小结 1.2操作系统特征 并发 共享 虚拟 异步 小结 1.3操作噢系统分类 单道批处理 多道批处理 小结 1.4操作系统运行 ...

  9. 知识产权《雨课堂》2021期末复习笔记

    好好复习,天天向上 最后感谢郭同学,杨同学的总结....

最新文章

  1. python爬虫赚钱途径-终于领会python爬虫赚钱的途径
  2. %@page contentType=text/html;charset=gbk%与meta http-equiv=Content-Type content=text/html; ch...
  3. hdu4280 最大流DINIC
  4. STM 32如何实现程序自加密
  5. matplotlib-plot-绘制折线图
  6. LeetCode中常用语言的一些基本方法记录
  7. 数据库中case when condition then else end的理解
  8. 其实python面向对象3分钟就可以入门(14)
  9. 长见识:你真的知道C语言里extern quot;Cquot; 的作用吗?
  10. Android应用开发控件——Gallery和ImageSwitcher
  11. mft按钮设计_火力发电厂典型MFT逻辑控制实现.pdf
  12. JSON与Protocol Buffers的一些比较
  13. 如何在linux上创建数据库,在LINUX平台上手动创建数据库(oracle 10g)
  14. 表数据库名_关系数据库理论:数据库的六大范式知识笔记
  15. Linux拉取代码启动镜像,基于Linux源代码及Busybox源代码制作精简可启动内核镜像技术实验方法...
  16. No matching provisioning profiles found for Applications/MyApp.app”问题解决
  17. SpringMVC @ResponseBody 406
  18. js29--装饰着模式
  19. 转:《潜伏》映射办公室潜规则
  20. 安装了yarn还是有 The project seems to require yarn but it‘s not installed

热门文章

  1. 三角形3边算面积程序 C语言
  2. 利用matlab和SDR实现LTE信号的采集以及帧同步,MIB解码
  3. WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status =None))connect broken解决方案
  4. 线性代数(7): 线性相关与线性无关
  5. 手游为什么老被攻击?手游DDOS防护方法
  6. Spring中@NotNull注解@Valid注解使用
  7. FFMPEG+SDL2 实现播放器功能
  8. oracle怎么设置字符集,ORACLE系统字符集设置
  9. 高德地图集成到android7.0上遇到的问题
  10. 一个月登顶抖音零食榜首的无限畅如何打造最懂年轻人的功能食品品牌?