|
原创作者:jerry
转载需经Sawin网站及作者同意
最后修改时间:2006-10-26
1文档说明1.1编制说明本文档为**********公司研发过程管理规范规划及实施阶段对总体项目进行技术、管理和控制方面的总体指导性文件。
1.2适用范围本规范适用于**********公司研发过程。
1.3起草单位**********公司研发部SEPG小组。
1.4解释权本规范的解释权属于**********公司研发部SEPG小组。
1.5版权 本规范的版权属于**********公司。
1.6 参考资料 - 2002.5 “The Rational Unified Process An Introduction (Second Edition)” Philippe Kruchten1
- 2001.12 “The Capability Maturity Model Guidelines for improving the Softwaew Process” SEI
- 2003.10 “Six Sigma Software Development” Christine B. Tayntor
1.7 缩写说明 PM:Project Manager项目经理
RUP: Rational Unified Process
CMM: Capability Maturity Model过程能力模型
ISO: International Standards Organize 国际标准化组织
QA: Quality Administer 质量管理
QC: Quality Control质量控制
CCB: Change Control Board 变更管理委员会
CM: Configuration Management 配置管理
SEPG: Software Engineering Process Group 软件过程管理小组
SDP: Software Development Plan 软件开发计划
CR: Change Require 变更需求
KPA: Key Practice Area 关键过程域
RM: Requirement Manager 需求管理
2 概述我们都知道一个项目的主要内容是:成本、进度、质量;良好的项目管理就是综合三方面的因素,平衡三方面的目标,最终依照目标完成任务。项目的这三个方面是相互制约和影响的,有时对这三方面的平衡策略甚至成为一个企业级的要求,决定了企业的行为。影响软件项目进度、成本、质量的因素主要是 “人、过程、技术”。
在当今日益激烈的竞争社会中,客户的满意程度已经成为许多软件机构生存和兴旺发达的准则,软件质量也被定义为满足客户需求的产品为高质量的软件产品。但是不科学,不合理的软件开发过程;对软件只重视开发不重视需求分析,设计,测试等种种弊端在许多软件公司中仍旧存在,随着软件在我们生活中的日益普及,持续了二三十年的软件危机变得更为突出,这些都已经严重影响软件公司的生存和发展。
所以,建立一套比较规范的,适合于本公司软件质量控制规范,对于软件公司的生存已经到了至关重要的地步。目前国际上比较流行的软件工程产品和思想有国际标准组织的ISO-9000,卡纳吉梅隆大学美国软件工程研究所(SEI)制定的CMMI, Rational公司创建的RUP以及摩托罗拉公司提出的6SIGMA等。各标准化组织都建议企业应该结合本公司特点,以质量标准化方案作为指南,建立起一套适合于本公司的软件质量控制是加强本企业软件质量控制的关键所在。
附:软件危机的种种表现:
Ø 需求变更频繁,软件公司陷于困境:据报告,全球所有的以取消结束的软件项目90%都是需求得不到很好的管理,造成项目无限制的拖延,最终造成项目取消;
Ø 人员变更频繁,公司产品无法得到延续:由于目前IT公司人员流动现象十分普遍,没有良好的软件过程作为后盾,人员流失就意味资源和知识的流失,从而不断延长软件开发时间;
Ø 没有合理的质量流程,产品bug无法得到有效的控制;
……
3.软件质量控制原则3.1以预防为中心对于质量控制方法上通常为检测和预防,而人们大多数都比较重视检测工作,成立测试部门在产品开发完毕进行测试。不可否认测试是整个软件工程中是一个非常重要的环节,但是预防从某种意义上来讲,比测试更为重要。打个比方,造一座大楼,如果在大楼设计后对大楼设计图纸进行检测发现问题,要比大楼施工完毕再发现问题资金,人力开销都小得多。再看一个数据,据美国软件质量安全中心2000年对美国一百家知名的软件厂商统计,得出这样一个结论:软件缺陷在开发前期发现比在开发后期发现资金,人力上节约90%;软件缺陷在推向市场前发现比在推出后发现资金,人力上节约90%。所以说软件的缺陷应该尽早提出,在整个公司软件开发工程中,每个阶段都有相应的对产品的质量控制(QC),和对过程的质量保障(QA)体系。
3.2降低偏差换句话来说就是增加一致性,一致性是非常重要的,因为一致性是可以预防的,可以预防就可以纠正。对于打靶来说,选手A的六个镖平均分布在靶的四周,有一个是击中靶心;选手B六个靶都没有击中靶心,但是都集中在靶的左上方。一般人认为选手A比选手B打得好,但是对于改进来说选手B要比选手A更好控制,因为选手B的偏差小,只要检查一下是否改选手握靶位置不对,或者没有考虑风的因素,就可以很容易达到全中,所以一致性是公司的质量奋斗目标。
3.3以客户为中心一个好的质量产品是这样定义的,它能够最大限度的满足客户的需求,不管技术人员认为存在某某不合理的地方。以客户为中心是所有质量体系都遵循的原则,不管是ISO还是CMM。道理很简单,没有客户,公司就没有存在的必要。在我们公司来说,提高质量就需要整个软件开发过程中严把需求关。
3.4协同工作先进的软件公司是一个走出软件作坊式的公司,项目的成败不在于某几个人的努力(又叫个人英雄主义),即CMM1级。现阶段的软件公司需要大家协同工作,共同努力,互相协调,互为补充,共同提高公司的软件产品质量。
4 工作定位研发过程管理工作按照著名的PDCA循环进行工作,我们首先定义出一些工作模版,工作流程,评审工作以及角色定义。研发部员工在使用过程中必须按照规定执行,但希望大家及时提出自己的观点和建议,我们随时进行调整并发布给大家,以便越来越适用于公司的需求。
图一 PDCA循环 Ø 计划阶段:按照(上一轮)需求计划过程、角色和文档;
Ø 执行阶段:由定义的角色在工作中按照定义的流程,执行相应的工作,产出相应的文档;
Ø 检查阶段:大家在实施过程中,遇到问题随时提出,对文档、过程、角色进行检察;
Ø 改进阶段:按照大家提出来的合理化建议和意见,对文档、过程、角色进行修正,修改。
然后进入下一轮循环,以便越来越适合公司,提高公司的质量水平
5.过程工作5.1过程5.1.1主过程图二 总体流程 Ø 按照管理角度来说整个流程分为概念、计划、实施、发布与维护、结项几个阶段工作
Ø 按照技术角度来说分为需求、设计、编码、测试、部署几个阶段工作
整个过程中受培训、质量管理、配置管理、需求管理、风险管理和项目管理工作监控
过程中的工作:
Ø 概念阶段主要工作为:调研、可行性分析、立项、定义需求规格;
Ø 计划阶段主要工作为:项目计划、项目估计、定义需求规格;
Ø 实施计阶段划主要工作为:概要设计、用户界面设计、详细设计、数据库设计;
Ø 实施编码阶段主要工作为:编码、单元测试;
Ø 实施测试阶段主要工作为:集成测试、系统测试、测试总结;
Ø 发布阶段主要工作为:产品发布、验收测试、产品维护;
Ø 结项阶段主要工作为:结项,项目总结。
每个阶段产生的文档在图二中表现出来了,由于纸面原因培训、质量管理、配置管理、需求管理、风险管理和项目管理的文档没有表示出来具体请看下一节5.2文档
文档Process.vsd中对每个阶段定义了子流程,主要分为:需求与需求管理、分析设计、编码、测试发布、测试、配置和变更管理、项目管理,除了测试发布以外每一个子过程都是基本按照RUP的流程来制定的。这里每一个阶段又定义了子阶段,子阶段为这个阶段的内部里程碑。
Ø 需求与需求管理中子里程碑为确认需求、定义需求和管理变更;
Ø 分析设计中子里程碑为概要设计和详细设计;
Ø 编码中子里程碑为开发和集成;
Ø 测试阶段子里程碑为测试计划、测试设计、测试编码、测试执行和测试总结
Ø 配置和变更管理子里程碑分为配置计划和配置管理
Ø 项目管理子里程碑分为项目计划、项目监控和项目结项
对于子流程的具体细节,请参见Process.vsd文档。
从图二可以看出来,一共包括计划、设计、编码、测试、交付、结项六大评审
每一个大的阶段完成,必须通过相关的评审才可以进入下一个阶段;项目中的内部里程碑也同样需要相应的评审工作才可以进入下一阶段。 |
|