本章重点:
- 软件的质量包括哪些方面
- QA和Test的区别和联系
- 如何衡量软件工程的质量
- CMMI
1 软件的质量
软件质量 = 程序质量 + 软件工程质量
1.1 程序的质量
程序的质量体现在软件外在功能的质量。
1.2 软件工程的质量
软件的开发过程有三个主要的特性:“好”、“快”、“便宜”。通俗的理解是“软件在功能、成本、时间三方面满足利益相关者的需求”。
软件工程的质量体现在以下方面:
- 软件开发过程的可见性(Visibility)
- 软件开发过程的风险控制(Risk Management)
- 软件内部模块、项目中间阶段的交付质量,项目管理工具的因素
- 软件开发成本的控制(Cost Control)
- 内部质量指标的完成情况(Internal Benchmarks)
1.3 软件工程的质量如何衡量
能力成熟度模型集成(Capacity Maturity Model Integrated,CMMI)
CMMI的实施能够提高企业的管理水平,降低企业的成本。CMMI有以下几个等级:
等级 | 说明 |
---|---|
CMMI一级 | 初始级 |
CMMI二级 | 管理级 |
CMMI三级 | 明确(定义)级 |
CMMI四级 | 量化管理级 |
CMMI五级 | 优化级 |
1.4 质量的成本
要达到一定的软件质量,是要付出成本的。戴明环(Plan-Do-Check-Act/Adjust)也有一个专门的Adjust部分。
SWEBOK特别定义了软件质量成本(Cost of Software Quality,CoSQ)的组成部分,其中包括预防、评审、内部故障、外部故障这四个方面,作者认为还要加上流程分析改进、投资改进等各种成本:
- 预防(Prevention)
- 评审(Appraisal)
- 内部故障(Internal Failure)
- 外部故障(External Failure)
- 流程分析改进(Process Enhancement)
- 提高职业技能(Enhance Professional Skills)
- 技术投资(Invest in Technology)
2 软件的质量保障工作
软件的质量保障(QA)和软件测试(Test)是有很大区别的:
- 软件测试(Test):运用一定的流程和工作,验证软件能实现预先设计的功能和特性,工作的流程和结果是可量化的;
- 软件质量保障工作(Quality Assurance):软件团队为了让软件达到事先定义的质量标准而进行的所有活动,包括测试工作。
微软开发测试主要有三种角色:
- SDK:Software Design Engineer,开发工程师,简称Deve;
- SDE/T:Software Design Engineer in Testing,也写代码,但是重点在测试;
- STE:Software Test Engineer,测试工程师。