基于cmm软件过程管理中一种改进方法的研究.doc_第1页
基于cmm软件过程管理中一种改进方法的研究.doc_第2页
基于cmm软件过程管理中一种改进方法的研究.doc_第3页
基于cmm软件过程管理中一种改进方法的研究.doc_第4页
基于cmm软件过程管理中一种改进方法的研究.doc_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于CMM软件过程管理中一种改进方法的研究第一章 绪论1.1选题的目的和意义自从人类发明计算机以后,软件的开发一直是广泛应用计算机的瓶颈。成功的软件开发项目管理一直是软件开发的难题。研究新的软件开发方法和管理方法以提高软件的生产率和质量一直是软件工程的焦点。软件作为信息技术的核心,在信息社会高速发展的过程中起着至关重要的作用。随着软件需求越来越复杂,软件规模不断增长,出现了软件危机。如何解决日益严重的软件危机,成为学术界和工业界共同努力的目标。软件质量的保证、软件开发成本的控制等要求,对于软件企业的生存和竞争力都有举足轻重的意义,人们日益关注软件开发中的过程管理的规范化及标准化问题。软件危机的出现让人们提出了软件工程,IEEE 对软件工程的定义为:软件工程是(1)将系统化、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。(2)在(1)中所述方法的研究。由此可见软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科1。软件过程是软件工程的基础,是人们用于开发和维护软件及其相关产品的一组活动、方法、实践和革新1。有效地改善软件过程是解决我国软件企业生产率和管理水平低、产品质量难以保证等问题的根本所在。软件过程改进是各个企业建立适合自身软件生产线和促进软件工业化生产的必由之路。基于CMM成熟度模型,包括中小企业在内的软件企业如何进行软件过程改造,如何在具体项目中引入并实施CMM的标准成为人们关注的重点。CMM的实施核心焦点不在于软件的开发技术层面,而在于工程过程层面和工程管理层面。所谓工程过程层面是指将工程开发的整个过程所涉及的相关议题作为过程学的体系来研究和执行。过程学本身既不同于通常所说的软件工程技术,(如编码,操作系统等等),也不同于一般所言的工程管理学,软件过程既是对软件工程这一领域中所涉及的流程按其独特特性进行专门描述。事实上,任何企业在开发工程产品的实践中,都有开发过程产生,虽然很多企业并未对其进行记录或关注。按照工程过程学派的观点,没有正确的过程就不可能有正确的产品产生,因此对开发组织的过程需要规范和改进。具体地说,一个基本的软件开发流程包括需求阶段、系统设计阶段、详细设计阶段、编码阶段、单元测试阶段、集成测试阶段、系统测试阶段、软件发布软件维护阶段。其中决定软件开发成功与否的关键阶段是:软件需求管理、软件计划管理、软件质量管理和软件配置管理。为了在用户和处理用户需求的软件项目组之间达成共识(用户由最终用户、高层领导、销售人员和市场调研人员组成),“软件需求规格说明书”是必不可少的。经过正式的评审和确认,其将成为后续工作的基础。 软件项目的实施过程是根据软件项目的资源、约束条件和执行能力确定的,因此需要制定合理的软件工程管理计划,这是项目经理的职责之一。项目经理应定期检查“项目开发计划书”,按照当前项目开发的实际情况,对其进行调整。 为了保证每一个软件产品都合乎需求,需要设立一个负责项目监督和协调的SQA。其会对软件产品是否符合定义好的软件过程中的相应部分进行审查、复审和测试。公司高层主管应该定期参与、评审SQA的活动。 软件配置管理是指在整个工程期间对项目的所有软件配置项进行规范化管理。如采用版本控制软件对软件配置项版本进行版本控制,采用基线管理方法对变化进行控制,即在遵循软件工程标准的基础上对整个软件进行控制和管理,维护其完整性、一致性和可跟踪性由于软件过程必然与工程管理相关,因而它不象具体的开发技术问题那样容易规划并着手实施,特别是国内广大的中小软件企业和部门,在采纳某一过程体系进行开发流程的改造时,应特别注意如下几方面的问题,将其作为过程实施开端的要领加以掌握:1、不可急于求成和盲目乐观。任何新体系的采纳和改进都必然涉及对旧有体系的重组和调整,需要投入相当的决心和时间。如果企业在充分评估后决定了以CMM工程标准来规范建构自身的软件开发行为,则应该在次序改进的前提下尽早实施企业开发过程调整以便有充裕时间理解和评估前期改造的成效。2、必须懂得CMM作为一套标准,它指明的是该作什么(What)而非怎样去做(How),同时CMM也代表了一种对软件生产过程进行理解和分析的独到观点(Philosophy)。CMM着重于过程中的关键要素,而非面面俱到,它主要不是为了解决某个具体项目的问题,也不能保证在此框架下产品开发100%成功,CMM所述的软件过程集合了工程过程和管理过程等方面,对它的过程改进要靠许多细小的阶段性的步骤而非一蹴而就的革新。 3、CMM1.1版主要针对大型软件企业,这些企业的开发工作通常关涉软件生产过程的方方面面。对于20人以下的小型企业,1.1版中的一些环节可能并不适用。4、企业在采纳CMM过程改进的同时,可以引入新技术与自动化工具帮助软件开发的实现,不过,对过程的改进要求企业全面投入并需较长周期,而技术引进则相对周期较短。但如果企业只是依靠技术改进而不注重过程改进,长远看来,企业可能收获甚少。5、知己知彼,百战不殆。实施改进之前,企业应对自身当前所有的软件能力水平及过程状态有尽可能的客观、详尽的了解。可以参考本文后附企业开发能力自测表进行初步诊断,在明了自身实际过程等级之后,企业应确定需要达到的等级目标并找到主要差距所在。企业要想达到的等级目标包括它所特定的过程目标及核心过程域(KPA)。这一等级应符合企业自身开发水平与项目特征。在企业明了了自身实际等级与目标等级之间的差距之后,应制定规划,决定改进次序及程度,可参考的决策因素包括:目标与能力的平衡,投入工期与质量的保证,企业总体发展与当前项目开发的平衡,员工素质条件,最薄弱环节与最急需改进环节,还有最易见效的环节,等等。6、如有可能,在企业内部成立专门的过程改进规划组,并配合企业外聘的咨询机构或顾问,拟订出详细的过程实施方案,同时注意在实施过程中对计划进行修正和调节。在此,应将改进方案指定得尽量具体详细,这包括: 目标明确并可检验,有助于切实的检验标准;有详细的实施步骤,有专人负责每一环节的落实,有协调方解决各环节之间的冲突;如需采纳新技术和工具,应详细分析他们的作用及获取方式并准备对新技术和工具进 行改造,对员工进行培训以适应项目所需。制定项目开发时间表,将每个过程环节的实施与此时间表挂钩。对项目开发的投入工期进行预测并据此规划开发工作。 预先规划开发过程中相关数据的采集,分析和提供方式与时段;所有过程,包括:需求分析、项目计划、项目验收和交付,都必须编档并保留,应有具体的监控和考核计划来监督过程的实施。这一计划应考虑到偏差的可能性及应对方案。企业的高层和相关管理人员应参与过程的制定与实施并形成制度。领导层应负责对每一阶段改进的总结并制定出相应的后继方案,另外,凡涉及对已定计划和过程的调整必须事先申请备案并经领导层同意。需强调的最重要的一条原则是,过程改进不可流于书面形式,所有员工都应理解并参与其中。 CMM模式即可用于描述软件机构实际具备的能力成熟度水平,也可用于指明软件企业改进软件工程所需着力之处,它说明了努力的方向,又允许企业自己选择恰当的方式去达到这一目的。实施CMM的经验告诉软件工程人员,在软件项目开发中,更多的问题和错误来源于工程安排的次序,工程规划和工程管理而不是技术上的how to do。软件工程的过程学不断分析和改善已有工程经验,拟定出尽可能完善的开发过程,并按开发生命周期确定重点环节加以管理,最终达到以量化数据来建立能力成熟度等级的目标。良好的工程过程保证了有序的开发实施,避免了以往开发人员被动救火的方式,并将个人主观因素减低至最少。开发人员的个人创造性从独立任意的发挥消解并转移到如何创建性地运用和完善工程过程上来。 作为一种模型,CMM实际上是对软件机构工程过程的理论和数据模拟,在对它的应用中,包括软件产品供应方和应用方两大类。目前,世界范围内已采纳CMM标准的企业纷纷以此标准决定软件项目合同的承接与分包。实践中,许多中小企业在接纳CMM体系时,采纳了保留企业部分原有工程过程指标并加以修改的办法。卡莱基梅隆大学软件研究所提出了一套实施CMM标准的方法,按照他们的建议,IDEAL是企业开始引入CMM体系的良好参照模式,它包括:I-启动(Initiating),表示开发机构应为CMM的引入准备好前期基础设施和程序。D-诊断(Diagnosing),明确机构目前所处的能力水平及目标等级所在。E-建构(Establishing),制定如何实现目标等级的计划。A-行动(Acting),具体实施该计划。L-学习(Learning),积累以往经验并将其用于持续的改进过程之中,同时注意新技术和工具的引入以协助过程实施。如有可能,企业在咨询机构或咨询师的协助下可以加快CMM体系引入的过程,但企业必须同时着力于培训自身理解工程过程的人才。较好的方法包括在开发组织内部分项目形成CMM研讨小组以促进开发组及开发人员之间的经验交流。显而易见,实施CMM的成效应根据机构自身特有的实际情况作判断,正确的实施应该从质和量两方面对过程的各环节发生作用。CMM体系在中小企业的应用中并未要求逐字照章对应每一项核心过程域和核心实践来进行,机构可以用裁减的办法对其应用程度作修正,也可选用阐述的办法将某项具体的实施工作等同为特定的核心实施。根据SEI的研究数据,绝大多数软件项目的成功都遵循了下述的工程原则:1、将软件生命周期划分为若干阶段并进行严格的计划,包括项目计划,里程碑计划,质量检测计划,维护计划等。 2、在开发过程中,分阶段进行复审和评估,以便尽早发现错误所在。 3、项目组成员应注重包括技术和流程在内的培训,提高人员素质。4、软件过程的改进应是持续性的,不断调整的进程。5、尽可能采用度量数据来描述过程中的每一环节,从而提高可预测性和可控制性。6、对以往所有开发工作必须进行文档工作,积累经验以用于未来的开发之中。7、如果项目允许,尽可能采纳较为先进的技术与工具,例如,面向对象的编程方式(OOP)。国内软件企业必需提高软件过程能力以保持竞争力。CMM在欧美、印度获得了巨大成功,是指导进行过程改进最科学规范的模型。CMM应用于两个方面:作为软件过程能力认证时的一个评估标准;作为科学的模型指导企业进行过程改进。所以研究如何利用CMM指导框架来提高软件项目开发的能力是相当有意义的。 1.2 国内外软件项目管理的研究综述CMM是软件过程能力成熟度模型(Capacity Maturity Model)的简称,是卡内基梅隆大学软件工程研究院为了满足美国联邦政府评估软件供应商能力的要求,于1986年开始研究的模型,并于1991年正式推出了CMM 1.0 版。 CMM自问世以来备受关注,在一些发达国家和地区得到了广泛应用,成为衡量软件公司软件开发管理水平的重要参考因素和软件过程改进事实上的工业标准。1.2.1国内软件项目管理的研究现状50多年来计算事业发展史表明,要开发高质量的软件,必须改善软件生产的过程。美国软件工程协会(SEI)提出软件能力成熟度模型 CMM、个体软件过程PSP、团队软件过程TSP,试图解决这一问题。CMM是一个分级的模型,其分层结构基于已有60多年的产品质量原理建立的。SEI的研究人员将这些原理应用于软件开发,改变成软件过程成熟度框架。该框架为软件过程的定量控制建立了项目管理的基本原则,这是软件过程得以不断改进的基础。PSP为基于个体和小型团队软件过程的优化提供了具体而有效的途径。TSP指导项目组中的成员如何有效地规划和管理所面临的项目开发任务,并且告诉管理人员如何指导软件开发队伍,始终以最佳状态来完成工作。我国软件企业起步较晚,从80年代发展至今,经过这20年多来的成长,发展了一些具有一定规模的软件企业,但总体来说规模不够、开发成熟度不高,普遍存在软件生产低效性,大多数项目不是延期、成本上升,就是品质低、返工现象严重,软件过程能力低。我国软件服务商多达8000家,其中还有四分之三的企业员工不到50人,只有5家企业的员工超过了2000人。截止2005年底,目前我国软件企业通过CMM5级认证的企业10家、CMM4级的有15家,CMM3级56家,CMM2级180家。2000年6月国务院下发18号文件,其中第十七条明确规定鼓励软件出口型企业通过GB/T19000-ISO9000系列质量认证体系认证和CMM 认证。其认证费用通过中央外贸发展基金适当予以支持。政府也将其作为振兴软件产业的政策来支持企业通过CMM/CMMI来改进工作流程。中国最大的软件公司一东软集团于2002年12月31日宣布达到了CMM5级,在全球性的分散协调开发体制下,像CMM/CMMI这样的国际性流程模型正变得越来越重要。为贯彻18号文件,各地分别制定了相应的政策,为软件企业的信息化,特别是软件过程信息化提供了强有力的支持。1999-2000年国家863”计划重点项目“软件过程技术和质量保障平台”项目资助计划,大力鼓励以ISO和CMM标准为核心,基于计算机网络技术和协同工作技术,从软件企业标准软件过程的定义和剪裁、基于项目软件过程的工作流和文档流的控制和管理,以及分层的软件质量控制和保障机制诸方面对软件企业的开发过程和质量保障提供全面的计算机辅助支持和管理,并对相关的软件工程工具的集成提供有效支持的项目研发。我国在1992年的时候颁布了第一套软件工程国家规范计算机软件工程规范国家标准汇编,目前最全面的是国家标准汇编是计算机软件工程规范国家标准汇编2003这些标准对我国软件的标准化起着重要的作用。信息产业部有关主管司局依托中国电子技术标准化研究所及其咨询公司,调集了众多的软件专家和软件企业人士,在研究了国外的CMM和ISO/IEC TR15504等国际标准上,结合我国多年软件工程和标准理论以及实践的基础上,于2001年4月3日发布了电子行业标准SJ/T 11234软件过程能力评估模型和SJ/T 11235软件能力成熟度模型,并于2001年11月9日发布了关于贯彻软件能力评估标准的通知,对软件能力评估试点工作进行了部署。对于中小软件企业发展而言,我们要从中小企业的组织结构、技术基础、人力资源、业务环境、开发过程等过程管理出发,借鉴成熟的软件工程模型和思想,运用适合的管理方法去实施软件过程管理,以提高其软件过程能力和市场竞争力。在无纪律的、混乱的软件开发状态中,开发组织不可能从软件工程的研究成果,即较好的软件方法和工具中获益。在很多组织中,软件项目开发进度经常严重滞后、经费预算往往超支乃至翻翻。在这种情况下,软件开发组织一般都不能提供使开发项目避免这些问题的基础设施和资金。我国的软件产业从无到有,虽然在某些领域取得了一定成绩,但整体来看,仍然远落后于西方发达国家的软件产业,尤其在系统软件这个软件产业的核心上。一个非常重要的原因就是国内的软件过程存在很多的弊端和薄弱环节。虽然国内的软件企业数量不少,但是规模大、过程能力高的组织的寥寥无几。绝大部分软件企业都是中小型企业,企业软件过程能力较低,开发过程混乱,甚至纯粹是家庭作坊式的软件行为。其中,主要的软件过程问题有:1、软件开发过程不合理:最明显的特征是重开发、轻测试。对生命周期最重要的需求获取、分析与设计重视不够,相当大的精力放在编程实现阶段。2、 资源配置不合理:很多软件企业都是重技术、轻管理。技术骨干要担任主要的管理工作,分工不合理。3、 项目把握能力差:项目估算不准造成计划严重与实际脱节,监控与推进方面存在较多问题,无法按时完成,费用超出预算。4、 质量问题:质量意识淡薄,软件产品质量难以保证。配置管理不善:版本难以控制,对各种变化反应迟钝,生产过程无章可循。5、 个人风格太重:许多企业具有英雄主义和黑客文化,严重依赖于少数高水平的开发人员,一旦人员流失,对企业造成重大影响。6、 缺乏定量数据:软件企业通常没有收集数据以度量过程和执行情况,这与它们缺乏定义明确的过程和固有开发模式紧密相关。中国软件产业发展时间不长,虽然已有部分技术达到国际水平,但由于商业环境还不够完善,在软件技术的商业化与软件工程管理等方面,与国际同行相比,还存在差距。目前我国对软件过程改进的研究还处于起步阶段,尤其是针对中小企业的过程改进更是如此,既要借鉴国外现有的模型和经验,又要结合我国实际情况,同时还要考虑可操作性。1.2.2 国外软件项目管理的研究现状软件项目过程管理最早源于70年代中期。当时美国国防部曾立题专门研究软件项目做不好的原因,发现70的项目是因为软件管理不善引起的。进而得出一个结论,即软件过程管理是影响软件研发项目全局的因素,而技术只是影响局部。从那时开始,业内人士就着手软件过程管理的研究,到目前为止,在该领域起着重要作用的管理思想有:软件能力成熟度(the Capability Maturity Model, CMM)和ISO9000系列标准。为了保证软件产品的质量,80年代中期,美国联邦政府提出对软件承包商的软开发能力进行评估的要求。因此,卡内基一梅隆大学软件工程研究所于1987年研究发布了软件过程成熟度框架,并提供了软件过程评估和软件能力评价两种评估方法和软件成熟度提问单,它为软件过程管理(也叫项目管理)提供了一套标准,此后相继发布了SW-CMMl.0和SW-CMM2.0和CMMI(Capability Maturity Model Integration)。 CMM 等软件过程管理标准的提出标志着软件过程信息化作为一门专门的学科的诞生。随着软件过程能力各种评测标准和要求的提出,为了提高企业CMM的认证级别,提高企业的市场竞争力。资料表明,通过CMM 评估的软件公司对项目的估计与控制能力约提升40%到50%,生产率提高10%到20%,软件产品出错率下降1/3。到2004年6月,国外达到CMM5级的软件企业55家,其中印度占42家,其中国外很多软件过程能力很高的软件公司因为自身的各种原因没有参与CMM的认证。目前国际上有很多从事软件过程能力提高的组织,他们负责管理软件企业的软件过程能力的评估,为不断提高软件过程能力提供新的检测标准和要求,其中最有代表性的两大管理体系是:一是以欧洲为首的体系,即国际项目管理协会(International Project Management Association,简称IPMA);二是以美国为首的体系,即美国项目管理协会(Project Management Institute,简称PMI)。1.3 研究内容和研究方法 基于CMM成熟度模型,包括中小企业在内的软件企业如何进行软件过程改造,如何在具体项目中引入并实施CMM的标准成为人们关注的重点。CMM的实施核心焦点不在于软件的开发技术层面,而在于工程过程层面和工程管理层面。所谓工程过程层面是指将工程开发的整个过程所涉及的相关议题作为过程学的体系来研究和执行。过程学本身既不同于通常所说的软件工程技术,(如编码,操作系统等等),也不同于一般所言的工程管理学,软件过程既是对软件工程这一领域中所涉及的流程按其独特特性进行专门描述。事实上,任何企业在开发工程产品的实践中,都有开发过程产生,虽然很多企业并未对其进行记录或关注。按照工程过程学派的观点,没有正确的过程就不可能有正确的产品产生,因此对开发组织的过程需要规范和改进。本文所要研究的就是基于CMM软件过程管理中一种改进方法(SP-SWOT)(Andrews,1971,)CMM的改进模型。由于软件过程必然与工程管理相关,因而它不象具体的开发技术问题那样容易规划并着手实施,特别是国内广大的中小软件企业和部门,在采纳某一过程体系进行开发流程的改造时,应特别注意如下几方面的问题,将其作为过程实施开端的要领加以掌握:1不可急于求成和盲目乐观。任何新体系的采纳和改进都必然涉及对旧有体系的重组和调整,需要投入相当的决心和时间。如果企业在充分评估后决定了以CMM工程标准来规范建构自身的软件开发行为,则应该在次序改进的前提下尽早实施企业开发过程调整以便有充裕时间理解和评估前期改造的成效。2必须懂得CMM作为一套标准,它指明的是该作什么(What)而非怎样去做(How),同时CMM也代表了一种对软件生产过程进行理解和分析的独到观点(Philosophy)。CMM着重于过程中的关键要素,而非面面俱到,它主要不是为了解决某个具体项目的问题,也不能保证在此框架下产品开发100%成功,CMM所述的软件过程集合了工程过程和管理过程等方面,对它的过程改进要靠许多细小的阶段性的步骤而非一蹴而就的革新。 3CMM1.1版主要针对大型软件企业,这些企业的开发工作通常关涉软件生产过程的方方面面。对于20人以下的小型企业,1.1版中的一些环节可能并不适用。4企业在采纳CMM过程改进的同时,可以引入新技术与自动化工具帮助软件开发的实现,不过,对过程的改进要求企业全面投入并需较长周期,而技术引进则相对周期较短。但如果企业只是依靠技术改进而不注重过程改进,长远看来,企业可能收获甚少。5知己知彼,百战不殆。实施改进之前,企业应对自身当前所有的软件能力水平及过程状态有尽可能的客观、详尽的了解。可以参考本文后附企业开发能力自测表进行初步诊断,在明了自身实际过程等级之后,企业应确定需要达到的等级目标并找到主要差距所在。企业要想达到的等级目标包括它所特定的过程目标及核心过程域(KPA)。这一等级应符合企业自身开发水平与项目特征。在企业明了了自身实际等级与目标等级之间的差距之后,应制定规划,决定改进次序及程度,可参考的决策因素包括:目标与能力的平衡,投入工期与质量的保证,企业总体发展与当前项目开发的平衡,员工素质条件,最薄弱环节与最急需改进环节,还有最易见效的环节,等等。6如有可能,在企业内部成立专门的过程改进规划组,并配合企业外聘的咨询机构或顾问,拟订出详细的过程实施方案,同时注意在实施过程中对计划进行修正和调节。在此,应将改进方案指定得尽量具体详细,这包括: 目标明确并可检验,有助于切实的检验标准;有详细的实施步骤,有专人负责每一环节的落实,有协调方解决各环节之间的冲突;如需采纳新技术和工具,应详细分析他们的作用及获取方式并准备对新技术和工具进 行改造,对员工进行培训以适应项目所需。制定项目开发时间表,将每个过程环节的实施与此时间表挂钩。对项目开发的投入工期进行预测并据此规划开发工作。 预先规划开发过程中相关数据的采集,分析和提供方式与时段;所有过程,包括:需求分析、项目计划、项目验收和交付,都必须编档并保留,应有具体的监控和考核计划来监督过程的实施。这一计划应考虑到偏差的可能性及应对方案。企业的高层和相关管理人员应参与过程的制定与实施并形成制度。领导层应负责对每一阶段改进的总结并制定出相应的后继方案,另外,凡涉及对已定计划和过程的调整必须事先申请备案并经领导层同意。需强调的最重要的一条原则是,过程改进不可流于书面形式,所有员工都应理解并参与其中。 CMM模式即可用于描述软件机构实际具备的能力成熟度水平,也可用于指明软件企业改进软件工程所需着力之处,它说明了努力的方向,又允许企业自己选择恰当的方式去达到这一目的。实施CMM的经验告诉软件工程人员,在软件项目开发中,更多的问题和错误来源于工程安排的次序,工程规划和工程管理而不是技术上的how to do。软件工程的过程学不断分析和改善已有工程经验,拟定出尽可能完善的开发过程,并按开发生命周期确定重点环节加以管理,最终达到以量化数据来建立能力成熟度等级的目标。良好的工程过程保证了有序的开发实施,避免了以往开发人员被动救火的方式,并将个人主观因素减低至最少。开发人员的个人创造性从独立任意的发挥消解并转移到如何创建性地运用和完善工程过程上来。 作为一种模型,CMM实际上是对软件机构工程过程的理论和数据模拟,在对它的应用中,包括软件产品供应方和应用方两大类。目前,世界范围内已采纳CMM标准的企业纷纷以此标准决定软件项目合同的承接与分包。实践中,许多中小企业在接纳CMM体系时,采纳了保留企业部分原有工程过程指标并加以修改的办法。第二章 软件过程软件过程是人们开发和维护软件以及相关产品的一组活动、方法、实践及变换过程;是生产软件的一系列流程,是为了获取所需要的软件产品而需要完成的一系列有关软件工程的活动。软件过程并不是一个单一体,他是由一个主过程和若干辅助过程共同构成。一般的主过程就是软件开发必须经过的一些过程,称为开发过程。此过程中的任何一个环节都不可缺少,如最传统的瀑布模型中的软件开发过程为:需求分析、总体设计、详细设计、编码、测试、部署和维护。辅助过程则一般指软件开发中的配制管理、文档管理、质量保证、项目管理等过程。虽然软件开发只需要开发过程就能开发出软件,但是缺少辅助过程则会让整个开发过程变得混乱,甚至失去控制,因此辅助过程也是软件过程改进中的重要内容。软件过程的管理包括两个方面,即:过程控制与可持续过程改进。过程控制是可持续过程改进的基础,可持续过程改进最终目的还是为了更好地对过程进行有效控制,在软件过程控制的基础上实现可持续的软件过程改进是提高软件过程能力的一方面。“你能够测度你所说的,并将其用数字表达出来,你就对它有了一些了解;但当你不能测度,不能用数字表达时,你对它的了解就很贫乏18( Roger S. Pressman 著,黄柏素,梅宏译.软件工程实践者的研究方法.机械工业出版社,1999.10)”。不管是软件过程控制还是可持续软件过程改进,都需要首先了解过程中的活动和产品,以确保制订的过程规范被遵循,产品满足过程定义的标准,并通过测量工作量、成本、产品质量来引导控制和改进策略,再根据测量结果进一步判断软件过程控制和过程改进的成效。所以,对软件过程实行定量管理是提高软件过程能力的另一方面。软件过程改进(Software Process improvement ,SPI),是提高软件产品质量和生产率的有效途径.本章系统全面介绍了软件过程的定义,软件过程改进的模型,评估原理等理论内容,通过研究了解软件过程改进的重要性和必要性,为建立过程改进规范和方法提供理论基础。2.1软件过程与过程控制2.1.1定义软件过程Watts Humphrey首先提出应该将过程管理的原则和思想引入到软件开发之中,他认为“为了解决软件的问题,首要的步骤是将整个软件开发任务看作是一个可控的、可度量的和可改进的过程。”随着软件应用的日益广泛,软件质量成为人们关注的焦点。那么是否仅仅通过测试最终产品就可以获得产品质量的保证?实践证明,从客户需求到软件产品的开发过程中,我们不能仅仅依赖对最终产品的测试来保证其质量。在最终产品生成之后,纠正错误造成的修改往往带来高昂的开发成本和低下的开发效率,甚至有时面临难以纠正的局面。 软件产品的质量与开发过程有着密切的关系,如果存在一种明确的过程,使得软件开发以一种可预测的、有序的方式进行,那么就会减少在产品中引入错误的机会,并提供了一种控制所开发软件质量的方式。因此,需要采用过程机制,将整个软件开发过程被划分成若干可管理的开发阶段,使用户不断看到过程制品,同时用户的反馈信息在产品的进展过程中起到重要的作用。 有关软件过程的定义如下: 软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动。 软件过程应该明确定义以下元素: 1、 过程中所执行的活动及其顺序关系 2、 每一个活动的内容和步骤 3、 团队人员的工作和职责2.1.2 有效的软件过程软件过程是指软件生存周期所涉及的一系列相关过程,一个有效的软件过程环境的特点如表一所示: 表一:高效软件过程环境的特点特点软件开发环境中的表现可视性软件开发过程中所执行的任务是可视的,开发项目组中的每个人均可以看到软件过程中的有关文档以及明确划分的职责说明。规程化所有软件开发人员均遵守有关过程的规定,如果有违犯过程的活动发生的话也仅仅是偶然事件。制度化组织的策略及项目的过程都要求所有活动都遵从软件过程的要求。管理上的支持软件过程可以获得组织一级以及开发项目组一级的管理方面的支持。强制有明显的证据表明软件过程被强制执行,对执行的统一性有相应的措施加以检查,对于违反过程的行为应加以报告。职责的明确应明确由软件工程过程组或其他类似的组认可软件过程并负责过程的维护和不断改进反馈包含所有项目成员在内的反馈机制己经建立,并从开发人员处获取软件过程的反馈信息。培训要求所有的开发人员均应了解软件过程的概念并接受有关软件过程的培训,并且对项目组的新成员进行关于软件过程内容的灌输。改进关于软件过程改进活动事先制定有相应的计划,并且通过全员的参与加以实现。有效的软件过程必须具有以下10个条件:1、过程得到遵循建立过程不能徒有虚名,或只是写在纸上面的过程文件。文件编写得再好,若不能认真实施也只能是一纸空文。2、过程受到督促检查过程只有在不断得督促检查,发现问题并及时得到纠正得情况下才能坚持下来。3、过程要有测量通过测量可取得过程运行的数据,以此作为检查监督的依据。4、以过程要求为内容进行培训,使相关人员对过程要求有较为深刻的理解,不仅知道怎么做,最好还知道为什么这样做。5、明确过程所有者明确过程所有者就是要明确过程维护者和他们的指责。6、管理者对过程的有效支持特别是最高管理者必须给过程的制定、实施、维护和改进提供足够的!有效的支持,并且认清这一支持与实现企业的业务目标是一致的,而不是矛盾的。7、把对员工的激励与过程目标的实现结合起来对员工业绩的考察以过程实事的绩效为导向,员工团队的活动必须与过程的目标取得一致。8、新员工接受过程培训,使得过程的实施不因增加新员工而受到影响。9、员工对过程的意见受到鼓励,分析和引导调动员工积极性,使过程不断完善。10过程得到技术的适当支持,如有条件最好选用适合的技术性基础设施和工具等对过程的活动,过程的监视和反馈给予支持,使其更为有效。 2.1.3过程控制 良好的软件过程控制与项目管理是整个软件系统按时、高质量完成的重要保证。软件过程有各种分类方法。按性质化分软件过程可以概括为 3 类:基本过程类、支持过程类和组织过程类。基本过程类包括获取过程、供应过程、开发过程、运作过程、维护过程和管理过程。支持过程类包括文档过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程以及问题解决过程。组织过程类包括基础设施过程、改进过程以及培训过程。在 CMM 中,关键过程域 KPA 被划分为三类:项目管理过程类、组织机构过程类和工程活动过程类。如下表二所示:管理要素等级项目管理软件项目计划、管理等组织机构高级管理、评审等工程活动需求分析、设计、编码、测试等5 优化级技术变硬管理过程变硬管理缺陷预防4 已管理级定量过程管理软件质量管理3 已定义级集成软件管理组间协调组织过程焦点组织过程定义培训程序软件产品工程同行评审2 可重复级需求管理软件项目计划软件项目跟踪与监控软件子合同管理软件质量保证软件配置管理1 初始级无序过程 (表二)其中,项目管理过程类包括项目管理活动,它们从等级 2 的软件计划与跟踪到等级 3 上按已定义的软件过程进行管理,到等级 4 上的定量管理,到等级 5 在经常变化环境中的创新管理。组织机构过程类包括随着组织逐渐成熟而变化的跨项目的职责,开始在等级 3 上对过程问题的关注,继而在等级 4 上对过程的定量理解,最后在等级 5 上是在不断的过程改进环境中对更改的管理。工程活动过程类包含技术活动如需求分析、设计、编码和测试等,在所有等级上都有这些活动,但是它们又是不断进化的,朝着等级 3 的工程活动规范化、等级 4 的统计质量控制和等级 5 的已测量的不断改进进化。2.2 过程改进软件过程改进帮助软件企业对其软件过程的改进进行计划、过程诊断、过程改进方案制定以及实施。 他的实施对象就是软件企业的软件过程,也就是软件产品的生产过程,当然也包括配制管理、软件维护之类的辅助过程,而对于其他的过程并不关注。2.2.1软件过程改进定义软件过程改进/过程改进(Software Process improvement,SPI)帮助软件企业对其软件(制作)过程的改变(进)进行计划、(措施)制定以及实施。 他的实施对象就是软件企业的软件过程,也就是软件产品的生产过程,当然也包括软件维护之类的维护过程,而对于其他的过程并不关注。对于软件企业来说,软件过程是整个企业最复杂、最重要的业务流程,软件产品就是软件企业的生命,改进整个企业的业务流程,最重要的还是要改进它的软件过程。多年以来,人们认识到要想高效率、高质量和低成本地开发软件,必须以改善软件生产过程为中心,全面开展软件工程和质量管理手段。这是世界各国软件产业都要走的路,我国软件产业之所以落后,不是因为技术落后,而是对软件生产的管理落后。CMM就是结合了质量管理和软件工程的双重经验而制定的一套针对软件生产过程的规范。由此可见,对软件生产过程的管理在整个软件企业的管理中起了决定性作用。因此,从这种意义上讲,软件企业的BPR和CMM软件过程改进在实施对象是一致的。在世界范围内,软件项目需求正以非常快的速度增长,并且这种增长看起来还远未达到目的。这种增长已经导致软件开发活动急剧性的增长,已使得对用于构筑软件的过程,正确的说法是软件过程,得到更多的关注。软件过程可以定义为人们用来开发和维护软件以及相关产品(如:工程计划、设计文档、规章、检测事例及用户手册)的一组活动、方法、实践及转换。软件过程重要性的提高已经引起了对软件过程改进的要求,这就需要过程分析和评估的方法。CMM在软件改进措施的策划上,措施计划的实施上和过程定义的都有着特使的价值。在策划改进措施期间,具有有关其软件过程问题和经营环境的知识的软件工程组的成员可将CMM重关键过程域的目目标和当前的实践相比较。应该开查与恭喜目标,管理优先级,实践运行的层次,实施每次实践对组织的价值,以及改组织在其文化背景下一个实践的能力等方面有关的关键实践。接下来,软件工程过程组必须确定那些需要作过程改进,如何实现更改,以及如何获得所需要的买进。CMM通过给有关过程改进的讨论的出发点,并且帮助揭示与通用软件工程实践所采用的那些完全不同的假定,从而对这些活动提供帮助。在实施行动计划计划时,过程组可以用CMM 和关键实践来构造部门可操作的行动计划和定义软件过程。2.2.2.软件过程改进框架在软件企业,软件开发是企业最重要、最复杂的过程。软件产品是软件企业的生命,对软件企业进行流程优化和改进,最主要的还是对其软件过程进行改进。一个软件企业的消耗与收益都在软件产品上,开发过程失败则会给企业带来致命的打击,开发成功则能给企业带来大量的收入,如何降低开发成本,多、快、好、省的开发出所需要的软件是企业立足于市场的根本。当一个软件企业一步步成长的时候,会发现原来的开发方法、管理模式开始不适应目前的开发。需要开发的软件越来越大、越来越复杂,而不断的增加人手对开发的进度的帮助越来越小。由于开发人员数量越多,沟通成本就越高,使得总体开发效率反而下降,因此需要在管理方面进行提高、在流程上进行优化,才能够提高开发效率、缩短开发周期、降低开发成本。软件企业从“软件作坊”进化到“软件工厂”是一个跳跃式的改变,从开发模式、管理模式、企业运营模式都会发生质的变化。很多从团队发展起来的小软件企业很难实现这一步的跨越,生搬硬套更是可能让企业的生命过早结束。如何提升软件开发模式和企业的管理是中小型软件企业发展过程中遇到的最大问题,也是软件过程改进需要解决的问题。目前在世界上用的最多的软件过程改进模型是CMM、CMMI和ISO9000系列标准。软件企业根据自声的软件过程情况,参照模型标准进行对照,找出自身与标准的差异,然后对自身的过程进行改进,以达到标准的要求。在这个过程中需要根据企业自身的情况分步实施,有计划、有组织的进行,如果一开始就全面铺开,波及的范围比较广,则会给企业带来较大的风险。如同有些企业一年内从CMM Level1级别一路升到CMM Level 4 级,不仅没有实施效果,还可能会让企业适应不了新的流程,而造成企业内部的混乱。总体规划、分步实施才能保证软件过程改进的效果,“先僵化,后优化,再固化”才能够让过程改进落到实处。软件组织为了提高自己的过程能力,从不够成熟的过程逐步提高到成熟的过程,必须努力改进软件过程.软件过程改进框架给软件过程改进提供了概括而全面的解释。一、软件过程改进框架的个组成部分如图一软件过程改进的4个组成部分(图一)改进路线图软件过程评估方法软件过程改进计划基础设施1、 软件过程基础设施它包含组织管理基础设施和技术基础设施,可为软件过程改进的活动提供必要的条件和支持。2、 过程改进路线图 它应提供表明有效软件过程特征的模型,以及逐步达到有效软件过程的途径,软件组织依靠路线图的指引可以朝着有效软件过程前进。事实上,CMM和SPICE提供的成熟度等级都属于这种路线图。当然,软件组织从自身的实际情况出发对这些模型所作的裁剪版本,只要是适用的也应看成是过程改进路线图。3、 软件过程评估方法它是评估软件组织现行和现用的软件过程、做法和基础设施的方法和技术。评估通常是要对照过程改进路线图,评估的结果要能表明,从提高过程有效性方面看哪些是强项,哪些是弱项。改进措施应能导致过程成熟度沿着改进路线图提高过程成熟度。过程评估方法可以是公开适用的标准方法,例如SEI评估方法即基于估价的内部过程改进CBA-IPI(CMM-based appraisal for intenal process improvement)或bootstarap方法,也是按SPICE规定的准则进行内部评估.4、 软件过程改进计划评估后把发现的问题转化为软件过程改进的行动计划。这包括为改进过程基础设施以及提高其有效性必须采取的措施,过程改进应能使改进的过程规范化并提高过程的有效性。二、软件过程改进循环软件过程改进通常不可能是一次性的, 想要通过一次改进解决过程存在的所有问题,达到尽善尽美的境地只能是幻想。因此,过程需要持续改进,每次改进要经历4个步骤构成的循环见图二:过程改进循环(图二)评估(1)监控(4)计划(2)改进(3)1、 评估发现弱项或存在的问题。2、 计划针对弱项或问题制定改进计划。3、 改进实施改进计划。4、 监控检验实施的情况,纠正不符合要求的现象。有经验数据表明,整个循环需要个月至个月的时间当这个步骤完成以后,如有必要可再进入新的过程改进循环。2.2.3软件过程改进模型CMM模型的目的就是要改进一个组织的过程,提高过程能力正确的过程改进方式有利于过程改进的实现,能较好调动参与人员的积极性,目前过程改进有自顶向下和自底向上两种方式31(Watts S. Humphrey.小组软件开发过程.人民邮电出版社,2000,11)。自顶向下方式是基于标准的,以存在通用的、软件开发需要的、并且有效的标准过程这一假设为基础,由标准来规范实践,通过变更现有的过程实践以消除其与标准过程之间差距的方式执行过程改进。这种改进方式灵活性差,它隐含了这样一个前提假设:即使一个组织的商业目标已经得到满足,甚至结果比预期目标还要好,但如果那个组织没有利用一些通用的广泛接受的标准实践,与遵循定义过程的组织相比,它将在生产低质量的产品方面存在更高的风险,也就是说本组织的目标和特点不是变更的发起原因。自底向上方式是基于实践,它假设过程的变更必须以本地目标、特点和产品属性驱动,变更通过本地具体领域定义而不是以系列通用的广泛接受的标准。在此方法下,软件过程变更不仅受特殊开发组织的目标驱动,而且受本组织经验驱动。例如,一个以缩短工期为主要目标的组织与一个以生产高质量的软件产品为目标的组织的过程变更方法明显不一样。这种改进方式遵循一个潜在的原理:“不是所有的软件都一样”,即每个组织都不同。它要求每个企业必须首先完全理解本企业开发业务,在选择变更点之前先确定目标,以理解作为基础,根据需要变更,再以经验为指导,而不是通用的一系列实践。对任何想要进行 SPI 的软件组织而言,知道有上面两种方法远远不够,还需要一个操作性更强、分得更细的 SPI 步骤指南。IDEAL 模型是一个单位用于启动、规划和实现过程改善措施蓝图的模型,概括了建立一个成功的过程改进项目的必要步骤,其中 I 代表 Initiating(启动)、D 代表 Diagnosing(诊断)、E 代表 Establishing(建立)、A 代表 Acting(实施)、L 代表 Leveraging(调整),图 4-2 是详细的 IDEAL五阶段模型,它是 SEI 与 HP 公司合作开发的32,它几乎涉及到了 SPI 的方方面面,很多软件组织都是参照其推荐步骤进行软件过程改进并通过了 CMM/CMMI 等级认证评估。下面将介绍 IDEAL 的五个阶段,即启动、诊断、建立、行动和扩充阶段: 对于软件企业来说,软件过程是整个企业最复杂、最重要的业务流程,软件产品就是软件企业的生命,改进整个企业的业务流程,最重要的还是要改进它的软件过程。多年以来,人们认识到要想高效率、高质量和低成本地开发软件,必须以改善软件生产过程为中心,全面开展软件工程和质量管理手段。这是世界各国软件产业都要走的路,我国软件产业之所以落后,不是因为技术落后,而是对软件生产的管理落后。CMM就是结合了质量管理和软件工程的双重经验而制定的一套针对软件生产过程的规范。由此可见,对软件生产过程的管理在整个软件企业的管理中起了决定性作用。因此,从这种意义上讲,软件企业的BPR和CMM软件过程改进在实施对象是一致的。 在世界范围内,软件项目需求正以非常快的速度增长,并且

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论