第2章 软件项目管理.ppt
《第2章 软件项目管理.ppt》由会员分享,可在线阅读,更多相关《第2章 软件项目管理.ppt(127页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件项目管理22第二章 项目管理是广泛应用于各种工程、金融等技术管理过程,管理的好坏决定了工程的成败。软件及IT 行业,尤其是软件产品的特殊性,软件项目管理对于保证软件产品的质量具有极为重要的作用,是决定一个产品或企业能否成功的最重要的指标。2.1 软件项目管理概述不可见性不确定性人员流动性2.1 软件项目管理概述随着软件的规模和复杂度的不断增大,开发人员的增加以及开发时间的增长,这些都增加了软件项目管理的难度。例如:Windows 2000的开发 是微软公司历史上最艰巨的任务,仅核心部门的的成员就有2500人,测试用的代码就有1000万行,测试中所用到的脚本程序就有6500种。象规模如此之大
2、的软件系统,如果没有科学的、规范的、有效的管理,是不可能成功的。因此软件项目管理成为软件工程的重要研软件项目管理成为软件工程的重要研究内容之一。究内容之一。2.1.1 软件项目管理的任务过 过 程 程(process)(process)人 人 员 员(people people)工具 工具(tools)(tools)产品 产品(Product)(Product)项目(Project)参与 自动化结果技术集成一、软件项目管理的一、软件项目管理的“4P”4P”二、软件项目管理过程二、软件项目管理过程 软件项目管理,是对整个软件生存期的所有活动进行管理。主要过程包括:1.1.项目启动项目启动 确定系
3、统范围、组建项目团队、建立项目环境。2.2.项目规划项目规划 确定项目活动、项目成本估算、制定进度计划3.3.项目实施项目实施 监控项目执行、管理项目风险、控制项目变更4.4.项目收尾项目收尾 项目验收、软件安装培训、项目总结2.1.1 软件项目管理的任务2.1.1 软件项目管理的任务三、软件项目管理与过程管理的关系三、软件项目管理与过程管理的关系过程定义 过程改进项目规划 项目监控项目实施软件项目管理 软件项目管理软件过程管理 软件过程管理软件项目管理用于保证项目目标的成功实现,过程管理用于软件项目管理用于保证项目目标的成功实现,过程管理用于辅助项目管理,将最佳的项目实践用于软件开发过程。辅
4、助项目管理,将最佳的项目实践用于软件开发过程。2.1.2 项目管理的主要活动软件项目的规划人员的组织管理软件风险管理软件配置管理包括:可行性分析 软件项目度量 软件成本估算 软件计划2.1.2 项目管理的主要活动包括:人员配备原则 人员配备模式 软件团队建设 软件项目沟通活动软件项目的规划人员的组织管理软件风险管理软件配置管理2.1.2 2.1.2 项目管理的主要活动项目管理的主要活动包括:风险识别 风险分析 风险规划 风险监控软件项目的规划人员的组织管理软件风险管理软件配置管理2.1.2 项目管理的主要活动是为了有效地控制和管理软件开发过程中的变化,进行标识、组织和控制修改的技术。配置管理活
5、动:配置项的标识 版本管理 系统构建 变更控制软件项目的规划人员的组织管理软件风险管理软件配置管理软件度量 软件度量的概念 软件规模度量 软件功能度量软件项目度量软件度量分类度量、估算 度量metrics度量具有数字特征,软件工程范围的度量是软件开发过程、软件资源或软件产品简单属性的定量描述。如,程序规模、操作符个数、程序中错误的个数等。估算estimation对软件产品、过程、资源进行预测估算可以采用经验公式、或参考历史资料估算用于事前签订合同、立项、制定工作计划等软件的外部属性和内部属性 外部属性软件产品、过程、资源与环境的关系如,成本、效益、劳动生产率、可靠性、可维护性 内部属性软件产品
6、、过程、资源、环境自身的属性如,产品结构、模块化程度、复杂性、程序长度等。产品-过程-资源 产品的内部属性程序代码长度程序功能模块化重用性控制流数据流模块耦合度与内聚度 产品的外部属性程序的可靠性可用性可维护性软件的可理解性有效性可移植性n过程的内部属性工作量计划和进度一段时间内某类事件发生的次数n过程的外部属性成本可控制性可观察性稳定性n资源的内部属性人软硬件环境方法经验n资源的外部属性成本时间面向规模的度量 代码行数LOC或KLOC 生产率Pl=L/E其中L软件项目代码行数E软件项目工作量(人月PM)Pl软件项目生产率(LOC/PM)代码出错率EQRl=Ne/L其中Ne软件项目的代码错误数
7、EQRl每千行代码的错误数 每行代码平均成本Cl=S/L其中S软件项目总开销(元美元)Cl软件项目每行代码的平均成本 文档与代码比Dl=Pd/L其中Pd软件项目文档页数Dl每千行代码的平均文档数例软件项目记录项目 工作量PM成本万美元代码行kLOC文档页数Pd错误数Ne人数MAaa-0124 16.8 12.1 365 29 3Ccc-0462 44.0 27.2 1224 86 5Fff-0343 31.4 20.2 1050 64 6生产率:Pl=L/E=12.1kLoc/24PM=504Loc/PM出错率:EQRl=Ne/L=29个/12.1kLoc=2.4个/kLoc平均成本:Cl=S
8、/L=168000美元/12.1kLoc=13.88美元/Loc每千行代码的平均文档页数:Dl=Pd/L=365Pd/12.1kLoc=30.16Pd/kLoc规模度量的优缺点用软件代码行数估算软件规模简单易行。缺点 代码行数的估算依赖于程序设计语言的功能和表达能力;采用代码行估算方法会对设计精巧的软件项目产生不利的影响;在软件项目开发前或开发初期估算它的代码行数十分困难;代码行估算只适用于过程式程序设计语言,对非过程式的程序设计语言不太适用等等。根据事务信息处理程序的基本功能定义的,在系统设计初期可以估算出软件项目的规模FP=CT*0.65+0.01*Fi其中:CT按表2.1计算()Fi是复
9、杂性调节值Fi取值 0,1,.,5当Fi=0时,表示Fi不起作用Fi=5时,表示Fi作用最大面向功能的度量 表功能点度量测量参数 值 权值用户输入数*4 用户输出数*5 用户查询数*4 文件数*7 外部界面数*7 CT 表2.1中的五个信息量按下列方式取值用户输入数 用户为软件提供的输入参数个数用户输出数 软件系统为用户提供的输出参数个数用户查询数 一个联机输入确定一次查询,软件以 联机输出的形式,实时地产生一个响应文件数 统计逻辑的主文件个数外部界面数 统计所有机器可读的界面,利用这些 界面可以将信息从一个系统传送到另一 个系统用功能点定义相应的概念 生产率:Pf=FP/E 其中 Pf表示每
10、人月完成的功能点数 平均成本:Ci=S/FP 其中 Ci表示每功能点的平均成本 文档与功能点比:Di=Pd/FP 其中 Di表示每个功能点平均具有的文档页数 代码出错率:EORi=Ne/FP 其中 EORi表示每个功能点的平均错误个数面向功能的度量 软件规模的功能点度量没有直接涉及软件系统本身的算法复杂性。1986年Jones把软件项目中的算法复杂性因素引入到功能点计算中来,为了避免混淆,我们把Albrecht定义的功能点称为简单功能点,用FPs表示,把Jones推广的功能点称为功能点,用FP表示。推广的功能点包括计算机程序中用于各类问题求解的算法因素,如求解线性代数方程组、遍历二叉树的各个结
11、点、处理中断等等。功能点计算仍用上面的公式,其中CT按表2.2计算。表推广的功能点度量 测量参数 值 权值用户输入数*4 用户输出数*5 用户查询数*4 文件数*7 外部界面数*7 算法*3 CT 对一般的工程计算或事务处理软件,用表2.1和表2.2两种方法计算出来的FP值应该基本上相同 对于比较复杂的软件系统FP比FPs的值高20%35%面向功能的度量的优缺点优点与程序设计语言无关,它不仅适用于过程式语言,也适用于非过程式的语言;软件项目开发初期就能基本上确定系统的输入、输出等参数,功能点度量能用于软件项目的开发初期。缺点它涉及到的主观因素比较多,如各种权函数的取值;信息领域中的某些数据有时
12、不容易采集;FP的值没有直观的物理意义。代码行度量与功能点度量的比较 代码行度量依赖于程序设计语言,而功能点度量不依赖于程序设计语言。Albrecht和Jones等人对若干软件采用事后处理的方式分别统计出不同程序设计语言每个功能点与代码行数的关系,用LOC/FP的平均值表示。表2.3表明,一行Ada语言代码的“功能”平均是一行FORTRAN语言代码“功能”的1.4倍。一行四代语言代码的“功能”平均是一行传统程序设计语言代码“功能”的3至5倍。表各种语言的LOC/FP(平均值)程序设计语言 LOC/FP(平均值)汇编语言 300COBOL100FORTRAN100Pascal90Ada70面向对
13、象的语言 30四代语言(4GL)20代码生成器 15软件复杂性度量1976年 T.J.McCabeMcCabe度量法又称环路复杂性度量,基于程序控制结构的软件复杂性度量模型。程序控制结构图 程序结构对应于有一个入口结点和一个出口结点的有向图 图中每个结点对应一个语句或一个顺序流程的程序代码块 弧对应于程序中的转移 它基于一个程序模块的程序图中环路的个数 基于一个程序模块的程序图中环路的个数,因此计算它先要画出程序图。程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。McCabe度量法McCabe用程序控制结构图的巡回秩数V(G)作为程序结构复杂性的度量V
14、(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计算如图所示程序控制结构图的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 11,m 13,V(G)m n p1311 13.p1nMcCabe建议把V(G)
15、作为模块规模的定量指标,一个模块V(G)的值不要大于10n当V(G)10时,模块内部结构就会变得复杂,给编码和测试带来困难。这种度量的缺点是:对于不同种类的控制流的复杂性不能区分 简单IF语句与循环语句的复杂性同等看待 嵌套IF语句与简单CASE语句的复杂性是一样的 模块间接口当成一个简单分支一样处理 一个具有1000行的顺序程序与一行语句的复杂性相同软件项目计划与估算软件项目计划软件项目管理人员在开发工作一开始需要进软件项目管理人员在开发工作一开始需要进行定量估算。行定量估算。软件项目计划的目标是提供一个能使项目管软件项目计划的目标是提供一个能使项目管理人员对资源、成本和进度做出合理估算的框
16、理人员对资源、成本和进度做出合理估算的框架。架。这些估算应当在软件项目开始时的一个有限这些估算应当在软件项目开始时的一个有限的时间段内做出,并且随着项目的进展定期进的时间段内做出,并且随着项目的进展定期进行更新。行更新。n软件项目计划的目标软件项目计划的目标n n 软件的范围 软件范围包括功能、性能、限制、接口和可靠性。软件范围包括功能、性能、限制、接口和可靠性。估算开始时,应对软件的功能进行评价,对其进行适 估算开始时,应对软件的功能进行评价,对其进行适当的细化以便提供更详细的细节。由于成本和进度的 当的细化以便提供更详细的细节。由于成本和进度的估算都与功能有关,因此常常采用某种程度的功能分
17、 估算都与功能有关,因此常常采用某种程度的功能分解。解。性能的考虑包括处理和响应时间的需求。性能的考虑包括处理和响应时间的需求。约束条件则标识产品成本、外部硬件、可用存储或其 约束条件则标识产品成本、外部硬件、可用存储或其它现有系统对软件的限制。它现有系统对软件的限制。软件与其它系统元素是相互作用的。要考虑每个接口 软件与其它系统元素是相互作用的。要考虑每个接口的性质和复杂性,以确定对开发资源、成本和进度的 的性质和复杂性,以确定对开发资源、成本和进度的影响。影响。软件开发中的资源软件项目估算常用的估算方法参照已经完成的类似项目估算待开发项目的成本和工作量。将大的项目分解成若干子项目,在估算出
18、每个子项目成本和工作量之后,再估算整个项目。将软件项目按软件生存周期分解,分别估算出软件项目在软件开发各个阶段的工作量和成本,然后再把这些工作量和成本汇总估算整个项目。根据实验或历史数据给出软件项目工作量或成本的经验估算公式。四种方法可以同时、单独或组合使用,以便取长补短,提高项目估算的精度和可靠性。采用分解技术估算软件项目应考虑系统集成时需要的工作量。为了实现软件项目估算,实践中开发了大量的软件项目自动估算工具,用以支持软件工作量或成本估算。分解技术采用”分而治之”的策略进行软件项目估算.将项目分解为若干个主要的功能及相关的软件工程活动,通过逐步求精的方式进行成本及工作量估算。经验估算模型可
19、用于补充分解技术 自动估算工具实现一种或多种分解技术或经验模型,与人机交互结合,自动估算将是很好的选择。代码行、功能点和工作量估算 软件项目的规模是影响软件项目成本和工作量的重要因素。软件项目代码行和功能点估算是成本和工作量估算的基础。采用上面的估算方法可以估算出LOC或FP的乐观值a,悲观值b和一般值m,然后根据下列加权公式计算出期望值 e=(a4mb)6 希望LOC或FP的值落在区间a,b之外的概率极小 当LOC或FP的期望值估算出来之后,根据以前软件项目开发的平均生产率LOC/PM或FP/PM就可以计算出工作量。如,软件项目的规模估算为310FP,以前完成的软件项目的生产率为5.5FP/
20、PM,于是工作量估算为E=310/5.5=56PM。估算计算机辅助设计软件项目将CAD项目按功能分解为七个子项目用户界面和控制;二维几何分析;三维几何分析;数据库管理;计算机图形显示;外设控制;设计分析。表2.4给出七个子项目代码行的乐观估计、悲观计和一般估计值,然后计算出加权平均值。估算计算机辅助设计软件项目 分析七个子项目的规模复杂性和难度,参照以前开发类似项目的经验给出开发每行代码的平均成本,每月开发的代码行数。用这两组数据计算出七个子项目的开发成本和工作量。最后汇总的CAD软件开发项目 规模为 33360 LOC 成本为 656680$工作量为 144.5 PM。再用这两种方法分别估算
21、软件开发子项目在软件工程各个阶段的工作量,估算结果列入表2.5。两种方法估算的工作量分别为 144.5PM和152.5PM,相差5%左右。估算的成本分别为656680$和708075$,相差7%左右。两种方法估算的工作量和成本基本一致。表代码行和成本、工作量估算 功能 乐观一般悲观 加权$LOC成本 工作量LOCLOCLOC平均/LOC/PM(人月)用户界面控制179024002650234014315327607.4二维几何分析40805200740053802022010760024.4三维几何分析46006900860068002022013600030.9数据库管理 290034003
22、6003350182406030013.9图形显示 39004900620049502220010890024.7外设控制 19902100 24502140281405992015.2设计分析 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.
23、03.55.016设计分析 4.014.05.07.030总计(人月)14.56126.550.5152.5每人月成本 52004800 42504500成本()75400292800112625 2272507080752.2 成本估算技术 成本估算是可行性分析的重要依据,也是软件管理的重要内容,直接影响到软件开发的风险。软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价,即主要是人的劳动的消耗。以软件计划、需求分析、设计、编码到测试的软件开发全过程所花费的代价为依据。一个大型、复杂项目,由于其项目的度,成本估算并不是一件简单的事,必须建立相应的估算模型,按照一定的方法、技术来进行
24、估算。一、影响成本估算的因素1.1.软件人员的业务水平软件人员的业务水平2.2.软件产品的规模及复杂度软件产品的规模及复杂度规模:按YOURDON分类法分为超小型,小型,中型,大型,超大型,极大型。复杂度:应用程序,实用程序,系统程序低 高3 3.开发所需时间开发所需时间 对确定规模、复杂度的软件存在一个”最佳开发时间”。4.4.软件开发技术水平软件开发技术水平 指开发方法、工具、语言等,技术水平高,效率高。5.5.软件可靠性要求软件可靠性要求 可靠性要求愈高,成本愈高。2.2 成本估算技术2.2 成本估算技术二.软件成本的估算量 源代码行(LOC)机器指令行/非机器语言的执行步 开发工作量
25、人-月(PM)人-年(PY)人-日(PD)软件生产率LOG/PM¥/LOC¥/PM 软件开发时间其中:ai 估计的最小行数 bi 估计的最大行数 mi 最可能的行数2.2.1 专家估算模型 即源代码行源代码行估算模型估算模型(Deiphi技术)由Rand公司提出的Deiphi技术,是由n位专家进行成本估算。每位专家根据系统规格说明书,反复讨论给出ai、bi及 mi的值,并按照下式反复估算源代码的期望值Li,期望中值L。ai+4mi+bi 61nLi=L=将估算的源代码行数,乘以根据经验推算的每行源代码所需成本,即为该软件的成本。2.2.2 IBM 估算模型 1977年由Waiston和Feli
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 软件项目管理 软件 项目 管理
限制150内