现代软件工程(第五讲)软件项目管理.ppt

上传人:夺命阿水 文档编号:259019 上传时间:2023-03-29 格式:PPT 页数:92 大小:610KB
返回 下载 相关 举报
现代软件工程(第五讲)软件项目管理.ppt_第1页
第1页 / 共92页
现代软件工程(第五讲)软件项目管理.ppt_第2页
第2页 / 共92页
现代软件工程(第五讲)软件项目管理.ppt_第3页
第3页 / 共92页
现代软件工程(第五讲)软件项目管理.ppt_第4页
第4页 / 共92页
现代软件工程(第五讲)软件项目管理.ppt_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《现代软件工程(第五讲)软件项目管理.ppt》由会员分享,可在线阅读,更多相关《现代软件工程(第五讲)软件项目管理.ppt(92页珍藏版)》请在课桌文档上搜索。

1、第五章 软件项目管理,2,2023年3月29日星期三,提纲,5.1 项目管理过程5.2 风险管理5.3 软件质量和效率度量5.4 软件项目估算5.5 软件项目进度安排5.6 项目组织结构设计5.7 项目过程监控,3,2023年3月29日星期三,5.1 项目管理过程,软件项目管理的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。为使软件项目开发获得成功,关键问题是必须对软件开发项目的工作范围、可能风险、需要资源(人、硬件软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等做到心中有数。软件项目管理可以提供上述信息。软件项目开于技术工作开始之前,持续进行与软件实现过程中,终

2、止于软件工作过程结束。,4,2023年3月29日星期三,5.1 项目管理过程,项目管理过程包括下列活动:5.1.1 启动一个软件项目5.1.2 度量5.1.3 估算5.1.4 风险分析5.1.5 进度安排5.1.6 追踪和控制,5,2023年3月29日星期三,5.1.1 启动一个软件项目,在制定软件项目计划之前,必须 明确项目的目标和范围 考虑候选的解决方案 标明技术和管理上的要求有了这些信息,才能确定合理、精确的成本估算,实际可行的任务分解以及可管理的进度安排。,6,2023年3月29日星期三,5.1.2 度量,进行度量工作,是为了了解产品开发的技术过程和产品本身。度量开发过程的目的是为了改

3、进过程,度量产品的目的是为了提高产品的质量。度量的作用是为了有效地定量地进行管理。管理人员和技术人员可利用这些度量来了解软件工程过程的实际情况和它所生产的产品质量。,7,2023年3月29日星期三,5.1.3 估算,在软件项目管理过程中关键的活动就是制定项目计划。做计划必须就需要的人力(以人月为单位)、项目持续时间(以年份或月份为单位)、成本(以元为单位)做出估算。这种估算大多是利用以前的花费做为参考而做出的。如果新项目与以前的一个项目在大小上和功能上十分类似,则新项目需要工作量、开发持续时间、成本大致与那个老项目相同。假使项目背景完全生疏,只凭过去的经验做出估算可能就不够了。,8,2023年

4、3月29日星期三,5.1.3 估算,现在已有了许多用于软件开发的估算技术。其共同特点是:事先建立软件工作范围 以软件度量(以往的度量)为基础作出估算 项目被分解为可单独进行估算的小块管理人员大多使用不止一种估算技术,并用一种估算技术做为另一种估算技术的交叉检查。,9,2023年3月29日星期三,5.1.4 风险分析,每当新建一个程序时,总是存在某些不确定性。用户要求是否能确切地被理解?在项目最后结束之前要求实现的功能能否建立?是否存在目前仍未发现的技术难题?在项目出现严重误期时是否 会发生一些变更?等等。,10,2023年3月29日星期三,5.1.4 风险分析,风险分析对于软件项目管理是决定性

5、的,然而现在还有许多项目不考虑风险就着手进行。所谓风险分析实际上就是一系列风险管理步骤,其中包括风险识别、风险估计、风险优化、风险管理策略、风险解决和风险监督。这些步骤贯穿在软件工程过程中。,11,2023年3月29日星期三,5.1.5 进度安排,对于进度安排,需要考虑的是:预先对进度如何计划?工作怎样就位?如何识别定义好的任务?管理人员对结束时间如何掌握,如何识别和监控关键路径以确保结束?对进展如何度量?如何建立分隔任务的里程碑。,12,2023年3月29日星期三,5.1.5 进度安排,软件项目的进度安排与任一个工程项目的进度安排基本相同。首先识别一组项目任务,再建立任务之间的相互关联,然后

6、估算各个任务的工作量,分配人力和其它资源,制定进度时序。,13,2023年3月29日星期三,5.1.6 追踪和控制,由项目管理人员负责追踪在进度安排中标明的每一个任务。如果任务实际完成日期滞后于进度安排,则管理人员可以使用一种自动的项目进度安排工具来确定在项目的中间里程碑上进度误期所造成的影响。还可对资源重新定向对任务重新安排(做为最坏的结果)可以修改交付日期以调整已经暴露的问题。用这种方式可以较好地控制软件的开发。,14,2023年3月29日星期三,5.2 风险管理,进度过分紧迫;预算过分紧张;性能过分的超群,软件可靠性要求过高;人员缺乏经验,组织结构不适宜;期望过高而不现实;没有明确或理解

7、合同的条款;软件规模估计不恰当;管理部门缺乏经验;风险分析和管理不恰当;缺乏政策性支持;,不熟悉技术或过程;不熟悉必要的硬件;需求不一致(或定义不充分);需求不断变动;软件开发计划不恰当;软件开发过程模型不适用;缺乏软件工程技术和方法;缺乏自动化工具的支持;,常见的软件风险类别:进度、经费、性能、组织、管理、人事、过程、方法、工具等。如下例证:,15,2023年3月29日星期三,5.2.1 风险估计,是否所有项目都要进行风险分析。No,风险分析成本较高,只有当软件的成本、性能、作用、与其他系统间的关系对于重要的系统有比较大的影响时,即软件的风险对整个系统的成败有关键影响时,才有必要进行风险分析

8、和管理。风险估计的步骤1.明确项目的目标、策略、可以使用的方法和资源;2.保证项目的目标和结果是可度量的,并标明使用的资源;3.制定项目成功的标准集合;(见下页)4.根据估计的结果确定是否进行风险分析。,16,2023年3月29日星期三,5.2.1 风险估计,度量项目成功的标准:1.最大限度的收益;2.最小的费用;3.最小的风险损失;4.最大限度的市场;5.最小的周期性波动;6.形成有益的形象;7.最佳的服务质量;8.最高的增长率;9.员工的满意度最高;10.公司的声望最高。,17,2023年3月29日星期三,5.2.2 风险分析,第一步:标识潜在风险项:收集信息,标明相关的风险。观察风险的征

9、兆,理解其原因。收集信息:主要依靠过去的经验和一些著名的案例,考虑类似的因素并进行常识性的判断。(如需求变动的风险)判断收集到的信息是否有用。信息分类:如:有风险(经常发生的情况)、可预见的风险(较高概率发生)、不可预见的风险(事前很难预料),原因可分为:缺乏信息、管理和时间等。,18,2023年3月29日星期三,5.2.2 风险分析,第二步:估计每个风险的大小及其出现的可能性:度量风险的后果和严重程度。选择一种度量尺度:命名尺度、序次尺度、坐标尺度、比例尺度等;将待估计的风险信息(叙述性、定性、定量三种类型)与度量尺度相对应,确定风险等级;消除风险估计中的主观判断的偏差。(缺乏可以用来进行判

10、断风险的信息,只能凭自己的观念和偏好进行主观理解,与客观情况必然存在着偏差。),19,2023年3月29日星期三,5.2.2 风险分析,第三步:风险评估:要考虑风险间的相互作用。(第二步考虑的是单个风险的影响)考虑各种风险的综合影响后,对已识别风险发生的可能性及其后果给出最终的量值;标明风险优先程度,以便予以适当安排;考虑其它可替代的方案,寻求可以避免风险的基本方法。,20,2023年3月29日星期三,5.2.3 风险评估,第一步:确定风险评估标准,确定风险的后果,判定该风险是否可以忍受;第二步:确定风险最终的级别(风险特征的三个方面:发生频率、损害的严重性、发生的时刻可知性);第三步:把系统

11、风险和“对照风险”相比较,确定系统风险是否可以接受。(不可能接受;不适合接受),21,2023年3月29日星期三,5.2.3 风险评估,什么是“对照风险”呢?对照风险是一组单个风险的集合,也可是对项目造成最大损害的一个或多个风险。对照风险考虑了风险间可能发生的耦合或复合情况。对照风险说明了在把系统作为整体条件下,风险会造成系统失败或成功的概率。,22,2023年3月29日星期三,5.2.4 风险管理任务,风险管理的任务:制定风险计划:风险管理计划RMP和风险排除计划RA(version)P。(确定风险可接受目标;调整新的“对照风险”;寻求可替代的解决方案。)进行风险控制:执行风险计划中体现风险

12、排除策略的控制机制。(确定风险排除策略:后果、时间和频率;确定风险排除战术:建立在软件工程过程基础上;建立风险管理计划:有关工作编入文档风险状态估计RES说明项目的总体状况,风险管理计划RMP说明如何在一个项目中施行风险分析和管理程序,风险排除计划RAP是排除风险的详细计划。)对风险进行监管:监管软件工程过程和产品,确定风险排除策略是否达到预期目标,是否有可能进一步改进风险排除计划,为控制新的风险提供一些必要的决策信息等。,23,2023年3月29日星期三,5.3 软件质量和效率度量,度量是任何工程项目最基础的工作,软件工程也不例外。Lord Kelvin:如果谁能够度量他所说的事物并能用数字

13、来表示它时,则说明他了解了它;但当他不能度量它,也不能用数字表示出来时,则说明他对那种事物的知识还比较贫乏、不足;这也可能是了解的开始,但在他的思想中很难达到科学的境地。软件度量的范围涉及很广,在软件项目管理范围内,应主要关心生产率与质量的度量,即根据投入的工作量,对软件开发活动和开发成果的质量作出度量。,24,2023年3月29日星期三,5.3.1 为什么要进行度量,表明软件产品的质量;弄清软件开发人员的生产率;给出使用了新的软件工程方法和工具所得到的(在生产率和质量两方面)的效益;建立项目估算的“基线”;帮助调整对新的工具和附加培训的要求。,25,2023年3月29日星期三,5.3.2 软

14、件度量方式,软件工程过程的直接度量包括所投入的成本和工作量。软件产品的直接度量包括产生的代码行数(LOC)、执行速度、存储量大小、在某种时间周期中所报告的差错数。软件产品的间接度量包括功能性、复杂性、效率、可靠性、可维护性和许多其它的质量特性。,26,2023年3月29日星期三,5.3.2 软件度量方式,集中在软件工程过程的输出。,软件满足用户要求的程度。,集中在软件的性能指标而不是软件开发全过程上。,收集与直接度量有关的软件工程输出信息和质量信息。,提供直接度量的尺度。,收集有关人们开发计算机软件所用方式的信息和人们理解有关工具和方法的效率的信息。,27,2023年3月29日星期三,5.3.

15、3 面向规模的度量,面向规模的度量是对软件和软件开发过程的直接度量。可以建立一个面向规模的数据表格来记录项目的某些信息。该表格列出了在过去几年完成的每一个软件开发项目和关于这些项目的相应面向规模的数据。,28,2023年3月29日星期三,5.3.3 面向规模的度量,工作量和成本是针对软件开发全过程的,而不是仅针对编码。,29,2023年3月29日星期三,5.3.3 面向规模的度量,对于每一个项目,可以根据表格中列出的基本数据计算简单的面向规模的生产率和质量的度量。生产率 KLOCPM(人月)质量 错误数KLOC成本 元LOC文档 文档页数KLOC,30,2023年3月29日星期三,5.3.3

16、面向规模的度量,大多数争议是 是否使用代码行数(LOC)做为度量的依据。支持者认为 LOC是所有软件开发项目的必然产物,它能够很容易地被计算;现在许多既存的软件估算模型都是使用LOC或者KLOC做为关键输入的;而且大量以LOC为根据的文献和数据已经存在。反对者们认为 LOC度量与程序设计语言有关,它们不适用于设计很好且较短的程序,也不适合于非过程型语言。若在估算中使用,很难达到要求的详细程度(计划者必须在分析和设计远未完成之前就要估算出需要生产的LOC)。,31,2023年3月29日星期三,5.3.4 面向功能的度量,面向功能的软件度量是对软件和软件开发过程的间接度量。面向功能度量主要考虑程序

17、的“功能性”和“实用性”,而不是对LOC计数。该度量是一种叫做功能点方法的生产率度量法,利用软件信息域中的一些计数和软件复杂性估计的经验关系式而导出功能点FP。,32,2023年3月29日星期三,5.3.4 面向功能的度量,面向不同应用的输入数,面向不同应用的输出(报告、屏幕信息、错误信息)数,不同即时查询的计数,逻辑主文件(逻辑上的一组数据,可以是一个数据库的一部分,也可以是一个单独的文件)数。,与系统中其他设备通过外部接口读写信息的次数,使用者自行拟定一些准则来确定一个系数,带有主观性。,33,2023年3月29日星期三,5.3.4 面向功能的度量,计算功能点,使用如下的关系式:FP 总计

18、数(0.65+0.01SUM(Fi)Fi(i1.14)是复杂性校正值,它们应通过逐一回答下一页的提问来确定。Fi的取值0.5:0 没有影响 1 偶然的2 适中的 3 普通的4 重要的 5 极重要的SUM(Fi)是求和函数。,34,2023年3月29日星期三,5.3.4 面向功能的度量,1.系统是否需要可靠的备份和恢复?2.是否需要数据通信?3.是否有分布处理的功能?4.是否性能成为关键?5.系统是否运行在既存的高度实用化的操作环境中?6.系统是否需要联机数据项?7.联机数据项是否需要建立多重窗口显示和操作,以处理输入处理。8.主文件是否联机更新?9.输入、输出、文件、查询是否复杂?10.内部处

19、理过程是否复杂?11.程序代码是否可复用?12.设计中是否包括了转移和安装?13.系统是否设计成可以重复安装在不同机构中14.系统是否设计成易修改和易使用?,35,2023年3月29日星期三,5.3.4 面向功能的度量,一旦计算出功能点,就可仿照LOC的方式度量软件的生产率、质量和其它属性:生产率 FPPM(人月)质量 错误数FP成本 元FP文档 文档页数FP,36,2023年3月29日星期三,5.3.4 面向功能的度量,功能点度量的支持者认为 FP 与程序设计语言无关,它所依据的是在项目评估早期就可能知道的数据。反对者认为这种方法需要某些“魔术手法”:在其计算中依赖的是主观因素而不是客观实际

20、。信息域的数据事后很难收集,而且FP没有直接的物理意义,它只不过是一个数字。,37,2023年3月29日星期三,5.3.5 软件质量度量,质量度量贯穿于软件工程的全过程中以及软件交付用户使用之后。在软件交付之前得到的度量可作为判断设计和测试质量好坏的依据。这一类度量包括程序复杂性、有效的模块性和总的程序规模。在软件交付之后的度量则把注意力集中于还未发现的差错数和系统的可维护性方面。,38,2023年3月29日星期三,5.3.5.1 程序复杂性度量,程序复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。(1)代码行度量法(2)McCabe度量

21、法,39,2023年3月29日星期三,(1)代码行度量法,源代码行数度量法基于两个前提:程序复杂性随着程序规模的增加不均衡地增长;控制程序规模的方法最好是采用分而治之的办法。将一个大程序分解成若干个简单的可理解的程序段。,40,2023年3月29日星期三,(1)代码行度量法,方法的基本考虑是统计一个程序模块的源代码行数目,并以源代码行数做为程序复杂性的度量。设每行代码的出错率为每100行源程序中可能有的错误数目。Thayer曾指出,程序出错率的估算范围是从0.047之间,他还指出,每行代码的出错率与源程序行数之间不存在简单的线性关系。,41,2023年3月29日星期三,(1)代码行度量法,Li

22、pow指出,对于小程序,每行代码出错率为1.31.8;对于大程序,每行代码的出错率增加到2.73.2之间,这只是考虑了程序的可执行部分,没有包括程序中的说明部分。Lipow及其他研究者得出一个结论:对于少于100个语句的小程序,源代码行数与出错率是线性相关的。随着程序的增大,出错率以非线性方式增长。,42,2023年3月29日星期三,(2)McCabe度量法,McCabe度量法,又称环路复杂性度量,是一种基于程序控制流的复杂性度量方法。它基于一个程序模块的程序图中环路的个数,因此计算它先要画出程序图。程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。,4

23、3,2023年3月29日星期三,44,2023年3月29日星期三,(2)McCabe度量法,程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作,以及分支和循环的具体条件。计算环路复杂性的方法:根据图论,在一个强连通的有向图G中,环的个数由以下公式给出:V(G)mnp其中,V(G)是有向图G中环路个数,m是图G中弧数,n是图G中结点数,p是图G中的强连通分量个数。在例示中,结点数n11,弧数m13,p1,则有 V(G)mnp131113.等于程序图中弧所封闭的区域数。,45,2023年3月29日星期三,(2)McCabe度量法,环路复杂度取决于程序控制结构的复杂度。当程序的分支数目或循环

24、数目增加时其复杂度也增加。环路复杂度与程序中覆盖的路径条数有关。环路复杂度是可加的。例如,模块A的复杂度为3,模块B的复杂度为 4,则模块A与模块B的复杂度是7。,46,2023年3月29日星期三,(2)McCabe度量法,McCabe建议,对于复杂度超过10的程序,应分成几个小程序,以减少程序中的错误。这种度量的缺点是:对于不同种类的控制流的复杂性不能区分 简单IF语句与循环语句的复杂性同等看待 嵌套IF语句与简单CASE语句的复杂性是一样的 模块间接口当成一个简单分支一样处理 一个具有1000行的顺序程序与一行语句的复杂性相同,47,2023年3月29日星期三,5.3.5.2 软件质量的事

25、后度量,使用得最广泛软件质量的事后度量包括正确性、可维护性、完整性和可使用性。(1)正确性:一个程序必须正确地运行,并为它的用户提供某些输出。正确性要求软件执行所要求的功能。正确性的度量是每千代码行(KLOC)的差错数,其中将差错定义为已被证实是不符合需求的缺陷。,48,2023年3月29日星期三,5.3.5.2 软件质量的事后度量,(2)可维护性:软件维护比其它的软件工程活动需要更多的工作量。还没有一种方法可以直接度量可维护性,因此必须采取间接度量。有一种简单的面向时间的度量,叫做平均变更等待时间MTTC。这个时间包括分析变更要求、设计适当的修改、实现变更并测试、及把变更发送给所有的用户。一

26、个可维护的程序与不可维护的程序相比,应有较低的MTTC。,49,2023年3月29日星期三,5.3.5.2 软件质量的事后度量,(3)完整性:完整性度量一个系统抗拒对它的安全性攻击(事故的和人为的)的能力。软件的所有三个成分程序、数据和文档都会遭到攻击。度量完整性,需要定义两个附加的属性:危险性和安全性。危险性是特定类型的攻击将在一给定时间内发生的概率,安全性是排除特定类型攻击的概率。一个系统的完整性可定义为 完整性(1危险性(1安全性)其中,对每一个攻击的危险性和安全性都进行累加。,50,2023年3月29日星期三,5.3.5.2 软件质量的事后度量,(4)可使用性:可使用性量化“用户友好性

27、”,并依据以下四个特征进行度量:为学习系统所需要的体力上的和智力上的技能;为达到适度有效使用系统所需要的时间;当软件被某些人适度有效地使用时所度量的在生产率方面的净增值;用户角度对系统的主观评价(可以通过问题调查表得到)。,51,2023年3月29日星期三,5.4 软件项目估算,软件项目管理过程开始于项目计划。项目计划的首要活动就是估算。估算往往存在某些不确定性。现在已使用的实用技术是时间和工作量估算。估算资源、成本和进度时需要经验、有用的历史信息、足够的定量数据。估算本身带有风险。,52,2023年3月29日星期三,5.4.1 估算的影响因素,项目的复杂性较大程度地影响到估算的不确定性。,项

28、目规模越大,划分越困难,模块间的连接越复杂,估算的风险越高。,估算与风险,53,2023年3月29日星期三,5.4.1 估算的影响因素,项目的规模越大,项目划分越困难,项目元素间的连接复杂,估算风险越高;项目的结构化程度越高,功能分解和信息分层越容易,项目估算能力越强;历史信息的有效性影响估算的风险;其他风险:项目范围不确定、用户要求经常变更。,54,2023年3月29日星期三,5.4.2 软件项目计划,计划目标:提供一个能使项目管理人员对资源、成本和进度做出合理估算的框架。(1)项目计划的首要任务是确定软件范围:包括功能、性能、限制、接口和可靠性。-成本和进度的估算都与功能有关;-性能包括处

29、理和响应时间的需求;-限制表示外部硬件、可用存储或其他现有系统对软件的限制。=功能、性能和限制要一起估算。,55,2023年3月29日星期三,5.4.2 软件项目计划,-接口:软件和硬件间的接口、软件间的接口、人机接口、软件运行前后的一系列过程;必须明确通过接口的信息转换。-可靠性:很难在计划阶段量化可靠性,但可以利用可靠性要求帮助工作量和成本的公式化计算更加合理。,56,2023年3月29日星期三,5.4.2 软件项目计划,(2)项目计划的第二个任务是对完成该项目所需的资源进行估算。,57,2023年3月29日星期三,58,2023年3月29日星期三,5.4.2 软件项目计划,(3)软件成本

30、和工作量估算-很难精确,因为变化因素太多:人、技术、环境、政治等都会影响最终成本和工作量。-得到可靠的成本和工作量的方法:估算推到项目后期进行(必须事前度量)使用相对简单的分解技术生成项目的成本和工作量的估算结果。为软件成本和工作量估算开发或配备一个经验模型;获取一个或更多的自动估算工具。,59,2023年3月29日星期三,5.4.3 利用分解技术进行估算,当一个待解决的问题过于复杂时,我们可以把它进一步分解,直到分解后的子问题变得容易解决为止。然后,分别解决每一个子问题,并将这些子问题的解答综合起来,从而得到原问题的解答。(1)利用LOC和FP方法度量软件每一个元素的大小,利用基线生产率度量

31、(LOC/PM,FP/PM)导出每一个元素的成本和工作量;(2)联合使用从过去项目中收集到的基线数据和其他估算变量,进行成本和工作量估算。,60,2023年3月29日星期三,5.4.3 利用分解技术进行估算,61,2023年3月29日星期三,5.4.3 利用分解技术进行估算,62,2023年3月29日星期三,5.4.3 利用分解技术进行估算,对于一个大型的软件项目,由于项目的复杂性,开发成本的估算不是一件简单的事,要进行一系列的估算处理。主要靠分解和类推。基本估算方法分为三类。自顶向下的估算方法 自底向上的估计法 差别估计法,63,2023年3月29日星期三,5.4.3 利用分解技术进行估算,

32、自顶向下的估算方法这种方法的主要思想是从项目的整体出发,进行类推。估算人员根据以前已完成项目所消耗的总成本(或总工作量),推算将要开发的软件的总成本(或总工作量),然后按比例将它分配到各开发任务单元中去,再来检验它是否能满足要求。这种方法的优点是估算工作量小,速度快。缺点是对项目中的特殊困难估计不足,估算出来的成本盲目性大,有时会遗漏被开发软件的某些部分。,64,2023年3月29日星期三,5.4.3 利用分解技术进行估算,自底向上的估算方法这种方法的主要思想是把待开发的软件细分,直到每一个子任务都已经明确所需要的开发工作量,然后把它们加起来,得到软件开发的总工作量。它的优点是估算各个部分的准

33、确性高。缺点是缺少各项子任务之间相互联系所需要的工作量,还缺少许多与软件开发有关的系统级工作量.,65,2023年3月29日星期三,5.4.3 利用分解技术进行估算,差别估计法这种方法综合了上述两种方法的优点,其主要思想是把待开发的软件项目与过去已完成的软件项目进行类比,从其开发的各个子任务中区分出类似的部分和不同的部分。类似的部分按实际量进行计算,不同的部分则采用相应方法进行估算。这种的方法的优点是可以提高估算的准确程度,缺点是不容易明确“类似”的界限。,66,2023年3月29日星期三,5.4.4 专家评判技术,由多位专家进行成本估算单独一位专家可能会有种种偏见。最好由多位专家进行估算,取

34、得多个估算值。有多种方法把这些估算值合成一个估算值。一种方法是简单地求各估算值的中值或平均值。其优点是简便。缺点是可能会由于受一、二个极端估算值的影响而产生严重的偏差。一种方法是召开小组会,使各位专家们统一于或至少同意某一个估算值。优点是可以摈弃蒙昧无知的估算值,缺点是一些组员可能会受权威或政治因素的影响。,67,2023年3月29日星期三,5.4.4 专家评判技术,标准Deiphi技术 组织者发给每位专家一份软件系统规格说明书和一张记录估算值的表格,请他们进行估算。专家详细研究软件规格说明书的内容,对该软件提出三个规模的估算值,即:ai(最小)mi(可能)bi(最大),无记名地填写表格,在填

35、表的过程中,专家互相不进行讨论但可以向组织者提问。组织者对专家们填在表格中的答复进行整理:a.计算各位专家估算的期望值 Ei;b.对专家的估算结果分类摘要。专家对此估算值另做一次估算。在综合专家估算结果的基础上,组织专家再次无记名地填写表格。比较两次估算的结果。若差异很大,则要通过查询找出差异的原因。上述过程可重复多次。最终可获得一个得到多数专家共识的软件规模(源代码行数)。在此过程中不得进行小组讨论。,68,2023年3月29日星期三,5.4.5 软件估算的经验模型,软件开发成本估算是依据开发成本估算模型进行估算的。开发成本估算模型通常采用经验公式来预测软件项目计划所需要的成本、工作量和进度

36、数据。用以支持大多数模型的经验数据都是从有限的一些项目样本中得到的。还没有一种估算模型能够适用于所有的软件类型和开发环境。IBM模型Putnam模型COCOMO模型,69,2023年3月29日星期三,5.4.5.1 IBM模型,E 5.2L0.91 D 4.1L0.36 14.47E0.35 S 0.54E0.6 DOC 49L1.01L 是源机器代码行数(KLOC),E 是工作量(PM),D 是项目持续时间(月),S 是人员需要量(人),DOC是文档数量(页)。,70,2023年3月29日星期三,5.4.5.1 IBM模型,IBM模型是静态单变量模型。在此模型中,一般指一条机器指令为一行源代

37、码。一个软件的源代码行数不包括程序注释、作业命令、调试程序在内。对于非机器指令编写的源程序,例如汇编语言或高级语言程序,应转换成机器指令源代码行数来考虑。定义:转换系数机器指令条数非机器语言执行步数。如:Fortran的转换系数为46。,71,2023年3月29日星期三,5.4.5.2 Putnam模型,Putnam模型是一种动态多变量模型。适用于大型项目,但也可以应用在一些较小的软件项目中。它是假定在软件开发的整个生存期中工作量有特定的分布。大型软件项目的开发工作量分布可以用Rayleigh-Norden曲线表示。这个曲线把已交付的源代码行数与工作量和开发时间联系起来。,72,2023年3月

38、29日星期三,5.4.5.2 Putnam模型,73,2023年3月29日星期三,用Rayleigh-Norden曲线可以导出一个“软件方程”td 是开发持续时间(年),K是软件开发与维护在内的整个生存期所花费的工作量(人年),L是源代码行数(LOC),Ck是技术状态常数,因开发环境而异。,74,2023年3月29日星期三,5.4.5.2 Putnam模型,75,2023年3月29日星期三,5.4.5.3 COCOMO模型,COnstructive COst MOdel结构型成本估算模型是一种精确、易于使用的成本估算方法。在该模型中使用的基本量有以下几个:1.DSI:源程序行数;1KDSI=1

39、024DSI2.MM:开发工作量;(人月)1MM=19人日=152人时=1/12人年3.TDEV:开发进度;(月)由工作量决定,76,2023年3月29日星期三,5.4.5.3 COCOMO模型,基本COCOMO模型:是一个静态单变量模型,它用源代码行数(LOC)为自变量的(经验)函数来计算软件开发工作量。中间COCOMO模型:在用LOC为自变量的函数计算软件开发工作量(此时称为名义工作量)的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。详细COCOMO模型:包括中间CO COMO模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一

40、步骤(分析、设计等)的影响。,77,2023年3月29日星期三,5.4.5.3.1 基本COCOMO模型,78,2023年3月29日星期三,5.4.5.3.2 中间COCOMO模型,进一步考虑15种影响软件工作量的因素,通过定下乘法因子,修正COCOMO工作量公式和进度公式,可以更合理地估算软件(各阶段)的工作量和进度。中间COCOMO模型的名义工作量与进度公式,79,2023年3月29日星期三,5.4.5.3.2 中间COCOMO模型,80,2023年3月29日星期三,5.4.5.3.3 详细COCOMO模型,详细COCOMO模型的名义工作量公式和进度公式与中间COCOMO模型相同。工作量因

41、素分级表分层、分阶段给出。针对每一个影响因素,按模块层、子系统层、系统层,有三张工作量因素分级表,供不同层次的估算使用。每一张表中工作量因素又按开发各个不同阶段给出。使用这些表格,可以比中间COCO MO模型更方便、更准确地估算软件开发工作量。,81,2023年3月29日星期三,软件可靠性工作量因素分级表(子系统层),82,2023年3月29日星期三,5.5 软件项目进度安排,软件开发项目的进度安排有两种方式:(1)系统最终交付日期已经确定,软件开发部门必须在规定期限内完成;(2)系统最终交付日期只确定了大致的年限,最後交付日期由软件开发部门确定。在考虑进度安排时,要把工作量与花费时间联系起来

42、,合理分配工作量,利用进度安排的有效分析方法严密监控软件开发的进展情况,使软件开发进度不致拖延。,83,2023年3月29日星期三,5.5 软件项目进度安排,1.确定开发小组人数:考虑通信成本;2.确定任务及其并发性,84,2023年3月29日星期三,5.5 软件项目进度安排,(3)制定开发进度计划402040规则在整个软件开发过程中,编码工作量仅占 20,编码前工作量占40,编码后工作量占 40。进度安排的图形方法:Gantt,CPM(Critical Path Method)和&PERT(Program Evaluation and Review Technique)明确标明:各个任务的计

43、划开始时间,完成时间;各个任务完成标志(即文档编写和评审);各个任务与参与工作的人数,各个任务与工作量之间的衔接情况;完成各个任务所需的物理资源和数据资源。,85,2023年3月29日星期三,5.6 项目组织结构设计,开发组织采用什么形式,要针对软件项目的特点来决定,同时也与参与人员的素质有关。1、组织原则(1)尽早落实责任:在软件项目工作开始时,要尽早指定专人负责。使他有权进行管理,并对任务的完成负全责。(2)减少接口:一个组织的生产率随完成任务中存在的通信路径数目增加而降低。要有合理的人员分工、好的组织结构、有效的通信,减少不必要的生产率的损失。(3)责权均衡:软件经理人员所负的责任不应比

44、委任给他的权力还大。,86,2023年3月29日星期三,5.6 项目组织结构设计,2.组织结构的模式(1)按课题划分的模式 把软件开发人员按课题组成小组,小组成员自始至终参加所承担课题的各项任务。他们应负责完成软件产品的定义、设计、实现、测试、复查、文档编制、甚至包括维护在内的全过程。(2)按职能划分的模式 把参加开发项目的软件人员按任务的工作阶段划分成若干个专业小组。要开发的软件产品在每个专业小组完成阶段加工(即工序)以后,沿工序流水线向下传递。,87,2023年3月29日星期三,5.6 项目组织结构设计,(3)矩阵形模式 这种模式实际上是以上两种模式的复合。一方面,按工作性质,成立一些专门

45、组,如开发组、业务组、测试组等;另一方面,每一个项目又有它的经理人员负责管理。每个软件人员属于某一个 专门组,又参加某一项目的工作。,88,2023年3月29日星期三,89,2023年3月29日星期三,5.6 项目组织结构设计,3.程序设计小组的组织形式(1)主程序员制小组 小组的核心由一位主程序员(高级工程师)、二至五位技术员、一位后援工程师组成。主程序员负责小组全部技术活动的计划、协调与审查,设计和实现项目中的关键部分。技术员负责项目的具体分析与开发,文档资料的编写工作。后援工程师支持主程序员的工作,为主程序员提供咨询,也做部分分析、设计和实现的工作。并在必要时能代替主程序员工作。,90,

46、2023年3月29日星期三,5.6 项目组织结构设计,(2)民主制小组 在民主制小组中,遇到问题,组内成员之间可以平等地交换意见。工作目标的制定及做出决定都由全体成员参加。虽然也有一位成员当组长,但工作的讨论、成果的检验都公开进行。这种组织形式强调发挥小组每个成员的积极性。有人认为这种组织形式适合于研制时间长、开发难度大的项目。(3)层次式小组 在层次式小组中,组内人员分为 三级:组长(项目负责人)一人负责全组工作,包括任务分配、技术评审和走查、掌握工作量和参加技术活动。他直接领导二至三名高级程序员,每位高级程序员通过基层小组,管理若干位程序员。,91,2023年3月29日星期三,92,2023年3月29日星期三,5.7 项目过程监控,软件项目管理一项重要工作就是在项目实施过程中进行追踪和控制:定期举行项目状态会议。由每位项目成员报告其进展和遇到的问题。评价在软件工程过程中所产生的所有评审的结果。确定由项目的计划进度所安排的可能选择的正式的里程碑。比较在项目资源表中所列出的每一个项目任务的实际开始时间和计划开始时间。非正式地与开发人员交谈,以得到他们对开发进展和刚冒头的问题的客观评价。当问题出现的时候,项目管理人员必须实行控制以尽快地排解问题。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号