软件过程改进与管理 The pony was revised in January 2021软件过程改进与C M M I第一章绪论本课题研究的背景21世纪是信息社会高速发展的世纪,软件作为信息技术的核心,将在其中起着至关重要的作用。
随着信息经济、网络经济和科学技术的发展,各行各业已经越来越离不开软件的支持,软件产业的发展,各行各业已经越来越离不开软件的支持,软件产业的发展水平已经成为衡量信息技术发展水平的一个重要因素。
自出现软件危机以来,学术界和企业界对软件工程的研究都倾注了大量的人力、物力和财力,多年来也取得了一些成效。
但就全世界而言,软件质量问题仍然非常严重,特别对于军方来说,更是一个致命的问题。
正因为如此,美国国防部不惜花费重金,委托美国卡内基梅龙软件工程学院(SEI)研究制定软件质量保证规范。
1991年,第一个软件保证规范能力成熟度模型(CMM:Capabiliy Maturity Model)制定完成并在美国应用,随后CMM作为一种软件能力成熟度评估标准在全世界推广实施,主要用于指导软件开发过程改进软件管理能力的提高,从而极大地提高了软件项目的控制能力和软件产品的质量,促进了全世界软件产业的健康发展。
CMM的应用虽然得到了很好的成效,但也存在一些缺陷,能力成熟度模型集成(CMMI:Capability Maturity Model Integration)应运而生,它是在CMM基础之上的发展和完善,2002年SEI正式推出CMMI,2005年开始逐步取代CMM.从我国软件产业的发展现状来看,企业管理软件过程的能力还比较弱,过程混乱使得新技术、新工具的优势难以体现。
究其原因,是因为我国的软件过程管理缺乏规范化和标准化。
于是,越来越多的软件企业开始关注软件过程能力的提高,我们把这种用于提高软件过程能力的实践称为软件过程改进。
有人将软件过程改进比喻成“练内功”,作为软件企业,只有通过苦练内功,加强软件过程改进,才能够参与到国际化的竞争中去。
CMM和CMMI是软件过程改进领域的重要成果,也是适用于软件企业质量管理和过程改进的重要标准。
近年来,国内软件企业也兴起了认证热潮,CMM受欢迎的程度远远超过了ISO同类标准。
中央和地方政府也出台了一些优惠政策支持软件企业的CMM认证:国务院出台了《鼓励软件产业和集成电路产业发展若干政策》,第十七条鼓励软件企业出口型企业通过GB/T19000-ISO9000系列质量保证体系认证和CMM认证的软件出口企业,可向外经贸主管部门申请认证费用资助。
本论文正是在这样的背景下,研究分析了软件过程改进的CMM/CMMI理论,并理论联系实际,以某公司为对象,对软件企业基于CMMI的过程改进实践作了更为深入的研究和分析,以期为国内其他软件企业实施软件过程改进、提高软件质量、提高企业管理水平提供思路和借鉴。
第二章软件过程与软件过程改进软件过程软件过程概念1993年,过程理念的倡导者Hammer和Campy指出,过去200年来,人们所熟知的面向任务的思维方式正面临着挑战,未来所有的商业运作都将以过程的方式来对待。
在软件领域,软件过程理念的领袖Watts Humphery领导并完成了软件过程改进领域的巨大成果CMM,他认为要解决软件危机,首要的是把软件活动看作可控的、可度量的和可改进的过程。
不关注和关注过程的组织有着明显不同的文化。
前一种组织里,人们期望活动都能产生出实在的“东西”,比较关注活动的短期效果,认为与过程相关的是一些低优先级的活动;在后一种组织里,认为生产的“东西”只是过程的一个节点,只是全局的一部分,过程文档只被看作一个帮助过程执行的工具,而不是被看做最终的目标。
实际上,在以过程为核心的组织里,过程并不是一成不变的经典,它本身会通过反馈、评估等一系列活动不断取得改进。
当然并不是说不关注过程的组织没有过程,只是这些组织的过程可能并不一致、协调,每个人都有自己的过程;过程可能是随机并且在无规则的改进着。
对于软件团队而言,具体例子就是成员采用不同的编译规范和开发语言变可以变更任何程序而不考虑他人等。
当然这是当前盛行面向客户的小组协作所不期望的。
过程理念还在快速发展,2000年版的ISO9000的一大变化要求以过程为中心描述活动,而CMM的最新版本CMMI已超越软件的行业局限,成为可以适合多种行业的过程改进模型。
2.软件过程定义由于不同的人和不同的软件开发组织关注点不一样,因此可能会给软件过程下不一样的定义,这些定义往往会强调了过程的某个方面而忽略了其他方面。
美国卡耐基梅隆大学软件工程研究所(SEI)在CMM模型中给过程的定义是:“过程就是指用于生产以及软件进化的一系列的活动、方法及实践。
”软件过程:就是指将用户需求转化为可执行系统的的开发和演化过程中所进行的软件工程活动的全体,是用于生产软件产品的工具、方法和实践的集合。
这可以说是关于过程的经典的、全面的定义,它包含了过程的三个方面的特性(过程定义、过程活动、过程结果):第一,过程应该被定义。
通常情况下,是指将过程所包含的活动及程序文档化(可以采用保存于纸介质上也可以采用电子文档的形式);第二,执行过程的每一个人都要学习过程的知识。
即让每个过程执行者的头脑中都有对过程知识的深刻认识,且以此来驱动他们的行为活动;第三,通过执行过程中的活动,获得最终预期的过程结果。
该过程定义的三个方面都很重要,它们之间的关系是相辅相成的;第一,任何过程只有被大家学习、理解并且执行,才能解决实际问题。
如果一个过程只停留在定义阶段,那么这个过程只能永远停留在文本阶段。
第二,在过程进行了明确的定义之后,如果过程的参与者接受了关于过程的培训、学习了过程相关的知识,但是却在实践中没有遵循过程,那么该过程也是没有实际效果的过程。
反之,如果参与过程的组织成员都理解了过程的定义,接受了与过程相关的培训,而且在实际的工作中都能按照过程的要求去规范自己的活动,那么该过程就是一个真正的、完整的、有效的过程。
软件过程改进软件过程为什么要改进提高软件过程能力的实践称为软件过程改进。
软件过程改进的根本目的是:提高质量、提高生产率并且降低开发成本。
我们可以把软件组织的软件过程与人作比较,人在成长的过程中,存在不同的成熟状态。
同样,我们也可以把软件过程分为不成熟的过程、成熟的过程和制度化的过程。
不成熟的软件过程一般具有以下特点:过程未被严格的遵循和实施;特别依赖于英雄人物,人离开了过程就丢了;过程是临时拼凑而成的;过程和质量的可见度低;质量难于预测;功能和质量为了满足进度而妥协。
成熟的软件过程具有以下特点:很好地进行了文档化;持续地进行改进;正规、严格地使用;良好的控制;对产品和过程进行了度量;制度化的过程具有的特点:过程成为人们的做事方法,即使最初定义过程的人员离开也不会改变。
从以上的比较可以看出,成熟的过程对于开发出良好的产品显然是有利的,然而,软件组织的过程成熟如同人一样,并不是一生下来就是成熟的,因此需要对软件过程进行改进。
软件过程的改进并不是非正式的、随机的改进,不是只改进一次就够了,而是要持续不断地进行改进。
这是因为:首先,人们对事物认识需要循序渐进,要经过理论和实践相互作用的循环上升的过程;其次,过程是与人相关的,过程的成熟有赖于人的成熟,而人的成熟是缓慢的;第三,在知识经济时代,企业所处的商业环境已经发生了根本性的变化。
顾客需求瞬息万变,技术创新不断加速,产品生命周期不断缩短,市场竞争日趋激烈。
软件过程改进的基本思路软件开发组织的软件过程能力,体现了软件开发组织的实力。
这种实力的提高,同样是需要一个逐渐提高的过程。
对于软件开发组织的管理人员,软件过程能力的提高同样是一个需求认真策划的复杂过程。
由前面的论述可知,软件过程能力是是指把企业从事软件开发和生产的过程本身透明化、规范化和运行的强制化,描述了在遵循一个软件过程后能够得到的预期结果的界限范围。
简单来说,就是指一个过程内在的生产软件产品的能力。
该指标是对能力的一种衡量,用它可以预测一个组织在承接下一个软件项目时,所能期望得到的最可能的结果。
那么软件过程改进的基本思路就是首先形成一定的软件过程;然后,对其不断进行调整、优化,使得过程能力不断提高。
目前流行的过程改进模型是IDEAL模型。
IDEAL模型以过程改进环的形式表示,如图2-2所示。
IDEAL模型将软件过程改进的过程分为五个阶段:初始化、诊断、建立、行动、改进。
IDEAL取自五个单词的缩写。
通过该模型,我们可以清楚地看到软件过程改进的基本思路与主要流程。
准备阶段为IDEAL模型的起点,主要为软件过程改进提供准备,包括建立初始的过程改进组织结构和基础,制定战术计划和改进目标等。
诊断阶段为组织走上持续软件过程改进循环奠定基础。
此阶段的任务是根据企业远景目标和当前的软件过程能力,完善软件过程改进行动计划草案。
建立阶段为当前过程能力中存在的问题划分处理优先等级。
制定整体战略行动计划,用于指导软件过程改进的活动;此阶段的任务是制定可度量的目标、定义度量标准、分配必要的资源。
行动阶段的任务是创建、指导、实施行动计划。
改进阶段的任务是通过实践、收集有用数据、完善度量和评价本次软件过程改进过程中使用的策略、方法和架构是否合理、完善。
为IDEAL模型的下一次循环奠定良好的基础。
过程改进的方法软件过程改进是软件过程管理不断改进和不断完善的过程。
它是一项综合并且需要持续开展的活动,它面对的既是软件开发的过程模型,同时也是针对每一个具体软件项目的过程实例。
20世纪90年代前后,软件界针对如何进行软件过程管理和改进,提出了各种方案及适用于软件企业的质量标准和过程改进模型。
其中,ISO9001,SPICE,CMM/CMMI 使用广泛,具有一定代表性。
所以在这里,对这些标准和模型作简要介绍。
ISO9001ISO9000族标准是目前国际上影响最为深远的质量管理标准。
它是国际标准化组织(ISO)于1987年公布的,最初针对制造行业,但现在已经面向更为广阔的领域。
ISO9001是ISO9000族中一个重要的质量标准,是一个符合软件开发与维护的标准。
它于1994年由ISO公布,明确规定了质量体系的要求。
如果软件企业开发方能够达到这些要求,表明它具备了质量保证能力,从而在从产品设计到售后服务的所有阶段,可防止出现不合适格的产品,使用户对产品满意。
ISO9001标准已有了新的版本ISO9001:2000,在2000版本中,标准所重点关注的不是“产品质量”而是“过程质量”。
它强调以顾客满意为目的,以过程管理为导向,鼓励组织在建立、实施和改进质量管理体系及提高有效性时,采用过程方法,通过满足顾客要求,增强顾客满意度。
它还把94版的20个要素分别归类于管理职责、资源管理、产品实现及测量、分析和改进四大类,构成一种过程方法模式的结构,实现了以过程的连续性替代了20个要素的不连续,符合PDCA循环规则,且通过持续改进的环节使质量管理体系的水平达到螺旋式上升的效应,这使得任何采用标准的组织都能方便地理顺其质量管理体系,而无须花很大气力去识别质量活动与要素的对应关系。