软件过程改进.doc
《软件过程改进.doc》由会员分享,可在线阅读,更多相关《软件过程改进.doc(21页珍藏版)》请在三一办公上搜索。
1、第1章 软件过程改进软件过程是人们建立、维护和演化软件产品整个过程中所有技术活动和管理活动的集合。目前,软件过程技术是一个非常活跃的研究领域,吸引了大批来自学术界和工业界的专家和学者。目前,每个国家几乎都有自己的软件过程改进网络和组织。软件过程技术的研究和实践主要有三个方向:(1)软件过程分析和建模。软件过程建模方法是软件过程技术的起点,其中形式化半形式化建模方法有基于规则的,基于过程程序的等等。过程分析和过程建模对于保证过程定义的质量、建立全面和灵活的过程体系具有重要的作用。对软件过程的建模主要是使用过程建模语言(Process Modeling Languages,PML)。PML最基本的
2、功能是用于描述和定义过程,建立过程模型。PML的能力和表达方式直接影响着过程模型的质量和建模效率。所以,选择合适的PMLs,成为过程分析、过程建模和选择建模工具的关键。(2)软件过程支持。软件过程支持主要是指研究和开发支持软件过程活动的计算机辅助软件工程(Computer-Aided Software Engineering,CASE)工具,过程支撑工具作为一种技术基础设施,能够很好地支持、管理并规范化软件过程。它的使用将使得软件过程的透明度好,为项目的软件过程提供指导,使得开发者和管理者都有据可依,便于更有效地管理软件过程。软件过程支持工具主要包括软件过程流程工具、过程文档工具、评审工具和人
3、员管理工具。(3)软件过程评估和改进。软件过程评估和改进是指根据某种模型对现有软件过程进行考核和评价,找出其中的不足之处,然后加以改进。改进对生产高质量软件产品和提高软件生产率的重要性已被越来越多的软件开发组织所认同。由美国卡耐基梅隆大学软件工程研究所(CMU/SEI)提出的软件能力成熟度模型除了用于软件过程评估外,还向软件组织提供了指导其进行软件过程管理和软件过程改进的框架。软件过程改进的基本原则是采用过去项目中成功的实践经验。因此,理解、记录和重用部分软件过程是软件过程改进研究的一个重要方向。1.1 CMM综述软件能力成熟度模型(Software Capacity Maturity Mod
4、el,SW-CMM)是CMU/SEI为了满足美国联邦政府评估软件供应商能力的要求,于1986年开始研究的模型,并于1991年正式推出了SW-CMM 1.0版。希赛教育专家提示:目前,有很多能力成熟度模型,例如,安全能力成熟度模型(SE-CMM)、人力资源能力成熟度模型(P-CMM)等。在不造成混淆的情况下,本书把SW-CMM简称为CMM。也就是说,除非特别说明,否则,CMM就是指SW-CMM。CMM自问世以来备受关注,在一些发达国家和地区得到了广泛应用,成为衡量组织软件开发和管理水平的重要参考因素,以及软件过程改进事实上的工业标准。1992年4月,CMU/SEI举行了一个CMM的研讨会,CMU
5、/SEI在广泛听取与会专家的意见之后,于1993年推出 CMM1.1版,这也是目前世界上比较流行和通用的CMM版本。按照CMU/SEI原来的计划,CMM的改进版本2.0应该在1997年11月完成,然后在取得版本2.0的实践反馈意见之后,在1999年完成准CMM2.0版本。但是,美国国防部办公室要求CMU/SEI推迟发布CMM2.0版本,而要先完成一个更为紧迫的项目CMMI。有关CMMI的知识,将在1.5节进行介绍。1.1.1 CMM的基本概念为了行文方便,在本节介绍CMM中用到的有关概念和术语。(1)过程(process):为实现既定目标的一系列操作步骤。(2)软件过程(Software Pr
6、ocess,SP):指人们用于开发和维护软件及其相关产品的一系列活动、方法、实践和革新。其中相关产品是指项目计划、设计文档、编码、测试和用户手册。当一个组织逐步走向成熟,软件过程的定义也会日趋完善,其内部的过程实施将更具有一致性。(3)软件过程能力(Software Process Capability,SPC):描述了在遵循一个软件过程后能够得到的预期结果的界限范围。该指标是对能力的一种衡量,用它可以预测一个组织在承接下一个软件项目时,所能期望得到的最可能的结果。 (4)软件过程性能(Software Process Performance,SPP):表示遵循一个软件过程后所得到的实际结果。
7、软件过程性能与软件过程能力有区别,软件过程性能关注的是实际得到的结果,而软件过程能力关注的是期望得到的结果。由于项目要求和客观环境的差异,软件过程性能不可能充分反应软件过程整体能力,即软件过程性能受限于它的环境。(5)软件过程成熟度(Software Process Maturity,SPM):一个具体的软件过程被明确地定义、管理、评价、控制和产生实效的程度。所谓成熟度包含着能力的一种增长潜力,同时也表明了组织实施软件过程的实际水平。随着组织软件过程成熟度能力的不断提高,组织内部通过对过程的规范化和对成员的技术培训,软件过程也将会被它的使用者关注和不断修改完善。从而使软件的质量、生产率和生产周
8、期得到改善。(6)关键过程(区)域(Key Process Area,KPA):一系列相互关联的操作活动,这些活动反映了一个软件组织改进软件过程时所必须满足的条件。也就是说,关键过程域标识了达到某个成熟程度级别时所必须满足的条件。在CMM模型中,一共有18个关键过程域,分布在第二级至第五级中。(7)关键实践(Key Practices,KP):关键过程域中的一些主要实践活动。每个关键过程域最终由关键实践所组成,通过实现这些关键实践达到关键过程域的目标。一般情况下,关键实践描述了该“做什么”,但没有规定“如何”去达到这些目标。(8)软件过程评估(Software Process Assessme
9、nt,SPA):用来判断一个组织当前所涉及的软件过程的能力状态,判断组织所面向的下一个更高层次上的与软件过程相关的课题,以及利用组织的鼎力支持来对软件过程进行有效的改进。(9)软件能力评价(Software Capability Appraisal,SCA):用来判断有意承担某个软件项目的组织的软件过程能力,或是判断已进行的软件过程所处的状态是否正确(或是否正常)。(10)软件工程组(Software Engineering Group,SEG):负责一个项目的软件开发和维护活动的团体。活动包括需求分析、设计、编码和测试等。(11)软件相关组(Software Related Groups,S
10、RG):代表一种软件工程项目的团体,它支持但不直接负责软件开发或维护工作,如软件质量保证组、软件配置管理组和软件工程过程组等。在CMM的关键实践中,软件相关组通常应该根据关键过程域和组织的上下文来理解。(12)软件工程过程组(Software Engineering Process Group,SEPG):由专家组成的组,他们推进组织采用的软件过程的定义、维护和改进工作。在关键实践中,这个组织通常指“负责组织软件过程活动的组”。(13)系统工程组(System Engineering Group,SEG):负责下列工作的个人或团体:分析系统需求;将系统需求分配给硬件、软件和其他成分;规定硬件、
11、软件和其他成分的界面;监控这些成分的设计和开发以保证它们符合其规格说明。(14)系统测试组(System Test Group,STG):一些负责策划和完成独立的软件系统测试的团体,测试的目的是为了确定软件产品是否满足对它的需求。(15)软件质量保证组(Software Quality Assurance Group,SQAG):一些计划和实施项目的质量保证的团体,其工作目的是保证软件过程的步骤和标准是否得到遵守。(16)软件配置管理组(Software Configuration Management Group,SCMG):一些负责策划、协调和实施软件项目的正式配置活动的团体。(17)培训
12、组(Training Group,TG):一些负责协调和安排组织培训活动的团体。通常这个组织负责准备和讲授大多数培训课程并协调其他培训方式的使用。1.1.2 CMM的基本框架CMM模型描述和分析了软件过程能力的发展程度,确立了一个软件过程成熟程度的分级标准,如图1-1所示。(1)初始级:软件过程的特点是无秩序的,有时甚至是混乱的。软件过程定义几乎处于无章法和步骤可循的状态,软件产品所取得的成功往往依赖极个别人的努力和机遇。初始级的软件过程是未加定义的随意过程,项目的执行是随意甚至是混乱的。也许,有些组织制定了一些软件工程规范,但若这些规范未能覆盖基本的关键过程要求,且执行没有政策、资源等方面的
13、保证时,那么它仍然被视为初始级。图1-1 软件过程成熟度的级别(2)可重复级:已经建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目,有章可循并能重复以往所取得的成功。焦点集中在软件管理过程上。一个可管理的过程则是一个可重复的过程,一个可重复的过程则能逐渐演化和成熟。从管理角度可以看到一个按计划执行的且阶段可控的软件开发过程。(3)已定义级:用于管理的和工程的软件过程均已文档化、标准化,并形成整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合的、适当修改后的标准软件过程来进行操作。要求制定组织范围的工程化标准,而且无论是管理还是工程开发都需要一套文档化的标
14、准,并将这些标准集成到组织软件开发标准过程中去。所有开发的项目需根据这个标准过程,剪裁出项目适宜的过程,并执行这些过程。过程的剪裁不是随意的,在使用前需经过组织有关人员的批准。(4)已管理级:软件过程和产品质量有详细的度量标准。软件过程和产品质量得到了定量的认识和控制。已管理级的管理是量化的管理。所有过程需建立相应的度量方式,所有产品的质量(包括工作产品和提交给用户的产品)需有明确的度量指标。这些度量应是详尽的,且可用于理解和控制软件过程和产品,量化控制将使软件开发真正变成为一个工业生产活动。(5)优化级:通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地进行过程
15、改进。如果一个组织达到了这一级,表明该组织能够根据实际的项目性质、技术等因素,不断调整软件生产过程以求达到最佳。除第一级外,每一级都设定了一组目标,如果达到了这组目标,则表明达到了这个成熟级别,自然可以向上一级别迈进。因为从第二级开始,每一个低级别的实现均是高级别实现的基础,所以CMM体系不主张跨级别的演化。SEI建议,从低一级别向高一级别演化的时间需要在1230个月之间。CMM分级标准有两个方面的用途。一方面,软件组织利用它可以评估自己当前的过程成熟度,并以此提出严格的软件质量标准和过程改进的方法和策略,通过不断的努力去达到更高的成熟程度。另一方面,该标准也可以作为用户对软件组织的一种评价标
16、准,使之在选择软件开发商时不再是盲目的和无把握的。1.1.3 CMM的主要内容CMM为软件组织的过程能力提供了一个阶梯式的演化框架,它采用分层的方式来解释其组成部分。在第二至第五个成熟等级中,每个等级包含一个内部结构的概念。每一级向上一级迈进的过程中都有其特定的改进计划,具体情况如图1-2所示。图1-2 不断改进的过程(1)初始级的改进方向:建立项目过程管理,实施规范化管理,保障项目的承诺;进行需求管理方面的工作,建立用户与软件项目之间的沟通,使项目真正反映用户的需求;建立各种软件项目计划,如软件开发计划、软件质量保证计划、软件配置管理计划、软件测试计划、风险管理计划及过程改进计划等;积极开展
17、软件质量保证活动(Software Quality Assurance,SQA)。(2)可重复级的改进方向:不再按项目制定软件过程,而是总结各种项目的成功经验,使之规则化,把具体经验归纳为组织的标准软件过程,把改进软件组织的整体软件过程能力的软件过程活动,作为软件开发组织的责任;确定全组织的标准软件过程,把软件工程及管理活动集成到一个稳固确定的软件过程中,从而可以跨项目改进软件过程,也可以作为软件过程剪裁的基础;建立SEPG,长期承担评估与调整软件过程的任务,以适应未来软件项目的要求;积累数据,建立组织的软件过程库及软件过程相关的文档;加强培训。(3)已定义级的改进方向:着手软件过程的定量分析
18、,已达到定量地控制软件项目过程的效果;通过软件的质量管理达到软件质量的目标。(4)已管理级的改进方向:防范缺陷,不仅在发现了问题能及时改进,而且应采取特定行动防止将来出现这类缺陷;主动进行技术改革管理、标识、选择和评价新技术,使有效的新技术能在开发组织中实施;进行过程变更管理,定义过程改进的目的,经常不断地进行过程改进。 (5)优化级的改进方向:保持持续不断的软件过程改进。1.1.4 CMM的内部结构CMM的5个成熟度等级中,除第一级外,每一级按完全相同的内部结构构成,如图1-3所示。图1-3 CMM的内部结构图成熟度等级为顶层,不同的成熟度等级反映了软件组织的软件过程能力和该组织可能实现预期
19、结果的程度。在CMM中,每个成熟度等级(第一级除外)规定了不同的KPA,一个软件组织如果希望达到某一个成熟度级别,就必须完全满足KPA所规定的要求,即满足KPA的目标。每个级别对应的KPA如表1-1所示。公共特性是把每个KPA的所有关键实践按照它们的属性进行分组。无论哪个KPA,它们的关键实施都统一按5个公共属性进行组织,分别是执行约定、执行能力、实施活动、度量和分析、验证实施。(1)执行约定(Commitment To Perform,CTP):也称为实施保证,是组织为了建立和实施相应KPA所必须采取的行动,这些行动主要牵涉到组织范围的政策和高层管理的责任。执行约定一般与组织的方针政策和管理
20、方式有关。表1-1 关键过程域的分类过程分类等级管 理 方 面组 织 方 面工 程 方 面优化级技术改进管理过程改进管理缺陷预防可管理级定量管理过程软件质量管理已定义级集成软件管理组间协调组织过程焦点组织过程定义培训程序软件产品工程同级评审可重复级需求管理软件项目计划软件项目跟踪与监控软件子合同管理软件质量保证软件配置管理(2)执行能力(Ability To Perform,ATP):也称为实施能力,描述为了使某软件过程得以始终如一地执行,必须在项目或组织中存在的先决条件,是组织实施KPA的前提条件。组织必须采取措施,在满足了这些条件后,才有可能执行KPA的实践活动。执行能力关注于项目计划的实
21、践、资源的配置、责任的布置与授权,以及各种有关的培训等。(3)实施活动(Activities Perform,AP):描述执行KPA所需的必要行动、任务和步骤。在5个公共属性中,实施活动是唯一与项目执行相关的属性,其余4个属性则涉及组织CMM能力基础设施的建立。实施活动一般包括计划、执行的任务、任务执行的跟踪等。(4)度量和分析(Measurement And Analysis,MAA):关注KPA的活动需要做的度量和度量分析要求。典型的度量和度量分析的要求是确定执行活动的状态和执行活动的有效性。度量与分析一般包括一些度量的例子,通过这些例子可以知道如何确定操作活动的状态和效果。(5)实施验证
22、(Verifying Implementation,VI):实施验证是验证执行活动是否与建立的过程一致,核实以确保所实施的过程是按照原定的计划以及达到其目标,着眼于保证过程的实现要通过独立的个人和高级管理人员验证。验证实施涉及到管理的评审和审计以及质量保证活动,包括过程执行的确保,产品要求的确保,高层管理人员进行的审核和项目经理进行的审核。1.1.5 SPA和SCA的比较分析软件过程评估所针对的是软件组织自身内部软件过程的改进问题,目的在于发现缺陷,提出改进方向。评估组以CMM模型为指引调查、鉴别软件过程中的问题,反过来将这些问题与CMM关键实践活动所提出的指导一起用于确定组织的软件过程改进
23、策略。软件能力评价是对接受评价者在一定条件下、规定时间内能否完成特定项目的能力考核,即承担风险的系数大小。评价包括承包者是否有能力按计划开发软件产品,是否能按预算完成等。通过利用CMM模型确定评价结果后,就可以利用这些结果确定选择某一承包商的风险。也可以用来判断承包者的工作进程,推动他们改进软件过程。CMM为评估和评价提供了一个参考框架,指出了在评估和评价中通常采用的步骤,如图1-4所示。图1-4 软件过程评估和软件能力评价的步骤具体来说,评估过程是:选择一个工作组;完成问卷调查和取样工作;结果分析;现场访问;与CMM模型对照分析;依据KPA的基本情况列出评估提纲。 尽管SPA和SCA有很多相
24、似之处,但由于其目的和结果的不同,它们之间的差异也是必然存在的,如:(1)SPA和SCA在出发点和目标上的不同,使得会谈目的、调查范围、收集的信息和输出的表示方式上有着本质的不同。尤其在一些细节规范方面,SPA和SCA的方法有很大差异。 (2)SPA和SCA的结果和结果所起的作用不同。因为两者的侧重点不一样,即使是对同一个应用项目,运用相同的方法,也不会得出相同的结果。(3)被评估和评价单位的态度对SPA和SCA活动的影响。SPA在某种意义上被 评估单位的态度较积极,而SCA在某种意义上被评价单位的态度可能比较慎重。SPA 是在一个开放的、互相协作的环境中进行的,而SCA往往是在有较大的阻力的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 过程 改进
链接地址:https://www.31ppt.com/p-3950942.html