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. 信号系统的一些基本概念
  2. 基于直方图均衡化的水下激光图像处理(MATLAB仿真)
  3. opencv python 图像去噪
  4. C++ STL的妙用
  5. 张俊红21岁的年度总结
  6. python输入二维数组_python 二维数组键盘输入
  7. Python之网络编程(socketserver模块详解、链接认证)
  8. mysql lvs 读写分离_mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)
  9. Count on a tree SPOJ - COT
  10. moss 搜索 属性过滤 值被移除了
  11. 常见的前端视频播放格式
  12. php花瓣,php 网络爬虫,爬一下花瓣的图片
  13. python风变编程是骗局吗-黑猫投诉:风变编程诱导消费涉及退款无人答复霸王条款...
  14. vue背景图片资源加载问题
  15. 三、公网环境搭建Kubernetes (k8s) 集群的详细图解
  16. CSAPP ArchLab
  17. 史上最详细的LXR安装介绍
  18. 水星路由器wan口ip显示0_路由器wan口ip地址显示0.0.0.0怎么办(2)
  19. 计算机硬件加速怎么开,电脑中如何开启3d硬件加速|电脑开启3d硬件加速图文教程...
  20. 常用浏览器兼容性测试点总结

热门文章

  1. 数据流图的画法,如何画数据流图
  2. 全面推进实景三维中国建设 自然资源部明确这些要求 点卯-三维视频融合 魔镜系列
  3. 日本气象厅拟提高台风预报能力 5天前就能掌握信息
  4. 数据结构实训——飞机订票系统
  5. 基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器
  6. ipv4地址是ip地址吗?
  7. 打工人、打工魂、高效MES助力打工者都是人上人
  8. java系统慢怎么优化_解决vmware虚拟机速度慢的3种方法
  9. 克罗内克递归单元(论文翻译)
  10. 在mysql中删除表正确的是什么原因_MySQL在删除表时I/O错误原因分析