




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2 项目管理是广泛应用于各种工程、金融等技术项目管理是广泛应用于各种工程、金融等技术管理过程,管理的好坏决定了工程的成败。管理过程,管理的好坏决定了工程的成败。 软件及软件及IT IT 行业,尤其是软件产品的特殊性,行业,尤其是软件产品的特殊性,软件项目管理对于保证软件产品的质量具有极为重软件项目管理对于保证软件产品的质量具有极为重要的作用,是决定一个产品或企业能否成功的最重要的作用,是决定一个产品或企业能否成功的最重要的指标。要的指标。 不可见性不可见性不确定性不确定性人员流动性人员流动性 随着软件的规模和复杂度的不断增大,开发人随着软件的规模和复杂度的不断增大,开发人员的增加以及开发时间的
2、增长,这些都增加了软件员的增加以及开发时间的增长,这些都增加了软件项目管理的难度。项目管理的难度。 例如:例如:Windows 2000Windows 2000的开发的开发 是微软公司历史上是微软公司历史上最艰巨的任务,仅核心部门的的成员就有最艰巨的任务,仅核心部门的的成员就有25002500人,人,测试用的代码就有测试用的代码就有10001000万行,测试中所用到的脚本万行,测试中所用到的脚本程序就有程序就有65006500种种。象规模如此之大的软件系统,。象规模如此之大的软件系统,如果没有科学的、规范的、有效的管理,是不可能如果没有科学的、规范的、有效的管理,是不可能成功的。因此成功的。因
3、此项目项目(Project)(Project)参与参与自动化自动化结果结果技术集成技术集成 软件项目管理,是对整个软件生存期的所有活动软件项目管理,是对整个软件生存期的所有活动进行管理。主要过程包括:进行管理。主要过程包括: 确定系统范围、组建项目团队、建立项目环境。确定系统范围、组建项目团队、建立项目环境。 确定项目活动、项目成本估算、制定进度计划确定项目活动、项目成本估算、制定进度计划 监控项目执行、管理项目风险、控制项目变更监控项目执行、管理项目风险、控制项目变更 项目验收、软件安装培训、项目总结项目验收、软件安装培训、项目总结过程定义过程定义过程改进过程改进项目规划项目规划项目监控项目
4、监控项目实施项目实施包括:包括: 可行性分析可行性分析 软件项目度量软件项目度量 软件成本估算软件成本估算 软件计划软件计划包括:包括: 人员配备原则人员配备原则 人员配备模式人员配备模式 软件团队建设软件团队建设 软件项目沟通活动软件项目沟通活动包括:包括: 风险识别风险识别 风险分析风险分析 风险规划风险规划 风险监控风险监控是为了有效地控制是为了有效地控制和管理软件开发过和管理软件开发过程中的变化,进行程中的变化,进行标识、组织和控制标识、组织和控制修改的技术。修改的技术。 配置管理活动:配置管理活动: 配置项的标识配置项的标识 版本管理版本管理 系统构建系统构建 变更控制变更控制软件度
5、量软件度量软件项目度量软件项目度量软件度量分类软件度量分类度量、估算度量、估算 度量度量 metrics度量具有数字特征,软件工程范围的度量是软度量具有数字特征,软件工程范围的度量是软件开发过程、软件资源或软件产品简单属性的件开发过程、软件资源或软件产品简单属性的定量描述。定量描述。如,程序规模、操作符个数、程序中错误的个数如,程序规模、操作符个数、程序中错误的个数等。等。 估算估算 estimation对软件产品、过程、资源进行预测对软件产品、过程、资源进行预测估算可以采用经验公式、或参考历史资料估算可以采用经验公式、或参考历史资料估算用于事前签订合同、立项、制定工作计划估算用于事前签订合同
6、、立项、制定工作计划等等面向规模的度量面向规模的度量 代码行数代码行数 LOC或或KLOC 生产率生产率 Pl=L/E 其中其中 L 软件项目代码行数软件项目代码行数 E 软件项目工作量(人月软件项目工作量(人月 PM) Pl 软件项目生产率(软件项目生产率(LOC/PM) 代码出错率代码出错率 EQRl=Ne/L 其中其中 Ne 软件项目的代码错误数软件项目的代码错误数 EQRl 每千行代码的错误数每千行代码的错误数 每行代码平均成本每行代码平均成本 Cl=S/L 其中其中 S 软件项目总开销(元美元)软件项目总开销(元美元) Cl软件项目每行代码的平均成本软件项目每行代码的平均成本 文档与
7、代码比文档与代码比 Dl=Pd/L 其中其中 Pd 软件项目文档页数软件项目文档页数 Dl 每千行代码的平均文档数每千行代码的平均文档数例例 软件项目记录软件项目记录项目项目工作量工作量 PM成本成本万美元万美元代码行代码行kLOC文档页数文档页数 Pd错误数错误数 Ne人数人数 MAaa-012416.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平均成本:平均成本:
8、Cl=S/L =168 000美元美元/12.1kLoc= 13.88美元美元/Loc每千行代码的平均文档页数:每千行代码的平均文档页数:Dl=Pd/L=365Pd/ 12.1kLoc=30.16Pd/kLoc 规模度量的优缺点规模度量的优缺点用软件代码行数估算软件规模简单易行。用软件代码行数估算软件规模简单易行。缺点缺点 代码行数的估算依赖于程序设计语言的功能和表代码行数的估算依赖于程序设计语言的功能和表达能力;达能力; 采用代码行估算方法会对设计精巧的软件项目产采用代码行估算方法会对设计精巧的软件项目产生不利的影响;生不利的影响; 在软件项目开发前或开发初期估算它的代码行数在软件项目开发前
9、或开发初期估算它的代码行数十分困难;十分困难; 代码行估算代码行估算只适用于过程式程序设计语言只适用于过程式程序设计语言,对非,对非过程式的程序设计语言不太适用等等。过程式的程序设计语言不太适用等等。 根据事务信息处理程序的基本功能定义的,根据事务信息处理程序的基本功能定义的,在系统设计初期可以估算出软件项目的规模在系统设计初期可以估算出软件项目的规模 FP=CT*0.65+0.01*Fi 其中:其中:CT按表按表2.1计算计算 Fi 是复杂性调节值是复杂性调节值 Fi 取值取值 0,1,.,5 当当 Fi = 0 时,表示时,表示 Fi 不起作用不起作用 Fi = 5 时,表示时,表示 Fi
10、 作用最大作用最大 面向功能的度量面向功能的度量 表表 功能点度量功能点度量测量参数测量参数 值值 权值权值用户输入数用户输入数 *4 用户输出数用户输出数 *5 用户查询数用户查询数 *4 文件数文件数 *7 外部界面数外部界面数 *7 CT 表表2.1中的五个信息量按下列方式取值中的五个信息量按下列方式取值用户输入数用户输入数 用户为软件提供的输入参数个数用户为软件提供的输入参数个数用户输出数用户输出数 软件系统为用户提供的输出参数个数软件系统为用户提供的输出参数个数用户查询数用户查询数 一个联机输入确定一次查询,软件以一个联机输入确定一次查询,软件以 联机输出的形式联机输出的形式, ,实
11、时地产生一个响应实时地产生一个响应文件数文件数 统计逻辑的主文件个数统计逻辑的主文件个数外部界面数外部界面数 统计所有机器可读的界面,利用这些统计所有机器可读的界面,利用这些 界面可以将信息从一个系统传送到另一界面可以将信息从一个系统传送到另一 个系统个系统 用功能点定义相应的概念用功能点定义相应的概念 生产率:生产率: Pf=FP/E 其中其中 Pf表示每人月完成的功能点数表示每人月完成的功能点数 平均成本:平均成本:Ci=S/FP Ci=S/FP 其中其中 CiCi表示每功能点的平均成本表示每功能点的平均成本 文档与功能点比:文档与功能点比:Di=Pd/FP Di=Pd/FP 其中其中 D
12、iDi表示每个功能点平均具有的文档页数表示每个功能点平均具有的文档页数 代码出错率:代码出错率:EORi=Ne/FP EORi=Ne/FP 其中其中 EORiEORi表示每个功能点的平均错误个数表示每个功能点的平均错误个数 面向功能的度量面向功能的度量 软件规模的功能点度量没有直接涉及软件系统本软件规模的功能点度量没有直接涉及软件系统本身的算法复杂性。身的算法复杂性。 1986年年Jones把软件项目中的算法复杂性因素引入把软件项目中的算法复杂性因素引入到功能点计算中来,为了避免混淆,我们把到功能点计算中来,为了避免混淆,我们把Albrecht定义的功能点称为定义的功能点称为简单功能点简单功能
13、点,用,用FPs表表示,把示,把Jones推广的功能点称为推广的功能点称为功能点功能点,用,用FP表示。表示。 推广的功能点包括计算机程序中用于各类问题求推广的功能点包括计算机程序中用于各类问题求解的算法因素,如求解线性代数方程组、遍历二解的算法因素,如求解线性代数方程组、遍历二叉树的各个结点、处理中断等等。叉树的各个结点、处理中断等等。 功能点计算仍用上面的公式功能点计算仍用上面的公式,其中其中CT按表按表2.2计算。计算。 表表 推广的推广的功能点度量功能点度量 测量参数测量参数 值值 权值权值用户输入数用户输入数 *4 用户输出数用户输出数 *5 用户查询数用户查询数 *4 文件数文件数
14、 *7 外部界面数外部界面数 *7 算法算法 *3 CT 对一般的工程计算或事务处理软件,用表对一般的工程计算或事务处理软件,用表2.1和表和表2.2两两种方法计算出来的种方法计算出来的FP值应该基本上相同值应该基本上相同 对于比较复杂的软件系统对于比较复杂的软件系统 FP比比FPs的值高的值高20%35% 面向功能的度量的优缺点面向功能的度量的优缺点优点优点与程序设计语言无关,与程序设计语言无关,它不仅适用于过程式语它不仅适用于过程式语言,也适用于非过程式的语言言,也适用于非过程式的语言;软件项目开发初期就能基本上确定系统的输入、软件项目开发初期就能基本上确定系统的输入、输出等参数,功能点度
15、量能用于软件项目的开输出等参数,功能点度量能用于软件项目的开发初期。发初期。缺点缺点它涉及到的主观因素比较多,如各种权函数的它涉及到的主观因素比较多,如各种权函数的取值;取值;信息领域中的某些数据有时不容易采集;信息领域中的某些数据有时不容易采集;FPFP的值没有直观的物理意义。的值没有直观的物理意义。代码行度量与功能点度量的比较代码行度量与功能点度量的比较 代码行度量依赖于程序设计语言,而功能点度代码行度量依赖于程序设计语言,而功能点度量不依赖于程序设计语言。量不依赖于程序设计语言。 Albrecht和和Jones等人对若干软件采用事后处理等人对若干软件采用事后处理的方式分别统计出不同程序设
16、计语言每个功能的方式分别统计出不同程序设计语言每个功能点与代码行数的关系,用点与代码行数的关系,用LOC/FP的平均值表示。的平均值表示。 表表2.3表明,表明,一行一行Ada语言代码的语言代码的“功能功能”平均平均是一行是一行FORTRAN语言代码语言代码“功能功能”的的1.4倍。倍。一行四代语言代码的一行四代语言代码的“功能功能”平均是一行传统平均是一行传统程序设计语言代码程序设计语言代码“功能功能”的的3至至5倍。倍。 表表 各种语言的各种语言的LOC/FP(平均值平均值)程序设计语言程序设计语言 LOC/FP(平均值平均值)汇编语言汇编语言 300COBOL 100FORTRAN 10
17、0Pascal 90Ada 70面向对象的语言面向对象的语言 30四代语言四代语言(4GL) 20代码生成器代码生成器 15 软件复杂性度量软件复杂性度量1976年年 T.J.McCabe McCabeMcCabe度量法又称环路复杂性度量度量法又称环路复杂性度量, ,基于程序控制基于程序控制结构的软件复杂性度量模型。结构的软件复杂性度量模型。程序控制结构图程序控制结构图 程序结构对应于有一个入口结点和一个出口结点的有向图程序结构对应于有一个入口结点和一个出口结点的有向图 图中每个结点对应一个语句或一个顺序流程的程序代码块图中每个结点对应一个语句或一个顺序流程的程序代码块 弧对应于程序中的转移弧
18、对应于程序中的转移 它它,因此计算它,因此计算它先要画出程序图。先要画出程序图。 程序图是退化的程序流程图。流程图中每个处理都退化成程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。一个结点,流线变成连接不同结点的有向弧。McCabeMcCabe度量法度量法 McCabe用程序控制结构图的用程序控制结构图的巡回秩数巡回秩数V(G)作为程序结构复杂性的度量作为程序结构复杂性的度量 V(G) = e-n+2 其中:其中:e为结构图的边数为结构图的边数 n为结构图的结点数为结构图的结点数 可以证明可以证明 V(G)等于结构图中有界或无界的等于结构图中有界或无界
19、的封闭区域个数封闭区域个数例例 计算计算程序控制结构的程序控制结构的V(G)值值E = 1 E = 3N = 2 N = 3V = 1 V = 2计算计算程序控制结构的程序控制结构的V(G)值值E = 4 E = 3N = 4 N = 3V = 2 V = 2计算计算程序控制结构的程序控制结构的V(G)值值E = 6N = 5V = 3例例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. 这种度
20、量的缺点是:这种度量的缺点是: 对于不同种类的控制流的复杂性不能区分对于不同种类的控制流的复杂性不能区分 简单简单IF语句语句与与循环语句循环语句的复杂性同等看待的复杂性同等看待 嵌套嵌套IF语句语句与与简单简单CASE语句语句的复杂性是的复杂性是一样的一样的 模块间接口模块间接口当成当成一个简单分支一个简单分支一样处理一样处理 一个一个具有具有1000行的顺序程序行的顺序程序与与一行语句一行语句的的复杂性相同复杂性相同软件项目估算软件项目估算常用的估算方法常用的估算方法参照已经完成的类似项目估算待开发项目的成本和工作参照已经完成的类似项目估算待开发项目的成本和工作量。量。将大的项目分解成若干
21、子项目,在估算出每个子项目成将大的项目分解成若干子项目,在估算出每个子项目成本和工作量之后,再估算整个项目。本和工作量之后,再估算整个项目。将软件项目按软件生存周期分解,分别估算出软件项目将软件项目按软件生存周期分解,分别估算出软件项目在软件开发各个阶段的工作量和成本,然后再把这些工在软件开发各个阶段的工作量和成本,然后再把这些工作量和成本汇总估算整个项目。作量和成本汇总估算整个项目。根据实验或历史数据给出软件项目工作量或成本的经验根据实验或历史数据给出软件项目工作量或成本的经验估算公式。估算公式。 四种方法可以同时、单独或组合使用,以便取长四种方法可以同时、单独或组合使用,以便取长补短,提高
22、项目估算的精度和可靠性。补短,提高项目估算的精度和可靠性。 采用采用分解技术分解技术估算软件项目应考虑系统集成时需估算软件项目应考虑系统集成时需要的工作量。要的工作量。 为了实现软件项目估算,实践中开发了大量的软为了实现软件项目估算,实践中开发了大量的软件项目件项目自动估算工具自动估算工具,用以支持软件工作量或成,用以支持软件工作量或成本估算。本估算。 分解技术分解技术采用采用”分而治之分而治之”的策略进行软件项目估算的策略进行软件项目估算.将项目将项目分解为若干个主要的功能及相关的软件工程活动分解为若干个主要的功能及相关的软件工程活动,通过逐步求精的方式进行成本及工作量估算。通过逐步求精的方
23、式进行成本及工作量估算。 经验估算模型经验估算模型可用于补充分解技术可用于补充分解技术 自动估算工具自动估算工具实现一种或多种分解技术或经验模型,与人机交互实现一种或多种分解技术或经验模型,与人机交互结合,自动估算将是很好的选择。结合,自动估算将是很好的选择。代码行、功能点和工作量估算代码行、功能点和工作量估算 软件项目的规模是影响软件项目成本和工作量的软件项目的规模是影响软件项目成本和工作量的重要因素。重要因素。 软件项目软件项目代码行和功能点估算是成本和工作量估代码行和功能点估算是成本和工作量估算的基础。算的基础。 采用上面的估算方法可以估算出采用上面的估算方法可以估算出LOCLOC或或F
24、PFP的的乐观值乐观值a a,悲观值悲观值b b和和一般值一般值m m,然后根据下列加权公式计,然后根据下列加权公式计算出期望值算出期望值 e=(ae=(a4m4mb)b)6 6 希望希望LOCLOC或或FPFP的值落在区间的值落在区间a,ba,b之外的概率极小之外的概率极小 当当LOC或或FP的期望值估算出来之后,根据以前软的期望值估算出来之后,根据以前软件项目开发的平均生产率件项目开发的平均生产率LOC/PM或或FP/PM就可就可以计算出工作量。以计算出工作量。 如,软件项目的规模估算为如,软件项目的规模估算为310FP,以前完成的,以前完成的软件项目的生产率为软件项目的生产率为5.5FP
25、/PM,于是工作量估算,于是工作量估算为为E=310/5.5=56PM。估算计算机辅助设计软件项目估算计算机辅助设计软件项目将将CAD项目按功能分解为七个子项目项目按功能分解为七个子项目用户界面和控制;用户界面和控制;二维几何分析;二维几何分析;三维几何分析;三维几何分析;数据库管理;数据库管理;计算机图形显示;计算机图形显示;外设控制;外设控制;设计分析。设计分析。表表2.4给出七个子项目代码行的乐观估计、悲观给出七个子项目代码行的乐观估计、悲观计和一般估计值,然后计算出加权平均值。计和一般估计值,然后计算出加权平均值。 估算计算机辅助设计软件项目估算计算机辅助设计软件项目 分析七个子项目的
26、规模复杂性和难度,参照以分析七个子项目的规模复杂性和难度,参照以前开发类似项目的经验给出开发每行代码的平均成前开发类似项目的经验给出开发每行代码的平均成本,每月开发的代码行数。本,每月开发的代码行数。 用这两组数据计算出七个子项目的开发成本和用这两组数据计算出七个子项目的开发成本和工作量。工作量。 最后汇总的最后汇总的CADCAD软件开发项目软件开发项目 规模为规模为 33360 LOC33360 LOC 成本为成本为 656680 $656680 $ 工作量为工作量为 144.5 PM144.5 PM。 再用这两种方法分别估算软件开发子项目在软件再用这两种方法分别估算软件开发子项目在软件工程
27、各个阶段的工作量,估算结果列入表工程各个阶段的工作量,估算结果列入表2.5。 两种方法估算的工作量分别为两种方法估算的工作量分别为144.5PM和和152.5PM,相差,相差5%左右。左右。 估算的成本分别为估算的成本分别为656680$和和708075$,相差,相差7%左右。左右。 两种方法估算的工作量和成本基本一致。两种方法估算的工作量和成本基本一致。 表表 代码行和成本、工作量估算代码行和成本、工作量估算 功能功能 乐观乐观 一般一般 悲观悲观 加权加权 $ LOC 成本成本 工作量工作量 LOC LOC LOC 平均平均 /LOC /PM (人月人月)用户界面控制用户界面控制1790
28、2400 2650 2340 14 315 32760 7.4 二维几何分析二维几何分析4080 5200 7400 5380 20 220 107600 24.4三维几何分析三维几何分析4600 6900 8600 6800 20 220 136000 30.9数据库管理数据库管理 2900 3400 3600 3350 18 240 60300 13.9图形显示图形显示 3900 4900 6200 4950 22 200 108900 24.7外设控制外设控制 1990 2100 2450 2140 28 140 59920 15.2设计分析设计分析 6600 8500 9800 840
29、0 18 300 151200 28.0总计总计 33360 656680 144.5 表表 工作量估算工作量估算 功能功能 需求分析需求分析 设计设计 编码编码 测试测试 总计总计 用户界面控制用户界面控制 1.0 2.0 0.5 3.5 7二维几何分析二维几何分析 2.0 10.0 4.5 9.5 26三维几何分析三维几何分析 2.5 12.0 6.0 11.0 31.5数据库管理数据库管理 2.0 6.0 3.0 4.0 15计算机图形显示计算机图形显示 1.5 11.0 4.0 10.5 27外设控制外设控制 1.5 6.0 3.5 5.0 16设计分析设计分析 4.0 14.0 5.
30、0 7.0 30总计总计(人月人月) 14.5 61 26.5 50.5 152.5 每人月成本每人月成本 5200 4800 4250 4500成本成本() 75400 292800 112625 227250 708075 成本估算是可行性分析的重要依据,也是软件成本估算是可行性分析的重要依据,也是软件管理的重要内容,直接影响到软件开发的风险。管理的重要内容,直接影响到软件开发的风险。 软件开发成本主要是指软件开发过程中所花费软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价,即主要是人的劳动的消耗。的工作量及相应的代价,即主要是人的劳动的消耗。 以软件计划、需求分析、设计、编码
31、到测试的以软件计划、需求分析、设计、编码到测试的软件开发全过程所花费的代价为依据。软件开发全过程所花费的代价为依据。 一个大型、复杂项目,由于其项目的度,成本一个大型、复杂项目,由于其项目的度,成本估算并不是一件简单的事,必须建立相应的估算模型,估算并不是一件简单的事,必须建立相应的估算模型,按照一定的方法、技术来进行估算。按照一定的方法、技术来进行估算。一、影响成本估算的因素一、影响成本估算的因素 规模:按规模:按YOURDON分类法分为分类法分为 超小型超小型,小型小型,中型中型,大大型型,超大型超大型,极大型。极大型。 复杂度:应用程序,复杂度:应用程序, 实用程序,系统程序实用程序,系
32、统程序 低低 高高 对确定规模、复杂度的软件存在一个对确定规模、复杂度的软件存在一个”最佳开发时间最佳开发时间”。 指开发方法、工具、语言等,技术水平高,效率高。指开发方法、工具、语言等,技术水平高,效率高。 可靠性要求愈高,成本愈高。可靠性要求愈高,成本愈高。二二. .软件成本的估算量软件成本的估算量 源代码行源代码行(LOCLOC) 机器指令行机器指令行/ /非机器语言的执行步非机器语言的执行步 开发工作量开发工作量 人人-月(月(PM) 人人-年(年(PY) 人人-日(日(PD) 软件生产率软件生产率 LOG/PM ¥/LOC ¥/PM 软件开发时间软件开发时间其中其中:a:ai i 估
33、计的最小行数估计的最小行数 b bi i 估计的最大行数估计的最大行数 m mi i 最可能的行数最可能的行数 即即(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 nniiL
34、1L Li i = =L=L=将估算的源代码行数,乘以根据经验推算的每行源代将估算的源代码行数,乘以根据经验推算的每行源代码所需成本,即为该软件的成本。码所需成本,即为该软件的成本。 1977年由年由Waiston 和和 Felix 总结了总结了IBM联合系统联合系统分部(分部(FSD)负责的个项目的数据,利用最小)负责的个项目的数据,利用最小二乘法拟合,得到如下估算公式:二乘法拟合,得到如下估算公式: 工工 作作 量:量: E=5.2*L (PM) 项目持续时间:项目持续时间: D=4.1*L (月)(月) 人员需要量:人员需要量: S=0.54*E (人)(人) 文文 档档 数:数: DO
35、C=49*L (页)(页) 其中:其中:L 源代码行,以千行计。源代码行,以千行计。IBM估算模型是一种静态单变量模型,它利用已估算估算模型是一种静态单变量模型,它利用已估算的结果,如源代码行,来估算各种资源的需求量的结果,如源代码行,来估算各种资源的需求量但但IBM 估算模型不是一种通用模型,因此应用中应估算模型不是一种通用模型,因此应用中应根据具体实际情况调整模型中的参数根据具体实际情况调整模型中的参数 L LC Ck k t td d3343134 C Ck k t td d Putnam 估算估算模型模型是一种动态多变量模型,是是一种动态多变量模型,是根据一些大型项目中工作量的分布情况
36、推导出来的。根据一些大型项目中工作量的分布情况推导出来的。其中:其中: L源代码行,源代码行, K 所需人力(所需人力(PY) td 开发时间开发时间, CK 技术水平常数其值与开发技术水平常数其值与开发环境有关。(差:环境有关。(差:2500-2000,正常:,正常:10000-8000,好:,好:12500-11000) L LC Ck k t td d3343134 C Ck k K K t td d大型项目的工作量分布情况运行与维护运行与维护系统开发系统开发功能设计规格说明功能设计规格说明系统定义系统定义安装安装测试与确认测试与确认设计与编码设计与编码系统定义系统定义功能设计功能设计规
37、格说明规格说明时间时间 COCOMO模型(模型(Constructive Cost Model)由由TRW公司开发,是由公司开发,是由Boehm提出的结构型成本提出的结构型成本估算模型,其特点是精确、易用。估算模型,其特点是精确、易用。 是一种层次模型,按照其祥细程度分为三级:是一种层次模型,按照其祥细程度分为三级:即基本的即基本的COCOMO模型、中间的模型、中间的COCOMO模型和模型和详细的详细的COCOMO模型。模型。 该模型主要对工作量(单位:该模型主要对工作量(单位:PM)和进)和进度度TDEP(单位:月)进行估算。模型中考虑到估(单位:月)进行估算。模型中考虑到估算量与开发环境有
38、关,将开发项目分为三类:算量与开发环境有关,将开发项目分为三类:9.5.5 COCOMO模型 组织型组织型(OrganicOrganic) 规模规模55万,较简单万,较简单, ,开发人员对产品目标理解充分,开发人员对产品目标理解充分,经验丰富,对软件开发环境熟悉。大多数应用软件及老的经验丰富,对软件开发环境熟悉。大多数应用软件及老的操作系统、编译系统属此类。操作系统、编译系统属此类。嵌入型嵌入型(Embadded)Embadded) 软件、硬件关系紧密软件、硬件关系紧密, ,操作有限制条件操作有限制条件, ,对接口、数对接口、数据结构据结构, ,算法要求较高。如大型复杂的事务处理系统,大算法要
39、求较高。如大型复杂的事务处理系统,大型、超大型的操作系统型、超大型的操作系统, ,军事指挥系统军事指挥系统, ,航天控制系统等航天控制系统等半独立半独立型型(Semidetached)Semidetached) 对项目要求界于上述两者之间对项目要求界于上述两者之间, ,规模复杂度中等。如新规模复杂度中等。如新操作系统操作系统, ,大型数据库大型数据库, ,生产控制等软件属此类生产控制等软件属此类。9.5.5 COCOMO模型alklocc 基本的基本的COCOMO模型(静态单变量模型)模型(静态单变量模型)其中:其中: MM 工作量(工作量(PM),),KLOC 估计的源代码行估计的源代码行C
40、l 模型系数,模型系数, 模型指数模型指数 . . Cl、 取决于开发项目的模取决于开发项目的模式为组织型、半独立型或嵌入型。式为组织型、半独立型或嵌入型。下表是根据下表是根据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 其中:其中:
41、fi fi 成本因素包括:成本因素包括: 生产因素生产因素(可靠性,数据库规模,软件复杂度)(可靠性,数据库规模,软件复杂度) 计算机因素计算机因素(时间约束,存储约束,环境变更率,计算机(时间约束,存储约束,环境变更率,计算机换向时间)换向时间) 人员因素人员因素(系统分析员能力、经验,程序员能力,开发人(系统分析员能力、经验,程序员能力,开发人员环境知识,程序时间语言知识)员环境知识,程序时间语言知识) 项目工程因素项目工程因素(设计技术,软件工具,进度限制约束)(设计技术,软件工具,进度限制约束) 详细的详细的COCOMO模型模型 按照开发阶段给出更加详细的成本因素按照开发阶段给出更加详
42、细的成本因素fifi。alklocc 151iif 中间的中间的COCOMO模型模型进一步考虑了进一步考虑了1515种影响软件工作量的因素,更加合种影响软件工作量的因素,更加合理的估算软件工作量和进度。理的估算软件工作量和进度。 据以前完成的同类项目的总成本推算,再将其分配到据以前完成的同类项目的总成本推算,再将其分配到各开发任务中。各开发任务中。 特点:简便、估算工作量小、误差大。特点:简便、估算工作量小、误差大。 每一子任务的开发工作量,将它们累加起来。每一子任务的开发工作量,将它们累加起来。 特点:精确度高、但缺少子任务(模块)间的联系。特点:精确度高、但缺少子任务(模块)间的联系。 与
43、已完成的项目进行类比,对不同部分另行估算。与已完成的项目进行类比,对不同部分另行估算。 特点:估算较精确、但区分类比较困难。特点:估算较精确、但区分类比较困难。 对于大型软件项目的估算处理,处理手段主要是分解对于大型软件项目的估算处理,处理手段主要是分解和类比。一般有以下方式:和类比。一般有以下方式:通常使用综合方法通常使用综合方法对实际项目进行估算。对实际项目进行估算。 成本效益分析首先估算成本和运行费用(系统的操成本效益分析首先估算成本和运行费用(系统的操作费用和维护费用),系统的经济效益则等于因使用新系作费用和维护费用),系统的经济效益则等于因使用新系统而增加的收入,加上使用新系统可以节
44、省的运行费用。统而增加的收入,加上使用新系统可以节省的运行费用。 通常以利率形式表示。假设,年利率为通常以利率形式表示。假设,年利率为i i,P P元钱在元钱在n n年年后的价值后的价值F F为:为:投资回收期即工程累计经济效益等于最初投资所需要投资回收期即工程累计经济效益等于最初投资所需要的时间。的时间。 n nF F P P(1+i1+i)用于衡量投资效益的大小,并且可以用它和年利率用于衡量投资效益的大小,并且可以用它和年利率比较,设现在的投资额为比较,设现在的投资额为:1 1 / /(1+j1+j)2 2 / /(1+j1+j)2 2 n n / /(1+j1+j)n n其中:其中:i
45、i是第是第i i年年底的效益(年年底的效益(i=1i=1,2 2,3 3,nn);); n n是系统的使用寿命是系统的使用寿命;j j是投资回收率是投资回收率。参考书:软件工程经济学参考书:软件工程经济学 美美 巴里巴里.W.W.贝姆贝姆. .赵越等赵越等译译 中国铁道出版社中国铁道出版社在整个生存周期内新系统的累计经济效益与投资之差在整个生存周期内新系统的累计经济效益与投资之差称为纯收入称为纯收入。软件开发进度计划安排是一件困难的任务,软件开发进度计划安排是一件困难的任务,尽可能并尽可能并行地安排任务,行地安排任务,还要考虑各个子任务之间的相互联系,又还要考虑各个子任务之间的相互联系,又要预
46、见潜在的问题,提供意外事件的处理意见。要预见潜在的问题,提供意外事件的处理意见。 描述计划进度的主要工具:一般的表格工具、甘特图、描述计划进度的主要工具:一般的表格工具、甘特图、PERT技术与技术与CPM方法方法。 例如:进度表例如:进度表 软件测试 编码 详细设计 总体设计 需求分析2 3 4 5 6 7 8 9 10 11 12 任务任务月份月份0 01010202030304040505060607070一月一月二月二月三月三月四月四月五月五月六月六月需求分析 总体设计详细设计编码、测试进度表用水平线段表示任务的工作阶段;线段的起点和终点用水平线段表示任务的工作阶段;线段的起点和终点分别
47、表示任务的开始和完成时间,线段的长度表示完成分别表示任务的开始和完成时间,线段的长度表示完成任务所需的时间。下图给出了具有五个任务的甘特图。任务所需的时间。下图给出了具有五个任务的甘特图。甘特图周 1 2 3 4 5 6 7 8 9 10 11任务当前进度:标明了各任务的计划:标明了各任务的计划进度和当前进度。能够动态进度和当前进度。能够动态反映软件开发的进展情况。反映软件开发的进展情况。:不能够反映多个任务:不能够反映多个任务之间的复杂逻辑关系。之间的复杂逻辑关系。完成计划完成 文档编写 评审图图 例例 PERT(Program evaluation & review techniq
48、ue)计计划评审技术或划评审技术或CPM(Critical path method)关键路径法,)关键路径法,都是采用网络图来描述项目的进度安排。如图描述了开发都是采用网络图来描述项目的进度安排。如图描述了开发模块模块A、B、C的任务网络图。各边上所标注的数字为该任的任务网络图。各边上所标注的数字为该任务所持续的时间,数字结点为任务的起点和终点。务所持续的时间,数字结点为任务的起点和终点。0 02 23 34 45 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调试任务网络图假设
49、红线为关键路径,即完成所有任务的主要路径。假设红线为关键路径,即完成所有任务的主要路径。 1 1、固掌握计算机软件的基本知识和技能;、固掌握计算机软件的基本知识和技能; 2 2、善于分析和综合问题,具有严密的逻辑思维能力;、善于分析和综合问题,具有严密的逻辑思维能力; 3 3、工作踏实、细致、不靠运气,遵循标准和规范,具有严格的科学作风;、工作踏实、细致、不靠运气,遵循标准和规范,具有严格的科学作风; 4 4、工作中耐心、有毅力、有责任心;、工作中耐心、有毅力、有责任心; 5 5、善于听取意见,善于团结协作,有良好的人际关系;、善于听取意见,善于团结协作,有良好的人际关系; 6 6、具有良好的
50、书面和口头表达能力。、具有良好的书面和口头表达能力。 合理的配备人员是成功的完成软件项目的切实保证。合理的配备人员是成功的完成软件项目的切实保证。 按按Putnam_Norden Putnam_Norden 曲线分配曲线分配。 Putnam _ Norden 曲线高低计划计划需求分析初步设计详细设计编码单元测试整体测试功能测试管理人员管理人员高级技术人员高级技术人员初级技术人员初级技术人员 重质量重质量; ;重培训重培训; ;阶梯提阶梯提升升: 随着软件项目规模的增大,需要组成开发小组共同随着软件项目规模的增大,需要组成开发小组共同承担软件开发项目中的某一任务,于是人与人之间必须通承担软件开发
51、项目中的某一任务,于是人与人之间必须通过交流来解决各自承担任务之间的接口问题,即通信问题。过交流来解决各自承担任务之间的接口问题,即通信问题。通信需要的时间和代价,会降低软件的生产率。通信需要的时间和代价,会降低软件的生产率。 人数不能太多,一般人数不能太多,一般3-53-5人左右为宜。人左右为宜。 这将因增加人员之间的这将因增加人员之间的联系而降低效率。联系而降低效率。例:设一开发小组有例:设一开发小组有4 4个软件工程师个软件工程师, ,开发效率为开发效率为50005000行行/ /年,共有年,共有6 6条通信路径条通信路径, ,每条路径降低生产率每条路径降低生产率250250行行/ /年
52、,年,则小组生产率为:则小组生产率为: 500050004 42502506 61850018500(行(行/ /年)年) 如为了加快进度,新增加如为了加快进度,新增加2 2人(图人(图8.108.10),每人效率为),每人效率为840840行行/ /年,通信路径增加到年,通信路径增加到1515条,此时的小组生产率为:条,此时的小组生产率为: 20000200008408402 2250250151517930 17930 (行(行/ /年)年) 即新增加人,并未提高生产率。即新增加人,并未提高生产率。主程序员主程序员秘书秘书程序员程序员程序员程序员后备程序员后备程序员程序员程序员主程序员式组
53、织结构主程序员式组织结构项目管理项目管理组长组长组长组长组长组长程序员程序员程序员程序员程序员程序员程序员程序员程序员程序员程序员程序员 大型项目的技术管理式组织结构大型项目的技术管理式组织结构 产品运行产品运行产产品品修修改改 可移植性可移植性可重用性可重用性互运行性(与另一互运行性(与另一个系统结合)个系统结合)正确性正确性 完整性完整性健壮性健壮性 可用性可用性效效 率率 风险性风险性可理解性可理解性可修改性可修改性灵活性灵活性 可测试性可测试性系统满足规格说明和优化目标的程度,即在预定环境下能正确地完成预系统满足规格说明和优化目标的程度,即在预定环境下能正确地完成预期功能的程度。期功能
54、的程度。在硬件故障、操作错误等意外情况下,系统能作出适当反应的程度。在硬件故障、操作错误等意外情况下,系统能作出适当反应的程度。为完成预定功能,系统需要的计算资源的多少。为完成预定功能,系统需要的计算资源的多少。即安全性,对非法使用软件或数据,系统能够控制(禁止)的程度。即安全性,对非法使用软件或数据,系统能够控制(禁止)的程度。对系统完成预定功能的满意程度。对系统完成预定功能的满意程度。能否按照预定成本和进度完成系统看法,并为用户满意的程度。能否按照预定成本和进度完成系统看法,并为用户满意的程度。理解和使用该系统的容易程度。理解和使用该系统的容易程度。诊断和改正运行时所发现错误所需工作量的大
55、小。诊断和改正运行时所发现错误所需工作量的大小。即适应性,修改或改进正在运行的系统所需工作量的大小。即适应性,修改或改进正在运行的系统所需工作量的大小。软件易测试的程度。软件易测试的程度。改变系统的软、硬件环境及配置时,所需工作量的大小。改变系统的软、硬件环境及配置时,所需工作量的大小。软件在其它系统中可被再次使用的程度(或范围)。软件在其它系统中可被再次使用的程度(或范围)。把该系统与另一个系统结合起来所需工作量。把该系统与另一个系统结合起来所需工作量。 : 1.1.精确度量:使用质量度量评价准则进行详细精确度量:使用质量度量评价准则进行详细度量,工作量大,但度量精确度也高;度量,工作量大,
56、但度量精确度也高; 2.2.全面度量:可以与简易度量并用对各个质量全面度量:可以与简易度量并用对各个质量设计评价准则进行度量,工作量可以控制在一定的设计评价准则进行度量,工作量可以控制在一定的范围内。范围内。 3.3.简易度量简易度量可用不同的方法进行追踪:可用不同的方法进行追踪:2.6.1风险分析风险分析风险的概念风险的概念 风险与将要发生的事情有关,风险与将要发生的事情有关,研究风险就是研研究风险就是研究明天将要发生的事情究明天将要发生的事情 风险涉及思想、观念、行为、地点、时间等多风险涉及思想、观念、行为、地点、时间等多种因素种因素 风险随条件的变化而改变,人们风险随条件的变化而改变,人
57、们通过通过改变、选改变、选择、控制与风险密切相关的条件减少、择、控制与风险密切相关的条件减少、回避回避风风险险 改变、选择、控制条件的策略是不确定的改变、选择、控制条件的策略是不确定的2.6风险分析和管理风险分析和管理软件风险软件风险 软件风险和其它风险一样存在不确定性软件风险和其它风险一样存在不确定性,有些是很有些是很难预测的。难预测的。 对风险的不确定性进行量化,估算某一风险可能对风险的不确定性进行量化,估算某一风险可能带来的损失。带来的损失。 除关注软件项目的一般性风险外,还要关注软件除关注软件项目的一般性风险外,还要关注软件项目的特殊风险,如项目的背景、特殊要求、关项目的特殊风险,如项
58、目的背景、特殊要求、关键内容、薄弱环节、技术难点、人员状况、工作键内容、薄弱环节、技术难点、人员状况、工作环境等。环境等。 软件项目存在各种风险,人们关心的问题:软件项目存在各种风险,人们关心的问题: 什么风险会导致软件项目的彻底失败什么风险会导致软件项目的彻底失败? 顾客需求、开发环境、目标机、时间、成本的改变顾客需求、开发环境、目标机、时间、成本的改变对软件项目的风险会产生什么影响对软件项目的风险会产生什么影响? 人们必须抓住什么机会、采取什么措施才能有效地人们必须抓住什么机会、采取什么措施才能有效地减少风险、顺利完成任务减少风险、顺利完成任务? 不同类型的风险不同类型的风险 项目风险项目
59、风险预算、进度、人力、资源、客户及需求预算、进度、人力、资源、客户及需求项目的复杂度、规模、结构的不确定性等项目的复杂度、规模、结构的不确定性等 技术风险技术风险设计、实现、接口、验证和维护设计、实现、接口、验证和维护规约的二义性、技术的不确定性、陈旧的技术、领规约的二义性、技术的不确定性、陈旧的技术、领先的技术先的技术 商业风险商业风险无需求的产品、策路风险、管理风险、预算风险无需求的产品、策路风险、管理风险、预算风险软件风险分析包括的部分软件风险分析包括的部分 风险标识风险标识 风险估算风险估算 风险规划风险规划 风险监控风险监控软件风险分析软件风险分析风险标识风险估算风险规划风险监控潜
60、在 地 风险列表优先级高的风险列表风险规划和应急计划风险评估1风险标识风险标识 对待风险不能采取回避态度对待风险不能采取回避态度 项目开始时应对一般性风险和特定产品风险进项目开始时应对一般性风险和特定产品风险进行系统标识,並随着项目的展开不断更新。行系统标识,並随着项目的展开不断更新。 一般可预测风险一般可预测风险 产品规模、商业影响、客户、过程、技术、环产品规模、商业影响、客户、过程、技术、环境、人员及经验等。境、人员及经验等。 识别风险的有效方法识别风险的有效方法 风险检测表风险检测表 为了帮助项目管理人员、项目规划人员为了帮助项目管理人员、项目规划人员,全面了全面了解软件开发过程存在的风险,解软
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 促进工资性收入合理增长实施方案
- 一个神奇的故事想象作文(6篇)
- 《鲁迅作品赏析:初中语文文学经典阅读教案》
- 房产交易完成产权归属证明书(6篇)
- 中小学语文成语故事分享教案
- 初中清明扫墓120词英语作文15篇范文
- 一年级写景小作文日落美景250字14篇
- 《中国古代文学流派简介:大一语文文学史教案》
- 现代汽车技术维修试题集
- 琵琶行文学风格与音乐描写技巧:高中语文教案研究
- 贸易安全意识培训
- 管理学基础-形考任务二-国开-参考资料
- 大数据分析在运维中的应用-第1篇-深度研究
- 投标标前协议书范本
- 2025年中国鳕鱼行业市场全景评估及发展战略规划报告
- 交流激励下的锯齿环状表面介质阻挡放电特性
- 全面指南:2024年医学整形美容医院员工手册
- 2025年度食用菌产业园区公共设施运营管理合同3篇
- 《费孝通-乡土中国》差序格局
- 惩罚揪痧虐痧小说6篇
- 100部爱国主义电影
评论
0/150
提交评论