1、第12章 软件过程与软件过程改进 软件过程概述软件过程概述 软件生存期过程国际标准软件生存期过程国际标准 软件过程成熟度软件过程成熟度 软件能力成熟度模型软件能力成熟度模型 软件过程改进软件过程改进第12章 软件过程与软件过程改进 尽管软件工程项目的具体情况各有不同,但影响软件产品尽管软件工程项目的具体情况各有不同,但影响软件产品质量和软件项目生产率的共同因素主要有质量和软件项目生产率的共同因素主要有3 3个:人员、技个:人员、技术和过程。术和过程。如果把音乐会演出视为软件项目,则乐队和指挥就相当于如果把音乐会演出视为软件项目,则乐队和指挥就相当于参与项目的人员;舞台和乐器相当于支持开发的环境
2、条件、参与项目的人员;舞台和乐器相当于支持开发的环境条件、技术和工具;而乐谱相当于软件项目的过程。技术和工具;而乐谱相当于软件项目的过程。12.1 软件过程概述 软件过程软件过程尽管软件危机最早于上个世纪六十年代已经提出,尽管软件危机最早于上个世纪六十年代已经提出,业内人士确已投入了大量人力和物力,试图摆脱业内人士确已投入了大量人力和物力,试图摆脱软件业长期的发展之痛。然而,事实表明,问题软件业长期的发展之痛。然而,事实表明,问题至今还未得到很好地解决。至今还未得到很好地解决。在近十几年的大量研究和实践之后,许多人逐渐在近十几年的大量研究和实践之后,许多人逐渐认识到,从软件过程的改进来解决可能
3、是有效的认识到,从软件过程的改进来解决可能是有效的方法之一。方法之一。12.1 软件过程概述 软件过程软件过程著名的软件工程专家,也是著名的软件工程专家,也是CMM的主要创始人的主要创始人Watts Humphrey提出了以下几个重要论点:提出了以下几个重要论点:(1)软件系统的质量取决于用以开发和改进它的过程质量。)软件系统的质量取决于用以开发和改进它的过程质量。(2)解决软件问题的重要一步是把整个软件工作当作一个)解决软件问题的重要一步是把整个软件工作当作一个过程来对待,使其能够控制、度量和改进。过程来对待,使其能够控制、度量和改进。(3)软件过程是我们用以开发软件产品的一套工具、方法)软
4、件过程是我们用以开发软件产品的一套工具、方法和实践。和实践。(4)软件过程管理的目标是按计划生产产品,同时提高软)软件过程管理的目标是按计划生产产品,同时提高软件组织的能力,以利于生产出好的产品。件组织的能力,以利于生产出好的产品。12.1 软件过程概述 软件过程软件过程(5)成本估算和开发期安排的承诺应该是比较合)成本估算和开发期安排的承诺应该是比较合理的,开发出的产品应该在功能和质量方面都能理的,开发出的产品应该在功能和质量方面都能满足用户的期望。满足用户的期望。(6)有效的软件管理必须考虑所要完成的任务,)有效的软件管理必须考虑所要完成的任务,所采用的方法和工具,以及参与工作人员的技能、
5、所采用的方法和工具,以及参与工作人员的技能、培训和积极性。培训和积极性。(7)有效的软件过程必须是可预测的。)有效的软件过程必须是可预测的。12.2 软件生存期过程国际标准 19951995年年8 8月,国际标准化组织(月,国际标准化组织(ISOISO)和国际电工委员会)和国际电工委员会(IECIEC)联合发布了国际标准)联合发布了国际标准ISOISOIEC 12207 IEC 12207 Information Technology Software Life Cycle Information Technology Software Life Cycle ProcessesProcesse
6、s。20082008年,这两个国际标准化机构又联合了美国电气与电子年,这两个国际标准化机构又联合了美国电气与电子工程师学会(工程师学会(IEEEIEEE),共同发布了该标准的第二版:),共同发布了该标准的第二版:ISOISOIEC 12207:2008IEC 12207:2008(IEEE Std.12207-2008IEEE Std.12207-2008)Systems and software engineeringSoftware life Systems and software engineeringSoftware life cycle processescycle process
7、es。12.2 软件生存期过程国际标准 结构结构由于越来越多的软件作为系统的一部分开发和运行,因此由于越来越多的软件作为系统的一部分开发和运行,因此我们在研究和处理软件问题时,建立系统的观念是十分必我们在研究和处理软件问题时,建立系统的观念是十分必要的。软件项在系统中的位置如下图所示。要的。软件项在系统中的位置如下图所示。基于这一观念,该标准分为两部分:基于这一观念,该标准分为两部分:1)1)与系统相关的过程;与系统相关的过程;2)2)软件特有过程。软件特有过程。系统元素系统元素12.2 软件生存期过程国际标准 与系统相关的过程与系统相关的过程12.2 软件生存期过程国际标准 软件特有过程软件
8、特有过程12.3 软件过程成熟度 什么是软件过程成熟度什么是软件过程成熟度 过程制度化过程制度化12.3.1 什么是软件过程成熟度 软件过程成熟度的概念软件过程成熟度的概念任何一个软件组织,在完成自身的开发、维护等任何一个软件组织,在完成自身的开发、维护等工作中,都有自己的软件过程。这种过程有可能工作中,都有自己的软件过程。这种过程有可能是初级的、低效的,也可能是高效的,在其成熟是初级的、低效的,也可能是高效的,在其成熟性方面存在差异,这当然是相互比较而言的。性方面存在差异,这当然是相互比较而言的。软件过程成熟度软件过程成熟度(Software Process MaturitySoftware
9、 Process Maturity)是软件过程改进的一个重要概念,它是指:是软件过程改进的一个重要概念,它是指:一个一个特定软件过程得到清晰的定义、管理、测量、控特定软件过程得到清晰的定义、管理、测量、控制的有效程度。成熟度意味着能力的增长具有潜制的有效程度。成熟度意味着能力的增长具有潜力,并表示组织软件过程是珍贵的,他在组织内力,并表示组织软件过程是珍贵的,他在组织内所有项目中的应用是一致的。所有项目中的应用是一致的。12.3.1 什么是软件过程成熟度 不成熟过程与成熟过程的对比不成熟过程与成熟过程的对比1)角色与职责角色与职责不成熟过程不成熟过程成熟过程成熟过程l没有明确规定角色和职责没有
10、明确规定角色和职责l每个人做自己认为要做的每个人做自己认为要做的事事l常会发生重叠和不清楚的常会发生重叠和不清楚的所属关系和责任所属关系和责任l明确规定角色和职责明确规定角色和职责l相互关系无重叠相互关系无重叠l有明确的目标和测量方法有明确的目标和测量方法l能够体现持续改进过程的能够体现持续改进过程的机制机制2)处理变更的方式处理变更的方式不成熟过程不成熟过程成熟过程成熟过程l每个人都按自己的想每个人都按自己的想法做事法做事l遵循一个规划好的文遵循一个规划好的文件化过程件化过程l可分享取得的经验可分享取得的经验12.3.1 什么是软件过程成熟度3)对发生问题的反应对发生问题的反应不成熟过程不成
11、熟过程成熟过程成熟过程l无秩序的混乱现象随处可无秩序的混乱现象随处可见见l“救火救火”方式解决出现问方式解决出现问题的情况经常发生题的情况经常发生l每个人都想当英雄每个人都想当英雄l根据已有的知识和专业规根据已有的知识和专业规则对发生的问题进行分析则对发生的问题进行分析和处理和处理12.3.1 什么是软件过程成熟度4)可信性可信性不成熟过程不成熟过程成熟过程成熟过程l有时延迟交付产品或超出有时延迟交付产品或超出预算预算l如有估算也不可靠如有估算也不可靠l估算准确估算准确l项目得到有效的控制和管项目得到有效的控制和管理理l目标一般能够达到目标一般能够达到12.3.1 什么是软件过程成熟度5)对工
12、作人员的奖励对工作人员的奖励不成熟过程不成熟过程成熟过程成熟过程l奖励的对象是奖励的对象是“救火救火”队队员员l“如果你第一次就把事情如果你第一次就把事情做好了,那是你的本分,做好了,那是你的本分,没有人理睬,但你若先把没有人理睬,但你若先把事情搞乱,然后再去解决,事情搞乱,然后再去解决,你就成了英雄。你就成了英雄。”_Deming,1986l奖励那些生产高质量产品奖励那些生产高质量产品的团队的团队l奖励那些防火者而不是救奖励那些防火者而不是救火者火者12.3.1 什么是软件过程成熟度6)预见性预见性不成熟过程不成熟过程成熟过程成熟过程l质量不可把握,它依赖于质量不可把握,它依赖于个人个人l进
13、度和预算不能根据以往进度和预算不能根据以往的经验确定的经验确定l项目的进度和产品的质量项目的进度和产品的质量均可预见均可预见l进度和预算可根据以往项进度和预算可根据以往项目的经验确定,并且是符目的经验确定,并且是符合实际的合实际的12.3.1 什么是软件过程成熟度12.3.2 过程制度化 过程认同与过程制度化过程认同与过程制度化软件开发过程决定了在接受软件工程项目后工作人员的行软件开发过程决定了在接受软件工程项目后工作人员的行动方式和反应方式。为了实现某个既定的目标,人们的行动方式和反应方式。为了实现某个既定的目标,人们的行为、活动和任务都要遵循为达到此目标所经历的过程。为、活动和任务都要遵循
14、为达到此目标所经历的过程。规范化的过程体现了一系列有序的和协调一致的行为模式,规范化的过程体现了一系列有序的和协调一致的行为模式,无论这个过程是由一个人来完成或是由一个团队人员共完无论这个过程是由一个人来完成或是由一个团队人员共完成都是如此。成都是如此。12.3.2 过程制度化 过程认同与过程制度化过程认同与过程制度化当一个规范化过程已经渗入组织的日常生活之中,过程的当一个规范化过程已经渗入组织的日常生活之中,过程的要求已经变成全体员工的自觉行动,得到大家的认同和坚要求已经变成全体员工的自觉行动,得到大家的认同和坚持遵循时,过程便成为制度化的(持遵循时,过程便成为制度化的(process in
15、stitutionalization)。)。做到这一点并不容易,要靠过程文化和过程基础设施的支做到这一点并不容易,要靠过程文化和过程基础设施的支持,如图所示。持,如图所示。12.3.2 过程制度化 过程文化过程文化过程文化是指人们的习惯和行为受到过程思维和过程管理过程文化是指人们的习惯和行为受到过程思维和过程管理原则的影响。人们对于规范化过程是完全认同的,就是说,原则的影响。人们对于规范化过程是完全认同的,就是说,人们的活动自觉地按过程要求去作。人们的活动自觉地按过程要求去作。过程文化应具有自己的特性。过程文化应具有自己的特性。12.3.2 过程制度化 过程文化过程文化12.3.2 过程制度化
16、 过程基础设施过程基础设施对于软件过程来说,基础设施指的是支持软件过程的基础对于软件过程来说,基础设施指的是支持软件过程的基础框架和结构基础。它不仅包括组织和管理的岗位和职责,框架和结构基础。它不仅包括组织和管理的岗位和职责,而且包括支持定义过程、开展过程活动、获取和分析过程而且包括支持定义过程、开展过程活动、获取和分析过程有关绩效反馈以及不断进行过程改进活动所必须的技术工有关绩效反馈以及不断进行过程改进活动所必须的技术工具和平台。具和平台。事实上,过程基础设施包含了事实上,过程基础设施包含了 组织和管理基础设施、技术基组织和管理基础设施、技术基 础设施两个方面,如图所示。础设施两个方面,如图
17、所示。12.3.2 过程制度化 组织管理基础设施组织管理基础设施组织和管理基础设施包括建立、监控和推进过程活动的岗组织和管理基础设施包括建立、监控和推进过程活动的岗位及其职责。支持过程的岗位和职责又有面向全局的和面位及其职责。支持过程的岗位和职责又有面向全局的和面向局部之分。向局部之分。支持全局工作的功能组通常是在公司一级上工作的,如软支持全局工作的功能组通常是在公司一级上工作的,如软件工程过程组(件工程过程组(SPEGSPEG)。)。支持局部工作的功能组可能是在项目级上工作,也可能是支持局部工作的功能组可能是在项目级上工作,也可能是在某个特定的关键过程域上工作。在某个特定的关键过程域上工作。
18、在这些功能组工作的人员有些是全职(或称全时)的,如在这些功能组工作的人员有些是全职(或称全时)的,如SEPGSEPG组;也有的功能组人员是兼职的,如软件过程改进组组;也有的功能组人员是兼职的,如软件过程改进组(PIT Process Improvement TeamPIT Process Improvement Team)。)。12.3.2 过程制度化 技术基础设施技术基础设施软件过程技术基础设施是支持软件过程技术基础设施是支持SEPGSEPG和和PITPIT的技术平台、计的技术平台、计算机设施和工具。算机设施和工具。对于软件过程环境来说,基础设施的过程支持部件包括支对于软件过程环境来说,基础
19、设施的过程支持部件包括支持与过程有关活动的工具。下图表示软件过程技术基础设持与过程有关活动的工具。下图表示软件过程技术基础设施的结构。施的结构。12.4 软件能力成熟度模型 CMM与与SEI CMM的演化的演化 CMM族和族和CMMI CMM1.2简介简介 CMMI评估评估美国卡内基梅隆大学软件工程研究所在美国美国卡内基梅隆大学软件工程研究所在美国国防部资助下于国防部资助下于20世纪世纪80年代末建立的能力年代末建立的能力成熟度模型(成熟度模型(capability maturity model,CMM),是用于评价软件机构的软件过程能,是用于评价软件机构的软件过程能力成熟度的模型。最初,建立
20、此模型的目的力成熟度的模型。最初,建立此模型的目的主要是,为大型软件项目的招投标活动提供主要是,为大型软件项目的招投标活动提供一种全面而客观的评审依据,发展到后来,一种全面而客观的评审依据,发展到后来,此模型又同时被应用于许多软件机构内部的此模型又同时被应用于许多软件机构内部的过程改进活动中。过程改进活动中。12.4 能力成熟度模型改进对软件过程的管理是消除软件危机的突改进对软件过程的管理是消除软件危机的突破口,比采用先进的技术和工具更重要。破口,比采用先进的技术和工具更重要。能力成熟度模型的基本思想:能力成熟度模型的基本思想:通过建立成熟的优化的软件过程,提高软件通过建立成熟的优化的软件过程
21、,提高软件的生产率和质量。而技术的改进是软件过程的生产率和质量。而技术的改进是软件过程改进的结果。改进的结果。CMM的作用:指导软件机构通过确定当前的的作用:指导软件机构通过确定当前的过程成熟度并识别出对过程改进起关键作用过程成熟度并识别出对过程改进起关键作用的问题,进而稳步而有效地改进其软件过程,的问题,进而稳步而有效地改进其软件过程,提高成熟度,使其软件过程能力得到循序渐提高成熟度,使其软件过程能力得到循序渐进的提高。进的提高。CMM把软件过程从无序到优化的进化过程分成把软件过程从无序到优化的进化过程分成5个个有序的阶段,用以测量软件机构的软件过程成熟度有序的阶段,用以测量软件机构的软件过
22、程成熟度和评价其软件过程能力,这些等级还能帮助软件机和评价其软件过程能力,这些等级还能帮助软件机构把应做的改进工作排出优先次序。构把应做的改进工作排出优先次序。CMM对对5个成熟度级别特性的描述,说明了不同级个成熟度级别特性的描述,说明了不同级别之间软件过程的主要变化。别之间软件过程的主要变化。从从“1级级”到到“5级级”,反映出从混乱到成熟的软件过程,反映出从混乱到成熟的软件过程必须经历的过程改进途径。必须经历的过程改进途径。CMM的每个成熟度级别中都包含一组过程改进的的每个成熟度级别中都包含一组过程改进的目标,满足这些目标后一个机构的软件过程就从当目标,满足这些目标后一个机构的软件过程就从
23、当前级别进化到下一个成熟度级别。前级别进化到下一个成熟度级别。CMM不提供做这些改进的具体措施。不提供做这些改进的具体措施。软件工程29过程变更管理过程变更管理 PCM技术变更管理技术变更管理 TCM缺陷预防缺陷预防 DP软件配置管理软件配置管理 SCM软件质量保证软件质量保证 SQA软件子合同管理软件子合同管理 SSM软件项目追踪与监督软件项目追踪与监督 SPTO软件项目策划软件项目策划 SPP需求管理需求管理 RM软件产品工程软件产品工程 SPE集成软件管理集成软件管理 ISM培训大纲培训大纲 TP组织过程定义组织过程定义 OPD组织过程焦点组织过程焦点 OPF同行评审同行评审 PR组间协
24、调组间协调 IC软件质量管理软件质量管理 SQM定量定量 过程管理过程管理 QPM规范化过程规范化过程标准化过程标准化过程可预测过程可预测过程持续改进过程持续改进过程个别过程个别过程 2 级级(可重复级)(可重复级)3 级级(已定义级)(已定义级)4 级级(已管理级)(已管理级)5 级级(优化级)(优化级)1 级(初始级)级(初始级)软件工程30 关键过程域分类关键过程域分类5 优化级优化级过程变更管理过程变更管理4 可管理级可管理级需求管理需求管理软件项目策划软件项目策划软件项目跟踪与监控软件项目跟踪与监控软件子合同管理软件子合同管理软件质量保证软件质量保证软件配置管理软件配置管理过程分类过
25、程分类机构的过程机构的过程管理过程管理过程缺陷预防缺陷预防软件质量管理软件质量管理整体化软件管理整体化软件管理组间协调组间协调组织过程关注组织过程关注组织过程定义组织过程定义培训规划培训规划无序过程无序过程定量过程管理定量过程管理3 可定义级可定义级2 可重复级可重复级1 初始级初始级工程的过程工程的过程软件产品工程软件产品工程同行评审同行评审技术变更管理技术变更管理1.初始级初始级软件过程的特征是无序的,甚至是混乱的。几乎没软件过程的特征是无序的,甚至是混乱的。几乎没有什么过程是经过定义的(即没有一个定型的过程有什么过程是经过定义的(即没有一个定型的过程模型),项目能否成功随机性很大。模型)
26、,项目能否成功随机性很大。没有健全的软件工程管理制度。没有健全的软件工程管理制度。延期交付和费用超支的情况经常发生,大多数行动延期交付和费用超支的情况经常发生,大多数行动只是应付危机,而不是完成计划好的任务。只是应付危机,而不是完成计划好的任务。处于处于1级成熟度的软件机构,其过程能力是不可预级成熟度的软件机构,其过程能力是不可预测的,其软件过程是不稳定的,产品质量只能根据测的,其软件过程是不稳定的,产品质量只能根据相关人员的个人工作能力而不是软件机构的过程能相关人员的个人工作能力而不是软件机构的过程能力来预测。力来预测。2.可重复级可重复级建立了基本的项目管理过程建立了基本的项目管理过程(过
27、程模型过程模型),可跟可跟踪成本、进度、功能和质量。对新项目的策踪成本、进度、功能和质量。对新项目的策划和管理过程是基于以前类似项目的实践经划和管理过程是基于以前类似项目的实践经验。验。已经制定了项目标准,并且软件机构能确保已经制定了项目标准,并且软件机构能确保严格执行这些标准。项目组与客户及承包商严格执行这些标准。项目组与客户及承包商已经建立起一个稳定的工作环境。已经建立起一个稳定的工作环境。过程能力可以概括为过程能力可以概括为:软件项目的策划和跟软件项目的策划和跟踪是稳定的,已经为一个有纪律的管理过程踪是稳定的,已经为一个有纪律的管理过程提供了可重复以前成功实践的项目环境。提供了可重复以前
28、成功实践的项目环境。3.已定义级已定义级软件机构已经定义了完整的软件过程(过程模型),软件机构已经定义了完整的软件过程(过程模型),软件过程已经文档化和标准化。软件过程已经文档化和标准化。有一个固定的过程小组从事软件过程工程活动。有一个固定的过程小组从事软件过程工程活动。过程小组可以利用过程模型进行过程例化活动,从过程小组可以利用过程模型进行过程例化活动,从而获得一个针对某个特定的软件项目的过程实例。而获得一个针对某个特定的软件项目的过程实例。过程小组还可以推进软件机构的过程改进活动。实过程小组还可以推进软件机构的过程改进活动。实施了培训计划,能够保证全体项目负责人和项目开施了培训计划,能够保
29、证全体项目负责人和项目开发人员具有完成承担的任务所要求的知识和技能。发人员具有完成承担的任务所要求的知识和技能。过程能力可以概括为过程能力可以概括为:无论是管理活动还是工程活无论是管理活动还是工程活动都是稳定的。软件开发的成本和进度以及产品的动都是稳定的。软件开发的成本和进度以及产品的功能和质量都受到控制,而且软件产品的质量具有功能和质量都受到控制,而且软件产品的质量具有可追溯性。可追溯性。4.已管理级已管理级软件机构对软件过程(过程模型和过程实例)软件机构对软件过程(过程模型和过程实例)和软件产品都建立了和软件产品都建立了定量定量的质量目标。可以的质量目标。可以定量地了解和控制软件过程和软件
30、产品,并定量地了解和控制软件过程和软件产品,并为评定项目的过程质量和产品质量奠定了基为评定项目的过程质量和产品质量奠定了基础。础。过程能力可以概括为过程能力可以概括为:软件过程是可度量的。软件过程是可度量的。这一级的过程能力允许软件机构在定量的范这一级的过程能力允许软件机构在定量的范围内预测过程和产品质量趋势,在发生偏离围内预测过程和产品质量趋势,在发生偏离时可以及时采取措施予以纠正,并且可以预时可以及时采取措施予以纠正,并且可以预期软件产品是高质量的。期软件产品是高质量的。5.优化级优化级软件机构集中精力软件机构集中精力不断地改进软件过程不断地改进软件过程。以防止出。以防止出现缺陷为目标的机
31、构,它有能力识别软件过程要素现缺陷为目标的机构,它有能力识别软件过程要素的薄弱环节。的薄弱环节。可以获得关于软件过程有效性的统计数据,利用这可以获得关于软件过程有效性的统计数据,利用这些数据可以对新技术进行成本些数据可以对新技术进行成本/效益分析,并优化效益分析,并优化采用最佳新技术。采用最佳新技术。通过对过程实例性能的分析和确定产生某一缺陷的通过对过程实例性能的分析和确定产生某一缺陷的原因,来防止再次出现这种类型的缺陷;原因,来防止再次出现这种类型的缺陷;可以通过从过程实施中获得的定量的反馈信息,在可以通过从过程实施中获得的定量的反馈信息,在采用新思想和新技术的同时测试它们,以不断地改采用新
32、思想和新技术的同时测试它们,以不断地改进和优化软件过程。进和优化软件过程。处于处于5级成熟度的软件机构的过程能力可以级成熟度的软件机构的过程能力可以概括为,软件过程是可优化的。能够持续不概括为,软件过程是可优化的。能够持续不断地改进其过程能力,既对现行的过程实例断地改进其过程能力,既对现行的过程实例不断地改进和优化,又借助于所采用的新技不断地改进和优化,又借助于所采用的新技术和新方法来实现未来的过程改进。术和新方法来实现未来的过程改进。一些统计数字表明,提高一个完整的成熟度一些统计数字表明,提高一个完整的成熟度等级大约需要花等级大约需要花18个月到个月到3年的时间,但是年的时间,但是从第从第1
33、级上升到第级上升到第2级有时要花级有时要花3年甚至年甚至5年时年时间。间。12.4.3 CMM族和CMMI 基于基于CMM的模型的模型自从自从CMMCMM面世以来在各国软件界中产生了巨大影响,它在面世以来在各国软件界中产生了巨大影响,它在解决软件过程存在问题方面的成功使得相关领域也纷纷采解决软件过程存在问题方面的成功使得相关领域也纷纷采纳和仿效它的模式,于是出现了多种基于纳和仿效它的模式,于是出现了多种基于CMMCMM的模型,构的模型,构成了一个成了一个CMMCMM族。族。12.4.3 CMM族和CMMI CMMI19971997年年SEISEI开始研究开始研究CMMICMMI,其任务是将已有
34、的,其任务是将已有的CMMCMM模型结合模型结合成一个模型,新的模型(成一个模型,新的模型(CMMICMMI)应该兼顾已采用)应该兼顾已采用CMMCMM的组的组织,使其不致受到大的影响,又能便于它的新用户使用;织,使其不致受到大的影响,又能便于它的新用户使用;同时还应该与国际标准同时还应该与国际标准ISO/IEC 15504ISO/IEC 15504相兼容。相兼容。CMMICMMI的的1.11.1版于版于20022002年发布,这一版本正是我国近年来实年发布,这一版本正是我国近年来实施的版本,它在我国软件业具有一定影响。接着在施的版本,它在我国软件业具有一定影响。接着在20062006年年发布
35、了发布了CMMICMMI(for Developmentfor Development)1.21.2版,对原来版本的内版,对原来版本的内容作了一些修改,并于容作了一些修改,并于20072007年开始实施。这是当前实施的年开始实施。这是当前实施的有效版本。有效版本。12.4.3 CMM族和CMMI CMMICMMI来源和发展来源和发展12.4.4 CMM1.2简介 CMMI模型的两种表示模型的两种表示12.4.4 CMM1.2简介 两种表示的对比两种表示的对比12.4.4 CMM1.2简介 两种表示的对比两种表示的对比13.3 进度管理 进度控制问题进度控制问题 甘特图甘特图 时标网状图时标网状
36、图 PERT图图1值得重视的现象值得重视的现象 软件项目能否按计划的时间完成,及时提交产品是项目软件项目能否按计划的时间完成,及时提交产品是项目管理的一个重要课题。我们都希望按计划及时完成,但项管理的一个重要课题。我们都希望按计划及时完成,但项目未能按预期的进度提交产品,延误工期的现象经常会出目未能按预期的进度提交产品,延误工期的现象经常会出现。我们必须重视这一现象,分析其原因,并有针对性地现。我们必须重视这一现象,分析其原因,并有针对性地采取措施。采取措施。2制订项目进度安排的条件制订项目进度安排的条件 制订项目进度安排计划是为了实施,自然希望越准确,制订项目进度安排计划是为了实施,自然希望
37、越准确,越符合实际越好,但是怎样才能做到这一点,需要在这以越符合实际越好,但是怎样才能做到这一点,需要在这以前做些工作,创造良好的条件,使得进度安排的确定是有前做些工作,创造良好的条件,使得进度安排的确定是有根据的。根据的。进度控制问题进度控制问题这些条件包括以下这些条件包括以下7条:条:(1)项目分解项目分解。无论多么大、多么复杂的项目都必须首先。无论多么大、多么复杂的项目都必须首先将其划分成能够管理的若干活动和若干任务,并且往往这种将其划分成能够管理的若干活动和若干任务,并且往往这种分解是多个层次的。分解是多个层次的。(2)确定各部分之间的相互关系确定各部分之间的相互关系。划分后的活动和任
38、务按。划分后的活动和任务按项目本身的要求,必定存在着一定的相互依赖关系,如谁先项目本身的要求,必定存在着一定的相互依赖关系,如谁先谁后,或是两者应该并行互不依赖等。谁后,或是两者应该并行互不依赖等。(3)时间分配时间分配。为每项活动和任务分配需要的时间,如需。为每项活动和任务分配需要的时间,如需要多少人天的工作量。要多少人天的工作量。进度控制问题进度控制问题(4)确认投入的工作量确认投入的工作量。应确认按项目要求的人力投入工。应确认按项目要求的人力投入工作量在实际工作中能够予以满足,而不致出现某些工作阶段作量在实际工作中能够予以满足,而不致出现某些工作阶段人力投入不足的现象。人力投入不足的现象
39、。(5)确定人员的责任确定人员的责任。(6)规定工作成果规定工作成果。任何分配的任务都应给出符合要求的。任何分配的任务都应给出符合要求的工作成果,它应该是整个项目的一个组成部分。工作成果,它应该是整个项目的一个组成部分。(7)规定里程碑规定里程碑。任何一项工作完成后需经过一定形式的。任何一项工作完成后需经过一定形式的检验,如经过评审或审核(批准)得到认可,被认为确已完检验,如经过评审或审核(批准)得到认可,被认为确已完成,表示一个里程碑已经完成。成,表示一个里程碑已经完成。里程碑里程碑也被称为也被称为基线基线。进度控制问题进度控制问题l甘特图甘特图(Gantt chart)是表示工作进度计划以
40、及)是表示工作进度计划以及工作实际进度情况最为简明的图示方法。工作实际进度情况最为简明的图示方法。l甘特图中横坐标表示时间,以水平线段表示子任甘特图中横坐标表示时间,以水平线段表示子任务的工作阶段,可以为其命名。务的工作阶段,可以为其命名。l线段的起点和终点分别对应着该项子任务的开工线段的起点和终点分别对应着该项子任务的开工时间和完成时间,线段的长度表示完成它所需的时间和完成时间,线段的长度表示完成它所需的时间,有实线和虚线之分,一开始做出各项子任时间,有实线和虚线之分,一开始做出各项子任务的计划时间,应该都以虚线表示。务的计划时间,应该都以虚线表示。甘特图甘特图 甘特图可以清楚地表示各项子任
41、务在时间对比上的关系,但甘特图可以清楚地表示各项子任务在时间对比上的关系,但无法表达多个子任务之间更为复杂的衔接关系。无法表达多个子任务之间更为复杂的衔接关系。甘特图甘特图甘特图甘特图 为克服甘特图的缺点,将为克服甘特图的缺点,将甘特图做了一些修改,形成甘特图做了一些修改,形成了时标网状图(了时标网状图(time scalar network),如右图所示。),如右图所示。图中的任务以有向线段表示,图中的任务以有向线段表示,其指向点表示任务间的衔接其指向点表示任务间的衔接点,并且都给予编号,可以点,并且都给予编号,可以显示出各子任务间的依赖关系。它显示出比甘特图具有优显示出各子任务间的依赖关系
42、。它显示出比甘特图具有优越性。越性。时标网状图时标网状图 计划评审技术计划评审技术(program evaluation and review techique,PERT)也称网络图方法,或)也称网络图方法,或简称简称PERT图方法图方法,它的另一名称是,它的另一名称是关键路径法关键路径法(critical path method,CPM)。)。PERT图图PERT图图lPERT图中以有向的箭头作为边表示子任务,它图中以有向的箭头作为边表示子任务,它是有名称(即子任务名)、有长度(即完成此项是有名称(即子任务名)、有长度(即完成此项子任务所需的时间)的向量;子任务所需的时间)的向量;l以有编号的圆圈作为结点,它应该是子任务向量以有编号的圆圈作为结点,它应该是子任务向量的始发点或指向点;的始发点或指向点;l由若干条边和若干个结点构成了网状图,于是我由若干条边和若干个结点构成了网状图,于是我们可以沿相互衔接的子任务形成的路径,进行路们可以沿相互衔接的子任务形成的路径,进行路径长度的计算、比较和分析,从而实现项目工期径长度的计算、比较和分析,从而实现项目工期的控制。的控制。实例 PERT图图