【软件构造】第一章 软件构造基础(2)

二.软件构造的质量目标

1. 外部属性(主要):影响用户感受,如外观、速度等

1)正确性:符合规格范围和计划目标

·只保证各个层面的正确性(假设调用正确)

·检验与调试

·防御性编程

·形式化编程

2)健壮性:响应规格范围外的异常情况

·提示错误信息

·正常退出或降级

3)可扩展性:提供增加新功能的空间

·固化需求以规避风险

·设计简洁、离散化

4)可复用性:使软件模块能够被其他程序使用

·模式固化

5)兼容性:跨平台、跨软件交互

·使用标准文件格式、数据结构、接口,保持一致性

·定义一套标准的访问协议

6)效率:程序运行过程中对CPU、内存、硬盘等的占用情况

·优化过程中正确性优先,在各个指标间进行权衡

·良好的算法、 I/O技术、内存管理

·将问题抽象便于处理,去掉一层抽象便于优化

7)可移植性:从一个环境转移到另一个环境

8)易用性:不影响专业用户的前提下便于初学者使用

·结构清晰的设计

·理解用户的界面

9)功能性:软件提供功能的多少

·蠕变特征:竞争导致程序冗杂混乱

·更新原则:保证整体质量处于稳定水平

·渐进式开发

10)其他

·及时性:高效率大致完成以占领市场

·可验证性:保证软件的效果

·完整性:各个模块间不会被非法访问所干扰

2. 内部属性(次要):影响外部属性,针对开发人员

1)代码可读性

2)圈复杂度:用来衡量一个模块判定结构的复杂程度

3)耦合度/内聚度:追求低耦合、高内聚

3. 均衡决策

1)经济性与功能性相矛盾

2)性能与可移植性、可复用性相矛盾

3)及时性与延展性相矛盾

4. 重要属性

1)可读性

·构建-代码-时刻

- 代码的可理解性(命名标准、代码布局与风格、注释、复杂度)

- 函数规约

- 评审、演练

·构建-组件-时刻:构建/项目的可理解性(包、文件的组织和命名空间)

·构建-代码-周期:重构

·运行-代码-时刻:日志跟踪

(2)可复用性

·构建-代码-时刻

  - ADT/OOP

  - 接口与实现分离

  - 继承/重载/重写

  - 组合/代理

  - 多态

  - 子类型与泛型编程

  - OO设计模式

·构建-组件-时刻

  - API设计

  - 类库

  - 框架(可复用)

(3)可扩展性

·构建-代码-时刻

  - 模块化设计

  - 聚合度/耦合度

  - OO设计模式

  - 格式化、规范化、语法化编程

·构建-组件-周期:软件版本控制

(4)可靠性(正确性 && 健壮性)

·构建-代码-时刻
  - 异常处理

  - 防御编程

  - 先验程序

·构建-组件-时刻:

  - 单元测试

  - 集成测试

·构建-周期:回归测试

·运行-时刻:调试转储

·运行-周期:日志跟踪

(5)性能

·构建-代码-时刻:设计模式

·运行-代码-时刻

  - 空间复杂性(内存管理)

  - 时间复杂性(算法性能)

  - 代码调优

·运行-组件-时刻:分布式系统

·运行-代码-周期:性能分析和调整

·运行-组件-周期:并行/多线程程序

posted @ 2018-03-03 18:18  长安蒹葭  阅读(291)  评论(0编辑  收藏  举报