您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第2章 软件项目管理
项目管理是广泛应用于各种工程、金融等技术管理过程,管理的好坏决定了工程的成败。软件及IT行业,尤其是软件产品的特殊性,软件项目管理对于保证软件产品的质量具有极为重要的作用,是决定一个产品或企业能否成功的最重要的指标。2.1软件项目管理概述不可见性不确定性人员流动性2.1软件项目管理概述随着软件的规模和复杂度的不断增大,开发人员的增加以及开发时间的增长,这些都增加了软件项目管理的难度。例如:Windows2000的开发是微软公司历史上最艰巨的任务,仅核心部门的的成员就有2500人,测试用的代码就有1000万行,测试中所用到的脚本程序就有6500种…。象规模如此之大的软件系统,如果没有科学的、规范的、有效的管理,是不可能成功的。因此软件项目管理成为软件工程的重要研究内容之一。2.1.1软件项目管理的任务过程(process)人员(people)工具(tools)产品(Product)项目(Project)参与自动化结果技术集成一、软件项目管理的“4P”二、软件项目管理过程软件项目管理,是对整个软件生存期的所有活动进行管理。主要过程包括:1.项目启动确定系统范围、组建项目团队、建立项目环境。2.项目规划确定项目活动、项目成本估算、制定进度计划3.项目实施监控项目执行、管理项目风险、控制项目变更4.项目收尾项目验收、软件安装培训、项目总结2.1.1软件项目管理的任务2.1.1软件项目管理的任务三、软件项目管理与过程管理的关系过程定义过程改进项目规划项目监控项目实施软件项目管理软件过程管理软件项目管理用于保证项目目标的成功实现,过程管理用于辅助项目管理,将最佳的项目实践用于软件开发过程。2.1.2项目管理的主要活动软件项目的规划人员的组织管理软件风险管理软件配置管理包括:可行性分析软件项目度量软件成本估算软件计划2.1.2项目管理的主要活动包括:人员配备原则人员配备模式软件团队建设软件项目沟通活动软件项目的规划人员的组织管理软件风险管理软件配置管理2.1.2项目管理的主要活动包括:风险识别风险分析风险规划风险监控软件项目的规划人员的组织管理软件风险管理软件配置管理2.1.2项目管理的主要活动是为了有效地控制和管理软件开发过程中的变化,进行标识、组织和控制修改的技术。配置管理活动:配置项的标识版本管理系统构建变更控制软件项目的规划人员的组织管理软件风险管理软件配置管理软件度量•软件度量的概念•软件规模度量•软件功能度量软件项目度量软件度量分类度量、估算•度量metrics度量具有数字特征,软件工程范围的度量是软件开发过程、软件资源或软件产品简单属性的定量描述。如,程序规模、操作符个数、程序中错误的个数等。•估算estimation对软件产品、过程、资源进行预测估算可以采用经验公式、或参考历史资料估算用于事前签订合同、立项、制定工作计划等软件的外部属性和内部属性•外部属性软件产品、过程、资源与环境的关系如,成本、效益、劳动生产率、可靠性、可维护性•内部属性软件产品、过程、资源、环境自身的属性如,产品结构、模块化程度、复杂性、程序长度等。产品-过程-资源•产品的内部属性程序代码长度程序功能模块化重用性控制流数据流模块耦合度与内聚度•产品的外部属性程序的可靠性可用性可维护性软件的可理解性有效性可移植性过程的内部属性工作量计划和进度一段时间内某类事件发生的次数过程的外部属性成本可控制性可观察性稳定性资源的内部属性人软硬件环境方法经验资源的外部属性成本时间面向规模的度量•代码行数LOC或KLOC•生产率Pl=L/E其中L软件项目代码行数E软件项目工作量(人月PM)Pl软件项目生产率(LOC/PM)•代码出错率EQRl=Ne/L其中Ne软件项目的代码错误数EQRl每千行代码的错误数•每行代码平均成本Cl=S/L其中S软件项目总开销(元/美元)Cl软件项目每行代码的平均成本•文档与代码比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平均成本:Cl=S/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是复杂性调节值Fi取值0,1,...,5当Fi=0时,表示Fi不起作用Fi=5时,表示Fi作用最大面向功能的度量表功能点度量测量参数值权值用户输入数□*4=□用户输出数□*5=□用户查询数□*4=□文件数□*7=□外部界面数□*7=□CT=□表2.1用户输入数用户输出数软件系统为用户提供的输出参数个数用户查询数一个联机输入确定一次查询,软件以联机输出的形式,实时地产生一个响应文件数外部界面数统计所有机器可读的界面,利用这些界面可以将信息从一个系统传送到另一个系统用功能点定义相应的概念•Pf=FP/E其中Pf表示每人月完成的功能点数•平均成本:Ci=S/FP其中Ci表示每功能点的平均成本•文档与功能点比:Di=Pd/FP其中Di表示每个功能点平均具有的文档页数•代码出错率:EORi=Ne/FP其中EORi表示每个功能点的平均错误个数面向功能的度量•软件规模的功能点度量没有直接涉及软件系统本身的算法复杂性。•1986年Jones把软件项目中的算法复杂性因素引入到功能点计算中来,为了避免混淆,我们把Albrecht定义的功能点称为简单功能点,用FPs表示,把Jones推广的功能点称为功能点,用FP表示。•推广的功能点包括计算机程序中用于各类问题求解的算法因素,如求解线性代数方程组、遍历二叉树的各个结点、处理中断等等。•功能点计算仍用上面的公式,其中CT按表2.2计算。表推广的功能点度量测量参数值权值用户输入数□*4=□用户输出数□*5=□用户查询数□*4=□文件数□*7=□外部界面数□*7=□算法□*3=□CT=□•对一般的工程计算或事务处理软件,用表2.1和表2.2两种方法计算出来的FP值应该基本上相同•对于比较复杂的软件系统FP比FPs的值高20%~35%面向功能的度量的优缺点优点①与程序设计语言无关,它不仅适用于过程式语言,也适用于非过程式的语言;②软件项目开发初期就能基本上确定系统的输入、输出等参数,功能点度量能用于软件项目的开发初期。缺点①它涉及到的主观因素比较多,如各种权函数的取值;②信息领域中的某些数据有时不容易采集;③FP的值没有直观的物理意义。代码行度量与功能点度量的比较•代码行度量依赖于程序设计语言,而功能点度量不依赖于程序设计语言。•Albrecht和Jones等人对若干软件采用事后处理的方式分别统计出不同程序设计语言每个功能点与代码行数的关系,用LOC/FP的平均值表示。•表2.3表明,一行Ada语言代码的“功能”平均是一行FORTRAN语言代码“功能”的1.4倍。一行四代语言代码的“功能”平均是一行传统程序设计语言代码“功能”的3至5倍。表各种语言的LOC/FP(平均值)程序设计语言LOC/FP(平均值)汇编语言300COBOL100FORTRAN100Pascal90Ada70面向对象的语言30四代语言(4GL)20代码生成器15软件复杂性度量1976年T.J.McCabeMcCabe度量法又称环路复杂性度量,基于程序控制结构的软件复杂性度量模型。程序控制结构图•程序结构对应于有一个入口结点和一个出口结点的有向图•图中每个结点对应一个语句或一个顺序流程的程序代码块•弧对应于程序中的转移•它基于一个程序模块的程序图中环路的个数,因此计算它先要画出程序图。•程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。McCabe度量法McCabe用程序控制结构图的巡回秩数V(G)作为程序结构复杂性的度量V(G)=e-n+2其中:en为结构图的结点数可以证明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+p=13-11+1=3.p=1McCabe建议把V(G)作为模块规模的定量指标,一个模块V(G)的值不要大于10当V(G)10时,模块内部结构就会变得复杂,给编码和测试带来困难。•这种度量的缺点是:–对于不同种类的控制流的复杂性不能区分–简单IF语句与循环语句的复杂性同等看待–嵌套IF语句与简单CASE语句的复杂性是一样的–模块间接口当成一个简单分支一样处理–一个具有1000行的顺序程序与一行语句的复杂性相同软件项目计划与估算软件项目计划•软件项目管理人员在开发工作一开始需要进行定量估算。•软件项目计划的目标是提供一个能使项目管理人员对资源、成本和进度做出合理估算的框架。•这些估算应当在软件项目开始时的一个有限的时间段内做出,并且随着项目的进展定期进行更新。软件项目计划的目标软件的范围•软件范围包括功能、性能、限制、接口和可靠性。•估算开始时,应对软件的功能进行评价,对其进行适当的细化以便提供更详细的细节。由于成本和进度的估算都与功能有关,因此常常采用某种程度的功能分解。•性能的考虑包括处理和响应时间的需求。•约束条件则标识产品成本、外部硬件、可用存储或其它现有系统对软件的限制。•软件与其它系统元素是相互作用的。要考虑每个接口的性质和复杂性,以确定对开发资源、成本和进度的影响。软件开发中的资源软件项目估算常用的估算方法①参照已经完成的类似项目估算待开发项目的成本和工作量。②将大的项目分解成若干子项目,在估算出每个子项目成本和工作量之后,再估算整个项目。③将软件项目按软件生存周期分解,分别估算出软件项目在软件开发各个阶段的工作量和成本,然后再把这些工作量和成本汇总估算整个项目。④根据实验或历史数据给出软件项目工作量或成本的经验估算公式。•四种方法可以同时、单独或组合使用,以便取长补短,提高项目估算的精度和可靠性。•采用分解技术估算软件项目应考虑系统集成时需要的工作量。•为了实现软件项目估算,实践中开发了大量的软件项目自动估算工具,用以支持软件工作量或成本估算。•分解技术采用”分而治之”的策略进行软件项目估算.将项目分解为若干个主要的功能及相关的软件工程活动,通过逐步求精的方式进行成本及工作量估算。•经验估算模型可用于补充分解技术•自动估算工具实现一种或多种分解技术或经验模型,与人机交互结合,自动估算将是很好的选择。代码行、功能点和工作量估算•软件项目的规模是影响软件项目成本和工作量的重要因素。•软件项目代码行和功能点估算是成本和工作量估算的基础。•采用上面的估算方法可以估算出LOC或FP的乐观值a,悲观值b和一般值m,然后根据下列加权公式计e=(a+4m+b)/6希望LOC或FP的值落在区间[a,b]之外的概率极小•当LOC或FP的期望值估算出来
本文标题:第2章 软件项目管理
链接地址:https://www.777doc.com/doc-3418990 .html