CMM软件开发项目管理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1初始级已管理级已定义级定量管理级优化级初始级可重复级已定义级已管理级优化级CMML2软件项目管理2目录1.项目管理概述2.软件生命周期3.软件度量4.软件项目估算5.风险管理6.软件项目计划V小结参考资料3I软件项目管理概述1.1软件项目管理的目的1.2软件项目管理的重要性1.3软件项目管理的对象1.4软件项目管理的主要任务41.1软件项目管理的目的•为了生产产品能做到:–按时交付–在预算内–合格的质量–按计划做事51.2软件项目管理的重要性•软件工程管理引起广泛注意源于20世纪70年代中期,当时发现不成功的项目70%是因为管理不善而引起•20世纪90年代中期,美国的软件开发仍然很难预测,大约只有10%的项目能够在预定的费用和进度下交付61.3软件项目管理的对象•任务•成本•工作量•效率•人员•资源•风险71.4项目管理的主要任务•定义软件生命周期•进行软件规模估算•进行软件风险分析•制定软件开发计划•进行软件项目跟踪与监控•进行软件度量82软件生命周期2.1软件过程的三个主要阶段2.2什么是软件生命周期2.3软件生命周期模型2.4瀑布模型2.5进化模型2.6螺旋模型2.7Rational软件开发过程框架2.8软件生命周期的选取评价准则92.1软件过程的三个主要阶段2.1.1定义阶段2.1.2开发阶段2.1.3维护阶段10定义阶段•定义阶段要明确“做什么”–定义系统和软件的关键需求:•在此阶段,开发人员试图搞清要处理什么信息•预期完成什么样的功能和性能•达到什么样的系统行为•建立什么样的界面•有什么样的约束•设计需求跟踪矩阵和系统测试用例–定义一个成功系统的确认标准是什么–定义阶段三个主要任务:系统工程分析;软件项目计划;软件需求分析11开发阶段•开发阶段要明确“如何做”–设计软件:•功能如何转换为构架•细化需求跟踪矩阵和设计集成测试用例•试图定义数据如何结构化•界面如何表示•设计如何转换成程序•测试如何进行–定义一个成功系统的设计的确认标准是什么–开发阶段三个主要任务:软件设计;代码生成;软件测试12维护阶段•维护阶段要明确“改变什么”–改正性维护:约占20%左右。主要是改正处理方面、性能方面以及编程方面的错误–适应性维护:约占25%左右。主要用于适应数据环境(外部环境)、硬件及操作系统(内部环境)和移植工作–改进性维护:约占50%左右。主要用于提高处理效率、提高性能、使之使用方便、增加及改进输出信息,以达到便于维护的目的。这包括改进易读性和注释等132.2什么是软件生命周期•软件生命周期是指软件产品或软件系统从产生、投入使用到被淘汰的全过程–在计算机技术发展的初期,人们把软件开发简单地理解为编写程序–随着软件复杂性的增长,人们认识到软件开发活动应划分为需求分析、设计、实现、测试等若干个活动,并将这些活动以适当的方式分配到不同的阶段中去完成•通常把软件生命周期分为5个阶段:–需求–设计–编码–测试–维护142.3软件生命周期模型•软件生命周期模型是描述软件开发全部过程、活动和任务的结构框架•软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础–瀑布模型(WaterfallModel)–进化模型(EvolutionaryModel)–螺旋模型(SpiralModel)–统一软件开发过程(UnifiedSoftwareDevelopmentProcess)152.4瀑布模型(1)•1970年W.Royce提出了最早的软件开发模型--瀑布模型。该模型给出了固定的顺序,将软件生命周期各阶段的活动从上一阶段向下一阶段逐级过渡,如同流水下泻,最终得到所开发的软件产品•这一模型规定了开发各阶段的活动为:提出系统需求,提出软件需求,需求分析,设计,编码,测试和运作。并且还规定了自上而下相互衔接的固定顺序,构成了熟知的瀑布模型•实践表明,各个阶段间的关系并非如此简单。由于阶段评审可能出现向前阶段的反馈,致使在各阶段间产生环路,瀑布流水出现上流。W.Royce在提出瀑布模型时,就对此提出了如何进行的建议分析设计编码测试16瀑布模型(2)每个开发阶段均应具有以下特征•从上一阶段接受本阶段工作的对象,作为输入•对上述输入实施本阶段的活动•给出本阶段的工作成果,作为输出传入下一阶段•对本阶段工作进行评审,若本阶段工作得到确认,则继续下阶段工作,否则返回前一阶段,甚至更前的阶段系统需求软件需求分析设计编码测试运作瀑布模型17瀑布模型(3)系统需求软件需求分析设计编码测试运作瀑布模型18瀑布模型(4)•瀑布模型为软件开发与维护提供了一种有效的管理模式,根据这一模式制订开发计划、进行成本预算、组织开发人员,以阶段评审和文档控制为手段有效地对整个开发过程进行指导,从而保证了软件产品的质量–优点:近30年来之所以广为流行,是因为它在支持开发结构化软件、控制软件的开发复杂度、促进软件开发工程化方面起着显著作用–缺点:缺乏灵活性,无法通过开发活动澄清本来不够确切的软件需求。这些问题可能导致开发出的软件并不是用户真正需要的软件,并且这一点在开发过程完成后才有所察觉192.5进化模型(1)•进化模型主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现•软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,用户试用之,完成他们的工作,并提出精化系统、增强系统能力的需求。软件开发人员根据用户的反馈,实施开发的迭代过程•每一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。如果在一次迭代中,有的需求不能满足用户的要求,可在下一次迭代中予以修正,从而在一定程度上减少了软件开发的盲目性20进化模型(2)-原型模型建造/修改原型听取用户意见用户测试运行原型21进化模型(3)•进化模型在克服瀑布模型缺点、减少由于软件需求不明确给开发工作带来风险方面,确有显著效果。软件系统的原型有多种形式:–丢弃型:原型开发之后,已获取了更为清晰的需求信息,原型无需保留而废弃–演示型:开发原型仅以演示为目标–样品型:原型规模与最终产品相同,只是原型仅供研究用–增长式演示型:原型作为软件最终产品的一部分,可满足用户的部分需求,进一步在此基础上开发,可增加需求,实现后再交付使用–粗陋型:用较短时间开发的简易原型222.6螺旋模型(1)•将瀑布模型与进化模型相结合,并且增加了两者所忽略的风险分析。它将软件项目开发分别划分为四类活动,沿着螺线旋转,在笛卡儿坐标的四个象限上分别表达了四个方面的活动,即:–制订计划:确定软件目标,选定实施方案,弄清项目开发的限制条件–风险分析:分析所选方案,考虑如何识别和消除风险;–工程实施:实施软件开发;–客户评估:评价开发工作,提出修正建议。•沿螺线自内向外,每旋转一圈,便可开发出更为完善的一个新的软件版本23螺旋模型(2)原型1原型2原型3可运行原型需求计划生存期计划开发计划集成与测试软件需求需求确认设计确认与验证软件产品设计详细设计风险分析风险分析风险分析验收测试实现集成与测试单元测试编码工程实施开发、验证下一产品提交线评审累计成本风险分析评价方案,识别风险、消除风险制订计划决定目标方案和限制螺旋模型客户评估24螺旋模型(3)•螺旋模型通常用以指导大型软件项目的开发,如果开发风险过大,开发者和客户无法承受,项目有可能因此终止。多数情况下会沿着螺线继续下去,自内向外逐步延伸,最终得到满意的软件。•如果对所开发项目的需求已有了较好的理解或较大的把握,无需开发原型,便可采用普通的瀑布模型。这在螺旋模型中可认为是单圈螺线。与此相反,如果对所开发项目的需求理解较差,需要开发原型,甚至需要不止一个原型的帮助,那就要经历多圈螺线。在这种情况下,外圈的开发包含了更多的活动。也可能某些开发采用了不同的模型。•和其它模型相比螺旋模型的优越性较为明显,但要求许多客户接受和相信进化方法并不容易。本模型的使用需要具有相当丰富的风险评估经验和专门知识。如果项目风险较大,又未能及时发现,势必造成重大损失。252.7统一软件开发过程(USDP)框架•USDP概述•USDP术语•USDP的高层视图•USDP的特点26USDP概述•软件开发涉及多种因素,很难定义一种通用的过程。任何软件项目都可选用适合自身的任何过程•UML是一种通用的建模语言,不是一种方法,适用于任何开发过程•UML设计者推荐使用的USDP是一个过程框架,倡导采用UML来记录、分析和设计的结果软件过程基础Rational软件开发过程27USDP术语•活动:有明确输入条件、资源需求和控制约束并产生一定输出的工作单元,可用一个五元素集F(A,I,R,C,O)来描述•过程:活动的偏序集。适合软件开发的过程叫软件开发过程;适合企事业事务的过程叫企事业过程;等等•角色:执行活动的人力资源、使用系统的用户或与系统交互的外部系统•人员:过程中执行某一活动的人力资源(个体或群组)•用例:系统中能满足某一需求的一组活动序列。一个用例应能返回一定的可见结果给执行该用例的角色•构造:在迭代增量式开发过程中的每一步所产生的结果,是系统某一特定部分的一个可执行版本软件过程基础Rational软件开发过程28USDP的高层视图•USDP包含四个阶段:初始阶段、细化阶段、构造阶段和移交阶段–在初始阶段,需要考虑项目的效益,并确定项目的适用范围,这一阶段需要与客户进行讨论–在细化阶段,收集详细的需求,进行高层分析和设计,并为构造阶段制定计划:选择一些功能点,完成这些功能;再选择别的功能点,再完成这些功能;如此循环往复移交阶段初始阶段细化阶段231构造阶段…软件过程基础Rational软件开发过程29USDP的高层视图(续)–构造阶段由多次迭代组成,每一次迭代都包含整个软件生命周期:捕获用例、分析、设计、实现和测试阶段。每一次迭代所得到的产品应满足项目需求的某一个子集,提交给早期用户或是内部提交–移交阶段,也包含1个或多个迭代,将软件给用户安装、试用和维护•这是一个迭代增量式的开发过程,即不是在项目结束时一次性提交软件,而是分块逐次开发和提交软件过程基础Rational软件开发过程30USDP的高层视图(增量模型)设计编码测试分析设计编码测试分析设计编码测试分析增量1增量2增量3第一个增量发布第二个增量发布第三个增量发布开发进度软件过程基础Rational软件开发过程31USDP的特点•基于UML、以构架为中心、用例驱动与风险驱动相结合的迭代增量式软件开发过程•USDP包含初始、细化、构造和移交等四个阶段,其中构造阶段由多次迭代所组成•每次迭代中的软件开发工作都围绕需求捕获用例、分析、设计、实现和测试等五个核心工作流来组织•职责明确:每个人都明白自己的职责;开发者能更好理解其他开发者的职责;管理人员能了解开发者的职责•过程规范:单位对自身员工的培训标准化;开发人员和管理人员不需要学习新的过程就能在小组间调动工作•软件开发过程可重复使用:开发技术和管理技术可以重用;项目计划更准确,成本估算与实际更吻合,开发周期更短软件过程基础Rational软件开发过程322.8软件生命周期的选取评价准则(1)•资源的可用性•项目的复杂度•应用的费用•未来升级的费用•使用的容易度•应用的功能需求•渐进的需求变更软件过程基础软件生命周期模型33软件生命周期的选取评价准则(2)•应用的寿命•产品的技术•应用的生产力•产品的质量•需求的易变性•产品的重用和文档的可交付•风险管理•未知需求软件过程基础软件生命周期模型343软件度量3.1软件度量的基本概念3.2软件度量的意义3.3度量元3.4度量过程353.1软件度量的基本概念•在现实世界中,对用数字或符号指定给实体的某些属性进行度量,以便根据已明确的规则来描述它们•软件度量就是在软件开发过程中,把软件开发过程和软件产品的各种属性,例如软件开发成本、花费时间、开发效率、产品规模、软件质量的各种数据,度量、

1 / 91
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功