1、1 初始级已管理级 已定义级 定量管理级 优化级 初始级 可重复级 已定义级已定义级 已管理级 优化级CMM L2CMM L2 软件项目管理软件项目管理2目目 录录1.1.项目管理概述项目管理概述2.2.软件生命周期软件生命周期3.3.软件度量软件度量4.4.软件项目估算软件项目估算5.5.风险管理风险管理6.6.软件项目计划软件项目计划V V 小小 结结参考资料参考资料3I I 软件项目管理概述软件项目管理概述1.1 1.1 软件项目管理的目的软件项目管理的目的1.2 1.2 软件项目管理的重要性软件项目管理的重要性1.3 1.3 软件项目管理的对象软件项目管理的对象1.4 1.4 软件项目
2、管理的主要任务软件项目管理的主要任务41.1 1 软件项目管理的目的软件项目管理的目的 为了生产产品能做到为了生产产品能做到:按时交付按时交付在预算内在预算内合格的质量合格的质量按计划做事按计划做事51.2 1.2 软件项目管理的重要性软件项目管理的重要性 软件工程管理引起广泛注意源于软件工程管理引起广泛注意源于2020世纪世纪7070年代中期,当时年代中期,当时发现不成功的项目发现不成功的项目70%70%是因为管理不善而引起是因为管理不善而引起 2020世纪世纪9090年代中期,美国的软件开发仍然很难预测,大约年代中期,美国的软件开发仍然很难预测,大约只有只有10%10%的项目能够在预定的费
3、用和进度下交付的项目能够在预定的费用和进度下交付61.3 1.3 软件项目管理的对象软件项目管理的对象 任务任务 成本成本 工作量工作量 效率效率 人员人员 资源资源 风险风险71.4 1.4 项目管理的主要任务项目管理的主要任务 定义软件生命周期定义软件生命周期 进行软件规模估算进行软件规模估算 进行软件风险分析进行软件风险分析 制定软件开发计划制定软件开发计划 进行软件项目跟踪与监控进行软件项目跟踪与监控 进行软件度量进行软件度量82 2 软件生命周期软件生命周期2.1 2.1 软件过程的三个主要阶段软件过程的三个主要阶段2.2 2.2 什么是软件生命周期什么是软件生命周期2.3 2.3
4、软件生命周期模型软件生命周期模型2.4 2.4 瀑布模型瀑布模型2.5 2.5 进化模型进化模型2.6 2.6 螺旋模型螺旋模型2.7 Rational 2.7 Rational 软件开发过程框架软件开发过程框架2.8 2.8 软件生命周期的选取评价准则软件生命周期的选取评价准则92.1 2.1 软件过程的三个主要阶段软件过程的三个主要阶段2.1.1 2.1.1 定义阶段定义阶段2.1.2 2.1.2 开发阶段开发阶段2.1.3 2.1.3 维护阶段维护阶段10定义阶段定义阶段 定义阶段要明确定义阶段要明确“做什么做什么”定义系统和软件的关键需求:定义系统和软件的关键需求:在此阶段,开发人员试
5、图搞清要处理什么信息在此阶段,开发人员试图搞清要处理什么信息预期完成什么样的功能和性能预期完成什么样的功能和性能达到什么样的系统行为达到什么样的系统行为建立什么样的界面建立什么样的界面有什么样的约束有什么样的约束设计需求跟踪矩阵和系统测试用例设计需求跟踪矩阵和系统测试用例定义一个成功系统的确认标准是什么定义一个成功系统的确认标准是什么定义阶段三个主要任务:系统工程分析;软件项目计划;定义阶段三个主要任务:系统工程分析;软件项目计划;软件需求分析软件需求分析11开发阶段开发阶段 开发阶段要明确开发阶段要明确“如何做如何做”设计软件:设计软件:功能如何转换为构架功能如何转换为构架细化需求跟踪矩阵和
6、设计集成测试用例细化需求跟踪矩阵和设计集成测试用例试图定义数据如何结构化试图定义数据如何结构化界面如何表示界面如何表示设计如何转换成程序设计如何转换成程序测试如何进行测试如何进行定义一个成功系统的设计的确认标准是什么定义一个成功系统的设计的确认标准是什么开发阶段三个主要任务:软件设计;代码生成;软件测试开发阶段三个主要任务:软件设计;代码生成;软件测试12维护阶段维护阶段 维护阶段要明确维护阶段要明确“改变什么改变什么”改正性维护:约占改正性维护:约占20%20%左右。主要是改正处理方面、性能方左右。主要是改正处理方面、性能方面以及编程方面的错误面以及编程方面的错误适应性维护:约占适应性维护:
7、约占25%25%左右。主要用于适应数据环境(外部左右。主要用于适应数据环境(外部环境)、硬件及操作系统(内部环境)和移植工作环境)、硬件及操作系统(内部环境)和移植工作改进性维护:约占改进性维护:约占50%50%左右。主要用于提高处理效率、提高左右。主要用于提高处理效率、提高性能、使之使用方便、增加及改进输出信息,以达到便于性能、使之使用方便、增加及改进输出信息,以达到便于维护的目的。这包括改进易读性和注释等维护的目的。这包括改进易读性和注释等132.2 2.2 什么是软件生命周期什么是软件生命周期 软件生命周期是指软件产品或软件系统从产生、投入使用软件生命周期是指软件产品或软件系统从产生、投
8、入使用到被淘汰的全过程到被淘汰的全过程在计算机技术发展的初期,人们把软件开发简单地理解为在计算机技术发展的初期,人们把软件开发简单地理解为编写程序编写程序随着软件复杂性的增长,人们认识到软件开发活动应划分随着软件复杂性的增长,人们认识到软件开发活动应划分为需求分析、设计、实现、测试等若干个活动,并将这些为需求分析、设计、实现、测试等若干个活动,并将这些活动以适当的方式分配到不同的阶段中去完成活动以适当的方式分配到不同的阶段中去完成 通常把软件生命周期分为通常把软件生命周期分为5 5个阶段:个阶段:需求需求设计设计编码编码测试测试维护维护142.3 2.3 软件生命周期模型软件生命周期模型 软件
9、生命周期模型是描述软件开发全部过程、活动和任务软件生命周期模型是描述软件开发全部过程、活动和任务的结构框架的结构框架 软件开发模型能清晰、直观地表达软件开发全过程,明确软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作规定了要完成的主要活动和任务,用来作为软件项目工作的基础的基础瀑布模型瀑布模型 (Waterfall Model)(Waterfall Model)进化模型(进化模型(Evolutionary ModelEvolutionary Model)螺旋模型(螺旋模型(Spiral ModelSpiral Model)统一软件开发过程(统
10、一软件开发过程(Unified Software Development Unified Software Development ProcessProcess)152.4 2.4 瀑布模型瀑布模型(1)(1)19701970年年W.RoyceW.Royce提出了最早的软件开发模型提出了最早的软件开发模型 -瀑布模型。该模瀑布模型。该模型给出了固定的顺序,将软件生命周期各阶段的活动从上一阶型给出了固定的顺序,将软件生命周期各阶段的活动从上一阶段向下一阶段逐级过渡,如同流水下泻,最终得到所开发的软段向下一阶段逐级过渡,如同流水下泻,最终得到所开发的软件产品件产品 这一模型规定了开发各阶段的活动为
11、:提出系统需求,提出软这一模型规定了开发各阶段的活动为:提出系统需求,提出软件需求,需求分析,设计,编码,测试和运作。并且还规定了件需求,需求分析,设计,编码,测试和运作。并且还规定了自上而下相互衔接的固定顺序,构成了熟知的瀑布模型自上而下相互衔接的固定顺序,构成了熟知的瀑布模型 实践表明,各个阶段间的关系并非如此简单。由于阶段评审可实践表明,各个阶段间的关系并非如此简单。由于阶段评审可能出现向前阶段的反馈,致使在各阶段间产生环路,瀑布流水能出现向前阶段的反馈,致使在各阶段间产生环路,瀑布流水出现上流。出现上流。W.RoyceW.Royce在提出瀑布模型时,就对此提出了如何进行在提出瀑布模型时
12、,就对此提出了如何进行的建议的建议分析分析设计设计编码编码测试测试16瀑布模型瀑布模型(2)(2)每个开发阶段均应具有以下特征每个开发阶段均应具有以下特征 从上一阶段接受本阶段工作的对从上一阶段接受本阶段工作的对象,作为输入象,作为输入 对上述输入实施本阶段的活动对上述输入实施本阶段的活动 给出本阶段的工作成果,作为输给出本阶段的工作成果,作为输出传入下一阶段出传入下一阶段 对本阶段工作进行评审,若本阶对本阶段工作进行评审,若本阶段工作得到确认,则继续下阶段段工作得到确认,则继续下阶段工作,否则返回前一阶段,甚至工作,否则返回前一阶段,甚至更前的阶段更前的阶段系统需求系统需求软件需求软件需求分
13、析分析设计设计编码编码测试测试运作运作瀑布模型瀑布模型17瀑布模型瀑布模型(3)(3)系统需求系统需求软件需求软件需求分析分析设计设计编码编码测试测试运作运作瀑布模型瀑布模型18瀑布模型瀑布模型(4)(4)瀑布模型为软件开发与维护提供了一种有效的管理模式,瀑布模型为软件开发与维护提供了一种有效的管理模式,根据这一模式制订开发计划、进行成本预算、组织开发人根据这一模式制订开发计划、进行成本预算、组织开发人员,以阶段评审和文档控制为手段有效地对整个开发过程员,以阶段评审和文档控制为手段有效地对整个开发过程进行指导,从而保证了软件产品的质量进行指导,从而保证了软件产品的质量优点:近优点:近3030年
14、来之所以广为流行,是因为它在支持开发结年来之所以广为流行,是因为它在支持开发结构化软件、控制软件的开发复杂度、促进软件开发工程化构化软件、控制软件的开发复杂度、促进软件开发工程化方面起着显著作用方面起着显著作用缺点:缺乏灵活性,无法通过开发活动澄清本来不够确切缺点:缺乏灵活性,无法通过开发活动澄清本来不够确切的软件需求。这些问题可能导致开发出的软件并不是用户的软件需求。这些问题可能导致开发出的软件并不是用户真正需要的软件,并且这一点在开发过程完成后才有所察真正需要的软件,并且这一点在开发过程完成后才有所察觉觉192.5 2.5 进化模型进化模型(1)(1)进化模型主要针对事先不能完整定义需求的
15、软件开发。用进化模型主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现后,能够有效地提出反馈,以支持系统的最终设计和实现实现 软件开发人员根据用户的需求,首先开发核心系统。当该软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,用户试用之核心系统投入运行后,用户试用之,完成他们的工作完成他们的工作,并并提出精化系统、增强系统能力的需求。软件开发人员根据提出精化系统、增强系统能力的需求。软件开发人员根据用户的反馈,实施开发的迭代过程用
16、户的反馈,实施开发的迭代过程 每一迭代过程均由需求、设计、编码、测试、集成等阶段每一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。如组成,为整个系统增加一个可定义的、可管理的子集。如果在一次迭代中,有的需求不能满足用户的要求,可在下果在一次迭代中,有的需求不能满足用户的要求,可在下一次迭代中予以修正,从而在一定程度上减少了软件开发一次迭代中予以修正,从而在一定程度上减少了软件开发的盲目性的盲目性20进化模型进化模型(2)-(2)-原型模型原型模型建造建造/修改修改原型原型听取用户听取用户意见意见用户测试用户测试运行原型运行原型21进化模型进化模型
17、(3)(3)进化模型在克服瀑布模型缺点、减少由于软件需求不明确进化模型在克服瀑布模型缺点、减少由于软件需求不明确给开发工作带来风险方面,确有显著效果。软件系统的原给开发工作带来风险方面,确有显著效果。软件系统的原型有多种形式:型有多种形式:丢弃型:原型开发之后,已获取了更为清晰的需求信息,丢弃型:原型开发之后,已获取了更为清晰的需求信息,原型无需保留而废弃原型无需保留而废弃演示型:开发原型仅以演示为目标演示型:开发原型仅以演示为目标样品型:原型规模与最终产品相同,只是原型仅供研究用样品型:原型规模与最终产品相同,只是原型仅供研究用增长式演示型:原型作为软件最终产品的一部分,可满足增长式演示型:
18、原型作为软件最终产品的一部分,可满足用户的部分需求,进一步在此基础上开发,可增加需求,用户的部分需求,进一步在此基础上开发,可增加需求,实现后再交付使用实现后再交付使用粗陋型:用较短时间开发的简易原型粗陋型:用较短时间开发的简易原型222.6 2.6 螺旋模型螺旋模型(1)(1)将瀑布模型与进化模型相结合,并且增加了两者所忽略的将瀑布模型与进化模型相结合,并且增加了两者所忽略的风险分析。它将软件项目开发分别划分为四类活动风险分析。它将软件项目开发分别划分为四类活动,沿着沿着螺线旋转,在笛卡儿坐标的四个象限上分别表达了四个方螺线旋转,在笛卡儿坐标的四个象限上分别表达了四个方面的活动,即:面的活动
19、,即:制订计划:确定软件目标,选定实施方案,弄清项目开发制订计划:确定软件目标,选定实施方案,弄清项目开发的限制条件的限制条件风险分析:分析所选方案,考虑如何识别和消除风险;风险分析:分析所选方案,考虑如何识别和消除风险;工程实施:实施软件开发;工程实施:实施软件开发;客户评估:评价开发工作,提出修正建议。客户评估:评价开发工作,提出修正建议。沿螺线自内向外,每旋转一圈,便可开发出更为完善的一沿螺线自内向外,每旋转一圈,便可开发出更为完善的一个新的软件版本个新的软件版本23螺旋模型螺旋模型(2)(2)原型原型1原型原型2原型原型3可运行可运行原型原型需求计划需求计划生存期生存期计划计划开开发发
20、计计划划集集成成与与测测试试软件软件需求需求需求需求确认确认设计确认设计确认与验证与验证 软件软件 产品产品设计设计详细设计详细设计风风险险分分析析风风险险分分析析风风险险分分析析验收验收测试测试实现实现集成集成与与测试测试单元单元测试测试编码编码工程实施工程实施开发、验证开发、验证下一产品下一产品提交线提交线评审评审累计累计成本成本风险分析风险分析评价方案,识别评价方案,识别风险、消除风险风险、消除风险制订计划制订计划决定目标决定目标方案和限制方案和限制螺旋模型螺旋模型客户评估客户评估24螺旋模型螺旋模型(3)(3)螺旋模型通常用以指导大型软件项目的开发,如果开发风螺旋模型通常用以指导大型软
21、件项目的开发,如果开发风险过大,开发者和客户无法承受,项目有可能因此终止。险过大,开发者和客户无法承受,项目有可能因此终止。多数情况下会沿着螺线继续下去,自内向外逐步延伸,最多数情况下会沿着螺线继续下去,自内向外逐步延伸,最终得到满意的软件。终得到满意的软件。如果对所开发项目的需求已有了较好的理解或较大的把握如果对所开发项目的需求已有了较好的理解或较大的把握,无需开发原型,便可采用普通的瀑布模型。这在螺旋模,无需开发原型,便可采用普通的瀑布模型。这在螺旋模型中可认为是单圈螺线。与此相反,如果对所开发项目的型中可认为是单圈螺线。与此相反,如果对所开发项目的需求理解较差,需要开发原型,甚至需要不止
22、一个原型的需求理解较差,需要开发原型,甚至需要不止一个原型的帮助,那就要经历多圈螺线。在这种情况下,外圈的开发帮助,那就要经历多圈螺线。在这种情况下,外圈的开发包含了更多的活动。也可能某些开发采用了不同的模型。包含了更多的活动。也可能某些开发采用了不同的模型。和其它模型相比螺旋模型的优越性较为明显,但要求许多和其它模型相比螺旋模型的优越性较为明显,但要求许多客户接受和相信进化方法并不容易。本模型的使用需要具客户接受和相信进化方法并不容易。本模型的使用需要具有相当丰富的风险评估经验和专门知识。如果项目风险较有相当丰富的风险评估经验和专门知识。如果项目风险较大,又未能及时发现,势必造成重大损失。大
23、,又未能及时发现,势必造成重大损失。252.7 2.7 统一软件开发过程统一软件开发过程(USDP)(USDP)框架框架 USDPUSDP概述概述 USDPUSDP术语术语 USDPUSDP的高层视图的高层视图 USDPUSDP的特点的特点26USDPUSDP概述概述 软件开发涉及多种因素,很难定义一种通用的过程。任何软件开发涉及多种因素,很难定义一种通用的过程。任何软件项目都可选用适合自身的任何过程软件项目都可选用适合自身的任何过程 UMLUML是一种通用的建模语言,不是一种方法,适用于任何是一种通用的建模语言,不是一种方法,适用于任何开发过程开发过程 UMLUML设计者推荐使用的设计者推荐
24、使用的USDPUSDP是一个过程框架,倡导采用是一个过程框架,倡导采用UMLUML来记录、分析和设计的结果来记录、分析和设计的结果软件过程基础软件过程基础Rational 软件开发过程软件开发过程27USDPUSDP术语术语 活动:有明确输入条件、资源需求和控制约束并产生一定活动:有明确输入条件、资源需求和控制约束并产生一定输出的工作单元,可用一个五元素集输出的工作单元,可用一个五元素集 F(AF(A,I,R,C,O)I,R,C,O)来描述来描述 过程:活动的偏序集。适合软件开发的过程叫软件开发过过程:活动的偏序集。适合软件开发的过程叫软件开发过程;适合企事业事务的过程叫企事业过程;等等程;适
25、合企事业事务的过程叫企事业过程;等等 角色:执行活动的人力资源、使用系统的用户或与系统交角色:执行活动的人力资源、使用系统的用户或与系统交互的外部系统互的外部系统 人员:过程中执行某一活动的人力资源人员:过程中执行某一活动的人力资源(个体或群组个体或群组)用例:系统中能满足某一需求的一组活动序列。一个用例用例:系统中能满足某一需求的一组活动序列。一个用例应能返回一定的可见结果给执行该用例的角色应能返回一定的可见结果给执行该用例的角色 构造:在迭代增量式开发过程中的每一步所产生的结果,构造:在迭代增量式开发过程中的每一步所产生的结果,是系统某一特定部分的一个可执行版本是系统某一特定部分的一个可执
26、行版本软件过程基础软件过程基础Rational 软件开发过程软件开发过程28USDPUSDP的高层视图的高层视图 USDPUSDP包含四个阶段:初始阶段、细化阶段、构造阶段和移包含四个阶段:初始阶段、细化阶段、构造阶段和移交阶段交阶段在初始阶段,需要考虑项目的效益,并确定项目的适用范在初始阶段,需要考虑项目的效益,并确定项目的适用范围,这一阶段需要与客户进行讨论围,这一阶段需要与客户进行讨论在细化阶段,收集详细的需求,进行高层分析和设计,并在细化阶段,收集详细的需求,进行高层分析和设计,并为构造阶段制定计划:选择一些功能点,完成这些功能;为构造阶段制定计划:选择一些功能点,完成这些功能;再选择
27、别的功能点,再完成这些功能;如此循环往复再选择别的功能点,再完成这些功能;如此循环往复移交阶段移交阶段初始阶段初始阶段细化阶段细化阶段2 23 31 1构造阶段构造阶段软件过程基础软件过程基础Rational 软件开发过程软件开发过程29USDPUSDP的高层视图的高层视图(续续)构造阶段由多次迭代组成,每一次迭代都包含整个软件生构造阶段由多次迭代组成,每一次迭代都包含整个软件生命周期:捕获用例、分析、设计、实现和测试阶段。每一命周期:捕获用例、分析、设计、实现和测试阶段。每一次迭代所得到的产品应满足项目需求的某一个子集,提交次迭代所得到的产品应满足项目需求的某一个子集,提交给早期用户或是内部
28、提交给早期用户或是内部提交移交阶段,也包含移交阶段,也包含1 1个或多个迭代,将软件给用户安装、试个或多个迭代,将软件给用户安装、试用和维护用和维护 这是一个迭代增量式的开发过程,即不是在项目结束时一这是一个迭代增量式的开发过程,即不是在项目结束时一次性提交软件,而是分块逐次开发和提交次性提交软件,而是分块逐次开发和提交软件过程基础软件过程基础Rational 软件开发过程软件开发过程30USDPUSDP的高层视图的高层视图(增量模型增量模型)设设计计编编码码测测试试分分析析设设计计编编码码测测试试分分析析设设计计编编码码测测试试分分析析增量增量1 1增量增量2 2增量增量3 3第一个增量发布
29、第一个增量发布第二个增量发布第二个增量发布第三个增量发布第三个增量发布开发进度开发进度软件过程基础软件过程基础Rational 软件开发过程软件开发过程31USDPUSDP的特点的特点 基于基于UMLUML、以构架为中心、用例驱动与风险驱动相结合的迭代增、以构架为中心、用例驱动与风险驱动相结合的迭代增量式软件开发过程量式软件开发过程 USDPUSDP包含初始、细化、构造和移交等四个阶段,其中构造阶段包含初始、细化、构造和移交等四个阶段,其中构造阶段由多次迭代所组成由多次迭代所组成 每次迭代中的软件开发工作都围绕需求捕获用例、分析、设计每次迭代中的软件开发工作都围绕需求捕获用例、分析、设计、实现
30、和测试等五个核心工作流来组织、实现和测试等五个核心工作流来组织 职责明确:每个人都明白自己的职责;开发者能更好理解其他职责明确:每个人都明白自己的职责;开发者能更好理解其他开发者的职责;管理人员能了解开发者的职责开发者的职责;管理人员能了解开发者的职责 过程规范:单位对自身员工的培训标准化;开发人员和管理人过程规范:单位对自身员工的培训标准化;开发人员和管理人员不需要学习新的过程就能在小组间调动工作员不需要学习新的过程就能在小组间调动工作 软件开发过程可重复使用:开发技术和管理技术可以重用;项软件开发过程可重复使用:开发技术和管理技术可以重用;项目计划更准确,成本估算与实际更吻合,开发周期更短
31、目计划更准确,成本估算与实际更吻合,开发周期更短软件过程基础软件过程基础Rational 软件开发过程软件开发过程322.8 2.8 软件生命周期的选取评价准则软件生命周期的选取评价准则(1)(1)资源的可用性资源的可用性 项目的复杂度项目的复杂度 应用的费用应用的费用 未来升级的费用未来升级的费用 使用的容易度使用的容易度 应用的功能需求应用的功能需求 渐进的需求变更渐进的需求变更软件过程基础软件过程基础软件生命周期模型软件生命周期模型33软件生命周期的选取评价准则软件生命周期的选取评价准则(2)(2)应用的寿命应用的寿命 产品的技术产品的技术 应用的生产力应用的生产力 产品的质量产品的质量
32、 需求的易变性需求的易变性 产品的重用和文档的可交付产品的重用和文档的可交付 风险管理风险管理 未知需求未知需求软件过程基础软件过程基础软件生命周期模型软件生命周期模型343 3 软件度量软件度量3.1 3.1 软件度量的基本概念软件度量的基本概念3.2 3.2 软件度量的意义软件度量的意义3.3 3.3 度量元度量元3.4 3.4 度量过程度量过程353.1 3.1 软件度量的基本概念软件度量的基本概念 在现实世界中,对用数字或符号指定给实体的某些属性进在现实世界中,对用数字或符号指定给实体的某些属性进行度量,以便根据已明确的规则来描述它们行度量,以便根据已明确的规则来描述它们 软件度量就是
33、在软件开发过程中,把软件开发过程和软件软件度量就是在软件开发过程中,把软件开发过程和软件产品的各种属性,例如软件开发成本、花费时间、开发效产品的各种属性,例如软件开发成本、花费时间、开发效率、产品规模、软件质量的各种数据,度量、记录、统计率、产品规模、软件质量的各种数据,度量、记录、统计并进行必要的分析并进行必要的分析363.1 3.1 软件度量的基本概念软件度量的基本概念(续续)软件度量软件度量:指计算机软件中范围广泛的度量。度量可应用指计算机软件中范围广泛的度量。度量可应用于软件过程,也可用于整个软件项目于软件过程,也可用于整个软件项目软件产品的度量:用定量的方法表达和分析软件产品质量软件
34、产品的度量:用定量的方法表达和分析软件产品质量特性,如功能度和可靠性等。通过辅助估算、质量控制、特性,如功能度和可靠性等。通过辅助估算、质量控制、生产率评估以及项目控制评估工作产品的质量。生产率评估以及项目控制评估工作产品的质量。软件过程的度量软件过程的度量:用定量的方法表达和分析软件过程的特用定量的方法表达和分析软件过程的特性,如软件开发效率、开发成本、质量保证措施的有效性性,如软件开发效率、开发成本、质量保证措施的有效性等。目的是为了在一个连续的基础上进行改进等。目的是为了在一个连续的基础上进行改进 软件过程的两类度量软件过程的两类度量直接度量直接度量:LOC:LOC,执行速度,内存大小,
35、某阶段缺陷数等,执行速度,内存大小,某阶段缺陷数等间接度量(导出度量):功能,质量,复杂性,有效性,间接度量(导出度量):功能,质量,复杂性,有效性,可靠性,可维护性等可靠性,可维护性等373.2 3.2 软件度量的意义软件度量的意义 如果你不能度量它,就不能用数字表达它,那么你对它的如果你不能度量它,就不能用数字表达它,那么你对它的了解就很贫乏、很不令人满意:它可能是知识的开始,在了解就很贫乏、很不令人满意:它可能是知识的开始,在思想上还远没有进入科学的阶段。(思想上还远没有进入科学的阶段。(Lord KelivinLord Kelivin)任何工程如果不能用数字来描述,这说明它仍处在摇篮时
36、任何工程如果不能用数字来描述,这说明它仍处在摇篮时期期383.2 3.2 软件度量的意义软件度量的意义(续)续)从软件特性看度量的意义从软件特性看度量的意义抽象性:软件没有形体,自然没有一般制造业产品所具有抽象性:软件没有形体,自然没有一般制造业产品所具有的几何尺寸、物理性质(如重量、体积等)以及化学性质的几何尺寸、物理性质(如重量、体积等)以及化学性质等等复杂性:软件内部结构复杂,可以认为,软件是人类创造复杂性:软件内部结构复杂,可以认为,软件是人类创造的最为复杂的实体,而且由于人们尚未掌握其研制规律,的最为复杂的实体,而且由于人们尚未掌握其研制规律,因而这个实体显得更加难以捉摸因而这个实体
37、显得更加难以捉摸多样性:即使需求以及所用的平台和编程语言相同,不同多样性:即使需求以及所用的平台和编程语言相同,不同的软件开发人员或同一个开发人员在不同的年月,也不可的软件开发人员或同一个开发人员在不同的年月,也不可能开发出完全相同的软件能开发出完全相同的软件易变性:在软件的开发过程和使用过程中,常常由于各种易变性:在软件的开发过程和使用过程中,常常由于各种原因需要对软件而进行各种修改原因需要对软件而进行各种修改393.2 3.2 软件度量的意义软件度量的意义(续续)有效地、定量地进行管理,是进行计划、估算、风险分析有效地、定量地进行管理,是进行计划、估算、风险分析、过程监控、质量监控、评价等
38、活动的基础,是改进过程、过程监控、质量监控、评价等活动的基础,是改进过程与提高软件质量的重要手段与提高软件质量的重要手段403.3 3.3 度量元度量元 什么是度量元什么是度量元 资源和成本的度量资源和成本的度量 项目进度与进展状态的度量项目进度与进展状态的度量 增长和稳定性度量增长和稳定性度量 产品质量的度量产品质量的度量 软件质量的度量软件质量的度量 软件程序的度量软件程序的度量41(1)(1)什么是度量元什么是度量元 能用于定量地描述实体的属性,如软件的规模、缺陷的数能用于定量地描述实体的属性,如软件的规模、缺陷的数目、工作量的人天数等目、工作量的人天数等42(2)(2)资源和成本的度量
39、资源和成本的度量 人员人员工作量工作量人员的经验人员的经验人员的周转人员的周转 财务性能财务性能获得的价值获得的价值成本成本 开发环境开发环境资源的可用性资源的可用性资源利用情况资源利用情况43例:人员配置情况例:人员配置情况01020304012345678910111213报告期间人员数量ManagersAnalystsDesignerProgrammerTesterQA,CM,etc.44(3)(3)项目进度与进展状态的度量项目进度与进展状态的度量 里程碑性能里程碑性能 里程碑日期里程碑日期 工作单元进展情况工作单元进展情况 部件状态部件状态 需求状态需求状态 测试用例状态测试用例状态
40、问题报告状态问题报告状态 评审完成情况评审完成情况 变更请求状态变更请求状态 增量的能力增量的能力 构造块内容构造块内容 -部件部件 构造块内容构造块内容 -功能功能45工作单元完成状态工作单元完成状态单元完成情况050100150200250300350M6M8M10M12月编码单元数和测试单元数Plan(ContractAward)25Plan(SDP)Plan(PDR)Plan(CDR)Actul46测试用例完成状态测试用例完成状态测试用例完成情况010203040506070Fun1 Fun2 Fun3 Fun4 Fun5 Fun6 Fun7 Fun8功能测试用例完成PassIn An
41、alysisNot RunFail47(4)(4)增长和稳定性度量增长和稳定性度量 产品规模和稳定性产品规模和稳定性代码行代码行部件部件存储的词汇量存储的词汇量数据库规模数据库规模 功能的规模和稳定性功能的规模和稳定性需求需求功能点功能点用例用例(Use Case)(Use Case)变更请求工作量变更请求工作量48例:需求变化的度量例:需求变化的度量(20.00)0.0020.0040.0060.0080.00100.00120.00140.00160.00180.001234567891011报告期间需求和变更数量初始的需求增加的需求修改的需求删除的需求需求总数变更累计49(5)(5)产品
42、质量的度量产品质量的度量 缺陷缺陷问题报告问题报告缺陷密度缺陷密度 复杂度复杂度 返工返工返工规模返工规模返工工作量返工工作量50例:问题报告状态例:问题报告状态020406080100120140160180123456789报告期间问题报告数估计数总数解决未解决(正在处 理)51例:软件问题数的功能域分布图例:软件问题数的功能域分布图0 0101020203030404050506060707080809090需求需求设计设计编码编码界面界面文档文档严重严重中度中度轻度轻度52(6)(6)软件质量度量软件质量度量 程序质量度量程序质量度量 文档质量度量文档质量度量 软件质量度量准则软件质量
43、度量准则53(7)(7)软件程序度量软件程序度量 面向规模的度量面向规模的度量 面向功能点的度量面向功能点的度量 软件缺陷排除率的度量软件缺陷排除率的度量 软件测试的度量软件测试的度量54面向规模的度量面向规模的度量 工作产品标识:项目、模块工作产品标识:项目、模块 代码行数:千行语句数、字符数、字节数代码行数:千行语句数、字符数、字节数 注释率:注释语句数注释率:注释语句数/代码行数代码行数 错误数错误数KLOCKLOC 文档页数文档页数KLOCKLOC 成本成本KLOCKLOC KLOCKLOC数人月数人月55面向规模的度量面向规模的度量(续)续)面向规模的度量特点:面向规模的度量特点:代
44、码行是开发项目的生成品,容易计算;代码行是开发项目的生成品,容易计算;依赖于程序设计语言;依赖于程序设计语言;必须在项目完成后才能得到数据。必须在项目完成后才能得到数据。564 4 工作分解结构工作分解结构(WBS)(WBS)4.1 WBS4.1 WBS4.2 WBS4.2 WBS中的层次结构中的层次结构4.3 4.3 产品层次结构产品层次结构4.4 4.4 活动层次结构活动层次结构4.5 4.5 构造构造 WBS WBS 574.1 WBS4.1 WBS WBS(Work Breakdown Structure)WBS(Work Breakdown Structure)以层次结构组织项目活以
45、层次结构组织项目活动元素,它是根据自顶向下的方法,按照模块化的思想将动元素,它是根据自顶向下的方法,按照模块化的思想将项目分解成易于管理的活动项目分解成易于管理的活动 每项活动可以被分配、执行和跟踪。每项活动可以被分配、执行和跟踪。WBSWBS的分解粒度要达的分解粒度要达到可管理的级别,即每项活动能够细分到个人,而且最好到可管理的级别,即每项活动能够细分到个人,而且最好能在一周内(能在一周内(5 5个工作日)完成个工作日)完成 WBSWBS是项目计划的是项目计划的“基础构架基础构架”,它是估计、计划、跟踪,它是估计、计划、跟踪和监控的主要依据。在整个项目生命周期中,和监控的主要依据。在整个项目
46、生命周期中,WBSWBS必须用必须用适当的细节等级封装变更和进化。构造好适当的细节等级封装变更和进化。构造好WBSWBS,将会给项,将会给项目的计划和实施带来极大的便利目的计划和实施带来极大的便利584.2 WBS4.2 WBS中的层次结构中的层次结构 两种类型两种类型:产品产品活动活动或两者的混合或两者的混合594.3 4.3 产品层次结构产品层次结构 指明各种软件分量如何安置在软件系统中指明各种软件分量如何安置在软件系统中 反映软件产品的基本结构,由软件设计者确定反映软件产品的基本结构,由软件设计者确定 分量有:程序分量有:程序(routine)(routine)、模块、子系统等、模块、子
47、系统等604.4 4.4 活动层次结构活动层次结构 指明处理一个软件分量的各种方法指明处理一个软件分量的各种方法 合适时,活动层次的一部分可以运用到产品的任何一个层合适时,活动层次的一部分可以运用到产品的任何一个层次次614.5 4.5 构造构造 WBSWBS 迭代式构造迭代式构造 构造有意义的逐步细分构造有意义的逐步细分(roll-up)(roll-up)的层次结构的层次结构 向下细分到能实际作出策划和控制的层次(不要太碎)向下细分到能实际作出策划和控制的层次(不要太碎)综合自顶向下综合自顶向下/由底向上的方法由底向上的方法 采用混合的产品采用混合的产品/活动层次结构活动层次结构 62WBS
48、WBS例子例子RequirementAnalysisHigh LevelDesignDetailedDesignMod 1P1P2 CodeP2 CodeReviewP2 UnitTest PlanP2 Unit Test&DebuggingP2P3P4Mod 2Mod 3Mod 4Code&Unit TestSystem TestDespatch&InstallProjectManagementProject34ACTIVITY Break-upProductBreak-up635 5 风险管理风险管理5.1 5.1 风险策略风险策略5.2 5.2 风险特性风险特性5.3 5.3 风险管理活
49、动风险管理活动645.1 5.1 风险策略风险策略 被动式:风险发生后才采取措施,是被动式:风险发生后才采取措施,是“救火模式救火模式”主动式:在项目开发前就标识出潜在的风险,有计划地管主动式:在项目开发前就标识出潜在的风险,有计划地管理风险。主要目标是预防风险。必要时加以控制,减轻影理风险。主要目标是预防风险。必要时加以控制,减轻影响响655.2 5.2 风险特性风险特性 不确定性:刻划风险的事件可能发生也可能不发生;即,不确定性:刻划风险的事件可能发生也可能不发生;即,没有没有100100发生的风险(发生的风险(100100发生的风险是加在项目上的发生的风险是加在项目上的约束)约束)损失:
50、如果风险变成了现实,就会产生恶性后果或损失。损失:如果风险变成了现实,就会产生恶性后果或损失。665.3 5.3 风险管理活动风险管理活动5.3.1 5.3.1 风险识别风险识别5.3.2 5.3.2 风险估计风险估计5.3.3 5.3.3 风险评估风险评估5.3.4 5.3.4 风险驾驭和监控风险驾驭和监控675.3.1 5.3.1 风险识别风险识别 风险识别概述风险识别概述 项目风险识别项目风险识别 技术风险识别技术风险识别 商业风险识别商业风险识别 人员风险识别人员风险识别 开发环境风险识别开发环境风险识别68风险识别概述风险识别概述 风险识别就是根据历史数据及经验,标识相关的风险,列风