软件质量管理体系
过程复杂度
代码行数 实现者
1,000 - 5,000 5,000 - 25,000 25,000 - 100,000
部门
独立的程序员 小规模的团队
大规模内部细分的团队或
100,000 - 1,000,000 1,000,000 - 10,000,000 10,000,000 - 100,000,000
软件质量管理体系概 论
杨 根 兴 博士
软件企业实施质量管理体系的 一般过程
从企业宣布开始建立质量管理体系的那天起,企业
最高领导人的全员动员,是宣告企业进入状态的必 不可少的步骤; 咨询机构的加入是一种外部压力,对全员进行质量 体系基础知识的培训和考试是增强员工质量意识的 重要措施; 对企业组织架构的调整是建立体系的基础; 共同参与提出质量方针和目标、编写质量手册和过 程文件,以及质量体系的试运行等步骤,实质上是 企业内部进行沟通、取得共识、开始走向成熟的过 程。
(1)“言所行、行所言” (2)强调管理、过程、规范化和文档化 不同点: (1)CMM把焦点严格对准软件 (2)ISO9001的范围包括: 硬件、软件、流程性材料和服务 两者之间的联系: (1)CMM 2级与ISO9001强相关 (2)CMM的每个关键过程域至少按某种解释与 ISO9001弱相关
质量认证咨询工作的三个阶段
1. 企业现状调查与诊断和ISO 9000族标准与 软件工程培训阶段。
对企业的组织和管理现状进行调查,与企业管理层 一起讨论,找出问题的症结,提出有关组织架构和 管理流程调整的建议; 为全体员工进行ISO 9000族标准与软件工程方面的 培训,培训的内容包括:ISO9000标准的基本知识 和条款、软件质量管理的要点、软件过程模型 (ISO12207信息技术-软件生存周期过程)、 CMM软件能力成熟度模型、和软件过程度量等方面。 确定企业的质量目标、质量方针,质量体系文件的 策划。
多个团队 多个公司 国家级企业
影响软件质量的因素
与软件产品质量有关的四方面因素:
开发技术
过程质量
产品质量
人员因素
成本 时间、进度
过程中的角色
管理
环境
过程
软件工程师
技术资产
严格的工作条例
软件企业建立质量管理体系要 解决的主要问题
4. 建立文件化程序。
再好的管理方法如果没有写成文件化的程序, 也是空谈。建立文件化程序就是为了将质量 管理体系固化下来,企业的所有过程和操作 都要做到有章可循。 建立文件化程序的过程实际上是对管理流程 的一次全面整理的过程。
软件企业建立质量管理体系要 解决的主要问题
1. 分清制造业与软件业的区别,理清软件企业的 业务流程。
过程不同:软件的研发过程一般归结为:计划-需 求分析-概要设计-详细设计-编码-测试-运行 维护: 质量的关注点不同:软件开发质量的关注点主要放 在研发阶段,而生产(软件复制)、仓库存储运输 阶段则显得比较次要; 产品的功能复杂度不同:软件产品的复杂度大大高 于制造业的产品; 产品的形态不同:软件产品是在磁介质载体上的信 息产品,可视性差,更需要加强软件过程的管理与 控制。
项目经理的12条要则
1)弄清项目经理所面临的问题、机会和期望; 2)明白冲突是团队发展中的自然之物; 3)弄清谁是利益关系者; 4)意识到组织的强烈政治色彩; 5)必须精于领导,但应灵活机动; 6)明白判断项目成功的四个标准: 预算、进度计划、绩效标准、客户满意;
项目经理的12条要则
7)充当激励者、教练、活跃气氛者、维和人员和冲突 裁决人; 8)注意你的情绪——团队成员培养品质的基础; 9)不能安于现状,经常做“如果—那么”的假设; 10)不要因小事而迷失了项目的目标; 11)有效地利用好时间; 12)首要任务是:计划、计划、计划。
Architecture
Detailed design
Construction
Requirements
Architecture
Detailed design
Construction
Release
Phase That a Defect Is Corrected
项目管理过程
制定计划—执行计划—实现项目目标 建立一个基准计划:
制造业和软件业的对比
制造业:
设计 软件业:
生产
运输 仓储
功能度
设计
生产 运输 仓储 功能度
软件企业建立质量管理体系要 解决的主要问题
2. 明确管理职责、调整组织结构。
第一步就是要进行企业情况诊断,根据企业的实 际业务流程和依据ISO9001标准的要求,进行组 织架构重构。 第二步就是有明确岗位分工与职责,特别要明确 与质量管理有关的岗位和职责,为建立质量管理 体系打下基础,以适应建立质量管理体系的需要。
50-200X
Cost to Correct
50-200X
Phase That a Defect Is Created
Requirements
1X 1X
Architecture
Detailed design
Construction
Requirements
Architecture
Detailed design
等 级 关键过程域
缺陷预防 技术变更管理 过程变更管理 定量过程管理 软件质量管理 组织过程焦点 组织过程定义 集成软件管理 软件产品工程 组间协调 培训大纲 同行评审 软件需求管理 软件项目策划 软件计划跟踪 软件分包管理 软件质量保证 软件配置管理
5 优化 4 已管理
3 已定义
2 可重复
国际标准 ISO/IEC 12207 信息技术-软件生存周期过程
基本过程(5) 获取过程
供应过程 开发过程
支持过程(8)
运行过程
维护过程
组织过程(4) 审 核 过 程 问 题 解 决 管 理 过 程 基 础 设 施 改 进 过 程 培 训 过 程
文 证 过 程
确 认 过 程
联 合 评 审
ISO9001与CMM的关系
最大的相似点:
基线与变更管理
基线(baseline)是软件生存期各开发阶段末尾 的特定点。它的作用是把各阶段的开发工作分 得更加明确,便于检验与确认。
项目开 发计划 计 划 需求规 格说明
需求分析 计划 基线 需求 基线 设计规 格说明 设 计 设计 基线 程序 清单 编 码 编码 基线
测试 报告
测 试 测试 基线
质量管理主要涉及三方面的问题
规范化、量化和固化:
(1)规范化就是按照ISO9001标准建立一套适合 软件企业的质量管理体制,同时引入CMM中的相 关关键过程作为规范管理的手段; (2)量化就是要采用基于事实的决策方法,收 集数据进行量化分析,实现质量管理的反馈控 制; (3)固化就是要建立一套行之有效的文件化程 序,使得企业无论在什么地方、由什么人管理, 都要按照统一的模式去实施。
开发经理职能
1)领导项目组制定开发策略; 2)领导项目组给要生产的产品(项目)制定最初 的大小和时间估计; 3)领导进行软件需求细节的开发; 4)领导项目组制定出高水平设计; 5)领导项目组制定出软件设计细节; 6)领导项目组实现这个产品; 7)领导项目组制定出建立、集成和系统测试计划; 8)领导项目组制定测试材料并且进行测试; 9)领导项目组制定产品的用户文档; 10)参与制定开发周期报告; 11)充当开发工程师。
软件项目成功率调查:
More than 200% Late 6% 101-200% Late 16%
Project Resolutions
Cancelled 29%
51-100% Late 9%
21-50% Late 8% Less than 20% Late 6% On-Time 26%
缺陷纠正得越晚成本越大
软件企业建立质量管理体系要 解决的主要问题
3. 识别和建立软件企业的过程。
应用过程的方法是ISO9000的重要原则。虽然 ISO9001-2000标准中规定了主过程和支持 过程,但它是面向通用企业的。 对软件企业,应该应用ISO12207信息技术- 软件生存周期过程和ISO9000-3标准,对照 CMM软件能力成熟度模型框架,结合软件企 业的具体情况,进行过程建模,这是建立一个 适宜的软件企业质量管理体系的前提
清晰地定义项目目标; 分解项目—子项目(或自任务); 界定必须执行的具体活动; 以网络图的形式图示描绘活动(次序与相互 依赖性); 时间预算、成本预算; 估算项目进度计划及预算。
项目成功的关键因素
最重要的10大因素:
1)清楚地界定目标及项目任务; 2)高层管理者的支持; 3)有能力的项目经理; 4)有能力的项目团队; 5)充足的资源; 6)客户的参与协商; 7)良好的沟通; 8)对客户的积极反应; 9)适当的监控和反馈; 10)正确的技术;
Construction
Release
Phase That a Defect Is Corrected
及早纠正大部分的缺陷
50-200X
Not Here
Cost to Correct
Fix Here
50-200X
Phase That a Defect Is Created
Requirements
1X 1X
ISO9001:2000版目录
软 件 CMM
Level 5 优化级
能力 管理
变更 管理 持续改进
实践 定量理解 和控制
Level 4 已管理级
Level 3 已定义级 Level 2 可重复级 Level 1 初始级 项目 管理 不一致的 管理
过程 管理
通用工程
过程