Views and Quality Objectives of Software Construction
软件构造的多维度视图和质量目标
- 1 Multi-dimensional software views
- 软件构造的多维度视图:
- 按阶段划分: 构造时视图(代码、构件、配置项、版本等)和运行时视图(代码快照、内存转储、执行跟踪、事件日志等)。
- 按动态性划分: 时刻视图(特定时刻的软件形态)和阶段视图(软件形态随时间的变化)。
- 按构造对象的层次划分: 代码视图(源代码、抽象语法树、类图等)和构件视图(包、文件、静态链接、库、测试用例等)。
- 软件构造:不同视图之间的转换:
- 从概念到代码
- 从代码到构件
- 从构造时到运行时
- 从时刻到阶段
- 软件系统的质量属性:
- 外部质量因素: 正确性、健壮性、可扩展性、可复用性、兼容性、效率、可移植性、易用性、功能性和及时性。
- 内部质量因素: 代码相关因素(代码行数、循环复杂度等)和架构相关因素(耦合度、内聚度等)。
- 质量属性之间的权衡: 开发者需要在不同的质量因素之间做出权衡,例如安全性与易用性、经济性与功能性、效率与可移植性等。
- 软件构造的五个关键质量目标:
- 易于理解(代码优雅美观)
- 易于修改(可维护性和可扩展性)
- 开发成本低(设计复用)
- 安全可靠(健壮性)
- 运行效率高(性能)
- 面向质量目标的软件构造技术:
- 面向可理解性:代码审查、静态代码分析、ADT/函数规约等。
- 面向可复用性:ADT/OOP、接口与实现分离、继承/重载/重写、组合/代理、多态、子类型与泛型、OO设计模式、API设计、库、框架等。
- 面向可维护性和可扩展性:模块化设计、SOLID原则、OO设计模式、状态编程、基于语法的编程等。
- 面向健壮性:错误处理、异常处理、断言、防御式编程、测试驱动开发、持续集成、回归测试等。
- 面向性能:代码优化、设计模式、空间复杂性、时间复杂性、内存转储、垃圾回收、分布式系统、性能分析、并行/多线程等。