研发过程管理工作规范1文档说明1.1编制说明本文档为**********公司研发过程管理规范规划及实施阶段对总体项目进行技术、管理和控制方面的总体指导性文件。1.2适用范围本规范适用于**********公司研发过程。1.3起草单位**********公司研发部SEPG小组。1.4解释权本规范的解释权属于**********公司研发部SEPG小组。1.5版权本规范的版权属于**********公司。1.6参考资料2002.5“TheRationalUnifiedProcessAnIntroduction(SecondEdition)”PhilippeKruchten12001.12“TheCapabilityMaturityModelGuidelinesforimprovingtheSoftwaewProcess”SEI2003.10“SixSigmaSoftwareDevelopment”ChristineB.Tayntor1.7缩写说明PM:ProjectManager项目经理RUP:RationalUnifiedProcessCMM:CapabilityMaturityModel过程能力模型ISO:InternationalStandardsOrganize国际标准化组织QA:QualityAdminister质量管理QC:QualityControl质量控制CCB:ChangeControlBoard变更管理委员会CM:ConfigurationManagement配置管理SEPG:SoftwareEngineeringProcessGroup软件过程管理小组SDP:SoftwareDevelopmentPlan软件开发计划CR:ChangeRequire变更需求KPA:KeyPracticeArea关键过程域RM:RequirementManager需求管理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循环进行工作,我们首先定义出一些工作模版,工作流程,评审工作以及角色定义。研发部员工在使用过程中必须按照规定执行,但希望大家及时提出自己的观点和建议,我们随时进行调整并发布给大家,以便越来越适用于公司的需求。计划阶段:按照(上一轮)需求计划过程、角色和文档;执行阶段:由定义的角色在工作中按照定义的流程,执行相应的工作,产出相应的文档;检查阶段:大家在实施过程中,遇到问题随时提出,对文档、过程、角色进行检察;改进阶段:按照大家提出来的合理化建议和意见,对文档、过程、角色进行修正,修改。然后进入下一轮循环,以便越来越适合公司,提高公司的质量水平5.过程工作5.1过程5.1.1主过程图二总体流程按照管理角度来说整个流程分为概念、计划、实施、发布与维护、结项几个阶段工作按照技术角度来说分为需求、设计、编码、测试、部署几个阶段工作整个过程中受培训、质量管理、配置管理、需求管理、风险管理和项目管理工作监控过程中的工作:概念阶段主要工作为:调研、可行性分析、立项、定义需求规格;计划阶段主要工作为:项目计划、项目估计、定义需求规格;实施计阶段划主要工作为:概要设计、用户界面设计、详细设计、数据库设计;实施编码阶段主要工作为:编码、单元测试;实施测试阶段主要工作为:集成测试、系统测试、测试总结;发布阶段主要工作为:产品发布、验收测试、产品维护;结项阶段主要工作为:结项,项目总结。每个阶段产生的文档在图二中表现出来了,由于纸面原因培训、质量管理、配置管理、需求管理、风险管理和项目管理的文档没有表示出来具体请看下一节5.2文档文档Process.vsd中对每个阶段定义了子流程,主要分为:需求与需求管理、分析设计、编码、测试发布、测试、配置和变更管理、项目管理,除了测试发布以外每一个子过程都是基本按照RUP的流程来制定的。这里每一个阶段又定义了子阶段,子阶段为这个阶段的内部里程碑。需求与需求管理中子里程碑为确认需求、定义需求和管理变更;分析设计中子里程碑为概要设计和详细设计;编码中子里程碑为开发和集成;测试阶段子里程碑为测试计划、测试设计、测试编码、测试执行和测试总结配置和变更管理子里程碑分为配置计划和配置管理项目管理子里程碑分为项目计划、项目监控和项目结项对于子流程的具体细节,请参见Process.vsd文档。从图二可以看出来,一共包括计划、设计、编码、测试、交付、结项六大评审每一个大的阶段完成,必须通过相关的评审才可以进入下一个阶段;项目中的内部里程碑也同样需要相应的评审工作才可以进入下一阶段。5.1.2研发过程管理的工作1.制定整体项目实施计划制定整体项目组织架构和沟通机制分析各子项目实施计划并确定关联性制定整体项目进度基准制定整体项目人力资源配置计划制定整体项目成本基准制定整体项目质量管理及风险管理计划形成整体项目实施计划执行整体项目实施计划监控各子项目的实施进程检测并报告整体项目实施进程协调解决子项目间争议管理整体项目实施质量管理整体项目实施成本管理整体项目实施风险组织项目相关培训和知识转移5.2文档5.2.1文档及其缩写文档按照阶段分类如下,在这里不考虑指南性质和评审文档。由于考虑到每个项目的复杂性,设立通用模版供大家使用,大家在要求的文档前提下,可以自己设计所需的文档。具体要求的文档如下:阶段名称缩写过程与度量过程依从性检查单PCC度量方法MM立项调研计划书RAP调研作业指导书RAG立项可行性分析报告FRS立项建议书CA立项调查报告CR立项评审报告CRP结项项目总结报告PDSP结项申请书FPR结项评审报告FPRR结项项目总结报告PDSP结项申请书FPR结项评审报告FPRR项目计划项目计划变更控制报告PDP项目计划项目计划附件PP项目估计表PET项目监控项目监控数据表PID项目管理过程PMP项目偏差数据表PWD项目进展报告PER风险管理风险检查表RC风险管理报告RMP需求及需求管理产品需求规格说明书SRS需求变更控制报告RMP需求跟踪报告RTR设计体系结构设计报告PDS用户界面设计UID数据库设计报告DBS模块设计报告IDD技术预研技术预研计划TBP技术预研报告TBR源代码CODE产品特性表PCT测试测试计划书TP测试用例书TC测试报告TRBeta测试协议BTPBeta测试报告BTR软件配置配置管理计划CMP配置库管理报告CMR配置项变更控制报告CCCR计划评审检查单PRC软件配置管理过程SCCP状态统计表SST客户验收客户验收计划PAP客户验收报告PAR技术评审技术评审计划TRP技术评审通知TRI技术评审报告TRR外包与采购管理外包开发竞标邀请书EPCI外包开发合同EEC外包开发过程监控报告EEPIR采购竞标邀请书SCI承包商评估报告CEP外包开发成果验收报告EEPCAR供应商评估报告SEP采购合同SC采购物品验收报告SGCAR培训培训计划TP培训通知TI培训评估报告TRP产品维护计划客户服务计划CSP客户服务报告CSR产品维护计划MP产品维护报告MQ质量保证质量保证计划SQAP质量保证检查表SQACT质量保证报告SQAR质量问题跟踪表SQQTT5.2.2文档编码规范一般文档:FreeSky-Project-缩写:比如:办公自动化(OA)项目需求文档:FreeSky-OA-SRS记录文档FreeSky-Project-Report-YYMMDDPP比如:2006年9月16日OA产品第5次会议纪要:FreeSky-OA-Report-2006091605评审文档FreeSky-Project-缩写-Review-YYMMDDPP比如2006年10月26日OA产品第二次需求额评审报告:FreeSky-OA-SRS-Rewiew-2006102602指南文档FreeSky-Project-Guide-YYMMDDPP比如2006年11月06日建立的OA产品如何书写需求报告,为OA项目的第4份指南文件:FreeSky-OA-Guide-20061106045.3角色根据公司目前状况,角色主要分为部门经理、项目经理、开发经理、客户经理、需求分析师、系统架构师、设计师、美工、软件工程师、集成工程师、数据库管理员、系统管理员、测试经理、测试设计人员、测试开发人员、测试工程师.他们的职责表如下:名称职