版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章软件项目管理 项目管理的概念软件项目度量软件项目计划与估算风险分析和管理项目进度安排软件质量保证软件配置管理第三章软件项目管理 项目管理的概念项目管理的谱系人员管理产品管理项目管理过程管理软件项目管理项目参与者项目负责人软件项目组协调通信问题软件范围问题分解确定软件过程模型过程分解确定危险信息确定解决方案项目管理的谱系人员管理产品管理项目管理过程管理软件项目管理项
软件项目管理的目的、任务和内容目的为了使软件项目能够在预定成本、进度、质量的前提下顺利完成,必须对软件工程项目进行计划、组织、监控和管理任务制定软件项目的实施计划和方案;对人员进行组织和分工;按照计划进度,以及成本管理、风险管理、质量管理的要求进行软件开发,完成软件项目的各项要求和任务。
软件项目管理的目的、任务和内容目的3.1.1软件度量软件度量的概念软件规模度量软件功能度量3.1软件项目度量软件度量分类3.1.1软件度量软件度量的概念3.1软件项目度量软件度3.1.1.1度量、估算度量metrics 度量具有数字特征,软件工程范围的度量是软件开发过程、软件资源或软件产品简单属性的定量描述。如,程序规模、操作符个数、程序中错误的个数等。估算estimation 对软件产品、过程、资源进行预测 估算可以采用经验公式、或参考历史资料 估算用于事前签订合同、立项、制定工作计划等3.1.1.1度量、估算度量metrics
软件的外部属性和内部属性外部属性软件产品、过程、资源与环境的关系如,成本、效益、劳动生产率、可靠性、可维护性内部属性软件产品、过程、资源、环境自身的属性如,产品结构、模块化程度、复杂性、程序长度等。软件的外部属性和内部属性产品-过程-资源产品的内部属性程序代码长度程序功能模块化重用性控制流数据流模块耦合度与内聚度产品的外部属性程序的可靠性可用性可维护性软件的可理解性有效性可移植性产品-过程-资源产品的内部属性过程的内部属性工作量计划和进度一段时间内某类事件发生的次数过程的外部属性成本可控制性可观察性稳定性资源的内部属性人软硬件环境方法经验资源的外部属性成本时间过程的内部属性3.1.1.2面向规模的度量代码行数LOC或KLOC生产率
Pl=L/E
其中L软件项目代码行数
E软件项目工作量(人月PM)Pl
软件项目生产率(LOC/PM)代码出错率
EQRl=Ne/L
其中Ne软件项目的代码错误数
EQRl
每千行代码的错误数3.1.1.2面向规模的度量代码行数LOC或KLOC每行代码平均成本
Cl=S/L
其中S软件项目总开销(元/美元)
Cl软件项目每行代码的平均成本文档与代码比
Dl=Pd/L
其中Pd软件项目文档页数
Dl每千行代码的平均文档数每行代码平均成本例软件项目记录项目工作量
PM成本万美元代码行kLOC文档页数
Pd错误数
Ne人数
MAaa-012416.812.1365293Ccc-046244.027.21224865Fff-034331.420.21050646例软件项目记录项目工作量成本代码行文档页数错误数人数Aa生产率: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生产率:Pl=L/E=12.1kLoc/24PM=504Lo
规模度量的优缺点用软件代码行数估算软件规模简单易行。缺点代码行数的估算依赖于程序设计语言的功能和表达能力;采用代码行估算方法会对设计精巧的软件项目产生不利的影响;在软件项目开发前或开发初期估算它的代码行数十分困难;代码行估算只适用于过程式程序设计语言,对非过程式的程序设计语言不太适用等等。规模度量的优缺点用软件代码行数估算软件规模简单易行。
根据事务信息处理程序的基本功能定义的,在系统设计初期可以估算出软件项目的规模
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=□用户查询数□*4=□文件数□*7=□外部界面数□*7=□CT=
□表3.1功能点度量测量参数值
表3.1中的五个信息量按下列方式取值用户输入数
用户为软件提供的输入参数个数用户输出数
软件系统为用户提供的输出参数个数用户查询数
一个联机输入确定一次查询,软件以联机输出的形式,实时地产生一个响应文件数
统计逻辑的主文件个数外部界面数
统计所有机器可读的界面,利用这些界面可以将信息从一个系统传送到另一 个系统
表3.1中的五个信息量按下列方式取值用功能点定义相应的概念生产率:
Pf=FP/E
其中Pf表示每人月完成的功能点数平均成本: Ci=S/FP其中Ci表示每功能点的平均成本文档与功能点比: Di=Pd/FP其中Di表示每个功能点平均具有的文档页数代码出错率: EORi=Ne/FP其中EORi表示每个功能点的平均错误个数用功能点定义相应的概念
面向功能的度量软件规模的功能点度量没有直接涉及软件系统本身的算法复杂性。1986年Jones把软件项目中的算法复杂性因素引入到功能点计算中来,为了避免混淆,我们把Albrecht定义的功能点称为简单功能点,用FPs表示,把Jones推广的功能点称为功能点,用FP表示。推广的功能点包括计算机程序中用于各类问题求解的算法因素,如求解线性代数方程组、遍历二叉树的各个结点、处理中断等等。功能点计算仍用上面的公式,其中CT按表3.2计算。面向功能的度量软件规模的功能点度量没有直接涉及软件系统本
表3.2推广的功能点度量
测量参数值权值用户输入数□*4=□用户输出数□*5=□用户查询数□*4=□文件数□*7=□外部界面数□*7=□算法□*3=□CT=
□对一般的工程计算或事务处理软件,用表3.1和表3.2两种方法计算出来的FP值应该基本上相同对于比较复杂的软件系统
FP比FPs的值高20%~35%表3.2推广的功能点度量测量参数值
面向功能的度量的优缺点优点①与程序设计语言无关,它不仅适用于过程式语言,也适用于非过程式的语言;②软件项目开发初期就能基本上确定系统的输入、输出等参数,功能点度量能用于软件项目的开发初期。缺点①它涉及到的主观因素比较多,如各种权函数的取值;②信息领域中的某些数据有时不容易采集;③FP的值没有直观的物理意义。面向功能的度量的优缺点优点3.1.1.4代码行度量与功能点度量的比较代码行度量依赖于程序设计语言,而功能点度量不依赖于程序设计语言。Albrecht和Jones等人对若干软件采用事后处理的方式分别统计出不同程序设计语言每个功能点与代码行数的关系,用LOC/FP的平均值表示。表3.3表明,一行Ada语言代码的“功能”平均是一行FORTRAN语言代码“功能”的1.4倍。一行四代语言代码的“功能”平均是一行传统程序设计语言代码“功能”的3至5倍。3.1.1.4代码行度量与功能点度量的比较代码行度量依赖于
表3.3各种语言的LOC/FP(平均值)程序设计语言LOC/FP(平均值)汇编语言300COBOL100FORTRAN100Pascal90Ada70面向对象的语言30四代语言(4GL)20代码生成器15
表3.3各种语言的LOC/FP(平均值)程序设计语言3.1.2软件复杂性度量1976年T.J.McCabeMcCabe度量法又称环路复杂性度量,基于程序控制结构的软件复杂性度量模型。程序控制结构图
程序结构对应于有一个入口结点和一个出口结点的有向图图中每个结点对应一个语句或一个顺序流程的程序代码块弧对应于程序中的转移它基于一个程序模块的程序图中环路的个数,因此计算它先要画出程序图。程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。3.1.2软件复杂性度量1976年T.J.McCabeMcCabe度量法
McCabe用程序控制结构图的巡回秩数V(G)作为程序结构复杂性的度量
V(G)=e-n+2
其中:e为结构图的边数
n为结构图的结点数可以证明V(G)等于结构图中有界或无界的封闭区域个数McCabe度量法McCabe用程序控制结构图的巡回例3.1计算程序控制结构的V(G)值E=1E=3N=2N=3V=1V=2例3.1计算程序控制结构的V(G)值E=1计算程序控制结构的V(G)值E=4E=3N=4N=3V=2V=2计算程序控制结构的V(G)值E=4计算程序控制结构的V(G)值E=6N=5V=3计算程序控制结构的V(G)值E=6例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.例3.1计算如图所示程序控制结构图的V(G)值。示例:示例:在前面的例示中,n=11,m=13,V(G)=m-n+p=13-11+1=3.p=1McCabe建议把V(G)作为模块规模的定量指标,一个模块V(G)的值不要大于10当V(G)>10时,模块内部结构就会变得复杂,给编码和测试带来困难。
在前面的例示中,McCabe建议把V(G)作为模块规模的定量这种度量的缺点是:对于不同种类的控制流的复杂性不能区分
简单IF语句与循环语句的复杂性同等看待
嵌套IF语句与简单CASE语句的复杂性是一样的
模块间接口当成一个简单分支一样处理一个具有1000行的顺序程序与一行语句的复杂性相同
这种度量的缺点是:3.2软件项目计划与估算3.2.1软件项目计划软件项目管理人员在开发工作一开始需要进行定量估算。软件项目计划的目标是提供一个能使项目管理人员对资源、成本和进度做出合理估算的框架。这些估算应当在软件项目开始时的一个有限的时间段内做出,并且随着项目的进展定期进行更新。软件项目计划的目标3.2软件项目计划与估算3.2.1软件项目计划软件
软件的范围软件范围包括功能、性能、限制、接口和可靠性。估算开始时,应对软件的功能进行评价,对其进行适当的细化以便提供更详细的细节。由于成本和进度的估算都与功能有关,因此常常采用某种程度的功能分解。性能的考虑包括处理和响应时间的需求。约束条件则标识产品成本、外部硬件、可用存储或其它现有系统对软件的限制。软件与其它系统元素是相互作用的。要考虑每个接口的性质和复杂性,以确定对开发资源、成本和进度的影响。软件的范围软件开发中的资源软件开发中的资源软件项目管理课程课件3.2.2软件项目估算常用的估算方法①参照已经完成的类似项目估算待开发项目的成本和工作量。②将大的项目分解成若干子项目,在估算出每个子项目成本和工作量之后,再估算整个项目。③将软件项目按软件生存周期分解,分别估算出软件项目在软件开发各个阶段的工作量和成本,然后再把这些工作量和成本汇总估算整个项目。④根据实验或历史数据给出软件项目工作量或成本的经验估算公式。3.2.2软件项目估算常用的估算方法四种方法可以同时、单独或组合使用,以便取长补短,提高项目估算的精度和可靠性。
采用分解技术估算软件项目应考虑系统集成时需要的工作量。为了实现软件项目估算,实践中开发了大量的软件项目自动估算工具,用以支持软件工作量或成本估算。四种方法可以同时、单独或组合使用,以便取长补短,提高项目估算分解技术采用”分而治之”的策略进行软件项目估算.将项目分解为若干个主要的功能及相关的软件工程活动,通过逐步求精的方式进行成本及工作量估算。经验估算模型可用于补充分解技术自动估算工具实现一种或多种分解技术或经验模型,与人机交互结合,自动估算将是很好的选择。分解技术3.2.2.1代码行、功能点和工作量估算软件项目的规模是影响软件项目成本和工作量的重要因素。软件项目代码行和功能点估算是成本和工作量估算的基础。采用上面的估算方法可以估算出LOC或FP的乐观值a,悲观值b和一般值m,然后根据下列加权公式计算出期望值
e=(a+4m+b)/6
希望LOC或FP的值落在区间[a,b]之外的概率极小3.2.2.1代码行、功能点和工作量估算软件项目的规模是影当LOC或FP的期望值估算出来之后,根据以前软件项目开发的平均生产率LOC/PM或FP/PM就可以计算出工作量。如,软件项目的规模估算为310FP,以前完成的软件项目的生产率为5.5FP/PM,于是工作量估算为E=310/5.5=56PM。当LOC或FP的期望值估算出来之后,根据以前软件项目开发的平例3.2估算计算机辅助设计软件项目将CAD项目按功能分解为七个子项目①用户界面和控制;②二维几何分析;③三维几何分析;④数据库管理;⑤计算机图形显示;⑥外设控制;⑦设计分析。表3.4给出七个子项目代码行的乐观估计、悲观计和一般估计值,然后计算出加权平均值。
例3.2估算计算机辅助设计软件项目将CAD项目按功能分估算计算机辅助设计软件项目
分析七个子项目的规模复杂性和难度,参照以前开发类似项目的经验给出开发每行代码的平均成本,每月开发的代码行数。用这两组数据计算出七个子项目的开发成本和工作量。最后汇总的CAD软件开发项目规模为33360LOC
成本为656680$工作量为144.5PM。估算计算机辅助设计软件项目分析七个子项目的规模复杂性再用这两种方法分别估算软件开发子项目在软件工程各个阶段的工作量,估算结果列入表3.5。两种方法估算的工作量分别为144.5PM和152.5PM,相差5%左右。估算的成本分别为656680$和708075$,相差7%左右。
两种方法估算的工作量和成本基本一致。
再用这两种方法分别估算软件开发子项目在软件工程各个阶段的工作表3.4代码行和成本、工作量估算
功能乐观
一般
悲观
加权$LOC成本工作量
LOCLOCLOC平均/LOC/PM$(人月)用户界面控制179024002650234014315327607.4二维几何分析40805200740053802022010760024.4三维几何分析46006900860068002022013600030.9数据库管理2900340036003350182406030013.9图形显示39004900620049502220010890024.7外设控制19902100
24502140281405992015.2设计分析66008500980084001830015120028.0总计33360656680144.5表3.4代码行和成本、工作量估算功能乐观
表3.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总计(人月)14.56126.550.5152.5每人月成本52004800
42504500成本($)75400292800112625
227250708075表3.5工作量估算功能需求分析3.2.2.2经验估算模型之一CoCoMo模型计算机软件的估算模型是根据以前完成项目的实际数据导出的,用于软件项目的计划阶段。模型是根据“从前的”,“局部的”数据得出的,估算模型不可能完全适用于当前所有的软件项目和全部开发环境。这些模型的计算结果仅供参考。两个常用的估算模型
CoCoMo模型Putnam模型3.2.2.2经验估算模型之一CoCoMo模型计算机
CoCoMo模型1981年Boehm提出“构造性成本模型”(ConstructiveCostModel),简称CoCoMo模型。它是在静态、单变量模型的基础上构造出来的。
CoCoMo模型分为基本、中间、详细三个层次,分别用于软件开发的三个不同阶段。基本CoCoMo模型用于系统开发的初期,估算整个系统的工作量(包括软件维护)和软件开发所需要的时间。中间CoCoMo模型用于估算各个子系统的工作量和开发时间。
详细CoCoMo模型用于估算独立的软部件,如子系统内部的各个模块。
CoCoMo模型1981年Boehm提出“构造性成本模型
1基本CoCoMo模型静态、单变量模型
E=aLb(3-1)D=cEd(3-2)其中:E表示工作量,单位是人月(PM)。D表示开发时间,单位是月(M)。L是项目的代码行估计值,单位是千行代码
a,b,c,d是常数,取值如表3.6所示。
Boehm把软件划分为组织型、半独立型和嵌入型三类,允许不同应用领域和复杂程度的软件按照三类软件的适用范围选取相应的参数a,b,c,d。给出了代码行数与工作量、工作量与开发时间之间的函数关系1基本CoCoMo模型静态、单变量模型
表3.6简单CoCoMo模型参数软件类型abcd适用范围组织型2.41.052.50.38各类应用程序半独立型3.01.122.50.35各类实用程序、编译程序等嵌入型3.61.202.50.32实时处理、控制程序、操作系统表3.6简单CoCoMo模型参数软件类型
2中间CoCoMo模型中间CoCoMo模型以基本CoCoMo模型为基础,在工作量估计公式中乘以工作量调节因子EAFE=aLb*EAF
(3-3)其中:L是软件产品的目标代码行数
a,b是常数,取值如表3.7所示。2中间CoCoMo模型中间CoCoMo模型中间CoCoMo模型表3.7中间CoCoMo模型参数软件类型ab
组织型3.21.05半独立型3.01.12嵌入型2.81.20中间CoCoMo模型表3.7中间CoCoMo模型参数
CoCoMo模型
工作量调节因子EAF与软件产品属性、计算机属性、人员属性、项目属性有关软件产品属性软件可靠性、软件复杂性、数据库的规模。计算机属性程序执行时间、程序占用内存的大小、软件开发环境的变化、软件开发环境的响应速度。人员属性分析员的能力、程序员的能力、有关应用领域的经验、开发环境的经验、程序设计语言的经验项目属性软件开发方法的能力,软件工具的质量和数量、软件开发的进度要求。CoCoMo模型工作量调节因子EAF与软件产品属性
CoCoMo模型四种属性共15个要素。每个要素调节因子Fi,i=1,2,...,15,的值分为:很低、低、正常、高、很高、极高,共六级。正常情况下Fi=1。Boehm推荐的Fi值范围
(0.70,0.85,1.00,1.15,1.30,1.65)
当15个Fi的值选定后,EAF的计算如下
EAF=F1*F2*……*F15
CoCoMo模型四种属性共15个要素。
CoCoMo模型
调节因子集的定义和调节因子定值是由统计结果和经验决定的。不同的软件开发组织,在不同的历史时期,随着环境的变化,这些数据可能改变。
使用中间CoCoMo模型可以估算开发软件产品的工作量,比较各种开发方案的工作量。CoCoMo模型调节因子集的定义和调节因子定值
例3.3用基本CoCoMo模型估算例3.2工作量、开发时间和项目开发人数在例3.2中,目标代码行数为33.3KLOCCAD软件开发属于中等规模、半独立型从表3.7中查到a=3.0,b=1.12。代入公式(3-1)
E=3.0*L1.12=3.0*33.31.12=152PM例3.3用基本CoCoMo模型估算例3.2工作量、开发将E的估算值代入公式(3-2)取C=2.5d=0.35D=2.5*E0.35=2.5*1520.35=14.5M
建议参加项目开发的人数
N=E/D=152/14.5≈11例中计算出来的11人是粗略估计在软件项目开发过程中,11个人不可能都有相同的能力和个性,相同的经验和知识结构,并且在软件开发的各个阶段对人的要求也不同。将E的估算值代入公式(3-2)
CoCoMo模型
若干人共同开发一个软件项目还应该增加他们之间相互通信和交换意见的额外工作量。
设
N个程序员组成小组,实现相同规模的程序,相互通信数为 =N(N-1)/2
每次通信和交换意见的平均工作量为μ则增加的通信开销为
Ec=μN(N-1)/2(3-4)CoCoMo模型若干人共同开发一个软件项目还应该例3.4计算一个程序的通信开销
3人和5人开发一个程序相互通信和交换意见的关系如图所示
将N=3和N=5分别代入公式(3-4)
Ec(3)=μ3(3-1)/2=3μ
Ec(5)=μ5(5-1)/2=10μ例3.4计算一个程序的通信开销3人和5
CoCoMo模型
由N个程序员组成的小组共同开发一个程序总的工作量ET满足
ET=E+Ec
(3-5)程序员小组的生产率是
PG=LOC/(E+Ec)
(3-6)程序员小组生产率和单个程序员生产率的比为
Rp=E/(E+Ec)
(3-7)
随着程序员小组人数的增加,Ec≈μN2/2,程序员小组的生产率将会下降。模型表明
盲目增加程序员人数会推迟软件完成的日期CoCoMo模型由N个程序员组成的小组共同开发
3.2.2.3经验估算模型之二:Putnam模型
1978年,Putnam提出了大型软件项目工作量(一般在30人年以上)估算模型。它是一个动态多变量模型,适用于软件开发的各个阶段,估算模型以大型软件项目的实测数据为基础,导出工作量分布曲线。该曲线与著名的Rayleigh-Norden(R-N)曲线相似,它描述了开发工作量,开发时间和软件代码行数之间的关系。3.2.2.3经验估算模型之二:Putnam模型1978
Putnam模型方程
L=CKE1/3td4/3(3-8)其中:L表示源程序代码行数
td表示开发时间
Ck表示技术状态常数
E表示工作量(以人年记,包括维护)Putnam模型揭示了软件项目的工作量、软件开发时间和程序代码长度三者之间的关系Putnam模型方程Putnam模型揭示了软件项目Putnam模型差的软件开发环境软件开发没有方法学的支持,缺乏对文档的评审,采用批处理方式。一般的软件开发环境应有软件开发方法学的支持,有适宜的文档和评审,采用交互处理方式。好的软件开发环境应采用CASE工具和集成化CASE环境。
CK=2000比较差的软件开发环境8000一般的软件开发环境11000比较好的软件开发环Putnam模型差的软件开发环境
Putnam模型
由(2-18)334
E=L/(CK*td)(3-9)td对应于Rayleigh-Norden曲线的最大值,表示软件交付时工作量最大,参与软件项目的人最多。当工作量估算出来之后,利用每人年的开销($/PY)可以估算成本。公式(3-9)表明,开发软件项目的工作量与交货时间的4次方成反比,将0.9td代替(3-9)式的td计算E发现,提前10%的时间要增加52%的工作量,降低了软件开发生产率。软件开发过程中人员与时间的折衷是一个十分重要的问题。Putnam模型由(2-18)Putnam模型Putnam模型3.3.1风险分析风险的概念风险与将要发生的事情有关,研究风险就是研究明天将要发生的事情风险涉及思想、观念、行为、地点、时间等多种因素风险随条件的变化而改变,人们通过改变、选择、控制与风险密切相关的条件减少、回避风险改变、选择、控制条件的策略是不确定的3.3风险分析和管理3.3.1风险分析风险的概念3.3风险分析和管理软件风险软件风险和其它风险一样存在不确定性,有些是很难预测的。对风险的不确定性进行量化,估算某一风险可能带来的损失。除关注软件项目的一般性风险外,还要关注软件项目的特殊风险,如项目的背景、特殊要求、关键内容、薄弱环节、技术难点、人员状况、工作环境等。
软件风险软件风险和其它风险一样存在不确定性,有些是很难预测的
软件项目存在各种风险,人们关心的问题:什么风险会导致软件项目的彻底失败?顾客需求、开发环境、目标机、时间、成本的改变对软件项目的风险会产生什么影响?人们必须抓住什么机会、采取什么措施才能有效地减少风险、顺利完成任务?
软件项目存在各种风险,人们关心的问题:不同类型的风险项目风险预算、进度、人力、资源、客户及需求项目的复杂度、规模、结构的不确定性等技术风险设计、实现、接口、验证和维护规约的二义性、技术的不确定性、陈旧的技术、领先的技术商业风险无需求的产品、策路风险、管理风险、预算风险不同类型的风险项目风险软件风险分析包括的部分风险标识风险估算风险规划风险监控软件风险分析包括的部分软件风险分析软件风险分析1风险标识对待风险不能采取回避态度项目开始时应对一般性风险和特定产品风险进行系统标识,並随着项目的展开不断更新。一般可预测风险产品规模、商业影响、客户、过程、技术、环境、人员及经验等。识别风险的有效方法风险检测表为了帮助项目管理人员、项目规划人员,全面了解软件开发过程存在的风险,
Boehm建议设计并使用各类风险检测表,表中条目指明,常見並可预测的风险。有些风险可以预料,有些很难预料。1风险标识对待风险不能采取回避态度例3.6人员配备风险检测表(1)开发人员的水平如何。(2)开发人员在技术上是否配套。(3)开发人员的数量如何。(4)开发人员是否能够自始至终地参加软件开发工作。(5)开发人员是否能够集中全部精力投入到软件开发工作。(6)开发人员对自己的工作是否有正确的期望。(7)开发人员是否接受过必要的培训。(8)开发人员的流动是否能够保证工作的连续性。上述问题可以选用0,1,2,3,4,5来回答。完全肯定取值为0,反之为5,中间情况分别取值1,2,3,4值越大表示风险越大。人员配备风险检测表反映了人的因素给软件项目带来的风险。例3.6人员配备风险检测表(1)开发人员的水平如何。2风险估算
如果某一风险检测表由m项组成,每项选取一个整数值0,1,…,N,在最理想的情况取值为0,反之取值为N,对于中间状态依次取值1,2,…,N-1
当N=1时取值0,1,对应布尔量真/假(T/F)
设第i种风险检测表第j项取值Xij,对应的加权系数是Wij,于是第i种风险的估算值可以定义为
mσi=∑WijXij/(mN)j=1
其中∑Wij=m,Wij≥0(3—10)2风险估算如果某一风险检测表由m项组成,每项选取一个风险估算
如果第i种风险对整个软件项目的风险估算加权系数是ρi,i=1,2,…,l.为风险要素的个数,∑ρi=1,则软件项目风险估算定义为
l
R=∑ρiσi
(3—11)
i=10≤R≤1当R接近于0时表示风险比较小,R接近于1时表示风险比较大。当ρiσi比较大时,表示第i类风险出现并带来不良影响的可能性比较大,必须引起足够重视,设法改善条件,减小σi的值。风险估算如果第i种风险对整个软件项目的风险估算加权系数是3风险评价和管理
风险评价是风险管理的重要步骤任务进一步审查风险预测的精度;更新风险优先次序;考虑控制和/或避免可能发生风险的办法。3风险评价和管理风险评价是风险管理的重要步骤风险评价定义用三元组[ri,li,xi]描述风险,i=1,2,3…
其中:ri表示风险
li表示风险发生的概率
xi表示风险产生的影响对大多数软件项目,应该定义性能、成本及进度的风险参考水平值,当某一风险或风险组合值超过水平值时项目被迫停止。风险评价定义风险评估的步骤1定义项目的风险参考水平值;2建立三元组,给出相应的参考水平值;3预测一组临界点,定义项目终止区域;4预测什么样的风险组合会影响参考水平值风险评估的步骤1定义项目的风险参考水平值;风险表(1/3)
风险类别概率影响RMMM123项目开始时应在第一列列出所有风险;第二列给出风险类别;第三列给出每种风险发生的概率;第四列给出各种风险产生影响的评估值;第五列给出风险缓解、监控和管理计划。风险表(1/3)风险类别概率风险表(2/3)评估值按风险因素:性能、成本、进度的影响类别求加权平均值影响类别取值:灾难的1,严重的2,轻微的3,可忽略的4。对风险表中的风险按照发生概率大小、影响大小,由大至小排序。风险表(2/3)评估值按风险因素:风险表(3/3)项目管理者对风险表进行研究后应定义一条中止线,线上的风险较大者应给予特别的关注,线下的风险需要进一步的跟踪、评估、排序。对风险发生概率较大的事件应引起特别关注,要及早采取措施尽量避免它的发生。风险表(3/3)项目管理者对风险表进行研究后应定义一条中止线软件项目管理课程课件风险评价和管理三元组[ri,li,xi]是风险管理的基础设高级职员流动给项目带来风险r1,
根据历史的经验或直观感觉,高级职员离开课题组的概率l1=70%,
这一风险导致事件x1发生
项目开发时间延长15%,成本增加20%.风险评价和管理三元组[ri,li,xi]是风险管理的基础项目负责人采取的风险管理措施(1)项目开始前控制产生风险的原因。项目开工后应设法减轻风险的影响。(2)了解项目开发人员变动的原因,在项目开发期间应控制上述原因,尽量减少人员的流动。(3)在工作方法和技术上采取适当措施,防止因人员流动给工作带来损失。(4)项目在开发过程中应及时公布并交流项目开发的信息。(5)建立组织机构,确定文档标准、并及时生成文档。(6)对工作进行集体复审,使多数人都能了解工作的细节,跟上工作进度。(7)为关键技术准备后备人员。项目负责人采取的风险管理措施(1)项目开始前控制产生风险的原
RMMM计划风险缓解、监控和管理计划
RiskMitigation,Monitoring,andManagementPlan
将风险分析工作文挡化,成为项目的一部分。执行RMMM计划需要成本当软件项目比较大时,可能标出30至40种风险,如果为每种风险定义3至7种风险管理步骤,则风险管理本身就是一个项目。将Pareto的20-80规则用于软件项目的风险标识,即20%的风险具有0.80的权,而其余的80%风险只有0.20的权。要善于标识属于20%的主要风险,降低RMMM计划的规模和复杂性。RMMM计划风险缓解、监控和管理计划RMMM计划大纲
计划大纲1.引言1.1文挡的范回和目的1.2主要风险综述1.3责任1.3.1管理者1.3.2技术人员2.项目风险表2.1中止线以上的风险描述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.总结RMMM计划大纲3.风险缓解、监控和管理3.4项目进度安排
制定软件项目进度表有两种途径。(1)软件开发小组根据提供软件产品的最后期限从后往前安排时间。(2)软件项目开发组织根据项目和资源情况制定软件项目开发的初步计划和交付软件产品的日期。软件开发组织希望按照第二种方式安排工作进度。多数场合遇到的都是比较被动的第一种方式。对软件项目的进度安排比对软件成本的估算要求更高。成本的增加可以通过提高产品定价或通过大批量销售得到补偿,而项目进度安排不当会引起顾客不满,影响市场销售。
3.4项目进度安排制定软件项目进度表有两种途PERT技术和CPM方法PERT技术叫做计划评审技术(程序评估与审查技术)CPM方法叫做关键路径法它们都是安排开发进度,制定软件开发计划最常用的方法。它们都采用网络图来描述一个项目的任务网络,也就是从一个项目的开始到结束,把应当完成的任务用图的形式表达出来。通常用两张图来表示。一张图给出项目的所有任务,另一张图给出应按照什麽次序完成这些任务,给出各任务的衔接。PERT技术和CPM方法PERT和CPM方法提供了定量描述工具,包括①关键路径。完成关键路径上所有任务时间的总和,就是项目开发所需要的最短时间。②用统计模型估算开发每个子任务需要的工作量和时间。③计算各子任务的最早启动时间和最迟启动时间。
PERT和CPM方法提供了定量描述工具,包括软件项目管理课程课件例:某一项目进入编码阶段考虑如何安排三个模块A,B,C的开发工作,其中A是公用模块,B和C的测试有赖于A的调试C为现成已有的模块,但对它要做理解之后做部分修改。直到A,B,C做组装测试为止。图中各边表示要完成的任务,数字表示完成该任务的持续时间0为起点,8为终点。850412367起点A编码B编码A测试C修改C理解A调试BC组装测试C测试B测试B调试C调试68687886795终点开发模块任务网络图例:某一项目进入编码阶段考虑如何安排三个模块A,B,C图中各BAQPPQNo.0N0.1N0.2在组织较为复杂的项目时或需要对特定的任务进一步做更为详细的计划时,可以使用分层的任务网络图。分层任务网络图BAQPPQNo.0N0.1N0.2在组织较为复杂的项目时或一个概念开发的任务网络一个概念开发的任务网络软件项目的进度安排
1.任务分配、人力资源分配、时间分配要与工程进度相协调。2.任务分解与并行化3.工作量分布4-2-4分布原则4.工程进度安排使用程序评估与审查技术(PERT)或关键路径方法(CPM)生成任务网络图。软件项目的进度安排1.任务分配、人力资源分配、时间分软件项目的进度安排进度安排的图形方法甘特图计划完成文档编写ABCDE1234567891011121314任务周当前进度完成评审软件项目的进度安排进度安排的图形方法计划完成文档编写A1时间表的例子时间表的例子
3.5软件质量度量1)软件质量度量及三层次度量模型2)软件质量要素3)软件质量要素评价准则3.5软件质量度量1)软件质量度量及三层次度量模型软件质量度量及三层次度量模型软件质量是软件的生命,它直接影响软件的使用与维护。质量低下的软件不但影响基于计算机系统的工作效率,而且还可能给用户带来灾难性的后果。提高软件产品质量是软件工程的首要任务。软件开发人员、管理人员、维护人员和用户在软件开发、维护、使用过程中所处地位不同,对软件质量的理解和要求也不同。软件质量度量及三层次度量模型软件质量是软件的生命,它直接影响软件质量度量1976年Boehm提出了定量评价软件质量的概念,给出了60个软件质量度量公式和软件质量度量的层次模型1978年Walters和McCall提出了包括质量要素(factor)、准则(criteria)和度量(metric)的三层次软件质量度量模型G.Murine又提出了软件质量度量技术SQM用于定量地评价软件质量1985年国际标准化组织(ISO)提出了软件质量度量(SQM)工作报告软件质量度量1976年Boehm提出了定量评价软件质量的概念
三层次软件质量度量模型
质量要素(factor)评价准则(criteria)度量(metric)
三层次软件质量度量模型软件质量要素软件质量要素直接影响软件开发过程各个阶段的产品质量由于对软件质量理解的不断深化,软件质量要素不是一成不变的McCall等人给出的软件质量要素共11个,分为三类。软件质量要素软件质量要素直接影响软件开发过程各个阶段的产品质
McCall的软件质量要素软件的运行特征
正确性可靠性有效性完整性可用性软件承受修改的能力可维护性灵活性可测试性软件对新环境的适应程度可移植性可重用性可互操性
McCall的软件质量要素软件的运行特征软件的属性正确性(Correctness) 程序满足规格说明及完成用户目标的程度。
完整性(Integrity) 控制未被授权人员访问程序和数据的程度。可用性(Usability) 学习使用软件的难易程度。包括:操作软件、为软件准备输入数据,解释软件输出结果。灵活性(Flexibility)
改变一个操作程序所需的工作量。可测试性(Testability)
测试程序使之具有预定功能所需的工作量。可互操性(Interoperability)
两个或多个系统交换信息并相互使用已交换信息的能力。软件的属性正确性(Correctness)
软件质量要素之间的关系软件质量要素之间有正相关,也有负相关。系统设计过程中应根据具体情况对各种要素的要求进行折衷,以便得到在总体上用户和系统开发人员都满意的质量标准。而有效性不是影响系统成败的关键要素。
实时控制系统的可靠性、有效性是决定系统成败的关键要素,必须全力保证,而软件的可移植性、可重用性就不是主要的了。通用软件工具对可维护性、可移植性、可重用性应该给予更多的注意软件质量要素之间的关系软件质量要素之间有正相关,也有负相表3.8质量要素之间的关系
要正可有完可可可灵可可互素确靠效整用维测活移重操性性性性性护试性植用作正确性可靠性△有效性完整性-可用性△△-△可维护性△△-△可测试性△△-△△灵活性△△--△△△可移植性-△△可重用性---△△△△互操作性--△表3.8质量要素之间的关系要正可有完
3.5.1软件质量要素评价准则
直接测量软件质量要素十分困难,甚至是不可能的,McCall等人定义了一组比较容易度量的软件质量要素评价准则,通过评价准则间接测量软件质量要素。定义评价准则的关键是确定影响软件质量要素的属性。这些属性必须满足①比较完整、准确的描述软件质量要素;②比较容易量化和测量,能够反映软件质量的优劣。3.5.1软件质量要素评价准则直接测量软件质量要素十
McCall软件质量要素评价准则可审查性
准确性
通信通用性 完全性简明性
一致性数据通用性
容错性执行效率
可扩充性通用性
硬件独立性检测性
模块化可操作性
安全性自文档化
简单性软件系统独立性
可追踪性易培训性McCall软件质量要素评价准则可审查性 准确性
计算软件质量要素软件质量要素Fj的值可用下式计算
LFj=∑CjkMkj=1,2,……,11.
k=1其中:
Mk是软件质量要素Fj对第k种评价准则的测量值
Cjk是相应的加权系数 L∑Cjk=1其中,Cjk>=0
k=1当质量要素Fj与k项评价准则无关时,Cjk=0;McCall定义的评价准则多数都没有客观的测量方法,只能凭主观印象为评价准则定值。L表示评价准则的项数。对于McCall的评价准则,L=21。
McCall将评价准则分为0--10级。0级最低,10级最高。
Mk的取值是0,0.1,0.2,…,1.0计算软件质量要素软件质量要素Fj的值可用下式计算
表3.9质量要素与评价准则(1/2)要素关系准则正确性可靠性有效性完整性可维护可测试可移植可重用互操作可用性灵活性可审查性VV准确性V通信通用性V完全性V简明性VVV一致性VVVV数据通用性V容错性V执行效率V可扩充性V通用性VVVV要素正确性可靠性有效性完整
表3.10质量要素与评价准则(2/2)要素关系准则正确性可靠性有效性完整性可维护可测试可移植可重用互操作可用性灵活性硬件独立性VVVV检测性VVV模块化VVVVVVV可操作性VV安全性V自文挡化VVVVV简单性VVVV软件独立性VV可追踪性V易培训性V要素正确性可靠性软件质量的FURPS度量
国内外许多软件工程组织和专家在软件质量要素和评价准则的选取度量方面做了大量的工作,用于软件开发过程的质量控制和软件产品的质量度量。1987年Hewlett-Packard提出一组被称之为FURPS的软件质量要素。软件质量的FURPS度量国内外许多软件工程组织和专家软件质量的FURPS度量这组要素由功能性(Functionality)、可用性(Usability)、可靠性(Reliability)、性能(Performance)和可支撑性(Supportability)组成。Grad和Caswell给出了以调查报告/规格说明、设计、实现、测试、支撑为行,以上述要素为列的5行5列矩阵,通过对矩阵元素的度量导出软件开发过程和软件产品质量要素的FURPS度量。软件质量的FURPS度量这组要素由功能性(FunctionaFURPS软件貭量要素要素关系准则功能性可用性可靠性性能可支撑性论证报告/規格说明设计实现测试支撑环境FURPS软件貭量要素要素可支撑性论证报告/谢谢谢谢第三章软件项目管理 项目管理的概念软件项目度量软件项目计划与估算风险分析和管理项目进度安排软件质量保证软件配置管理第三章软件项目管理 项目管理的概念项目管理的谱系人员管理产品管理项目管理过程管理软件项目管理项目参与者项目负责人软件项目组协调通信问题软件范围问题分解确定软件过程模型过程分解确定危险信息确定解决方案项目管理的谱系人员管理产品管理项目管理过程管理软件项目管理项
软件项目管理的目的、任务和内容目的为了使软件项目能够在预定成本、进度、质量的前提下顺利完成,必须对软件工程项目进行计划、组织、监控和管理任务制定软件项目的实施计划和方案;对人员进行组织和分工;按照计划进度,以及成本管理、风险管理、质量管理的要求进行软件开发,完成软件项目的各项要求和任务。
软件项目管理的目的、任务和内容目的3.1.1软件度量软件度量的概念软件规模度量软件功能度量3.1软件项目度量软件度量分类3.1.1软件度量软件度量的概念3.1软件项目度量软件度3.1.1.1度量、估算度量metrics 度量具有数字特征,软件工程范围的度量是软件开发过程、软件资源或软件产品简单属性的定量描述。如,程序规模、操作符个数、程序中错误的个数等。估算estimation 对软件产品、过程、资源进行预测 估算可以采用经验公式、或参考历史资料 估算用于事前签订合同、立项、制定工作计划等3.1.1.1度量、估算度量metrics
软件的外部属性和内部属性外部属性软件产品、过程、资源与环境的关系如,成本、效益、劳动生产率、可靠性、可维护性内部属性软件产品、过程、资源、环境自身的属性如,产品结构、模块化程度、复杂性、程序长度等。软件的外部属性和内部属性产品-过程-资源产品的内部属性程序代码长度程序功能模块化重用性控制流数据流模块耦合度与内聚度产品的外部属性程序的可靠性可用性可维护性软件的可理解性有效性可移植性产品-过程-资源产品的内部属性过程的内部属性工作量计划和进度一段时间内某类事件发生的次数过程的外部属性成本可控制性可观察性稳定性资源的内部属性人软硬件环境方法经验资源的外部属性成本时间过程的内部属性3.1.1.2面向规模的度量代码行数LOC或KLOC生产率
Pl=L/E
其中L软件项目代码行数
E软件项目工作量(人月PM)Pl
软件项目生产率(LOC/PM)代码出错率
EQRl=Ne/L
其中Ne软件项目的代码错误数
EQRl
每千行代码的错误数3.1.1.2面向规模的度量代码行数LOC或KLOC每行代码平均成本
Cl=S/L
其中S软件项目总开销(元/美元)
Cl软件项目每行代码的平均成本文档与代码比
Dl=Pd/L
其中Pd软件项目文档页数
Dl每千行代码的平均文档数每行代码平均成本例软件项目记录项目工作量
PM成本万美元代码行kLOC文档页数
Pd错误数
Ne人数
MAaa-012416.812.1365293Ccc-046244.027.21224865Fff-034331.420.21050646例软件项目记录项目工作量成本代码行文档页数错误数人数Aa生产率: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生产率:Pl=L/E=12.1kLoc/24PM=504Lo
规模度量的优缺点用软件代码行数估算软件规模简单易行。缺点代码行数的估算依赖于程序设计语言的功能和表达能力;采用代码行估算方法会对设计精巧的软件项目产生不利的影响;在软件项目开发前或开发初期估算它的代码行数十分困难;代码行估算只适用于过程式程序设计语言,对非过程式的程序设计语言不太适用等等。规模度量的优缺点用软件代码行数估算软件规模简单易行。
根据事务信息处理程序的基本功能定义的,在系统设计初期可以估算出软件项目的规模
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=□用户查询数□*4=□文件数□*7=□外部界面数□*7=□CT=
□表3.1功能点度量测量参数值
表3.1中的五个信息量按下列方式取值用户输入数
用户为软件提供的输入参数个数用户输出数
软件系统为用户提供的输出参数个数用户查询数
一个联机输入确定一次查询,软件以联机输出的形式,实时地产生一个响应文件数
统计逻辑的主文件个数外部界面数
统计所有机器可读的界面,利用这些界面可以将信息从一个系统传送到另一 个系统
表3.1中的五个信息量按下列方式取值用功能点定义相应的概念生产率:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届四川省峨眉山市初三第二次统一检测试题物理试题含解析
- 2025-2026学年贵州省(黔东南黔南黔西南)初三数学试题周末限时训练含解析
- 2026年重庆市西南大附中新中考物理试题一轮复习专题跟踪检测试题含解析
- 2026年大学大一(机械设计制造及其自动化)模具设计基础测试题及答案
- 2025年前台防疫知识考核卷
- 护理伦理与患者安全
- 护理不良事件应急预案
- 护理护理信息技术课件
- 护理护士自我管理与压力应对
- 浅谈体验教学在小学语文作文教学中的应用
- 三级 模块二 项目六 功能促进 任务三 指导或协助老年人使用安全防护性辅助器具
- 2026年安徽工贸职业技术学院单招职业技能测试题库附答案详解ab卷
- 2026贵州省气象部门第二批公开招聘应届毕业生22人考试参考题库及答案解析
- 2026甘肃安泰集团有限责任公司招聘工作人员6人考试备考题库及答案解析
- 2026年咸宁职业技术学院单招职业倾向性测试题库及答案详解(网校专用)
- 浙江省名校协作体2024-2025学年高三下学期联考英语试题+答案
- 2026年上饶职业技术学院单招职业技能测试模拟测试卷附答案解析
- 迟到考勤考核制度
- 2025年番禺水务集团笔试及答案
- (2025年)室内装修三级安全教育试卷及答案
- 电厂设备刷漆制度规范
评论
0/150
提交评论