《能力成熟度模型C.ppt》由会员分享,可在线阅读,更多相关《能力成熟度模型C.ppt(53页珍藏版)》请在三一办公上搜索。
1、软件工程 软件工程项目管理概述,思考题:,为什么说结构化的软件开发是软件可维护性的前提?,1、结构化的软件开发才会有开发过程文件,而这些文件是结构化维护的前提;2、只有坚持结构化的软件开发才能使软件更可理解。,本次课程学习内容:,1、什么是CMM?(重要)2、什么是过程能力,什么是过程性能?(非常重要)3、什么是过程成熟度?(了解)4、CMM的过程成熟度模型框架。(非常重要)5、CMM的内部组织结构。(重要),软件开发本质,软件生存周期过程,定义,软件生存周期模型,软件工程生存周期过程,支持过程方向(活动与定序)的建立,形成,软件开发方法学结构化方法面向对象方法面向数据结构 方法维也纳开发方
2、法(VDM),给出实现开发过程的途径,支持/管理技术与方法,作用于,仅当软件过程予以有效管理时,才能实现有效的软件工程。,九 CMM(the Capability Maturity Model for software)CMM是什么?CMM的知识结构,过程是生产产品的机制.不论是过程改善还是能力确定,均需要过程评估,而过程评估通常基于已提出的一些评估模型.,在80年代中期,美国工业界和政府部门开始认识到:在软件开发中,关键的问题在于软件开发组织不能很好地定义和控制其软件过程。从而使一些好的开发方法和技术都起不到所期望的作用。,针对这一问题:1986年11月,美国卡内基-梅隆大学软件工程研究所(
3、SEI)开始开发过程成熟度框架。1987年9月,SEI发布了过程成熟度框架的简要描述和成熟度调查表。1991年,SEI将过程成熟度框架演化为CMM 1.0版:CMU/SEI-91-TR-24、CMU/SEI-91-TR-25。1993年,SEI根据反馈,提出CMM 1.1版:CMU/SEI-93-TR-25。目前,已经提出CMM 2.0版。,是什么?,CMM为控制软件过程提供了一种业界认可的评估指标体系,一种软件能力成熟度模型注:没有涉及评估过程的方法.,过程管理,过程规划,评 估,组织,过程控制,人员指派,领导,至少涉及:1)评估模式;2)评估指标体系;3)评估方法学;4)评估技术;等,CM
4、M:支持建立过程能力评估 的评估指标体系 包括 评估指标 指标体系,2 的基本内容)基本思想(Philosophy)支撑软件产品系统质量的三大要素:“整个软件任务可以看作是一个过程,该过程可以予以控制、测量和改进”,A,B,D,C,People,Process,Technology,)基本概念:(1)何谓过程?过程(Process)是一种手段,通过该手段可以把人、规程、方法、设备以及工具进行集成,以产生一种所期望的结果。(the means by which people,procedures,method,equipment,and tools are integrated to produ
5、ce a desired end result.)(2)过程能力 定义:(开发组织或项目组)通过遵循其软件过 程能够实现预期结果的程度。,range,可见:一个组织的软件过程能力,是未来项目结果的指示器,给出了一种预测该组织承担下一个软件项目可能结果的方法。是不同等级过程能力的基本指标,低过程能力的基本特征 非常依赖当前的参与人员(practitioners);什么事情(包括软件过程与管理)均是临时准备;没有严格的下一步;冒险地使用新技术;复审和测试常常不足;产品质量很难预测 交付的“东西”不符合要求;进度延迟和预算超额。,高过程能力的特征 定义了过程,建立了使用技术的基础;开发和管理遵循一个
6、确定的途径;过程得到了很好地控制,并得到各方面(包括测量)的支持;实现了过程制度化,并不断改进。,(3)过程性能(Process Performance)遵循一个过程所达到实际结果的一个测度(measure)过程能力和过程性能之间的关系,Capability,Performance,注意:软件过程能力与软件过程性能之间的关系:一个是能够实现预期结果的程度,一个是得到的实际结果 一个项目的实际过程性能,可能并不充分反映其所在组织 的整个过程能力。(由于该项目的具体属性和执行该项目 的环境所限),(4)过程成熟度(Process Mature)一个特定软件过程被明确和有效地定义、管理、测量和控制的
7、程度。(Definition:Process Mature The extent to which a specific process is explicitly:defined(you know what is done),managed(you can control the process qualitatively),measured(you know how much is done,and how well),controlled(you can control the process quantitatively),effective(you can improve the p
8、rocess rationally)),软件过程成熟度指明:一个软件开发组织软件过程能力的增长潜力;-能力提高的基础性 表明一个开发组织软件过程的丰富多样性,-能力提高的可能性 在各开发项目中运用软件过程的一致性。-能力提高的持续性 这意味着:由于开发组织通过运用软件过程,使各项目执行软件过程的纪律性一致地增强,导致软件生产率和质量可以得到不断地的改进。,组织成熟度(Organizational Maturity)组织的成熟度是由一组过程的 组合能力来表达的,其中 包括支持它们的制度因素(factor)-pertains to set of processes 高的组织成熟度,是将组织的一组过
9、程看作为一个整体,该整体是高的过程能力。其主要表现为:不论是开发还是管理,均有明确、严格的途径;定义了组织过程并不断改善之;得到了管理人员和其他人员的支持;实施了很好的控制;,()能力成熟度等级 软件开发组织在走向成熟的过程中,几个具有明确定义的、可以表征其软件过程能力成熟程度的“平台”。该平台(每一等级)包含一组过程目标。当一个软件开发组织达到其中一个目标时,则表明软件过程的一个(或几个)重要成分得到了实现,从而导致该组织软件过程能力的增长。显然,每一个成熟度等级为达到下一个等级提供了一个基础。,3)CMM的软件过程成熟度框架,初始级(1),可重复级(2),已定义级(3),已管理级(4),持
10、续优化级(5),可重复的过程,标准的一致的过程,可预言的过程,持续改善的过程,(1)成熟度框架 在这一框架中,将过程能力成熟度分为五级:初始级,可重复级,已定义级,已管理级,持续优化级。,通过成熟度级别,定义了在使软件过程成熟的过程 中的 演化状态。,可见,过程成熟度框架:描述:一条从无序的、混乱的过程达到成熟的、有纪律 的软件过程的进化途径。用途:以软件过程成熟度框架,可以导出过程改进策略,为软件过程的不断改进的历程提供了一份导引图:-指导软件开发组织不断识别出其软件过程的缺陷-引导开发组织在各个平台上“做什么”改进(但它 并不提供“如何做”的具体措施。基础:软件过程成熟度框架的基础是等级内
11、部结构。,(2)各等级的基本特征初始级 主要特征:组织:组织通常没有提供开发和维护软件的稳定的环境。项目:当发生危机时,项目通常放弃计划的过程,回复到编码和测试。过程能力:不可预测。(unpredictable)由于:软件开发无规范;软件过程不确定、无计划、无秩序;过程执行不“透明”;需求和进度失控。结果:项目的成败完全取决于个人的能力和努力;软件性能随个人具有的技能、知识和动机的不同而变化,并只能通过个人的能力进行预测。,可重复级 主要特征:组织:将软件项目的有效管理过程制度化,这使得组织 能够重复以前项目中的成功实践。项目:配备了基本的软件管理控制。过程能力:可重复的:即对当前项目的需求分
12、析后制定的,能重 复以前的成功实践,尽管在具体过程中可能有所不同。,基本可控的:即对软件项目的管理过程是制度化的。过程是有效的:即对项目建立了实用的、已文档化的、已实施的、己培训的、已测量的和能改进的过程。项目是稳定的:即对新项目的策划和管理,有明确的管理方针和确定的标准(包括对分承制方),可使项目的进展稳定。过程是有纪律的:即对所建立和实施的方针、规程,对软件项目过程而言,已进化为组织的行为。,具备以上过程能力特征的途径:应实现关键过程域:软件配置管理、软件质量保证、软件子合同管理、软件项目跟踪和监督、软件项目规划、需求管理。,其中:关键过程域:过程域:互相关联的若干个软件实践活动和有关基础
13、设施的集合。关键过程域:对某一成熟度等级将起到至关重要的过程域即它们的实施将对达到该成熟度等级的目标起保证作用,这些过程域被称为关键过程域。每一软件过程成熟度等级均包含一组特定的关键过程域。,已定义级 除实现了重复级关键过程域外,还实现了:组织过程焦点、组织过程定义、培训大纲、集成软 件管理、软件产品工程、组间协调以及同行评审 主要特征:组织:在组织范围内开发和维护软件的标准过程被文档 化,其中包括软件工程过程和管理过程,它们集成 为一个一致的整体。项目:对组织的标准软件过程进行裁剪,来开发它们自己 项目的软件过程。,过程能力:是标准的和一致的。(standard and consistent
14、)建立了“组织的标准软件过程”建立了负责组织的软件过程活动的机构 项目定义的软件过程 组织可视项目的进展 组织的软件能力均衡、致,定量管理级 实现了关键过程域:定量过程管理和软件质量管理。主要特征:项目:项目减小过程性能的变化性,使其进入可接收的 量化边界,从而达到对产品和过程的控制。组织:为软件产品和过程都设定了量化的质量目标。,过程能力:可预言的。(predictable)设置了定量的质量目标 项目产品质量和过程是受控和稳定的 开发新领域软件的风险是可定量估计的 组织的软件过程能力是可定量预测的,持续优化级 实现了关键过程域:缺陷预防、技术变化管理、过程变化管理 主要特征:组织:关注于持续
15、的过程改进。项目:软件过程被评价,以防止过失重复发生,从中 获得的教训散布给其它项目。,过程能力:持续的改善。(continuously improving)(1)过程不断改进,即组织注重不断地进行过程改进。(2)缺陷能有效预防(3)组织的过程能力不断提高,关于五个级别的3点说明从第1级提升到第2级可能需要几年的时间,在其它级别间提升通常依次需要2年的时间。第1级组织的成功依赖于组织中人员的能力。每个级别为以后的级别有效地和有效率地实现过程提供基础。跳过级别是达不到预期的目标的。,汇总:各等级的关键过程域(共18个),初始级(1),软件配置管理 软件质量保证 软件子合同管理 软件项目跟踪和监督
16、 软件项目规划需求管理,可重复级(2),对等复审 组间协作 软件产品工程 集成的软件管理 培训计划 组织过程定义组织过程焦点,定义级(3),软件质量管理量化的过程管理,管理级(4),过程变化管理 技术变化管理缺陷预防,优化级(5),4)成熟度等级的内部结构 CMM的每个等级是通过三个层次加以定义的:关键过程域 公共特征 关键实践,成熟度等级,关键过程区域(KPA),共同特征,关键实践,过程能力,目标,实现或制度化,基础设施或活动,包含,指示,组织,达到,包含,解决,描述,成熟度等级,过程能力,指示,其中:成熟度等级(Maturity Level),5个等级,良构定义的过程能力演化平台,作为以后
17、过程改善活动的基础(foundation)。,遵循一个过程所期望的结果程度(Range)。,Repeatable level,indicates,例如:可重复级(Repeatable level),对项目的成本、进度和要完成的功能,建立了基本的项目管理。,Time/Cost/Quality,Probability,关键过程域(Key Process Area)关键过程域是定义成熟度等级的主要构造块(major building blocks)。每一个关键过程域是一组相关的活动,它们的共同执行来达到一组目标。关键过程域标识了为达到一个成熟度级别而必须强调的问题。,Maturity Level,(
18、18 KPAs in the CMM.),Key Process Areas,Process Capability,Goals,indicate,contain,achieve,建立组织过程能力中的主要构造块。,Repeatable Level,Project Planning,indicate,contain,项目规划涉及工作量估算,建立必要的承诺(commitments),并定义工作执行计划。,例如:2级中的关键过程域:项目规划,Probability,Time/Cost/Quality,Maturity Level,Key Process Areas,Process Capability
19、,Goals,indicate,contain,achieve,目标:表明一个关键过程域的范围、边界和意图。,关键过程域的目标(Goals),过程目标(objectives):当达到这些目标时,就增强了过程能力。,Maturity Level,Key Process Areas,indicate,contain,achieve,例如:,Goal1:已建立了估算(结果)的文档,以便在规划该项目和对项目进行跟踪时使用。Goal2:Goal3:,Probability,Time/Cost/Quality,Maturity Level,Key Process Areas,Process Capabil
20、ity,Goals,indicate,contain,achieve,公共特征(Common Features)是过程的一些属性,它们确保过程被定义、被理解,并建立了有关文档。,指示:关键过程域是否是 有效的、可重复的、持久的,实施/制度,Common Features,Organized by,address,确保过程被定义、已建文档和理解的属性(Attributes),公共特征:用于组织在每一个关键过程域中的关键实践。包括:制度 实施 Commitment to Perform Activities Performed Ability to Perform Measurement and
21、Analysis Verifying Implementation,Repeatable Level,Project Planning,indicate,contains,“依据明文规定的规程,估算工作产品的规模(或改变工作产品的规模)。,例如:,Probability,Time/Cost/Quality,Activities Performed,Organized by,Activity,contains,已建立了软件估算(结果)的文档,以便在规划该项目和对项目进行跟踪时使用。,Goal 1,achieves,实施,addresses,有关实施(Implementation)的公共特征 执行
22、的活动(Activities Performed)描述了为实现一个关键过程域所需要的角色和规程(procedures)。,有关制度(Institutionalization)的公共特征 对执行的承诺(Commitment to perform)描述组织必须采取的动作(actions),以便保证过程的建立并持久(endure).,执行能力(Ability to perform)方面的公共特征 描述该项目或组织中必须有的前置条件,以便很好地实现该过程。,测量和分析(Measurement and Analysis)描述了测量过程并分析该测量的要求,从而提供了对关键过程域实现情况的观察。,实施验证(
23、Verifying Implementation)描述了一些步骤,这些步骤确保活动的执行符合已经建立的那个过程。以上提及的5个公共特征,有助于确保过程的实施和制度建设,有助于确保获得坚实的过程质量。,关于等级内部结构的小结 每个等级 由几个关键过程域组成,它们共同形成定的 过程能力。每个关键过程域 都有一些特定的目标,为实现这些目标,将实现目标的关键实践组织为五类关键实践。公共特征(关键实践类)规定了相应部门或有关责任者应实施的一些关键 实践。当关键过程域的这些关键实践都得到实施 时,就能够实现该关键过程域的目标。关键实践 按公共特征组织,描述了为有效实施并规范化关键 过程域,应具备的基础设施
24、和从事的活动。,一个关键过程域的关键实践的实施 是实现该关键过程域目标的必要条件。仅当一个关键过程域的全部目标均已达到时,该关键过 程域才能实现。一个成熟度等级的关键过程域的完全实现 是达到该成熟度等级的必要条件;对于一个组织来说,仅当其所有项目均已达到一个关键 过程域的目标时,才可以说,该组织己使以该关键过 程域为特征的软件过程(软件能力)规范化了。,5)关于CMM的总结(1)知识点软件能力成熟度等级框架:在这一框架中,将过程能力成熟度分为5级:初始级,可重复级,已定义级,已管理级,持续优化级。通过成熟度级别,定义了在 使软件过程成熟的过程 中的 演化状态。通过过程改善,实现了有关关键过程域
25、的目标,才 能演化为更高的一级,其中不可能“飞跃”;软件成熟度框架基础是等级的内部结构。,每一等级的内部结构,成熟度级别,关键过程区域(KPA),共同特征,关键实践,过程能力,目标,实现或制度化,基础设施或活动,包含,指示,组织,达到,包含,解决,描述,等级、关键过程 域、关键实践之 间的基本关系,其中:关键过程域:在框架的某一“平台”上,其实施将对达到下一成熟度等级的目标起保证作用的过程域,被称为关键过程域。各级包含的关键过程域:可重复级:软件配置管理,软件质量管理,子产品工程 项目跟踪和监督,软件项目规划,需求管理 已定义级:对等复审,组间协作,软件产品工程,集成 的软件管理,培训计划,组织过程定义,组 织过程焦点 已管理级:软件质量管理,量化的过程管理 持续优化级:过程变化管理,技术变化管理,缺陷预防,(2)基本思想强调过程途径“一个软件系统的质量,取决于所使用的开发过程和维护过程的质量。”“整个软件任务可以看作是一个过程,该过程可以予以控制、测量和改进。”产品质量形成于产品生产的全过程:应使影响产品质量的全部因素,在生产全过程中始终 处于受控状态;并且 质量管理应遵循PDCA循环(即计划Plan实施Do检 查Check措施Action),坚持进行过程质量改善,增强 过程能力。,恭喜大家!你已经学完全部软件工程课程!,