McCall 将软件质量分为三组特性:运行方面(正确性、可靠性、效率、完整性、可用性)、修正方面(可维护性、灵活性、可测试性)、转移方面(可移植性、复用性、共存性)。
净室软件工程(Cleanroom Software Engineering):强调在软件开发过程中建立正确性的方法。理论基础:函数理论和抽样理论。核心做法:使用盒子结构规约进行分析和设计建模;强调将正确性验证(而不是测试)作为发现和消除错误的主要机制,可生成高质量软件。
缺点:太理论化、忽视测试、带有传统软件工程的弊端。
CBSE:基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。用于 CBSE 的构件应具备 5 个特征:
| 特征 | 含义 |
|---|---|
| 可组装型 | 所有外部交互必须通过公开定义的接口进行 |
| 可部署性 | 能作为独立实体在构件平台上运行 |
| 文档化 | 必须完全文档化 |
| 独立性 | 独立;如需其他构件服务则显式声明 |
| 标准化 | 符合标准化的构件模型 |
主流构件模型:Web Services 模型、Sun 的 EJB 模型、微软的 .NET 模型。构件模型要素:接口、使用信息、部署信息;提供通用服务(平台服务+支持服务);容器是构件模型基础设施。CBSE 过程:系统需求概览 → 识别候选构件 → 根据发现的构件修改需求 → 体系结构设计 → 构件定制与适配 → 组装构件创建系统 → 系统测试。构件组装方式:顺序组装、层次组装、叠加组装。