软件项目管理课程1

上传人:F****n 文档编号:96064475 上传时间:2019-08-23 格式:PPT 页数:113 大小:1.58MB
返回 下载 相关 举报
软件项目管理课程1_第1页
第1页 / 共113页
软件项目管理课程1_第2页
第2页 / 共113页
软件项目管理课程1_第3页
第3页 / 共113页
软件项目管理课程1_第4页
第4页 / 共113页
软件项目管理课程1_第5页
第5页 / 共113页
点击查看更多>>
资源描述

《软件项目管理课程1》由会员分享,可在线阅读,更多相关《软件项目管理课程1(113页珍藏版)》请在金锄头文库上搜索。

1、第三章 软件项目管理,项目管理的概念 软件项目度量 软件项目计划与估算 风险分析和管理 项目进度安排 软件质量保证 软件配置管理,项目管理的谱系,软件项目管理的目的、任务和内容,目的 为了使软件项目能够在预定成本、进度、质量的前提下顺利完成,必须对软件工程项目进行计划、组织、监控和管理 任务 制定软件项目的实施计划和方案; 对人员进行组织和分工; 按照计划进度,以及成本管理、风险管理、质量管理的要求进行软件开发,完成软件项目的各项要求和任务。,3.1.1 软件度量,软件度量的概念 软件规模度量 软件功能度量,3.1 软件项目度量,软件度量分类,3.1.1.1 度量、估算,度量 metrics

2、度量具有数字特征,软件工程范围的度量是软件开发过程、软件资源或软件产品简单属性的定量描述。 如,程序规模、操作符个数、程序中错误的个数等。 估算 estimation 对软件产品、过程、资源进行预测 估算可以采用经验公式、或参考历史资料 估算用于事前签订合同、立项、制定工作计划等,软件的外部属性和内部属性 外部属性 软件产品、过程、资源与环境的关系 如,成本、效益、劳动生产率、可靠性、可维护性 内部属性 软件产品、过程、资源、环境自身的属性 如,产品结构、模块化程度、复杂性、程序长度等。,产品-过程-资源,产品的内部属性 程序代码长度 程序功能 模块化 重用性 控制流 数据流 模块耦合度与内聚

3、度 产品的外部属性 程序的可靠性 可用性 可维护性 软件的可理解性 有效性 可移植性,过程的内部属性 工作量 计划和进度 一段时间内某类事件发生的次数 过程的外部属性 成本 可控制性 可观察性 稳定性 资源的内部属性 人 软硬件环境 方法 经验 资源的外部属性 成本 时间,3.1.1.2 面向规模的度量,代码行数 LOC或KLOC 生产率 Pl=L/E 其中 L 软件项目代码行数 E 软件项目工作量(人月 PM) Pl 软件项目生产率(LOC/PM) 代码出错率 EQRl=Ne/L 其中 Ne 软件项目的代码错误数 EQRl 每千行代码的错误数,每行代码平均成本 Cl=S/L 其中 S 软件项

4、目总开销(元美元) Cl软件项目每行代码的平均成本 文档与代码比 Dl=Pd/L 其中 Pd 软件项目文档页数 Dl 每千行代码的平均文档数,例 软件项目记录,生产率:Pl=L/E=12.1kLoc/24PM=504Loc/PM 出错率:EQRl=Ne/L=29个/12.1kLoc=2.4个/kLoc 平均成本: Cl=S/L =168 000美元/12.1kLoc= 13.88美元/Loc 每千行代码的平均文档页数: Dl=Pd/L=365Pd/ 12.1kLoc=30.16Pd/kLoc,规模度量的优缺点,用软件代码行数估算软件规模简单易行。 缺点 代码行数的估算依赖于程序设计语言的功能和

5、表达能力; 采用代码行估算方法会对设计精巧的软件项目产生不利的影响; 在软件项目开发前或开发初期估算它的代码行数十分困难; 代码行估算只适用于过程式程序设计语言,对非过程式的程序设计语言不太适用等等。,根据事务信息处理程序的基本功能定义的,在系统设计初期可以估算出软件项目的规模 FP=CT*0.65+0.01*Fi 其中:CT按表3.1计算() Fi 是复杂性调节值 Fi 取值 0,1,.,5 当 Fi = 0 时,表示 Fi 不起作用 Fi = 5 时,表示 Fi 作用最大,3.1.1.3 面向功能的度量,表3.1 功能点度量,测量参数 值 权值 用户输入数 *4 用户输出数 *5 用户查询

6、数 *4 文件数 *7 外部界面数 *7 CT ,表3.1中的五个信息量按下列方式取值 用户输入数 用户为软件提供的输入参数个数 用户输出数 软件系统为用户提供的输出参数个数 用户查询数 一个联机输入确定一次查询,软件以 联机输出的形式,实时地产生一个响应 文件数 统计逻辑的主文件个数 外部界面数 统计所有机器可读的界面,利用这些 界面可以将信息从一个系统传送到另一 个系统,用功能点定义相应的概念 生产率: Pf=FP/E 其中 Pf表示每人月完成的功能点数 平均成本: Ci=S/FP 其中 Ci表示每功能点的平均成本 文档与功能点比: Di=Pd/FP 其中 Di表示每个功能点平均具有的文档

7、页数 代码出错率: EORi=Ne/FP 其中 EORi表示每个功能点的平均错误个数,面向功能的度量,软件规模的功能点度量没有直接涉及软件系统本身的算法复杂性。 1986年Jones把软件项目中的算法复杂性因素引入到功能点计算中来,为了避免混淆,我们把Albrecht定义的功能点称为简单功能点,用FPs表示,把Jones推广的功能点称为功能点,用FP表示。 推广的功能点包括计算机程序中用于各类问题求解的算法因素,如求解线性代数方程组、遍历二叉树的各个结点、处理中断等等。 功能点计算仍用上面的公式,其中CT按表3.2计算。,表3.2 推广的功能点度量,测量参数 值 权值 用户输入数 *4 用户输

8、出数 *5 用户查询数 *4 文件数 *7 外部界面数 *7 算法 *3 CT 对一般的工程计算或事务处理软件,用表3.1和表3.2两种方法计算出来的FP值应该基本上相同 对于比较复杂的软件系统 FP比FPs的值高20%35%,面向功能的度量的优缺点,优点 与程序设计语言无关,它不仅适用于过程式语言,也适用于非过程式的语言; 软件项目开发初期就能基本上确定系统的输入、输出等参数,功能点度量能用于软件项目的开发初期。 缺点 它涉及到的主观因素比较多,如各种权函数的取值; 信息领域中的某些数据有时不容易采集; FP的值没有直观的物理意义。,3.1.1.4 代码行度量与功能点度量的比较,代码行度量依

9、赖于程序设计语言,而功能点度量不依赖于程序设计语言。 Albrecht和Jones等人对若干软件采用事后处理的方式分别统计出不同程序设计语言每个功能点与代码行数的关系,用LOC/FP的平均值表示。 表3.3表明,一行Ada语言代码的“功能”平均是一行FORTRAN语言代码“功能”的1.4倍。一行四代语言代码的“功能”平均是一行传统程序设计语言代码“功能”的3至5倍。,表3.3 各种语言的LOC/FP(平均值),程序设计语言 LOC/FP(平均值) 汇编语言 300 COBOL 100 FORTRAN 100 Pascal 90 Ada 70 面向对象的语言 30 四代语言(4GL) 20 代码

10、生成器 15,3.1.2软件复杂性度量,1976年 T.J.McCabe McCabe度量法又称环路复杂性度量,基于程序控制结构的软件复杂性度量模型。 程序控制结构图 程序结构对应于有一个入口结点和一个出口结点的有向图 图中每个结点对应一个语句或一个顺序流程的程序代码块 弧对应于程序中的转移 它基于一个程序模块的程序图中环路的个数,因此计算它先要画出程序图。 程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。,McCabe度量法,McCabe用程序控制结构图的巡回秩数V(G)作为程序结构复杂性的度量 V(G) = e-n+2 其中:e为结构图的边数 n为

11、结构图的结点数 可以证明 V(G)等于结构图中有界或无界的封闭区域个数,例3.1计算程序控制结构的V(G)值,E = 1 E = 3 N = 2 N = 3 V = 1 V = 2,计算程序控制结构的V(G)值,E = 4 E = 3 N = 4 N = 3 V = 2 V = 2,计算程序控制结构的V(G)值,E = 6 N = 5 V = 3,例3.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.,示例:,在前面的例示中, n

12、11, m13,V(G)mnp131113. p1,McCabe建议把V(G)作为模块规模的定量指标,一个模块V(G)的值不要大于10 当V(G)10时,模块内部结构就会变得复杂,给编码和测试带来困难。,这种度量的缺点是: 对于不同种类的控制流的复杂性不能区分 简单IF语句与循环语句的复杂性同等看待 嵌套IF语句与简单CASE语句的复杂性是一样的 模块间接口当成一个简单分支一样处理 一个具有1000行的顺序程序与一行语句的复杂性相同,3.2 软件项目计划与估算,3.2.1 软件项目计划,软件项目管理人员在开发工作一开始需要进行定量估算。 软件项目计划的目标是提供一个能使项目管理人员对资源、成本

13、和进度做出合理估算的框架。 这些估算应当在软件项目开始时的一个有限的时间段内做出,并且随着项目的进展定期进行更新。,软件项目计划的目标,软件的范围,软件范围包括功能、性能、限制、接口和可靠性。 估算开始时,应对软件的功能进行评价,对其进行适当的细化以便提供更详细的细节。由于成本和进度的估算都与功能有关,因此常常采用某种程度的功能分解。 性能的考虑包括处理和响应时间的需求。 约束条件则标识产品成本、外部硬件、可用存储或其它现有系统对软件的限制。 软件与其它系统元素是相互作用的。要考虑每个接口的性质和复杂性,以确定对开发资源、成本和进度的影响。,软件开发中的资源,3.2.2 软件项目估算,常用的估

14、算方法 参照已经完成的类似项目估算待开发项目的成本和工作量。 将大的项目分解成若干子项目,在估算出每个子项目成本和工作量之后,再估算整个项目。 将软件项目按软件生存周期分解,分别估算出软件项目在软件开发各个阶段的工作量和成本,然后再把这些工作量和成本汇总估算整个项目。 根据实验或历史数据给出软件项目工作量或成本的经验估算公式。,四种方法可以同时、单独或组合使用,以便取长补短,提高项目估算的精度和可靠性。 采用分解技术估算软件项目应考虑系统集成时需要的工作量。 为了实现软件项目估算,实践中开发了大量的软件项目自动估算工具,用以支持软件工作量或成本估算。,分解技术 采用”分而治之”的策略进行软件项目估算.将项目分解为若干个主要的功能及相关的软件工程活动,通过逐步求精的方式进行成本及工作量估算。 经验估算模型 可用于补充分解技术 自动估算工具 实现一种或多种分解技术或经验模型,与人机交互结合,自动估算将是很好的选择。,3.2.2.1 代码行、功能点和工作量估算,软件项目的规模是影响软件项目成本和工作量的重要因素。 软件项目代码行和功能点估算是成本和工作量估算的基础。 采用上面的估算方法可以估算出LOC或FP的乐观值a,悲观值b和一般值m,然后根据下列加权公式计算出期望值

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号