软件过程改进与管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件过程改进与CMMI
第一章绪论
1.1本课题研究的背景
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的过程改进实践作了更为深入的研究和分析,以期为国其他软件企业实施软件过程改进、提高软件质量、提高企业管理水平提供思路和借鉴。
第二章软件过程与软件过程改进
2.1软件过程
2.1.1软件过程概念
1993年,过程理念的倡导者Hammer和Campy指出,过去200年来,人们所熟知的面向任务的思维方式正面临着挑战,未来所有的商业运作都将以过程的方式来对待。在软件领域,软件过程理念的领袖Watts Humphery领导并完成了软件过程改进领域的巨大成果CMM,他认为要解决软件危机,首要的是把软件活动看作可控的、可度量的和可改进的过程。
不关注和关注过程的组织有着明显不同的文化。前一种组织里,人们期望活动都能产生出实在的“东西”,比较关注活动的短期效果,认为与过程相关的是一些低优先级的活动;在后一种组织里,认为生产的“东西”只是过程的一个节点,只是全局的一部分,过程文档只被看作一个帮助过程执行的工具,而不是被看做最终的目标。实际上,在以过程为核心的组织里,过程并不是一成不变的经典,它本身会通过反馈、评估等一系列活动不断取得改进。
当然并不是说不关注过程的组织没有过程,只是这些组织的过程可能并不一致、协调,每个人都有自己的过程;过程可能是随机并且在无规则的改进着。对于软件团队而言,具体例子就是成员采用不同的编译规和开发语言变可以变更任何程序而不考虑他人等。当然这是当前盛行面向客户的小组协作所不期望的。
过程理念还在快速发展,2000年版的ISO9000的一大变化要求以过程为中心描述活动,而CMM的最新版本CMMI已超越软件的行业局限,成为可以适合多种行业的过程改进模型。
2.1.2软件过程定义
由于不同的人和不同的软件开发组织关注点不一样,因此可能会给软件过程下不一样的定义,这些定义往往会强调了过程的某个方面而忽略了其他方面。美国卡耐基梅隆大学软件工程研究所(SEI)在CMM模型中给过程的定义是:“过程就是指用于生产以及软件进化的一系列的活动、方法及实践。”软件过程:就是指将用户需求转化为可执行系统的的开发和演化过程中所进行的软件工程活动的全体,是用于生产软件产品的工具、方法和实践的集合。这可以说是关于过程的经典的、全面的定义,它包含了过程的三个方面的特性(过程定义、过程活动、过程结果):
第一,过程应该被定义。通常情况下,是指将过程所包含的活动及程序文档化(可以采用保存于纸介质上也可以采用电子文档的形式);
第二,执行过程的每一个人都要学习过程的知识。即让每个过程执行者的头脑中都有对过程知识的深刻认识,且以此来驱动他们的行为活动;
第三,通过执行过程中的活动,获得最终预期的过程结果。
该过程定义的三个方面都很重要,它们之间的关系是相辅相成的;
第一,任何过程只有被大家学习、理解并且执行,才能解决实际问题。如果一个过程只停留在定义阶段,那么这个过程只能永远停留在文本阶段。
第二,在过程进行了明确的定义之后,如果过程的参与者接受了关于过程的培训、学习了过程相关的知识,但是却在实践中没有遵循过程,那么该过程也是
没有实际效果的过程。反之,如果参与过程的组织成员都理解了过程的定义,接受了与过程相关的培训,而且在实际的工作中都能按照过程的要求去规自己的活动,那么该过程就是一个真正的、完整的、有效的过程。
2.2软件过程改进
2.2.1软件过程为什么要改进
提高软件过程能力的实践称为软件过程改进。软件过程改进的根本目的是:提高质量、提高生产率并且降低开发成本。我们可以把软件组织的软件过程与人作比较,人在成长的过程中,存在不同的成熟状态。同样,我们也可以把软件过程分为不成熟的过程、成熟的过程和制度化的过程。
不成熟的软件过程一般具有以下特点:
•过程未被严格的遵循和实施;
•特别依赖于英雄人物,人离开了过程就丢了;
•过程是临时拼凑而成的;
•过程和质量的可见度低;
•质量难于预测;
•功能和质量为了满足进度而妥协。
•成熟的软件过程具有以下特点:
•很好地进行了文档化;
••持续地进行改进;
•正规、严格地使用;
•良好的控制;
•对产品和过程进行了度量;
制度化的过程具有的特点:
•过程成为人们的做事方法,即使最初定义过程的人员离开也不会改变。
从以上的比较可以看出,成熟的过程对于开发出良好的产品显然是有利的,然而,软件组织的过程成熟如同人一样,并不是一生下来就是成熟的,因此需要对软件过程进行改进。软件过程的改进并不是非正式的、随机的改进,不是只改进一次就够了,而是要持续不断地进行改进。这是因为:首先,人们对事物认识需要循序渐进,要经过理论和实践相互作用的循环上升的过程;其次,过程是与人相关的,过程的成熟有赖于人的成熟,而人的成熟是缓慢的;第三,在知识经济时代,企业所处的商业环境已经发生了根本性的变化。顾客需求瞬息万变,技术创新不断加速,产品生命周期不断缩短,市场竞争日趋激烈。
2.2.2软件过程改进的基本思路
软件开发组织的软件过程能力,体现了软件开发组织的实力。这种实力的提高,同样是需要一个逐渐提高的过程。对于软件开发组织的管理人员,软件过程能力的提高同样是一个需求认真策划的复杂过程。
由前面的论述可知,软件过程能力是是指把企业从事软件开发和生产的过程本身透明化、规化和运行的强制化,描述了在遵循一个软件过程后能够得到的预期结果的界限围。简单来说,就是指一个过程在的生产软件产品的能力。该指标是对能力的一种衡量,用它可以预测一个组织在承接下一个软件项目时,所能期望得到的最可能的结果。那么软件过程改进的基本思路就是首先形成一定的软