面向可维护性的构造技术 {ignore=true}
1. 软件维护
软件维护是软件生命周期中最长的一个阶段,也是最重要的一个阶段,软件维护的目的是为了修复错误、改善性能。
维护需要处理来自用户报告的故障/问题,并且在处理之后,还需要对这些修改进行测试,以确保修改后的软件仍然是可靠的。
2. 软件演化
软件演化即对软件及逆行持续的更新。
3. 模块化编程
模块化编程是一种将程序分解为独立的、可重用的模块的方法,这些模块可以被开发人员独立地设计、实现、测试和维护。
模块化编程的目标:高内聚、低耦合。
一般从五个方面去评估模块化编程的好坏:
- 可分解性
- 可组合性
- 可理解性
- 可持续性:发生变化时受影响范围最小
- 出现异常之后的保护:出现异常后受影响范围最小
模块化编程的五项原则;
- 直接映射
- 尽可能少的接口
- 尽可能小的接口
- 显示接口
- 信息隐藏
4. 耦合和内聚
耦合指的是模块之间的依赖关系,耦合越低,模块之间的依赖关系越小,模块之间的独立性越高。
内聚指的是模块内部的联系,内聚越高,模块内部的联系越紧密,模块的独立性越低。
良好的设计应该满足:高内聚、低耦合。
耦合和内聚的关系:
OO设计原则: SOLID
- 单一职责原则:不应有多余1个的原因使得一个类发生变化
- 开放-封闭原则:对扩展开放,对修改封闭
- Liskov替换原则:子类可以替换父类
- 依赖倒置原则:依赖于抽象,而不是依赖于具体
- 接口隔离原则:使用多个专门的接口,而不是使用单一的总接口
5. 语法驱动的构造
利用正则表达式对文本进行分析,从而进行构造。
tips: 一些帮助学习正则表达式的工具:RegexOne、regex101
前者是一个交互式的学习网站,能帮助我们学习正则表达式的语法,并配有练习习题,两三个小时就能全部刷完,后者则是一个在线的正则表达式测试工具,可以选择不同编程语言中的正则表达式匹配,并会有每一步的解释,极为清晰。