《软件项目管理》由会员分享,可在线阅读,更多相关《软件项目管理(96页珍藏版)》请在金锄头文库上搜索。
1、软件项目管理2 2第二章第二章 项目管理是广泛应用于各种工程、金融等技术项目管理是广泛应用于各种工程、金融等技术管理过程,管理的好坏决定了管理过程,管理的好坏决定了工程的成败。工程的成败。 软软件件及及IT IT 行行业业,尤尤其其是是软软件件产产品品的的特特殊殊性性,软软件件项项目目管管理理对对于于保保证证软软件件产产品品的的质质量量具具有有极极为为重重要要的的作作用用,是是决决定定一一个个产产品品或或企企业业能能否否成成功功的的最最重重要要的指标。的指标。 2.1 软件项目管理概述不可见性不可见性不确定性不确定性人员流动性人员流动性2.1 软件项目管理概述随随着着软软件件的的规规模模和和复
2、复杂杂度度的的不不断断增增大大,开开发发人人员员的的增增加加以以及及开开发发时时间间的的增增长长,这这些些都都增增加加了了软软件件项目管理的难度。项目管理的难度。 例如:例如:Windows 2000Windows 2000的开发的开发 是微软公司历史上是微软公司历史上最艰巨的任务,仅核心部门的的成员就有最艰巨的任务,仅核心部门的的成员就有25002500人,人,测试用的代码就有测试用的代码就有10001000万行,测试中所用到的脚本万行,测试中所用到的脚本程序就有程序就有65006500种种。象规模如此之大的软件系统,。象规模如此之大的软件系统,如果没有科学的、规范的、有效的管理,是不可能如
3、果没有科学的、规范的、有效的管理,是不可能成功的。因此成功的。因此软件项目管理成为软件工程的重要研软件项目管理成为软件工程的重要研软件项目管理成为软件工程的重要研软件项目管理成为软件工程的重要研究内容之一。究内容之一。究内容之一。究内容之一。2.1.1 软件项目管理的任务过过程程程程(process)(process)人人人人员员(peoplepeople)工具工具工具工具(tools)(tools)产品产品产品产品(Product)(Product)(Product)(Product)项目项目(Project)(Project)参与参与自动化自动化结果结果技术集成技术集成一、软件项目管理的一
4、、软件项目管理的一、软件项目管理的一、软件项目管理的“4P”4P”4P”4P”二、软件项目管理过程二、软件项目管理过程二、软件项目管理过程二、软件项目管理过程 软件项目管理,是对整个软件生存期的所有活动软件项目管理,是对整个软件生存期的所有活动进行管理。主要过程包括:进行管理。主要过程包括:1.1.1.1.项目启动项目启动项目启动项目启动 确定系统范围、组建项目团队、建立项目环境。确定系统范围、组建项目团队、建立项目环境。2.2.2.2.项目规划项目规划项目规划项目规划 确定项目活动、项目成本估算、制定进度计划确定项目活动、项目成本估算、制定进度计划3.3.3.3.项目实施项目实施项目实施项目
5、实施 监控项目执行、管理项目风险、控制项目变更监控项目执行、管理项目风险、控制项目变更4.4.4.4.项目收尾项目收尾项目收尾项目收尾 项目验收、软件安装培训、项目总结项目验收、软件安装培训、项目总结2.1.1 软件项目管理的任务2.1.1 软件项目管理的任务三、软件项目管理与过程管理的关系三、软件项目管理与过程管理的关系三、软件项目管理与过程管理的关系三、软件项目管理与过程管理的关系过程定义过程定义过程改进过程改进项目规划项目规划项目监控项目监控项目实施项目实施软件项目管理软件项目管理软件项目管理软件项目管理软件过程管理软件过程管理软件过程管理软件过程管理软件项目管理用于保证项目目标的成功实
6、现,过程管理用于软件项目管理用于保证项目目标的成功实现,过程管理用于软件项目管理用于保证项目目标的成功实现,过程管理用于软件项目管理用于保证项目目标的成功实现,过程管理用于辅助项目管理,将最佳的项目实践用于软件开发过程。辅助项目管理,将最佳的项目实践用于软件开发过程。辅助项目管理,将最佳的项目实践用于软件开发过程。辅助项目管理,将最佳的项目实践用于软件开发过程。2.1.2 项目管理的主要活动软件项目的规划软件项目的规划人员的组织管理人员的组织管理软件风险管理软件风险管理软件配置管理软件配置管理包括:包括: 可行性分析可行性分析 软件项目度量软件项目度量 软件成本估算软件成本估算 软件计划软件计
7、划2.1.2 项目管理的主要活动包括:包括: 人员配备原则人员配备原则 人员配备模式人员配备模式 软件团队建设软件团队建设 软件项目沟通活动软件项目沟通活动软件项目的规划软件项目的规划人员的组织管理人员的组织管理软件风险管理软件风险管理软件配置管理软件配置管理2.1.2 2.1.2 项目管理的主要活动项目管理的主要活动包括:包括: 风险识别风险识别 风险分析风险分析 风险规划风险规划 风险监控风险监控软件项目的规划软件项目的规划人员的组织管理人员的组织管理软件风险管理软件风险管理软件配置管理软件配置管理2.1.2 项目管理的主要活动是为了有效地控制和是为了有效地控制和管理软件开发过程中管理软件
8、开发过程中的变化,进行标识、的变化,进行标识、组织和控制修改的技组织和控制修改的技术。术。 配置管理活动:配置管理活动: 配置项的标识配置项的标识 版本管理版本管理 系统构建系统构建 变更控制变更控制软件项目的规划软件项目的规划人员的组织管理人员的组织管理软件风险管理软件风险管理软件配置管理软件配置管理软件度量软件度量软件度量的概念软件度量的概念软件规模度量软件规模度量软件功能度量软件功能度量软件项目度量软件项目度量软件度量分类软件度量分类度量、估算度量、估算度量度量metrics度量具有数字特征,软件工程范围的度量是软度量具有数字特征,软件工程范围的度量是软件开发过程、软件资源或软件产品简单
9、属性的件开发过程、软件资源或软件产品简单属性的定量描述。定量描述。如,程序规模、操作符个数、程序中错误的个数如,程序规模、操作符个数、程序中错误的个数等。等。估算估算estimation对软件产品、过程、资源进行预测对软件产品、过程、资源进行预测估算可以采用经验公式、或参考历史资料估算可以采用经验公式、或参考历史资料估算用于事前签订合同、立项、制定工作计划估算用于事前签订合同、立项、制定工作计划等等面向规模的度量面向规模的度量代码行数代码行数LOC或或KLOC生产率生产率Pl=L/E其中其中L软件项目代码行数软件项目代码行数E软件项目工作量(人月软件项目工作量(人月PM)Pl软件项目生产率(软
10、件项目生产率(LOC/PM)代码出错率代码出错率EQRl=Ne/L其中其中Ne软件项目的代码错误数软件项目的代码错误数EQRl每千行代码的错误数每千行代码的错误数每行代码平均成本每行代码平均成本Cl=S/L其中其中S软件项目总开销(元美元)软件项目总开销(元美元)Cl软件项目每行代码的平均成本软件项目每行代码的平均成本文档与代码比文档与代码比Dl=Pd/L其中其中Pd软件项目文档页数软件项目文档页数Dl每千行代码的平均文档数每千行代码的平均文档数例例软件项目记录软件项目记录项目项目工作量工作量PM成本成本万美元万美元代码行代码行kLOC文档页数文档页数Pd错误数错误数Ne人数人数MAaa-01
11、2416.812.1365293Ccc-046244.027.21224865Fff-034331.420.21050646生产率:生产率: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规模度量的优缺点规模度量的优缺点用软件代码行数估算软件规模简单易行。用软件代码行数估算软件规模
12、简单易行。缺点缺点代码行数的估算依赖于程序设计语言的功能和表代码行数的估算依赖于程序设计语言的功能和表达能力;达能力;采用代码行估算方法会对设计精巧的软件项目产采用代码行估算方法会对设计精巧的软件项目产生不利的影响;生不利的影响;在软件项目开发前或开发初期估算它的代码行数在软件项目开发前或开发初期估算它的代码行数十分困难;十分困难;代码行估算代码行估算只适用于过程式程序设计语言只适用于过程式程序设计语言,对非,对非过程式的程序设计语言不太适用等等。过程式的程序设计语言不太适用等等。根根据据事事务务信信息息处处理理程程序序的的基基本本功功能能定定义义的的,在系统设计初期可以估算出软件项目的规模在
13、系统设计初期可以估算出软件项目的规模FP=CT*0.65+0.01*Fi其中:其中:CT按表按表2.1计算计算Fi是复杂性调节值是复杂性调节值Fi取值取值 0,1,.,5当当Fi=0时,表示时,表示Fi不起作用不起作用Fi=5时,表示时,表示Fi作用最大作用最大面向功能的度量面向功能的度量 表表功能点度量功能点度量测量参数测量参数 值值 权值权值用户输入数用户输入数 *4 用户输出数用户输出数 *5 用户查询数用户查询数 *4 文件数文件数 *7 外部界面数外部界面数 *7 CT 表表2.1中的五个信息量按下列方式取值中的五个信息量按下列方式取值用户输入数用户输入数 用户为软件提供的输入参数个
14、数用户为软件提供的输入参数个数用户输出数用户输出数 软件系统为用户提供的输出参数个数软件系统为用户提供的输出参数个数用户查询数用户查询数 一个联机输入确定一次查询,软件以一个联机输入确定一次查询,软件以 联机输出的形式联机输出的形式, ,实时地产生一个响应实时地产生一个响应文件数文件数 统计逻辑的主文件个数统计逻辑的主文件个数外部界面数外部界面数 统计所有机器可读的界面,利用这些统计所有机器可读的界面,利用这些 界界面面可可以以将将信信息息从从一一个个系系统统传传送送到到另另一一 个系统个系统用功能点定义相应的概念用功能点定义相应的概念生产率:生产率:Pf=FP/E 其中其中 Pf表示每人月完
15、成的功能点数表示每人月完成的功能点数平均成本:平均成本:CiCi=S/FP =S/FP 其中其中 CiCi表示每功能点的平均成本表示每功能点的平均成本文档与功能点比:文档与功能点比:Di=Pd/FP Di=Pd/FP 其中其中 DiDi表示每个功能点平均具有的文档页数表示每个功能点平均具有的文档页数代码出错率:代码出错率:EORiEORi=Ne/FP =Ne/FP 其中其中 EORiEORi表示每个功能点的平均错误个数表示每个功能点的平均错误个数面向功能的度量面向功能的度量软软件件规规模模的的功功能能点点度度量量没没有有直直接接涉涉及及软软件件系系统统本本身的算法复杂性。身的算法复杂性。198
16、6年年Jones把把软软件件项项目目中中的的算算法法复复杂杂性性因因素素引引入入到到功功能能点点计计算算中中来来,为为了了避避免免混混淆淆,我我们们把把Albrecht定定义义的的功功能能点点称称为为简简单单功功能能点点,用用FPs表表示,把示,把Jones推广的功能点称为推广的功能点称为功能点功能点,用,用FP表示。表示。推推广广的的功功能能点点包包括括计计算算机机程程序序中中用用于于各各类类问问题题求求解解的的算算法法因因素素,如如求求解解线线性性代代数数方方程程组组、遍遍历历二二叉树的各个结点、处理中断等等。叉树的各个结点、处理中断等等。功能点计算仍用上面的公式功能点计算仍用上面的公式,
17、其中其中CT按表按表2.2计算。计算。 表表推广的推广的功能点度量功能点度量测量参数测量参数 值值 权值权值用户输入数用户输入数 *4 用户输出数用户输出数 *5 用户查询数用户查询数 *4 文件数文件数 *7 外部界面数外部界面数 *7 算法算法 *3 CT 对对一一般般的的工工程程计计算算或或事事务务处处理理软软件件,用用表表2.1和和表表2.2两两种方法计算出来的种方法计算出来的FP值应该基本上相同值应该基本上相同对于比较复杂的软件系统对于比较复杂的软件系统FP比比FPs的值高的值高20%35%面向功能的度量的优缺点面向功能的度量的优缺点优点优点与与程程序序设设计计语语言言无无关关,它它
18、不不仅仅适适用用于于过过程程式式语语言,也适用于非过程式的语言言,也适用于非过程式的语言;软软件件项项目目开开发发初初期期就就能能基基本本上上确确定定系系统统的的输输入入、输输出出等等参参数数,功功能能点点度度量量能能用用于于软软件件项项目目的的开开发初期。发初期。缺点缺点它它涉涉及及到到的的主主观观因因素素比比较较多多,如如各各种种权权函函数数的的取值;取值;信息领域中的某些数据有时不容易采集;信息领域中的某些数据有时不容易采集;FPFP的值没有直观的物理意义。的值没有直观的物理意义。代码行度量与功能点度量的比较代码行度量与功能点度量的比较代代码码行行度度量量依依赖赖于于程程序序设设计计语语
19、言言,而而功功能能点点度度量不依赖于程序设计语言。量不依赖于程序设计语言。Albrecht和和Jones等等人人对对若若干干软软件件采采用用事事后后处处理理的的方方式式分分别别统统计计出出不不同同程程序序设设计计语语言言每每个个功功能能点与代码行数的关系,用点与代码行数的关系,用LOC/FP的平均值表示。的平均值表示。表表2.3表表明明,一一行行Ada语语言言代代码码的的“功功能能”平平均均是是一一行行FORTRAN语语言言代代码码“功功能能”的的1.4倍倍。一一行行四四代代语语言言代代码码的的“功功能能”平平均均是是一一行行传传统统程序设计语言代码程序设计语言代码“功能功能”的的3至至5倍。
20、倍。 表表各种语言的各种语言的LOC/FP(平均值平均值)程序设计语言程序设计语言 LOC/FP(平均值平均值)汇编语言汇编语言 300COBOL100FORTRAN100Pascal90Ada70面向对象的语言面向对象的语言 30四代语言四代语言(4GL)20代码生成器代码生成器 15软件复杂性度量软件复杂性度量1976年年 T.J.McCabeMcCabeMcCabe度度量量法法又又称称环环路路复复杂杂性性度度量量, ,基基于于程程序序控控制制结结构的软件复杂性度量模型。构的软件复杂性度量模型。程序控制结构图程序控制结构图 程序结构对应于有一个入口结点和一个出口结点的有向图程序结构对应于有
21、一个入口结点和一个出口结点的有向图图中每个结点对应一个语句或一个顺序流程的程序代码块图中每个结点对应一个语句或一个顺序流程的程序代码块弧对应于程序中的转移弧对应于程序中的转移它它基于一个程序模块的程序图中环路的个数基于一个程序模块的程序图中环路的个数基于一个程序模块的程序图中环路的个数基于一个程序模块的程序图中环路的个数,因此计算它,因此计算它先要画出程序图。先要画出程序图。程序图是退化的程序流程图。流程图中每个处理都退化成程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。一个结点,流线变成连接不同结点的有向弧。McCabeMcCabe度量法度量法McC
22、abe用用程程序序控控制制结结构构图图的的巡巡回回秩秩数数V(G)作为程序结构复杂性的度量作为程序结构复杂性的度量V(G)=e-n+2 其中:其中:e为结构图的边数为结构图的边数 n为结构图的结点数为结构图的结点数 可可以以证证明明 V(G)等等于于结结构构图图中中有有界界或或无无界界的的封闭区域个数封闭区域个数例例计算计算程序控制结构的程序控制结构的V(G)值值E=1E=3N=2N=3V=1V=2计算计算程序控制结构的程序控制结构的V(G)值值E=4E=3N=4N=3V=2V=2计算计算程序控制结构的程序控制结构的V(G)值值E=6N=5V=3例例2.1计算如图所示程序控制结构图的计算如图所
23、示程序控制结构图的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.这种度量的缺点是:这种度量的缺点是:对于不同种类的控制流的复杂性不能区分对于不同种类的控制流的复杂性不能区分简单简单IF语句语句与与循环语句循环语句的复杂性同等看待的复杂性同等看待嵌套嵌套IF语句语句与与简单简单CASE语句语句的复杂性是的复杂性是一样的一样的模块间接口模块间接口当成当成一个简单分支一个简单分支一样处理一样处理一个一个具有具有1000行的顺序程序行的顺序程序与与一行语句一行语句的的复杂性相同复杂性
24、相同软件项目估算软件项目估算常用的估算方法常用的估算方法参参照照已已经经完完成成的的类类似似项项目目估估算算待待开开发发项项目目的的成成本本和和工工作作量。量。将将大大的的项项目目分分解解成成若若干干子子项项目目,在在估估算算出出每每个个子子项项目目成成本和工作量之后,再估算整个项目。本和工作量之后,再估算整个项目。将将软软件件项项目目按按软软件件生生存存周周期期分分解解,分分别别估估算算出出软软件件项项目目在在软软件件开开发发各各个个阶阶段段的的工工作作量量和和成成本本,然然后后再再把把这这些些工工作量和成本汇总估算整个项目。作量和成本汇总估算整个项目。根根据据实实验验或或历历史史数数据据给
25、给出出软软件件项项目目工工作作量量或或成成本本的的经经验验估算公式。估算公式。四四种种方方法法可可以以同同时时、单单独独或或组组合合使使用用,以以便便取取长长补短,提高项目估算的精度和可靠性。补短,提高项目估算的精度和可靠性。采采用用分分解解技技术术估估算算软软件件项项目目应应考考虑虑系系统统集集成成时时需需要的工作量。要的工作量。为为了了实实现现软软件件项项目目估估算算,实实践践中中开开发发了了大大量量的的软软件件项项目目自自动动估估算算工工具具,用用以以支支持持软软件件工工作作量量或或成成本估算。本估算。分解技术分解技术采用采用”分而治之分而治之”的策略进行软件项目估算的策略进行软件项目估
26、算.将项目将项目分解为若干个主要的功能及相关的软件工程活动分解为若干个主要的功能及相关的软件工程活动,通过逐步求精的方式进行成本及工作量估算。通过逐步求精的方式进行成本及工作量估算。经验估算模型经验估算模型可用于补充分解技术可用于补充分解技术自动估算工具自动估算工具实现一种或多种分解技术或经验模型,与人机交互实现一种或多种分解技术或经验模型,与人机交互结合,自动估算将是很好的选择。结合,自动估算将是很好的选择。代码行、功能点和工作量估算代码行、功能点和工作量估算软软件件项项目目的的规规模模是是影影响响软软件件项项目目成成本本和和工工作作量量的的重重要因素。要因素。软软件件项项目目代代码码行行和
27、和功功能能点点估估算算是是成成本本和和工工作作量量估估算算的基础。的基础。采采用用上上面面的的估估算算方方法法可可以以估估算算出出LOCLOC或或FPFP的的乐乐观观值值a a,悲悲观观值值b b和和一一般般值值m m,然然后后根根据据下下列列加加权权公公式式计计算算出期望值出期望值 e=(ae=(a4m4mb)b)6 6 希望希望LOCLOC或或FPFP的值落在区间的值落在区间a,ba,b之外的概率极小之外的概率极小 当当LOC或或FP的的期期望望值值估估算算出出来来之之后后,根根据据以以前前软软件件项项目目开开发发的的平平均均生生产产率率LOC/PM或或FP/PM就就可可以计算出工作量。以
28、计算出工作量。如如,软软件件项项目目的的规规模模估估算算为为310FP,以以前前完完成成的的软软件件项项目目的的生生产产率率为为5.5FP/PM,于于是是工工作作量量估估算算为为E=310/5.5=56PM。估算计算机辅助设计软件项目估算计算机辅助设计软件项目将将CAD项目按功能分解为七个子项目项目按功能分解为七个子项目用户界面和控制;用户界面和控制;二维几何分析;二维几何分析;三维几何分析;三维几何分析;数据库管理;数据库管理;计算机图形显示;计算机图形显示;外设控制;外设控制;设计分析。设计分析。表表2.4给出七个子项目代码行的乐观估计、悲观给出七个子项目代码行的乐观估计、悲观计和一般估计
29、值,然后计算出加权平均值。计和一般估计值,然后计算出加权平均值。估算计算机辅助设计软件项目估算计算机辅助设计软件项目 分分析析七七个个子子项项目目的的规规模模复复杂杂性性和和难难度度,参参照照以以前前开开发发类类似似项项目目的的经经验验给给出出开开发发每每行行代代码码的的平平均均成成本,每月开发的代码行数。本,每月开发的代码行数。 用用这这两两组组数数据据计计算算出出七七个个子子项项目目的的开开发发成成本本和和工作量。工作量。 最后汇总的最后汇总的CADCAD软件开发项目软件开发项目 规模为规模为 33360 LOC33360 LOC 成本为成本为 656680 $656680 $ 工作量为工
30、作量为 144.5 PM144.5 PM。再再用用这这两两种种方方法法分分别别估估算算软软件件开开发发子子项项目目在在软软件件工程各个阶段的工作量,估算结果列入表工程各个阶段的工作量,估算结果列入表2.5。两两 种种 方方 法法 估估 算算 的的 工工 作作 量量 分分 别别 为为 144.5PM和和152.5PM,相差相差5%左右。左右。估估算算的的成成本本分分别别为为656680$和和708075$,相相差差7%左右。左右。 两种方法估算的工作量和成本基本一致。两种方法估算的工作量和成本基本一致。表表代码行和成本、工作量估算代码行和成本、工作量估算 功能功能 乐观乐观一般一般悲观悲观 加权
31、加权 $LOC成本成本 工作量工作量LOCLOCLOC平均平均 /LOC/PM(人月人月)用户界面控制用户界面控制179024002650234014315327607.4二维几何分析二维几何分析40805200740053802022010760024.4三维几何分析三维几何分析46006900860068002022013600030.9数据库管理数据库管理 2900340036003350182406030013.9图形显示图形显示 39004900620049502220010890024.7外设控制外设控制 19902100 24502140281405992015.2设计分析设计分
32、析 66008500980084001830015120028.0总计总计 33360656680144.5 表表 工作量估算工作量估算 功能功能 需求分析需求分析 设计设计 编码编码 测试测试 总计总计用户界面控制用户界面控制 1.02.00.53.57二维几何分析二维几何分析 2.010.04.59.526三维几何分析三维几何分析 2.5 12.0 6.0 11.031.5数据库管理数据库管理 2.06.03.04.015计算机图形显示计算机图形显示 1.511.04.010.527外设控制外设控制 1.56.03.55.016设计分析设计分析 4.014.05.07.030总计总计(人月
33、人月)14.56126.550.5152.5每人月成本每人月成本 52004800 42504500成本成本()75400292800112625 2272507080752.2 成本估算技术 成成本本估估算算是是可可行行性性分分析析的的重重要要依依据据,也也是是软软件件管理的重要内容,直接影响到软件开发的风险。管理的重要内容,直接影响到软件开发的风险。 软软件件开开发发成成本本主主要要是是指指软软件件开开发发过过程程中中所所花花费费的工作量及相应的代价,即主要是人的劳动的消耗。的工作量及相应的代价,即主要是人的劳动的消耗。 以软件计划、需求分析、设计、编码到测试的以软件计划、需求分析、设计、
34、编码到测试的软件开发全过程所花费的代价为依据。软件开发全过程所花费的代价为依据。 一个大型、复杂项目,由于其项目的度,成本一个大型、复杂项目,由于其项目的度,成本估算并不是一件简单的事,必须建立相应的估算模型,估算并不是一件简单的事,必须建立相应的估算模型,按照一定的方法、技术来进行估算。按照一定的方法、技术来进行估算。一、影响成本估算的因素一、影响成本估算的因素1.1.软件人员的业务水平软件人员的业务水平软件人员的业务水平软件人员的业务水平 2.2.软件产品的规模及复杂度软件产品的规模及复杂度软件产品的规模及复杂度软件产品的规模及复杂度规模:按规模:按YOURDON分类法分为分类法分为超小型
35、超小型,小型小型,中型中型,大型大型,超大型超大型,极大型。极大型。复杂度:应用程序,复杂度:应用程序,实用程序,系统程序实用程序,系统程序低低 高高3 3 3 3. . . .开发所需时间开发所需时间开发所需时间开发所需时间 对确定规模、复杂度的软件存在一个对确定规模、复杂度的软件存在一个”最佳开发时间最佳开发时间”。 4.4.4.4.软件开发技术水平软件开发技术水平软件开发技术水平软件开发技术水平 指开发方法、工具、语言等,技术水平高,效率高。指开发方法、工具、语言等,技术水平高,效率高。5.5.5.5.软件可靠性要求软件可靠性要求软件可靠性要求软件可靠性要求 可靠性要求愈高,成本愈高。可
36、靠性要求愈高,成本愈高。2.2 成本估算技术2.2 成本估算技术二二. .软件成本的估算量软件成本的估算量 源代码行源代码行(LOCLOC) 机器指令行机器指令行/ /非机器语言的执行步非机器语言的执行步 开发工作量开发工作量 人人-月(月(PM) 人人-年(年(PY) 人人-日(日(PD) 软件生产率软件生产率 LOG/PM ¥/LOC ¥/PM 软件开发时间软件开发时间其中其中: :a ai i 估计的最小行数估计的最小行数 b bi i 估计的最大行数估计的最大行数 m mi i 最可能的行数最可能的行数2.2.1 专家估算模型 即即源代码行源代码行源代码行源代码行估算模型估算模型估算模
37、型估算模型(DeiphiDeiphi技术)技术) 由由RandRand公公司司提提出出的的DeiphiDeiphi技技术术,是是由由n n位位专专家家进进行行成成本本估估算算。每每位位专专家家根根据据系系统统规规格格说说明明书书,反反复复讨讨论论给给出出a ai i、 b bi i及及 m mi i的的值值,并并按按照照下下式式反反复复估估算算源源代代码码的的期期望望值值Li Li ,期期望望中中值值L L。a ai i+4+4m mi i+b+bi i 6 61 1n nL Li i = =L=L=将将估估算算的的源源代代码码行行数数,乘乘以以根根据据经经验验推推算算的的每每行行源源代代码所
38、需成本,即为该软件的成本。码所需成本,即为该软件的成本。2.2.2 IBM IBM 估算模型估算模型 1977年年由由Waiston 和和 Felix 总总结结了了IBM联联合合系系统统分分部部(FSD)负负责责的的个个项项目目的的数数据据,利利用用最最小小二二乘法拟合,得到如下估算公式:乘法拟合,得到如下估算公式: 工工 作作 量:量: E=5.2*L (PM) 项目持续时间:项目持续时间: D=4.1*L (月)(月) 人员需要量:人员需要量: S=0.54*E (人)(人) 文文 档档 数:数: DOC=49*L (页)页) 其中:其中:L 源代码行,以千行计。源代码行,以千行计。IBM
39、估估算算模模型型是是一一种种静静态态单单变变量量模模型型,它它利利用用已已估估算算的结果,如源代码行,来估算各种资源的需求量的结果,如源代码行,来估算各种资源的需求量但但IBM 估估算算模模型型不不是是一一种种通通用用模模型型,因因此此应应用用中中应应根据具体实际情况调整模型中的参数根据具体实际情况调整模型中的参数2.2.3 Putnam 估算模型 L LC Ck k t td d334 C Ck k t td dPutnam 估估算算模模型型是是一一种种动动态态多多变变量量模模型型,是是根据一些大型项目中工作量的分布情况推导出来的。根据一些大型项目中工作量的分布情况推导出来的。其中:其中:L
40、源代码行,源代码行,K所需人力(所需人力(PY)td开开发发时时间间,CK技技术术水水平平常常数数其其值值与与开开发发环环境境有有关关。(差差:2500-2000,正正常常:10000-8000,好好:12500-11000) L LC Ck k t td d334 C Ck k K K t td d大型项目的工作量分布情况运行与维护运行与维护系统开发系统开发功能设计规格说明功能设计规格说明系统定义系统定义安装安装测试与确认测试与确认设计与编码设计与编码系统定义系统定义功能设计功能设计规格说明规格说明时间时间2.2.3 Putnam 估算模型COCOMO模模 型型 ( Constructive
41、 Cost Model)由由TRW公公司司开开发发,是是由由Boehm提提出出的的结结构型成本估算模型,其特点是精确、易用。构型成本估算模型,其特点是精确、易用。 是是一一种种层层次次模模型型,按按照照其其祥祥细细程程度度分分为为三三级级:即即基基本本的的COCOMO模模型型、中中间间的的COCOMO模模型型和和详细的详细的COCOMO模型。模型。 该该模模型型主主要要对对工工作作量量(单单位位:PM)和和进进度度TDEP(单单位位:月月)进进行行估估算算。模模型型中中考考虑虑到到估估算算量与开发环境有关,将开发项目分为三类:量与开发环境有关,将开发项目分为三类:9.5.5 COCOMO模型2
42、.2.4 COCOMO模型2.2.4 COCOMO模型 组织型组织型(OrganicOrganic) 规规模模55万万,较较简简单单, ,开开发发人人员员对对产产品品目目标标理理解解充充分分,经经验验丰丰富富,对对软软件件开开发发环环境境熟熟悉悉。大大多多数数应应用用软软件件及及老老的的操作系统、编译系统属此类。操作系统、编译系统属此类。嵌入型嵌入型(EmbaddedEmbadded) ) 软软件件、硬硬件件关关系系紧紧密密, ,操操作作有有限限制制条条件件, ,对对接接口口、数数据据结结构构, ,算算法法要要求求较较高高。如如大大型型复复杂杂的的事事务务处处理理系系统统,大大型、超大型的操作
43、系统型、超大型的操作系统, ,军事指挥系统军事指挥系统, ,航天控制系统等航天控制系统等半独立半独立型型(Semidetached)Semidetached) 对对项项目目要要求求界界于于上上述述两两者者之之间间, ,规规模模复复杂杂度度中中等等。如如新新操作系统操作系统, ,大型数据库大型数据库, ,生产控制等软件属此类生产控制等软件属此类。9.5.5 COCOMO模型 基本的基本的COCOMO模型(静态单变量模型)模型(静态单变量模型)其中:其中: MM 工作量(工作量(PM),),KLOC 估计的源代码行估计的源代码行Cl模模型型系系数数, 模模型型指指数数 . . Cl、 取取决决于于
44、开开发发项项目目的的模模式为组织型、半独立型或嵌入型。式为组织型、半独立型或嵌入型。下下表表是是根根据据6363个个项项目目的的数数据据统统计计结结果果,按按照照基基本本的的COCOMO模型估算的工作量和进度。模型估算的工作量和进度。总体类型总体类型工作量工作量进度进度组织型组织型MM=10.4(KLOG)1.05TDEV=10.5(MM)0.38半半独立型独立型MM=3.0(KLOG)1.12TDEV=10.5(MM)0.35嵌入型嵌入型MM=3.6(KLOG)1.20TDEV=10.5(MM)0.32 其中:其中: fi fi 成本因素包括:成本因素包括:生产因素生产因素(可靠性,数据库规
45、模,软件复杂度)(可靠性,数据库规模,软件复杂度)计计算算机机因因素素(时时间间约约束束,存存储储约约束束,环环境境变变更更率率,计计算算机机换向时间)换向时间)人人员员因因素素(系系统统分分析析员员能能力力、经经验验,程程序序员员能能力力,开开发发人人员环境知识,程序时间语言知识)员环境知识,程序时间语言知识)项目工程因素项目工程因素(设计技术,软件工具,进度限制约束)(设计技术,软件工具,进度限制约束) 详细的详细的COCOMO模型模型 按照开发阶段给出更加详细的按照开发阶段给出更加详细的成本因素成本因素fifi。 中间的中间的COCOMO模型模型进进一一步步考考虑虑了了1515种种影影响
46、响软软件件工工作作量量的的因因素素,更更加加合合理的估算软件工作量和进度。理的估算软件工作量和进度。2.2.5 2.2.5 成本估算方法成本估算方法1 1 1 1、自顶向下的估算方法、自顶向下的估算方法、自顶向下的估算方法、自顶向下的估算方法 据据以以前前完完成成的的同同类类项项目目的的总总成成本本推推算算,再再将将其其分分配配到到各开发任务中。各开发任务中。 特点:简便、估算工作量小、误差大。特点:简便、估算工作量小、误差大。2 2 2 2、自底向上的估算法、自底向上的估算法、自底向上的估算法、自底向上的估算法 估算估算估算估算每一子任务的开发工作量,将它们累加起来。每一子任务的开发工作量,
47、将它们累加起来。 特点:精确度高、但缺少子任务(模块)间的联系。特点:精确度高、但缺少子任务(模块)间的联系。3 3 3 3、差别估计法、差别估计法、差别估计法、差别估计法 与已完成的项目进行类比,对不同部分另行估算。与已完成的项目进行类比,对不同部分另行估算。 特点:估算较精确、但区分类比较困难。特点:估算较精确、但区分类比较困难。 对对于于大大型型软软件件项项目目的的估估算算处处理理,处处理理手手段段主主要要是是分分解解和和类比。一般有以下方式:类比。一般有以下方式:注意:注意:注意:注意:通常使用综合方法通常使用综合方法对实际项目进行估算。对实际项目进行估算。2.2.6 成本/效益分析
48、成成本本效效益益分分析析首首先先估估算算成成本本和和运运行行费费用用(系系统统的的操操作作费费用用和和维维护护费费用用),系系统统的的经经济济效效益益则则等等于于因因使使用用新新系系统而增加的收入,加上使用新系统可以节省的运行费用。统而增加的收入,加上使用新系统可以节省的运行费用。 1.1.1.1.货币的时间价值货币的时间价值货币的时间价值货币的时间价值通通常常以以利利率率形形式式表表示示。假假设设,年年利利率率为为i i,P P元元钱钱在在n n年年后的价值后的价值F F为:为: 2.2.2.2.投资回收期投资回收期投资回收期投资回收期投投资资回回收收期期即即工工程程累累计计经经济济效效益益
49、等等于于最最初初投投资资所所需需要要的时间。的时间。 n nF F P P(1+i1+i)4.4.4.4.投资回收率投资回收率投资回收率投资回收率用用于于衡衡量量投投资资效效益益的的大大小小,并并且且可可以以用用它它和和年年利利率率比较,设现在的投资额为比较,设现在的投资额为:1 1 / /(1+j1+j)2 2 / /(1+j1+j)2 2 n n / /(1+j1+j)n n其中:其中:i i是第是第i i年年底的效益(年年底的效益(i=1i=1,2 2,3 3,nn);); n n是系统的使用寿命是系统的使用寿命;j j是投资回收率是投资回收率。参考书:软件工程经济学参考书:软件工程经济
50、学 美美 巴里巴里.W.W.贝姆贝姆. .赵越等译赵越等译 中国铁道出版社中国铁道出版社3.3.3.3.纯收入纯收入纯收入纯收入在整个生存周期内新系统的累计经济效益与投资之差在整个生存周期内新系统的累计经济效益与投资之差称为纯收入称为纯收入。2.3 软件开发进度计划软软件件开开发发进进度度计计划划安安排排是是一一件件困困难难的的任任务务,尽尽可可能能并并行行地地安安排排任任务务,还还要要考考虑虑各各个个子子任任务务之之间间的的相相互互联联系系,又又要要预见潜在的问题,提供意外事件的处理意见。预见潜在的问题,提供意外事件的处理意见。 描描述述计计划划进进度度的的主主要要工工具具:一一般般的的表表
51、格格工工具具、甘甘特特图图、PERT技术与技术与CPM方法方法。 、一般的表格工具、一般的表格工具、一般的表格工具、一般的表格工具 例如:进度表例如:进度表软件测试编码详细设计总体设计需求分析23456789101112任务任务月份月份0 01010202030304040505060607070一月一月二月二月三月三月四月四月五月五月六月六月需求分析 总体设计详细设计编码、测试进度表2.2.2.2.甘特图(甘特图(甘特图(甘特图(Gantt ChartGantt ChartGantt ChartGantt Chart) 用用水水平平线线段段表表示示任任务务的的工工作作阶阶段段;线线段段的的起
52、起点点和和终终点点分分别别表表示示任任务务的的开开始始和和完完成成时时间间,线线段段的的长长度度表表示示完完成成任任务所需的时间。下图给出了具有五个任务的甘特图。务所需的时间。下图给出了具有五个任务的甘特图。甘特图周 1 2 3 4 5 6 7 8 9 10 11任务A A A AB B B BC C C CD D D DE E E E当前进度优点优点优点优点:标明了各任务的计划:标明了各任务的计划进度和当前进度。能够动态进度和当前进度。能够动态反映软件开发的进展情况。反映软件开发的进展情况。缺缺缺缺点点点点:不不能能够够反反映映多多个个任任务务之间的复杂逻辑关系。之间的复杂逻辑关系。完成计划
53、完成 文档编写 评审图图 例例3. PERT3. PERT技术和技术和技术和技术和CPMCPM方法方法方法方法 PERT(Program evaluation & review technique)计计划划评评审审技技术术或或CPM(Critical path method)关关键键路路径径法法,都都是是采采用用网网络络图图来来描描述述项项目目的的进进度度安安排排。如如图图描描述述了了开开发发模模块块A、B、C的的任任务务网网络络图图。各各边边上上所所标标注注的的数数字字为为该该任任务所持续的时间,数字结点为任务的起点和终点。务所持续的时间,数字结点为任务的起点和终点。0 02 23 34 4
54、5 56 67 71 18 8起点A编码A调试B编码A测试C理解测试C修改C调试C测试6 66 68 87 78 88 87 79 96 68 8BC组装测试5 5调试任务网络图假设红线为关键路径,即完成所有任务的主要路径。假设红线为关键路径,即完成所有任务的主要路径。2.4 人员配备与组织三、评价人员的条件三、评价人员的条件三、评价人员的条件三、评价人员的条件 1 1、固掌握计算机软件的基本知识和技能;、固掌握计算机软件的基本知识和技能; 2 2、善于分析和综合问题,具有严密的逻辑思维能力;、善于分析和综合问题,具有严密的逻辑思维能力; 3 3、工作踏实、细致、不靠运气,遵循标准和规范,具有
55、严格的科学作风;、工作踏实、细致、不靠运气,遵循标准和规范,具有严格的科学作风; 4 4、工作中耐心、有毅力、有责任心;、工作中耐心、有毅力、有责任心; 5 5、善于听取意见,善于团结协作,有良好的人际关系;、善于听取意见,善于团结协作,有良好的人际关系; 6 6、具有良好的书面和口头表达能力。、具有良好的书面和口头表达能力。 合理的配备人员是成功的完成软件项目的切实保证。合理的配备人员是成功的完成软件项目的切实保证。 一、项目各阶段所需人员一、项目各阶段所需人员一、项目各阶段所需人员一、项目各阶段所需人员 按按Putnam_NordenPutnam_Norden 曲线分配曲线分配。 Putn
56、am _ Norden 曲线高低计计划划需求分析初步设计详细设计编码单元测试整体测试功能测试管理人员管理人员高级技术人员高级技术人员初级技术人员初级技术人员二、配备人员遵守的原则二、配备人员遵守的原则二、配备人员遵守的原则二、配备人员遵守的原则 重重质质量量; ;重重培培训训; ;阶阶梯梯提提升升:四、软件开发小组与软件生产率四、软件开发小组与软件生产率四、软件开发小组与软件生产率四、软件开发小组与软件生产率 随随着着软软件件项项目目规规模模的的增增大大,需需要要组组成成开开发发小小组组共共同同承承担担软软件件开开发发项项目目中中的的某某一一任任务务,于于是是人人与与人人之之间间必必须须通通过
57、过交交流流来来解解决决各各自自承承担担任任务务之之间间的的接接口口问问题题,即即通通信信问问题题。通信需要的时间和代价,会降低软件的生产率。通信需要的时间和代价,会降低软件的生产率。开发小组的组织有以下原则:开发小组的组织有以下原则:开发小组的组织有以下原则:开发小组的组织有以下原则: 1.1.1.1.软软软软件件件件开开开开发发发发小小小小组组组组的的的的规规规规模模模模不不不不宜宜宜宜太太太太大大大大,人人数数不不能能太太多多,一一般般3-53-5人左右为宜。人左右为宜。 2.2.2.2.切切切切忌忌忌忌在在在在开开开开发发发发过过过过程程程程中中中中增增增增加加加加人人人人员员员员,这这
58、将将因因增增加加人人员员之之间间的的联系而降低效率。联系而降低效率。四、软件开发小组与软件生产率四、软件开发小组与软件生产率四、软件开发小组与软件生产率四、软件开发小组与软件生产率例例:设设一一开开发发小小组组有有4 4个个软软件件工工程程师师, ,开开发发效效率率为为50005000行行/ /年年,共共有有6 6条条通通信信路路径径, ,每每条条路路径径降降低低生生产产率率250250行行/ /年年,则小组生产率为:则小组生产率为: 5000450004250625061850018500(行(行/ /年)年) 如如为为了了加加快快进进度度,新新增增加加2 2人人(图图8.108.10),每
59、每人人效效率率为为840840行行/ /年年,通通信信路路径径增增加加到到1515条条,此此时时的的小小组组生生产产率率为为: 200002000084028402250152501517930 17930 (行(行/ /年)年) 即新增加人,并未提高生产率。即新增加人,并未提高生产率。软件组织结构软件组织结构软件组织结构软件组织结构主程序员主程序员秘书秘书程序员程序员程序员程序员后备程序员后备程序员程序员程序员主程序员式组织结构主程序员式组织结构项目管理项目管理组长组长组长组长组长组长程序员程序员程序员程序员程序员程序员程序员程序员程序员程序员程序员程序员 大型项目的技术管理式组织结构大型项
60、目的技术管理式组织结构软件质量是一个软件企业成功的必要条件,其重要性软件质量是一个软件企业成功的必要条件,其重要性软件质量是一个软件企业成功的必要条件,其重要性软件质量是一个软件企业成功的必要条件,其重要性无论怎样强调都不过分。无论怎样强调都不过分。无论怎样强调都不过分。无论怎样强调都不过分。由于软件质量是难于定量度量的由于软件质量是难于定量度量的由于软件质量是难于定量度量的由于软件质量是难于定量度量的软件属性,主要从管理的角度讨论影响软件质量的因素。软件属性,主要从管理的角度讨论影响软件质量的因素。软件属性,主要从管理的角度讨论影响软件质量的因素。软件属性,主要从管理的角度讨论影响软件质量的
61、因素。我们把影响软件质量的因素分成三组:我们把影响软件质量的因素分成三组:我们把影响软件质量的因素分成三组:我们把影响软件质量的因素分成三组:2.5 2.5 软件质量保证软件质量保证 产品运行产品运行产产品品修修改改产产产产品品品品转转转转移移移移 可移植性可移植性 可重用性可重用性 互互运运行行性性(与与另另一一个系统结合)个系统结合) 正确性正确性 完整性完整性 健壮性健壮性 可用性可用性 效效 率率 风险性风险性 可理解性可理解性 可修改性可修改性 灵活性灵活性 可测试性可测试性质量因素质量因素质量因素质量因素定义定义定义定义正确性正确性正确性正确性系统满足规格说明和优化目标的程度,即在
62、预定环境下能正确地完成预系统满足规格说明和优化目标的程度,即在预定环境下能正确地完成预期功能的程度。期功能的程度。健壮性健壮性健壮性健壮性在硬件故障、操作错误等意外情况下,系统能作出适当反应的程度。在硬件故障、操作错误等意外情况下,系统能作出适当反应的程度。效率效率效率效率为完成预定功能,系统需要的计算资源的多少。为完成预定功能,系统需要的计算资源的多少。完整性完整性完整性完整性即安全性,对非法使用软件或数据,系统能够控制(禁止)的程度。即安全性,对非法使用软件或数据,系统能够控制(禁止)的程度。可用性可用性可用性可用性对系统完成预定功能的满意程度。对系统完成预定功能的满意程度。风险风险风险风
63、险能否按照预定成本和进度完成系统看法,并为用户满意的程度。能否按照预定成本和进度完成系统看法,并为用户满意的程度。可理解性可理解性可理解性可理解性理解和使用该系统的容易程度。理解和使用该系统的容易程度。可可可可维护性维护性维护性维护性诊断和改正运行时所发现错误所需工作量的大小。诊断和改正运行时所发现错误所需工作量的大小。灵活性灵活性灵活性灵活性即即适应性,修改或改进正在运行的系统所需工作量的大小。适应性,修改或改进正在运行的系统所需工作量的大小。可可可可测试性测试性测试性测试性软件易测试的程度。软件易测试的程度。可移植性可移植性可移植性可移植性改变系统的软、硬件环境及配置时,所需工作量的大小。
64、改变系统的软、硬件环境及配置时,所需工作量的大小。可再用性可再用性可再用性可再用性软件在其它系统中可被再次使用的程度(或范围)。软件在其它系统中可被再次使用的程度(或范围)。互互互互运行性运行性运行性运行性把该系统与另一个系统结合起来所需工作量。把该系统与另一个系统结合起来所需工作量。2.5.1 软件质量因素的定义项目经理在微软是负责并保证高质量的软件项目经理在微软是负责并保证高质量的软件项目经理在微软是负责并保证高质量的软件项目经理在微软是负责并保证高质量的软件产品按时完成合发布的专职管理人员。产品按时完成合发布的专职管理人员。产品按时完成合发布的专职管理人员。产品按时完成合发布的专职管理人
65、员。 其任务包括:其任务包括:其任务包括:其任务包括: 倾听用户需求;负责产品功能定义、规划和倾听用户需求;负责产品功能定义、规划和倾听用户需求;负责产品功能定义、规划和倾听用户需求;负责产品功能定义、规划和设计;作各种复杂的决策;保证开发团队顺利开设计;作各种复杂的决策;保证开发团队顺利开设计;作各种复杂的决策;保证开发团队顺利开设计;作各种复杂的决策;保证开发团队顺利开展工作及跟踪程序错误等。展工作及跟踪程序错误等。展工作及跟踪程序错误等。展工作及跟踪程序错误等。2.5.2 项目经理与软件质量保证软件质量度量方法有以下三种软件质量度量方法有以下三种软件质量度量方法有以下三种软件质量度量方法
66、有以下三种: 1.1.精精确确度度量量:使使用用质质量量度度量量评评价价准准则则进进行行详详细细度量,工作量大,但度量精确度也高;度量,工作量大,但度量精确度也高; 2.2.全全面面度度量量:可可以以与与简简易易度度量量并并用用对对各各个个质质量量设设计计评评价价准准则则进进行行度度量量,工工作作量量可可以以控控制制在在一一定定的的范围内。范围内。 3.3.简易度量简易度量2.5.3 软件项目的跟踪与控制 在在在在软软软软件件件件项项项项目目目目实实实实施施施施过过过过程程程程中中中中进进进进行行行行跟跟跟跟踪踪踪踪与与与与控控控控制制制制,是是是是软软软软件件件件项项项项目目目目管管管管理理
67、理理的的的的重重重重要要要要内内内内容容容容,也也也也是是是是保保保保证证证证软软软软件件件件质质质质量量量量的的的的重重重重要要要要措措措措施施施施。可用不同的方法进行追踪:可用不同的方法进行追踪:2.6.1风险分析风险分析风险的概念风险的概念风风险险与与将将要要发发生生的的事事情情有有关关,研研究究风风险险就就是是研研究明天将要发生的事情究明天将要发生的事情风风险险涉涉及及思思想想、观观念念、行行为为、地地点点、时时间间等等多多种因素种因素风风险险随随条条件件的的变变化化而而改改变变,人人们们通通过过改改变变、选选择择、控控制制与与风风险险密密切切相相关关的的条条件件减减少少、回回避避风风
68、险险改变、选择、控制条件的策略是不确定的改变、选择、控制条件的策略是不确定的2.6风险分析和管理风险分析和管理软件风险软件风险软件风险和其它风险一样存在不确定性软件风险和其它风险一样存在不确定性,有些是有些是很难预测的。很难预测的。对风险的不确定性进行量化,估算某一风险可能对风险的不确定性进行量化,估算某一风险可能带来的损失。带来的损失。除关注软件项目的一般性风险外,还要关注软件除关注软件项目的一般性风险外,还要关注软件项目的特殊风险,如项目的背景、特殊要求、关项目的特殊风险,如项目的背景、特殊要求、关键内容、薄弱环节、技术难点、人员状况、工作键内容、薄弱环节、技术难点、人员状况、工作环境等。
69、环境等。 软件项目存在各种风险,人们关心的问题:软件项目存在各种风险,人们关心的问题:什么风险会导致软件项目的彻底失败什么风险会导致软件项目的彻底失败?顾顾客客需需求求、开开发发环环境境、目目标标机机、时时间间、成成本本的的改改变变对软件项目的风险会产生什么影响对软件项目的风险会产生什么影响?人人们们必必须须抓抓住住什什么么机机会会、采采取取什什么么措措施施才才能能有有效效地地减少风险、顺利完成任务减少风险、顺利完成任务? 不同类型的风险不同类型的风险项目风险项目风险预算、进度、人力、资源、客户及需求预算、进度、人力、资源、客户及需求项目的复杂度、规模、结构的不确定性等项目的复杂度、规模、结构
70、的不确定性等技术风险技术风险设计、实现、接口、验证和维护设计、实现、接口、验证和维护规约的二义性、技术的不确定性、陈旧的技术、领规约的二义性、技术的不确定性、陈旧的技术、领先的技术先的技术商业风险商业风险无需求的产品、策路风险、管理风险、预算风险无需求的产品、策路风险、管理风险、预算风险软件风险分析包括的部分软件风险分析包括的部分风险标识风险标识风险估算风险估算风险规划风险规划风险监控风险监控软件风险分析软件风险分析1风险标识风险标识对待风险不能采取回避态度对待风险不能采取回避态度项目开始时应对一般性风险和特定产品风险进项目开始时应对一般性风险和特定产品风险进行系统标识,並随着项目的展开不断更
71、新。行系统标识,並随着项目的展开不断更新。一般可预测风险一般可预测风险产品规模、商业影响、客户、过程、技术、环产品规模、商业影响、客户、过程、技术、环境、人员及经验等。境、人员及经验等。识别风险的有效方法识别风险的有效方法风险检测表风险检测表为了帮助项目管理人员、项目规划人员为了帮助项目管理人员、项目规划人员,全面了全面了解软件开发过程存在的风险,解软件开发过程存在的风险,Boehm Boehm 建议设计并建议设计并使用各类风险检测表,表中条目指明使用各类风险检测表,表中条目指明,常見並可预常見並可预测的风险。有些风险可以预料,有些很难预料。测的风险。有些风险可以预料,有些很难预料。例例2.6
72、人员配备风险检测表人员配备风险检测表(1)开发人员的水平如何。开发人员的水平如何。(2)开发人员在技术上是否配套。开发人员在技术上是否配套。(3)开发人员的数量如何。开发人员的数量如何。(4)开发人员是否能够自始至终地参加软件开发工作。开发人员是否能够自始至终地参加软件开发工作。(5)开发人员是否能够集中全部精力投入到软件开发工作。开发人员是否能够集中全部精力投入到软件开发工作。(6)开发人员对自己的工作是否有正确的期望。开发人员对自己的工作是否有正确的期望。(7)开发人员是否接受过必要的培训。开发人员是否接受过必要的培训。(8)开发人员的流动是否能够保证工作的连续性。开发人员的流动是否能够保
73、证工作的连续性。上上述述问问题题可可以以选选用用0,1,2,3,4,5来来回回答答。完完全全肯肯定定取取值值为为0,反反之之为为5,中间情况分别取值,中间情况分别取值1,2,3,4值越大表示风险越大。值越大表示风险越大。人员配备风险检测表反映了人的因素给软件项目带来的风险。人员配备风险检测表反映了人的因素给软件项目带来的风险。2 2风险估算风险估算 如如果果某某一一风风险险检检测测表表由由m m项项组组成成,每每项项选选取取一一个个整整数数值值0,1,0,1,,N N,在在最最理理想想的的情情况况取取值值为为0 0,反反之之取取值值为为N N,对对于于中中间间状状态态依依次次取取值值1,2,1
74、,2,N-,N-1 1 当当 N=1 N=1 时时 取取 值值 0,10,1, 对对 应应 布布 尔尔 量量 真真 / /假假(T/F)(T/F) 设设第第i i种种风风险险检检测测表表第第j j项项取取值值XijXij,对对应应的的加加权权系系数是数是WijWij,于是第于是第i i种风险的估算值可以定义为种风险的估算值可以定义为 m m i i WijXijWijXij( (mNmN) ) j=1 j=1 其其中中 WijWij m m, WijWij 0 0 (3(310)10)风险估算风险估算 如如果果第第i种种风风险险对对整整个个软软件件项项目目的的风风险险估估算算加加权权系系数数是
75、是i,i=1,2,l.为为风风险险要要素素的的个个数数,i1,则软件项目风险估算定义为则软件项目风险估算定义为 l lRii (311)i=10R1当当R接接近近于于0时时表表示示风风险险比比较较小小,R接接近于近于1时表示风险比较大。时表示风险比较大。当当ii比比较较大大时时,表表示示第第i类类风风险险出出现现并并带带来来不不良良影影响响的的可可能能性性比比较较大大,必必须须引引起起足足够够重重视视,设法改善条件,减小设法改善条件,减小i的值。的值。3风险评价和管理风险评价和管理风险评价是风险管理的重要步骤风险评价是风险管理的重要步骤任务任务进一步审查风险预测的精度;进一步审查风险预测的精度
76、;更新风险优先次序;更新风险优先次序;考虑控制和考虑控制和/或避免可能发生风险的办法。或避免可能发生风险的办法。风险评价风险评价定义定义用三元组用三元组ri,li,xi描述风险描述风险,i=1,2,3其中:其中:ri表示风险表示风险li表示风险发生的概率表示风险发生的概率xi表示风险产生的影响表示风险产生的影响对大多数软件项目,应该定义性能、成本及进对大多数软件项目,应该定义性能、成本及进度的风险参考水平值,当某一风险或风险组合值度的风险参考水平值,当某一风险或风险组合值超过水平值时项目被迫停止。超过水平值时项目被迫停止。风险评估的步骤风险评估的步骤1定义项目的风险参考水平值;定义项目的风险参
77、考水平值;2建立三元组,给出相应的参考水平值;建立三元组,给出相应的参考水平值;3预测一组临界点,定义项目终止区域;预测一组临界点,定义项目终止区域;4预测什么样的风险组合会影响参考水平预测什么样的风险组合会影响参考水平值值风险表风险表(13)风险风险类别类别概率概率影响影响RMMM123项目开始时应在第一列列出所有风险项目开始时应在第一列列出所有风险;第二列给出风险类别;第二列给出风险类别;第三列给出每种风险发生的概率;第三列给出每种风险发生的概率;第四列给出各种风险产生影响的评估值;第四列给出各种风险产生影响的评估值;第五列给出风险缓解、监控和管理计划。第五列给出风险缓解、监控和管理计划。
78、风险表(风险表(23)评估值按风险因素:评估值按风险因素:性能、成本、进度的影响类别求加权平均值性能、成本、进度的影响类别求加权平均值影响类别取值:灾难的影响类别取值:灾难的1,严重的,严重的2,轻微的,轻微的3,可忽略的,可忽略的4。对风险表中的风险按照发生概率大小、影响大对风险表中的风险按照发生概率大小、影响大小,由大至小排序小,由大至小排序。风险表(风险表(33)项目管理者对风险表进行研究后应定义一条中项目管理者对风险表进行研究后应定义一条中止线,线上的风险较大者应给予特别的关注,止线,线上的风险较大者应给予特别的关注,线下的风险需要进一步的跟踪、评估、排序。线下的风险需要进一步的跟踪、
79、评估、排序。对风险发生概率较大的事件应引起特别关注,对风险发生概率较大的事件应引起特别关注,要及早采取措施尽量避免它的发生。要及早采取措施尽量避免它的发生。风险评价和管理风险评价和管理三元组三元组ri,li,xi是风险管理的基础是风险管理的基础设设 高级职员流动给项目带来高级职员流动给项目带来风险风险r1,根根据据历历史史的的经经验验或或直直观观感感觉觉,高高级级职职员员离离开课题组的开课题组的概率概率 l1=70%,这一风险这一风险导致导致事件事件 x1发生发生项目开发时间延长项目开发时间延长 15%,成本增加,成本增加 20%项目负责人采取的风险管理措施项目负责人采取的风险管理措施(1)项
80、项目目开开始始前前控控制制产产生生风风险险的的原原因因。项项目目开开工工后后应应设设法减轻风险的影响。法减轻风险的影响。(2)了了解解项项目目开开发发人人员员变变动动的的原原因因,在在项项目目开开发发期期间间应应控制上述原因,尽量减少人员的流动。控制上述原因,尽量减少人员的流动。(3)在在工工作作方方法法和和技技术术上上采采取取适适当当措措施施,防防止止因因人人员员流流动给工作带来损失。动给工作带来损失。(4)项项目目在在开开发发过过程程中中应应及及时时公公布布并并交交流流项项目目开开发发的的信信息。息。(5)建立组织机构,确定文档标准、并及时生成文档。建立组织机构,确定文档标准、并及时生成文
81、档。(6)对对工工作作进进行行集集体体复复审审,使使多多数数人人都都能能了了解解工工作作的的细细节,跟上工作进度。节,跟上工作进度。(7)为关键技术准备后备人员。为关键技术准备后备人员。RMMM计划计划风险缓解、监控和管理计划风险缓解、监控和管理计划Risk Mitigation,Monitoring,and Management Plan将风险分析工作文挡化,成为项目的一部分。将风险分析工作文挡化,成为项目的一部分。执行执行RMMM计划需要成本计划需要成本当软件项目比较大时,可能标出当软件项目比较大时,可能标出30至至40种风险,种风险,如果为每种风险定义如果为每种风险定义3至至7种风险管理
82、步骤,则风种风险管理步骤,则风险管理本身就是一个项目。险管理本身就是一个项目。将将Pareto的的20-80规则用于软件项目的风险标识,规则用于软件项目的风险标识,即即20%的风险具有的风险具有0.80的权,而其余的的权,而其余的80%风险风险只有只有0.20的权。要善于标识属于的权。要善于标识属于20%的主要风险,的主要风险,降低降低RMMM计划的规模和复杂性。RMMM计划大纲计划大纲计划大纲计划大纲1.引言引言1.1文挡的范回和目的文挡的范回和目的1.2主要风险综述主要风险综述1.3责任责任1.3.1管理者管理者1.3.2技术人员技术人员2.项目风险表项目风险表2.1中止线以上的风险描述中
83、止线以上的风险描述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.总结总结2.7.1 CMM概述 软软软软件件件件能能能能力力力力成成成成熟熟熟熟度度度度模模模模型型型型CMM(CapabilityCMM(Capability MaturityMaturityModelModel)是
84、是是是由由由由美美美美国国国国卡卡卡卡内内内内基基基基- -梅梅梅梅隆隆隆隆大大大大学学学学软软软软件件件件工工工工程程程程研研研研究究究究所所所所(CMU/SEI)(CMU/SEI)推推推推出出出出的的的的评评评评估估估估软软软软件件件件能能能能力力力力与与与与成成成成熟熟熟熟度度度度的的的的一一一一套套套套标标标标准准准准,该标准基于众多软件专家的实践经验。该标准基于众多软件专家的实践经验。该标准基于众多软件专家的实践经验。该标准基于众多软件专家的实践经验。从从从从8686年开始,开发软件过程成熟度框架。年开始,开发软件过程成熟度框架。年开始,开发软件过程成熟度框架。年开始,开发软件过程成
85、熟度框架。 9191年年年年8 8月月月月SEISEI将将将将软软软软件件件件过过过过程程程程成成成成熟熟熟熟度度度度框框框框架架架架进进进进化化化化为为为为软软软软件件件件能能能能力力力力成成成成熟熟熟熟度度度度模模模模型型型型(CapabilityCapabilityMaturityMaturityModelModelForForSoftwareSoftware,简称,简称,简称,简称SW-CMM1.0SW-CMM1.0版)版)版)版)。 目目目目 前前前前 ,CMM,CMM已已已已 经经经经 发发发发 展展展展 到到到到 CMMICMMI( CapabilityCapabilityMat
86、urityMaturityModelModelIntegration)Integration),能能能能力力力力成成成成熟熟熟熟度度度度模模模模型型型型集集集集成成成成阶段。阶段。阶段。阶段。2.72.7软件过程及软件成熟度模型软件过程及软件成熟度模型CMM CMM 2.7.1 CMM概述CMMCMM侧侧侧侧重重重重于于于于软软软软件件件件开开开开发发发发过过过过程程程程的的的的管管管管理理理理及及及及工工工工程程程程能能能能力力力力的的的的提提提提高高高高与与与与评评评评估估估估,是是是是国国国国际际际际上上上上流流流流行行行行的的的的软软软软件件件件生生生生产产产产过过过过程程程程标标标标
87、准准准准和和和和软软软软件件件件企企企企业业业业成成成成熟熟熟熟度度度度等等等等级级级级认认认认证证证证标标标标准准准准,它它它它更更更更代代代代表表表表了了了了一一一一种种种种管管管管理理理理哲哲哲哲学在软件企业中的应用。学在软件企业中的应用。学在软件企业中的应用。学在软件企业中的应用。 CMMCMM认认认认证证证证已已已已经经经经成成成成为为为为世世世世界界界界公公公公认认认认的的的的软软软软件件件件产产产产品品品品进进进进入入入入国国国国际市场的通行证际市场的通行证际市场的通行证际市场的通行证。 CMMCMM的主要用于:的主要用于:的主要用于:的主要用于:1.1.1.1.软件过程软件过程
88、软件过程软件过程评估评估评估评估SPASPA(SoftwareProcessAssessmentSoftwareProcessAssessment)2.2.软件过程改进软件过程改进软件过程改进软件过程改进SPISPI(SoftwareProcessImprovementSoftwareProcessImprovement)3.3.软件能力评价软件能力评价软件能力评价软件能力评价SCESCE(SoftwareCapabilityEvaluationSoftwareCapabilityEvaluation) 1. 1. 1. 1. 什么是什么是什么是什么是软件过程软件过程软件过程软件过程一一个个软
89、软件件过过程程是是指指人人们们开开发发和和维维护护软软件件及及其其相相关关产产品品所采取的一系列活动。所采取的一系列活动。规程与方法规程与方法工具和工具和设备有技能有技能经过培培训的开的开发人人员过程过程过程过程2. 2. 2. 2. 什么是什么是什么是什么是软件能力成熟度?软件能力成熟度?软件能力成熟度?软件能力成熟度? 由由由由于于于于特特特特定定定定项项项项目目目目的的的的属属属属性性性性和和和和环环环环境境境境限限限限制制制制,项项项项目目目目的的的的实实实实际际际际性性性性能能能能并并并并不不不不能能能能充充充充分分分分反反反反映映映映组组组组织织织织的的的的软软软软件件件件过过过过
90、程程程程能能能能力力力力,但但但但成成成成熟熟熟熟的的的的软软软软件件件件过过过过程程程程可可可可弱弱弱弱化化化化和和和和预预预预见见见见不不不不可可可可控控控控制制制制的的的的过过过过程程程程因因因因素素素素(如如如如客客客客户户户户需需需需求变化或技术变革等)。求变化或技术变革等)。求变化或技术变革等)。求变化或技术变革等)。 一一一一个个个个组组组组织织织织的的的的软软软软件件件件过过过过程程程程能能能能力力力力为为为为组组组组织织织织提提提提供供供供了了了了预预预预测测测测软软软软件件件件项目开发的数据基础,提供了全面的软件质量保证。项目开发的数据基础,提供了全面的软件质量保证。项目开
91、发的数据基础,提供了全面的软件质量保证。项目开发的数据基础,提供了全面的软件质量保证。 软软软软件件件件过过过过程程程程成成成成熟熟熟熟度度度度是是是是指指指指一一一一个个个个软软软软件件件件过过过过程程程程被被被被明明明明确确确确定定定定义义义义、管管管管理理理理、度度度度量量量量和和和和控控控控制制制制的的的的有有有有效效效效程程程程度度度度。成成成成熟熟熟熟意意意意味味味味着着着着软软软软件件件件过过过过程程程程能能能能力力力力持持持持续续续续改改改改善善善善的的的的过过过过程程程程,成成成成熟熟熟熟度度度度代代代代表表表表软软软软件件件件过过过过程程程程能能能能力力力力改改改改善善善善
92、的潜力。的潜力。的潜力。的潜力。软件过程的成熟度等级软件过程的成熟度等级软件过程的成熟度等级软件过程的成熟度等级 CMM将将软软件件过过程程的的成成熟熟度度分分为为5个个级级别别(Maturity(MaturityLevels)Levels),如图所示,如图所示,5个等级分别是:个等级分别是:初始级初始级可重复级可重复级已定义级已定义级已管理级已管理级优化级优化级1.1.1.1.初始级(初始级(初始级(初始级(InitialInitialInitialInitial)2.2.2.2.可重复级(可重复级(可重复级(可重复级(RepeatableRepeatableRepeatableRepeat
93、able)3.3.3.3.已定义级(已定义级(已定义级(已定义级(DefinedDefinedDefinedDefined)4.4.4.4.已管理级(已管理级(已管理级(已管理级(ManagedManagedManagedManaged)5.5.5.5.优化级(优化级(优化级(优化级(OptimizingOptimizingOptimizingOptimizing)成熟度等级单击鼠标左键单击鼠标左键单击鼠标左键单击鼠标左键查看相应内容查看相应内容查看相应内容查看相应内容 表表描描述述了了SW-CMM不不同同成成熟熟度度等等级级过过程程的的可可视视性性和和过程能力。过程能力。等级等级成熟度成熟度
94、可视性可视性过程能力过程能力1初始级初始级有限的可视性有限的可视性一般达不到进度和成本的目标一般达不到进度和成本的目标2可可重复级重复级里程碑上具有管理可视性里程碑上具有管理可视性由于基于过去的性能,项目开由于基于过去的性能,项目开发计划比较现实可行发计划比较现实可行3已已定义级定义级项目定义软件过程的活动具项目定义软件过程的活动具有可视性有可视性基于已定义的软件过程,组织基于已定义的软件过程,组织持续地改善过程能力持续地改善过程能力4已已管理级管理级定量地控制软件过程定量地控制软件过程基于对过程和产品的度量,组基于对过程和产品的度量,组织持续地改善过程能力织持续地改善过程能力5优化级优化级不断地改善软件过程不断地改善软件过程组织持续地改善过程能力组织持续地改善过程能力可视性与过程能力的比较进行软件过程改进的进行软件过程改进的进行软件过程改进的进行软件过程改进的IDEALIDEALIDEALIDEAL方法方法方法方法