主要内容:
软件质量的定义;
软件质量管理体系;
软件质量模型(重点);
软件质量活动;
软件质量的定义
ISO关于质量的定义:一个实体的所有特性,基于这些特性可以满足明显的或者隐含的需求。而质量就是实体基于这些特性满足需求的程度
软件质量的三个层次
由软件质量的定义引申出软件质量的三个层次:
1.符合需求规格说明(SRS),目标是开发者定义的,可以验证的
2.符合用户显式需求,符合用户明确说明的目标,目标是客户定义的(可通过UAT测试);
3.符合用户实际需求,包括用户明确说明的和隐含的需求(运行和维护期间的测试)
影响软件质量的因素:技术,组织,流程
1.技术
a.分析技术:UML(Unified Model Language统一建模语言)
设计技术:概要设计(流程图,伪码,盒图,PAD)
编码技术:面向对象编程,java,c++
测试技术:测试方法,测试流程,测试工具,测试管理
工艺技术:硬件方面
b.现有技术:人是技术的载体
技术的积累:经验库,案例库,平台库,专利
2.流程
流程可以增加项目的透明度,减少内耗,提高生产率
(流程:只规定了活动的先后顺序,增加了项目的可控性和透明度,减少内耗,提高生产率;过程:除了规定活动的先后顺序,还有角色,职责,入口准则,出口准则,输入/输出)
3.组织:并不直接影响软件质量,通过技术和流程影响的
让合适的人做合适的事
用制度来推动技术的沉淀和积累
组织对流程的影响:流程的实施需要组织强有力推动,否则只是一纸空文
软件质量管理体系
流行的软件质量管理体系
ISO9000(International Standards Organization)
CMM (Capability Maturity Model )
六西格玛
ISO9000族2000版标准主要由ISO9000,ISO9001,ISO9004组成,其中ISO9000规定了基本原则和术语(理论指导思想),ISO9001对组织的质量管理体系的要求的规定(是核心内容),ISO9004是组织进行持续改革的指南标准。
2000版的八项质量管理原则
1.以顾客为中心
2.领导作用
3.全员参与
4.过程方法
5.管理的系统方法
6.持续改进:持续改进是组织的永恒目标
7.基于事实的决策方法:对实际的数据和信息进行逻辑分析是做决策的基础
8.互利的供方关系
CMM(Capability Maturity Model),英文直译的意思是“能力成熟度模型”。
CMM的历史和起源
卡耐基梅隆大学软件工程研究院(SEI,Software Engineering Institute)受美国国防部委托制定的软件过程改良、评估模型,也称为SEI SW-CMM,(Software Engineering Institute SoftWare--Capability Maturity Model)。该模型于1991年发布,并发展为系列标准模型。全世界已经有1万多家软件企业经过CMM认证
CMM分为五个级别
初始级Initial 不可预测
特点:①无组织纪律性,工作方式是消防式的
②项目成功往往取决于优秀的个人或团队,一旦团队离开,就没法成功,以往成功经历不可重复
③项目缺少文档化,缺少基本的配置管理,需求管理
可重复级Repeatable 有纪律的
项目管理过程制度化
特点:①可重复以往成功的过程,不再依赖于个人
②项目组有自己的组织纪律,研发过程文档化
③项目进度得到一定的控制,透明度得到提高
KPA:需求管理,软件质量保证,配置管理
已定义级Defined 标准和一致的
全组织的软件研发过程标准文档化,增加SEPG,各个项目组根据项目实际需求对标准进行裁剪使用
KPA:同行评审
已管理级Managed 可预测的
收集软件过程和产品质量的详细度量,对软件过程和产品质量都有定量的理解与控制
KPA:度量
优化级Optimizing 持续改进的
① 对以往过程的量化反馈分析,从而改进过程(不犯同样的错误,好经验要推广)
② 引入新的技术新思想改进过程
KPA:缺陷预防
我觉得简单的讲,CMM一方面是一种评估标准,是对企业开发软件能力的定义;另一方面是一种质量管理方法或者思想,能够某种程度上改进软件开发流程,提高软件质量。定义是提供给客户看的,方法是给自己用的。至于中国的通过CMM的企业和正在准备过CMM的企业是更注重前者还是后者还有待调查。不过,两方面应该是互相促进的,恩。