第十章-软件需求分析PPT课件_第1页
第十章-软件需求分析PPT课件_第2页
第十章-软件需求分析PPT课件_第3页
第十章-软件需求分析PPT课件_第4页
第十章-软件需求分析PPT课件_第5页
已阅读5页,还剩122页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件项目管理,2,第二章,-,2,项目管理是广泛应用于各种工程、金融等技术管理过程,管理的好坏决定了工程的成败。软件及IT行业,尤其是软件产品的特殊性,软件项目管理对于保证软件产品的质量具有极为重要的作用,是决定一个产品或企业能否成功的最重要的指标。,2.1软件项目管理概述,不可见性不确定性人员流动性,-,3,2.1软件项目管理概述,随着软件的规模和复杂度的不断增大,开发人员的增加以及开发时间的增长,这些都增加了软件项目管理的难度。例如:Windows2000的开发是微软公司历史上最艰巨的任务,仅核心部门的的成员就有2500人,测试用的代码就有1000万行,测试中所用到的脚本程序就有6500种。象规模如此之大的软件系统,如果没有科学的、规范的、有效的管理,是不可能成功的。因此软件项目管理成为软件工程的重要研究内容之一。,-,4,2.1.1软件项目管理的任务,过程(process),人员(people),工具(tools),项目(Project),一、软件项目管理的“4P”,-,5,二、软件项目管理过程,软件项目管理,是对整个软件生存期的所有活动进行管理。主要过程包括:1.项目启动确定系统范围、组建项目团队、建立项目环境。2.项目规划确定项目活动、项目成本估算、制定进度计划3.项目实施监控项目执行、管理项目风险、控制项目变更4.项目收尾项目验收、软件安装培训、项目总结,2.1.1软件项目管理的任务,-,6,2.1.1软件项目管理的任务,三、软件项目管理与过程管理的关系,软件项目管理用于保证项目目标的成功实现,过程管理用于辅助项目管理,将最佳的项目实践用于软件开发过程。,-,7,2.1.2项目管理的主要活动,软件项目的规划人员的组织管理软件风险管理软件配置管理,包括:可行性分析软件项目度量软件成本估算软件计划,-,8,2.1.2项目管理的主要活动,包括:人员配备原则人员配备模式软件团队建设软件项目沟通活动,软件项目的规划人员的组织管理软件风险管理软件配置管理,-,9,2.1.2项目管理的主要活动,包括:风险识别风险分析风险规划风险监控,软件项目的规划人员的组织管理软件风险管理软件配置管理,-,10,2.1.2项目管理的主要活动,是为了有效地控制和管理软件开发过程中的变化,进行标识、组织和控制修改的技术。配置管理活动:配置项的标识版本管理系统构建变更控制,软件项目的规划人员的组织管理软件风险管理软件配置管理,-,11,软件度量,软件度量的概念软件规模度量软件功能度量,软件项目度量,软件度量分类,-,12,度量、估算,度量metrics度量具有数字特征,软件工程范围的度量是软件开发过程、软件资源或软件产品简单属性的定量描述。如,程序规模、操作符个数、程序中错误的个数等。估算estimation对软件产品、过程、资源进行预测估算可以采用经验公式、或参考历史资料估算用于事前签订合同、立项、制定工作计划等,-,13,软件的外部属性和内部属性外部属性软件产品、过程、资源与环境的关系如,成本、效益、劳动生产率、可靠性、可维护性内部属性软件产品、过程、资源、环境自身的属性如,产品结构、模块化程度、复杂性、程序长度等。,-,14,产品-过程-资源,产品的内部属性程序代码长度程序功能模块化重用性控制流数据流模块耦合度与内聚度产品的外部属性程序的可靠性可用性可维护性软件的可理解性有效性可移植性,-,15,过程的内部属性工作量计划和进度一段时间内某类事件发生的次数过程的外部属性成本可控制性可观察性稳定性资源的内部属性人软硬件环境方法经验资源的外部属性成本时间,-,16,面向规模的度量,代码行数LOC或KLOC生产率Pl=L/E其中L软件项目代码行数E软件项目工作量(人月PM)Pl软件项目生产率(LOC/PM)代码出错率EQRl=Ne/L其中Ne软件项目的代码错误数EQRl每千行代码的错误数,-,17,每行代码平均成本Cl=S/L其中S软件项目总开销(元美元)Cl软件项目每行代码的平均成本文档与代码比Dl=Pd/L其中Pd软件项目文档页数Dl每千行代码的平均文档数,-,18,例软件项目记录,-,19,生产率:Pl=L/E=12.1kLoc/24PM=504Loc/PM出错率:EQRl=Ne/L=29个/12.1kLoc=2.4个/kLoc平均成本:Cl=S/L=168000美元/12.1kLoc=13.88美元/Loc每千行代码的平均文档页数:Dl=Pd/L=365Pd/12.1kLoc=30.16Pd/kLoc,-,20,规模度量的优缺点,用软件代码行数估算软件规模简单易行。缺点代码行数的估算依赖于程序设计语言的功能和表达能力;采用代码行估算方法会对设计精巧的软件项目产生不利的影响;在软件项目开发前或开发初期估算它的代码行数十分困难;代码行估算只适用于过程式程序设计语言,对非过程式的程序设计语言不太适用等等。,-,21,根据事务信息处理程序的基本功能定义的,在系统设计初期可以估算出软件项目的规模FP=CT*0.65+0.01*Fi其中:CT按表2.1计算()Fi是复杂性调节值Fi取值0,1,.,5当Fi=0时,表示Fi不起作用Fi=5时,表示Fi作用最大,面向功能的度量,-,22,表功能点度量,测量参数值权值用户输入数*4用户输出数*5用户查询数*4文件数*7外部界面数*7CT,-,23,表2.1中的五个信息量按下列方式取值用户输入数用户为软件提供的输入参数个数用户输出数软件系统为用户提供的输出参数个数用户查询数一个联机输入确定一次查询,软件以联机输出的形式,实时地产生一个响应文件数统计逻辑的主文件个数外部界面数统计所有机器可读的界面,利用这些界面可以将信息从一个系统传送到另一个系统,-,24,用功能点定义相应的概念生产率:Pf=FP/E其中Pf表示每人月完成的功能点数平均成本:Ci=S/FP其中Ci表示每功能点的平均成本文档与功能点比:Di=Pd/FP其中Di表示每个功能点平均具有的文档页数代码出错率:EORi=Ne/FP其中EORi表示每个功能点的平均错误个数,-,25,面向功能的度量,软件规模的功能点度量没有直接涉及软件系统本身的算法复杂性。1986年Jones把软件项目中的算法复杂性因素引入到功能点计算中来,为了避免混淆,我们把Albrecht定义的功能点称为简单功能点,用FPs表示,把Jones推广的功能点称为功能点,用FP表示。推广的功能点包括计算机程序中用于各类问题求解的算法因素,如求解线性代数方程组、遍历二叉树的各个结点、处理中断等等。功能点计算仍用上面的公式,其中CT按表2.2计算。,-,26,表推广的功能点度量,测量参数值权值用户输入数*4用户输出数*5用户查询数*4文件数*7外部界面数*7算法*3CT对一般的工程计算或事务处理软件,用表2.1和表2.2两种方法计算出来的FP值应该基本上相同对于比较复杂的软件系统FP比FPs的值高20%35%,-,27,面向功能的度量的优缺点,优点与程序设计语言无关,它不仅适用于过程式语言,也适用于非过程式的语言;软件项目开发初期就能基本上确定系统的输入、输出等参数,功能点度量能用于软件项目的开发初期。缺点它涉及到的主观因素比较多,如各种权函数的取值;信息领域中的某些数据有时不容易采集;FP的值没有直观的物理意义。,-,28,代码行度量与功能点度量的比较,代码行度量依赖于程序设计语言,而功能点度量不依赖于程序设计语言。Albrecht和Jones等人对若干软件采用事后处理的方式分别统计出不同程序设计语言每个功能点与代码行数的关系,用LOC/FP的平均值表示。表2.3表明,一行Ada语言代码的“功能”平均是一行FORTRAN语言代码“功能”的1.4倍。一行四代语言代码的“功能”平均是一行传统程序设计语言代码“功能”的3至5倍。,-,29,表各种语言的LOC/FP(平均值),程序设计语言LOC/FP(平均值)汇编语言300COBOL100FORTRAN100Pascal90Ada70面向对象的语言30四代语言(4GL)20代码生成器15,-,30,软件复杂性度量,1976年T.J.McCabeMcCabe度量法又称环路复杂性度量,基于程序控制结构的软件复杂性度量模型。程序控制结构图程序结构对应于有一个入口结点和一个出口结点的有向图图中每个结点对应一个语句或一个顺序流程的程序代码块弧对应于程序中的转移它基于一个程序模块的程序图中环路的个数,因此计算它先要画出程序图。程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。,-,31,McCabe度量法,McCabe用程序控制结构图的巡回秩数V(G)作为程序结构复杂性的度量V(G)=e-n+2其中:e为结构图的边数n为结构图的结点数可以证明V(G)等于结构图中有界或无界的封闭区域个数,-,32,例计算程序控制结构的V(G)值,E=1E=3N=2N=3V=1V=2,-,33,计算程序控制结构的V(G)值,E=4E=3N=4N=3V=2V=2,-,34,计算程序控制结构的V(G)值,E=6N=5V=3,-,35,例2.1计算如图所示程序控制结构图的V(G)值。(a)e=1,n=2,v=1;(b)e=3,n=3,v=2;(c)e=4,n=4,v=2;(d)e=3,n=3,v=2;(e)e=6,n=5,v=3.,-,36,示例:,-,37,在前面的例示中,n11,m13,V(G)mnp131113.p1,McCabe建议把V(G)作为模块规模的定量指标,一个模块V(G)的值不要大于10当V(G)10时,模块内部结构就会变得复杂,给编码和测试带来困难。,-,38,这种度量的缺点是:对于不同种类的控制流的复杂性不能区分简单IF语句与循环语句的复杂性同等看待嵌套IF语句与简单CASE语句的复杂性是一样的模块间接口当成一个简单分支一样处理一个具有1000行的顺序程序与一行语句的复杂性相同,-,39,软件项目计划与估算,软件项目计划,软件项目管理人员在开发工作一开始需要进行定量估算。软件项目计划的目标是提供一个能使项目管理人员对资源、成本和进度做出合理估算的框架。这些估算应当在软件项目开始时的一个有限的时间段内做出,并且随着项目的进展定期进行更新。,软件项目计划的目标,-,40,软件的范围,软件范围包括功能、性能、限制、接口和可靠性。估算开始时,应对软件的功能进行评价,对其进行适当的细化以便提供更详细的细节。由于成本和进度的估算都与功能有关,因此常常采用某种程度的功能分解。性能的考虑包括处理和响应时间的需求。约束条件则标识产品成本、外部硬件、可用存储或其它现有系统对软件的限制。软件与其它系统元素是相互作用的。要考虑每个接口的性质和复杂性,以确定对开发资源、成本和进度的影响。,-,41,软件开发中的资源,-,42,-,43,软件项目估算,常用的估算方法参照已经完成的类似项目估算待开发项目的成本和工作量。将大的项目分解成若干子项目,在估算出每个子项目成本和工作量之后,再估算整个项目。将软件项目按软件生存周期分解,分别估算出软件项目在软件开发各个阶段的工作量和成本,然后再把这些工作量和成本汇总估算整个项目。根据实验或历史数据给出软件项目工作量或成本的经验估算公式。,-,44,四种方法可以同时、单独或组合使用,以便取长补短,提高项目估算的精度和可靠性。采用分解技术估算软件项目应考虑系统集成时需要的工作量。为了实现软件项目估算,实践中开发了大量的软件项目自动估算工具,用以支持软件工作量或成本估算。,-,45,分解技术采用”分而治之”的策略进行软件项目估算.将项目分解为若干个主要的功能及相关的软件工程活动,通过逐步求精的方式进行成本及工作量估算。经验估算模型可用于补充分解技术自动估算工具实现一种或多种分解技术或经验模型,与人机交互结合,自动估算将是很好的选择。,-,46,代码行、功能点和工作量估算,软件项目的规模是影响软件项目成本和工作量的重要因素。软件项目代码行和功能点估算是成本和工作量估算的基础。采用上面的估算方法可以估算出LOC或FP的乐观值a,悲观值b和一般值m,然后根据下列加权公式计算出期望值e=(a4mb)6希望LOC或FP的值落在区间a,b之外的概率极小,-,47,当LOC或FP的期望值估算出来之后,根据以前软件项目开发的平均生产率LOC/PM或FP/PM就可以计算出工作量。如,软件项目的规模估算为310FP,以前完成的软件项目的生产率为5.5FP/PM,于是工作量估算为E=310/5.5=56PM。,-,48,估算计算机辅助设计软件项目,将CAD项目按功能分解为七个子项目用户界面和控制;二维几何分析;三维几何分析;数据库管理;计算机图形显示;外设控制;设计分析。表2.4给出七个子项目代码行的乐观估计、悲观计和一般估计值,然后计算出加权平均值。,-,49,估算计算机辅助设计软件项目,分析七个子项目的规模复杂性和难度,参照以前开发类似项目的经验给出开发每行代码的平均成本,每月开发的代码行数。用这两组数据计算出七个子项目的开发成本和工作量。最后汇总的CAD软件开发项目规模为33360LOC成本为656680$工作量为144.5PM。,-,50,再用这两种方法分别估算软件开发子项目在软件工程各个阶段的工作量,估算结果列入表2.5。两种方法估算的工作量分别为144.5PM和152.5PM,相差5%左右。估算的成本分别为656680$和708075$,相差7%左右。两种方法估算的工作量和成本基本一致。,-,51,表代码行和成本、工作量估算,功能乐观一般悲观加权$LOC成本工作量LOCLOCLOC平均/LOC/PM(人月)用户界面控制179024002650234014315327607.4二维几何分析40805200740053802022010760024.4三维几何分析46006900860068002022013600030.9数据库管理2900340036003350182406030013.9图形显示39004900620049502220010890024.7外设控制1990210024502140281405992015.2设计分析66008500980084001830015120028.0总计33360656680144.5,-,52,表工作量估算,功能需求分析设计编码测试总计用户界面控制1.02.00.53.57二维几何分析2.010.04.59.526三维几何分析2.512.06.011.031.5数据库管理2.06.03.04.015计算机图形显示1.511.04.010.527外设控制1.56.03.55.016设计分析4.014.05.07.030总计(人月)14.56126.550.5152.5每人月成本5200480042504500成本()75400292800112625227250708075,-,53,2.2成本估算技术,成本估算是可行性分析的重要依据,也是软件管理的重要内容,直接影响到软件开发的风险。软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价,即主要是人的劳动的消耗。以软件计划、需求分析、设计、编码到测试的软件开发全过程所花费的代价为依据。一个大型、复杂项目,由于其项目的度,成本估算并不是一件简单的事,必须建立相应的估算模型,按照一定的方法、技术来进行估算。,-,54,一、影响成本估算的因素1.软件人员的业务水平2.软件产品的规模及复杂度规模:按YOURDON分类法分为超小型,小型,中型,大型,超大型,极大型。复杂度:应用程序,实用程序,系统程序低高,3.开发所需时间对确定规模、复杂度的软件存在一个”最佳开发时间”。4.软件开发技术水平指开发方法、工具、语言等,技术水平高,效率高。5.软件可靠性要求可靠性要求愈高,成本愈高。,2.2成本估算技术,-,55,2.2成本估算技术,二.软件成本的估算量源代码行(LOC)机器指令行/非机器语言的执行步开发工作量人-月(PM)人-年(PY)人-日(PD)软件生产率LOG/PM¥/LOC¥/PM软件开发时间,-,56,其中:ai估计的最小行数bi估计的最大行数mi最可能的行数,2.2.1专家估算模型即源代码行估算模型(Deiphi技术)由Rand公司提出的Deiphi技术,是由n位专家进行成本估算。每位专家根据系统规格说明书,反复讨论给出ai、bi及mi的值,并按照下式反复估算源代码的期望值Li,期望中值L。,将估算的源代码行数,乘以根据经验推算的每行源代码所需成本,即为该软件的成本。,-,57,2.2.2IBM估算模型1977年由Waiston和Felix总结了IBM联合系统分部(FSD)负责的个项目的数据,利用最小二乘法拟合,得到如下估算公式:工作量:E=5.2*L(PM)项目持续时间:D=4.1*L(月)人员需要量:S=0.54*E(人)文档数:DOC=49*L(页)其中:L源代码行,以千行计。,IBM估算模型是一种静态单变量模型,它利用已估算的结果,如源代码行,来估算各种资源的需求量但IBM估算模型不是一种通用模型,因此应用中应根据具体实际情况调整模型中的参数,-,58,2.2.3Putnam估算模型,Cktd,Putnam估算模型是一种动态多变量模型,是根据一些大型项目中工作量的分布情况推导出来的。,其中:L源代码行,K所需人力(PY)td开发时间,CK技术水平常数其值与开发环境有关。(差:2500-2000,正常:10000-8000,好:12500-11000),-,59,CkKtd,大型项目的工作量分布情况,2.2.3Putnam估算模型,-,60,COCOMO模型(ConstructiveCostModel)由TRW公司开发,是由Boehm提出的结构型成本估算模型,其特点是精确、易用。是一种层次模型,按照其祥细程度分为三级:即基本的COCOMO模型、中间的COCOMO模型和详细的COCOMO模型。,该模型主要对工作量(单位:PM)和进度TDEP(单位:月)进行估算。模型中考虑到估算量与开发环境有关,将开发项目分为三类:,9.5.5COCOMO模型,2.2.4COCOMO模型,-,61,2.2.4COCOMO模型,组织型(Organic)规模5万,较简单,开发人员对产品目标理解充分,经验丰富,对软件开发环境熟悉。大多数应用软件及老的操作系统、编译系统属此类。,嵌入型(Embadded)软件、硬件关系紧密,操作有限制条件,对接口、数据结构,算法要求较高。如大型复杂的事务处理系统,大型、超大型的操作系统,军事指挥系统,航天控制系统等,半独立型(Semidetached)对项目要求界于上述两者之间,规模复杂度中等。如新操作系统,大型数据库,生产控制等软件属此类。,9.5.5COCOMO模型,-,62,基本的COCOMO模型(静态单变量模型),其中:MM工作量(PM),KLOC估计的源代码行Cl模型系数,模型指数.Cl、取决于开发项目的模式为组织型、半独立型或嵌入型。,下表是根据63个项目的数据统计结果,按照基本的COCOMO模型估算的工作量和进度。,-,63,其中:fi成本因素包括:生产因素(可靠性,数据库规模,软件复杂度)计算机因素(时间约束,存储约束,环境变更率,计算机换向时间)人员因素(系统分析员能力、经验,程序员能力,开发人员环境知识,程序时间语言知识)项目工程因素(设计技术,软件工具,进度限制约束),详细的COCOMO模型按照开发阶段给出更加详细的成本因素fi。,中间的COCOMO模型进一步考虑了15种影响软件工作量的因素,更加合理的估算软件工作量和进度。,-,64,2.2.5成本估算方法,1、自顶向下的估算方法据以前完成的同类项目的总成本推算,再将其分配到各开发任务中。特点:简便、估算工作量小、误差大。2、自底向上的估算法估算每一子任务的开发工作量,将它们累加起来。特点:精确度高、但缺少子任务(模块)间的联系。3、差别估计法与已完成的项目进行类比,对不同部分另行估算。特点:估算较精确、但区分类比较困难。,对于大型软件项目的估算处理,处理手段主要是分解和类比。一般有以下方式:,注意:通常使用综合方法对实际项目进行估算。,-,65,2.2.6成本/效益分析,成本效益分析首先估算成本和运行费用(系统的操作费用和维护费用),系统的经济效益则等于因使用新系统而增加的收入,加上使用新系统可以节省的运行费用。1.货币的时间价值通常以利率形式表示。假设,年利率为i,P元钱在n年后的价值F为:2.投资回收期投资回收期即工程累计经济效益等于最初投资所需要的时间。,-,66,4.投资回收率用于衡量投资效益的大小,并且可以用它和年利率比较,设现在的投资额为:1/(1+j)2/(1+j)2n/(1+j)n其中:i是第i年年底的效益(i=1,2,3,n);n是系统的使用寿命;j是投资回收率。,参考书:软件工程经济学美巴里.W.贝姆.赵越等译中国铁道出版社,3.纯收入在整个生存周期内新系统的累计经济效益与投资之差称为纯收入。,-,67,2.3软件开发进度计划,软件开发进度计划安排是一件困难的任务,尽可能并行地安排任务,还要考虑各个子任务之间的相互联系,又要预见潜在的问题,提供意外事件的处理意见。,描述计划进度的主要工具:一般的表格工具、甘特图、PERT技术与CPM方法。,、一般的表格工具例如:进度表,进度表,-,68,2.甘特图(GanttChart)用水平线段表示任务的工作阶段;线段的起点和终点分别表示任务的开始和完成时间,线段的长度表示完成任务所需的时间。下图给出了具有五个任务的甘特图。,甘特图,周,优点:标明了各任务的计划进度和当前进度。能够动态反映软件开发的进展情况。缺点:不能够反映多个任务之间的复杂逻辑关系。,-,69,3.时标网状图(timescalarnetwork)也称为改进的Gantt图,增加了各子任务之间的逻辑依赖关系。如图所示;表示A、B、C、D、E个任务之间在进度上的依赖关系。例如E2的开始取决于A3的完成。虚箭头表示虚任务。,-,70,4.PERT技术和CPM方法PERT(Programevaluation重培训;阶梯提升:,-,72,四、软件开发小组与软件生产率,随着软件项目规模的增大,需要组成开发小组共同承担软件开发项目中的某一任务,于是人与人之间必须通过交流来解决各自承担任务之间的接口问题,即通信问题。通信需要的时间和代价,会降低软件的生产率。开发小组的组织有以下原则:1.软件开发小组的规模不宜太大,人数不能太多,一般3-5人左右为宜。2.切忌在开发过程中增加人员,这将因增加人员之间的联系而降低效率。,-,73,四、软件开发小组与软件生产率,例:设一开发小组有4个软件工程师,开发效率为5000行/年,共有6条通信路径,每条路径降低生产率250行/年,则小组生产率为:50004250618500(行/年),如为了加快进度,新增加2人(图8.10),每人效率为840行/年,通信路径增加到15条,此时的小组生产率为:2000084022501517930(行/年)即新增加人,并未提高生产率。,-,74,软件组织结构,-,75,软件质量是一个软件企业成功的必要条件,其重要性无论怎样强调都不过分。由于软件质量是难于定量度量的软件属性,主要从管理的角度讨论影响软件质量的因素。我们把影响软件质量的因素分成三组:,2.5软件质量保证,可移植性可重用性互运行性(与另一个系统结合),正确性完整性健壮性可用性效率风险性,可理解性可修改性灵活性可测试性,-,76,2.5.1软件质量因素的定义,-,77,项目经理在微软是负责并保证高质量的软件产品按时完成合发布的专职管理人员。其任务包括:倾听用户需求;负责产品功能定义、规划和设计;作各种复杂的决策;保证开发团队顺利开展工作及跟踪程序错误等。,2.5.2项目经理与软件质量保证,-,78,软件质量度量方法有以下三种:1.精确度量:使用质量度量评价准则进行详细度量,工作量大,但度量精确度也高;2.全面度量:可以与简易度量并用对各个质量设计评价准则进行度量,工作量可以控制在一定的范围内。3.简易度量,2.5.3软件项目的跟踪与控制,在软件项目实施过程中进行跟踪与控制,是软件项目管理的重要内容,也是保证软件质量的重要措施。可用不同的方法进行追踪:,-,79,2.6.1风险分析,风险的概念风险与将要发生的事情有关,研究风险就是研究明天将要发生的事情风险涉及思想、观念、行为、地点、时间等多种因素风险随条件的变化而改变,人们通过改变、选择、控制与风险密切相关的条件减少、回避风险改变、选择、控制条件的策略是不确定的,2.6风险分析和管理,-,80,软件风险,软件风险和其它风险一样存在不确定性,有些是很难预测的。对风险的不确定性进行量化,估算某一风险可能带来的损失。除关注软件项目的一般性风险外,还要关注软件项目的特殊风险,如项目的背景、特殊要求、关键内容、薄弱环节、技术难点、人员状况、工作环境等。,-,81,软件项目存在各种风险,人们关心的问题:什么风险会导致软件项目的彻底失败?顾客需求、开发环境、目标机、时间、成本的改变对软件项目的风险会产生什么影响?人们必须抓住什么机会、采取什么措施才能有效地减少风险、顺利完成任务?,-,82,不同类型的风险,项目风险预算、进度、人力、资源、客户及需求项目的复杂度、规模、结构的不确定性等技术风险设计、实现、接口、验证和维护规约的二义性、技术的不确定性、陈旧的技术、领先的技术商业风险无需求的产品、策路风险、管理风险、预算风险,-,83,软件风险分析包括的部分风险标识风险估算风险规划风险监控,-,84,软件风险分析,-,85,1风险标识,对待风险不能采取回避态度项目开始时应对一般性风险和特定产品风险进行系统标识,並随着项目的展开不断更新。一般可预测风险产品规模、商业影响、客户、过程、技术、环境、人员及经验等。识别风险的有效方法风险检测表为了帮助项目管理人员、项目规划人员,全面了解软件开发过程存在的风险,Boehm建议设计并使用各类风险检测表,表中条目指明,常見並可预测的风险。有些风险可以预料,有些很难预料。,-,86,例2.6人员配备风险检测表,(1)开发人员的水平如何。(2)开发人员在技术上是否配套。(3)开发人员的数量如何。(4)开发人员是否能够自始至终地参加软件开发工作。(5)开发人员是否能够集中全部精力投入到软件开发工作。(6)开发人员对自己的工作是否有正确的期望。(7)开发人员是否接受过必要的培训。(8)开发人员的流动是否能够保证工作的连续性。上述问题可以选用0,1,2,3,4,5来回答。完全肯定取值为0,反之为5,中间情况分别取值1,2,3,4值越大表示风险越大。人员配备风险检测表反映了人的因素给软件项目带来的风险。,-,87,2风险估算,如果某一风险检测表由m项组成,每项选取一个整数值0,1,,N,在最理想的情况取值为0,反之取值为N,对于中间状态依次取值1,2,N-1当N=1时取值0,1,对应布尔量真/假(T/F)设第i种风险检测表第j项取值Xij,对应的加权系数是Wij,于是第i种风险的估算值可以定义为miWijXij(mN)j=1其中Wijm,Wij0(310),-,88,风险估算,如果第i种风险对整个软件项目的风险估算加权系数是i,i=1,2,l.为风险要素的个数,i1,则软件项目风险估算定义为lRii(311)i=10R1当R接近于0时表示风险比较小,R接近于1时表示风险比较大。当ii比较大时,表示第i类风险出现并带来不良影响的可能性比较大,必须引起足够重视,设法改善条件,减小i的值。,-,89,3风险评价和管理,风险评价是风险管理的重要步骤任务进一步审查风险预测的精度;更新风险优先次序;考虑控制和/或避免可能发生风险的办法。,-,90,风险评价,定义用三元组ri,li,xi描述风险,i=1,2,3其中:ri表示风险li表示风险发生的概率xi表示风险产生的影响对大多数软件项目,应该定义性能、成本及进度的风险参考水平值,当某一风险或风险组合值超过水平值时项目被迫停止。,-,91,风险评估的步骤,1定义项目的风险参考水平值;2建立三元组,给出相应的参考水平值;3预测一组临界点,定义项目终止区域;4预测什么样的风险组合会影响参考水平值,-,92,风险表(13),风险类别概率影响RMMM123项目开始时应在第一列列出所有风险;第二列给出风险类别;第三列给出每种风险发生的概率;第四列给出各种风险产生影响的评估值;第五列给出风险缓解、监控和管理计划。,-,93,风险表(23),评估值按风险因素:性能、成本、进度的影响类别求加权平均值影响类别取值:灾难的1,严重的2,轻微的3,可忽略的4。对风险表中的风险按照发生概率大小、影响大小,由大至小排序。,-,94,风险表(33),项目管理者对风险表进行研究后应定义一条中止线,线上的风险较大者应给予特别的关注,线下的风险需要进一步的跟踪、评估、排序。对风险发生概率较大的事件应引起特别关注,要及早采取措施尽量避免它的发生。,-,95,-,96,风险评价和管理,三元组ri,li,xi是风险管理的基础设高级职员流动给项目带来风险r1,根据历史的经验或直观感觉,高级职员离开课题组的概率l1=70%,这一风险导致事件x1发生项目开发时间延长15%,成本增加20%,-,97,项目负责人采取的风险管理措施,(1)项目开始前控制产生风险的原因。项目开工后应设法减轻风险的影响。(2)了解项目开发人员变动的原因,在项目开发期间应控制上述原因,尽量减少人员的流动。(3)在工作方法和技术上采取适当措施,防止因人员流动给工作带来损失。(4)项目在开发过程中应及时公布并交流项目开发的信息。(5)建立组织机构,确定文档标准、并及时生成文档。(6)对工作进行集体复审,使多数人都能了解工作的细节,跟上工作进度。(7)为关键技术准备后备人员。,-,98,RMMM计划,风险缓解、监控和管理计划RiskMitigation,Monitoring,andManagementPlan将风险分析工作文挡化,成为项目的一部分。执行RMMM计划需要成本当软件项目比较大时,可能标出30至40种风险,如果为每种风险定义3至7种风险管理步骤,则风险管理本身就是一个项目。将Pareto的20-80规则用于软件项目的风险标识,即20%的风险具有0.80的权,而其余的80%风险只有0.20的权。要善于标识属于20%的主要风险,降低RMMM计划的规模和复杂性。,-,99,RMMM计划大纲,计划大纲1.引言1.1文挡的范回和目的1.2主要风险综述1.3责任1.3.1管理者1.3.2技术人员2.项目风险表2.1中止线以上的风险描述2.2影响概率及影响因素,3.风险缓解、监控和管理3.1缓解3.1.1一般策略3.1.2缓解风险的特定步骤3.2监控3.2.1被监控的因素3.2.2监控方法3.3管理3.3.1意外事件计划3.3.2特殊考虑4.RMMM计划时间安排表5.总结,-,100,2.7.1CMM概述,软件能力成熟度模型CMM(CapabilityMaturityModel)是由美国卡内基-梅隆大学软件工程研究所(CMU/SEI)推出的评估软件能力与成熟度的一套标准,该标准基于众多软件专家的实践经验。,从86年开始,开发软件过程成熟度框架。91年8月SEI将软件过程成熟度框架进化为软件能力成熟度模型(CapabilityMaturityModelForSoftware,简称SW-CMM1.0版)。目前,CMM已经发展到CMMI(CapabilityMaturityModelIntegration),能力成熟度模型集成阶段。,2.7软件过程及软件成熟度模型CMM,-,101,2.7.1CMM概述,CMM侧重于软件开发过程的管理及工程能力的提高与评估,是国际上流行的软件生产过程标准和软件企业成熟度等级认证标准,它更代表了一种管理哲学在软件企业中的应用。CMM认证已经成为世界公认的软件产品进入国际市场的通行证。,CMM的主要用于:1.软件过程评估SPA(SoftwareProcessAssessment)2.软件过程改进SPI(SoftwareProcessImprovement)3.软件能力评价SCE(SoftwareCapabilityEvaluation),-,102,1.什么是软件过程一个软件过程是指人们开发和维护软件及其相关产品所采取的一系列活动。,规程与方法,工具和设备,有技能经过培训的开发人员,-,103,2.什么是软件能力成熟度?由于特定项目的属性和环境限制,项目的实际性能并不能充分反映组织的软件过程能力,但成熟的软件过程可弱化和预见不可控制的过程因素(如客户需求变化或技术变革等)。一个组织的软件过程能力为组织提供了预测软件项目开发的数据基础,提供了全面的软件质量保证。,软件过程成熟度是指一个软件过程被明确定义、管理、度量和控制的有效程度。成熟意味着软件过程能力持续改善的过程,成熟度代表软件过程能力改善的潜力。,-,104,软件过程的成熟度等级,CMM将软件过程的成熟度分为5个级别(MaturityLevels),如图所示,5个等级分别是:,1.初始级(Initial)2.可重复级(Repeatable)3.已定义级(Defined)4.已管理级(Managed)5.优化级(Optimizing),成熟度等级,单击鼠标左键查看相应内容,-,105,初始级(Initial)在初始级,企业一般不具备稳定的软件开发与维护环境。项目成功与否在很大程度上取决于是否有杰出的项目经理和经验丰富的开发团队。此时,项目经常超出预算和不能按期完成,组织的软件过程能力不可预测。,初始级,初始级,-,106,可重复级(Repeatable):在可重复级,组织建立了管理软件项目的方针以及为贯彻执行这些方针的措施。组织基于在类似项目上的经验对新项目进行策划和管理。组织的软件过程能力可描述为有纪律的,并且项目过程处于项目管理系统的有效控制之下。,可重复级,可重复级,-,107,已定义级(Defined):在已定义级,组织形成了管理软件开发和维护活动的组织标准软件过程,包括软件工程过程和软件管理过程。项目依据标准定义自己的软件过程进行管理和控制。组织的软件过程能力可描述为标准的和一致的,过程是稳定的和可重复的并且高度可视。,已定义级,-,108,已管理级(Managed):组织对软件产品和过程都设置定量的质量目标。项目通过把过程性能的变化限制在可接受的范围内,实现对产品和过程的控制。组织的软件过程能力可描述为可预测的,软件产品具有可预测的高质量。,已管理级,已管理级,-,109,优化级(Optimizing):在优化级,组织通过预防缺陷、技术创新和更改过程等多种方式,不断提高项目的过程性能以持续改善组织软件过程能力。组织的软件过程能力可描述为持续改善的。,优化级,优化级,-,110,表描述了SW-CMM不同成熟度等级过程的可视性和过程能力。,可视性与过程能力的比较,-,111,2.7.2CMM的内部结构,CMM的每个等级都被分解为3个层次加以定义:即关键过程域、公共特性和关键实践。每个等级由几个关键过程域组成,这几个关键过程域共同形成一种软件过程能力。每个关键过程域按4个关键实践类加以组织;并且都有一些特定的目标,通过相应的关键实践类来实现。除了初始级外,每一成熟度等级都是按完全相同的内部结构构成,,-,112,1关键过程区域除初始级外,每一成熟度等级又由若干个关键过程区域(KeyProcessAreas)构成。关键过程域指出为了达到某个成熟度等级所要解决的问题。要达到一个成熟度等级,必须实现该等级上的全部关键过程区域。要实现一个关键过程区域,就必须达到该关键过程区域的所有目标。在CMM中一共有18个关键过程域,分布在25个级别中。,-,113,SW-CMM的关键过程区域,1关键过程区域,-,114,关键过程区域KPY(KeyProcessAreas)是由一组相关的活动(实践)组成,如图描述。,可重复级关键过程域集中关注从非软件工程化向软件工程化转变初期必须做好的事情。其中包括它的6个关键过程域。,已定义级中的关键过程域既涉及项目,又涉及组织,这是因为组织建立了对所有项目都有效的软件工程过程和管理过程的规范化基础设施。,已管理级中的关键过程域的主要任务是为软件过程和软件产品建立一种可以理解的定量的方式。,优化级的关键过程域,主要涉及的内容是软件组织和项目中如何实现持续不断的过程改进。,-,115,2关键实践,关键实践是指在基础设施以及其他前提条件均满足的情况下对关键过程域的规范实施起重要作用的活动。每个关键过程域包含的关键实践涉及5个共同特征:执行约定(CommitmenttoPerform)执行能力(AbilitytoPerform)实施活动(ActivesPerformed)度量和分析(MeasurementandAnalysis)验证实施(VerifyingImplementation),-,116,2.7.3软件能力成熟度模型集成(CMMI),CMMI(CapabilityMaturityModelIntegration)是软件工程模型、系统工程模型、集成化产品和过程开发模型以及集成供应商管理模型等多个模型的集合。这是一套包括多个学科、可扩充的模型系列。CMMI由卡内基梅隆大学2001年9月推出,其涉及面更广,专业领域覆盖软件工程、系统工程、集成产品开发和系统采购。它的运用不仅降低了项目的成本,而且提高了项目的质量与按期完成率。,-,117,2.7.4软件企业如何实施CMM,软件是促进我国电子信息产业发展的关键技术。而要发展我国的软件产业,在战略上,必须将软件产业作为我国高新技术产业的龙头和国民经济发展的新增长点,在策略上,必须走软件过程管理专业化的道路。软件企业实施CMM或通过CMM评估所必须经历的步骤。,提高思想认识,进行CMM培训和咨询工作,确定合理的目标,成立工作组,制定和完善软件过程,内部评审,正式评估,根据评估结果改进软件过程,CMM步骤,-,118,中国这样的一个大国,软件销售额还不到世界市场的0.5%。我国软件企业除少数几家在500人以上外,多数是在50人以下的民营、集体和个人的软件公司。以开发技术和规范化程序来衡量,总体上仍是相当落后的,大多数企业仍为手工作坊式制作,产品缺乏市场竞争力。因此,软件过程管理已成为发展我们软件产业的一个关键性问题。实施CMM对软件企业的发展起着至关重要的作用,CMM过程本身就是对软件企业发展历程的一个完整而准确的描述,企业通过实施CMM,可以更好地规范软件生产和管理流程,使企业组织规范化。而且,只有在国际市场取得成功的产品和企业才具有长久的竞争力和生命力,,.提高思想认识,-,119,根据CMM模型的要求,一个项目的开发一定要有章可循,而且要做到有章必循,这两点都离不开培训。培训工作需要投入很大的人力、物力和财力,只有企业的管理人员和软件开发人员对CMM真正了解和认识了,自觉地按CMM的方法去进行工作,才能真正实施CMM,培训的内容需要精心地准备,主要有两个方面,第一,对所有员工包括经理在内的最基本的软件工程和CMM培训知识;第二,对各个工作组的有关人员提供专业领域知识等方面的培训;此外,在每次开发过程中,还要对普通人员进行软件过程方面的培训。,.进行CMM培训和咨询工作,-,120,CMM模型划分为5个级别,共计18个关键过程域,52个目标,300多个关键实践。每一个CMM等级的评估周期(从准备到完成)约需12-30个月。无论一个软件企业的软件过程处于什么样的水平,都可以在CMM框架的5个级别中找到自己的位置。因此,要实施CMM,首先应该对本企业的现状有一个准确的评估,然后再结合企业的实际情况选择CMM的切入点,确定总体目标。这个目标包括在多长时间之内,需要投入多少人力、物力和财力,要达到哪一级。由于软件过程的建立和改进是一个渐进的、分轻重缓急的、逐步完善的过程。所以,在总体目标已经确定的前提下,还要制订近期目标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论