《如何制定和编写软件项目计划课件》由会员分享,可在线阅读,更多相关《如何制定和编写软件项目计划课件(69页珍藏版)》请在金锄头文库上搜索。
1、2020/6/21,郝文祥,软件开发计划,成本预估,郝文祥,2020/6/21,软件项目计划(Software Project Planning) :是一个软件项目进入系统实施的启动阶段,主要进行的工作包括:确定详细的项目实施范围、定义递交的工作成果、评估实施过程中主要的风险、制定项目实施的时间计划、成本和预算计划、人力资源计划等。 基本内容: 研究。 估算。 重点:软件项目进度安排、软件项目计划内容 难点:软件开发成本结算,2020/6/21,一、软件项目的基本内容,范围。对该软件项目的综合描述,定义起所要做的工作以及性能限制,它包括: 项目目标。 主要功能。 性能限制。 系统接口。 特殊要
2、求。 开发概述,2.0,2020/6/21,资源: 人力资源。 软件资源。 硬件资源。 其他。 进度安排,进度安排的好坏往往会影响整个项目的按期完成, 制定软件进度与其他工程没有很大的区别 ,其方法主要有: 工程网络图。 Gantt图。 任务资源图。 成本估算。 培训计划,一、软件项目的基本内容,2.0,2020/6/21,二、制定软件工程规范,对软件工程管理来说,软件工程规范的制定和实施是不可少的,它与软件项目计划一样重要 。软件工程规范可选用现成的各种规范,也可自己制定。 目前软件工程规范可分为三级: 国家标准与国际标准。 行业标准与工业部门标准。 企业级标准与开发小组级标准。,2.1,2
3、020/6/21,三、软件开发成本的估算,3.1 软件项目估算方法 3.2代码行和功能点的估算 3.2 软件项目的经验估算模型,2.2,2020/6/21,3.1 软件项目的估算方法,常用的软件项目的估算方法(主要有4种): 1自顶向下的估算方法 基本思想:估算人员参照以前完成的项目所耗费的总成本,来推算将要开发的软件的总成本,然后把它们按阶段、步骤和工作单元进行 分配,这种方法称为自顶向下估算方法。即从整体到局部。 优点:对系统级工作的重视,估算中不会遗漏系统级的诸如集成、用户手册和配置管理之类的事务的成本估算,估算工作量小、速度快。 缺点:往往不清楚低级别上的技术性困难问题,而往往这些困难
4、将会使成本上升。,2.2,2020/6/21,2自底向上的估算方法,基本思想是:自底向上估算方法是将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来 ,得到软件的总开发量。 细分方法:按功能将大的软件项目划分为若干个子项目;或按软件生命周期分解为各个阶段。也可两者同时进行。 优点:对每个部分的估算工作交给负责该部分工作的人来做,计算各个部分的准确性较高。 缺点:缺少各个子任务之间相互联系的工作量和系统工作量(如项目管理、配置管理、质量管理),估算值往往偏低,必须用其他方法进行校正。,2.2,2020/6/21,3差别估算法,基本思想: 差别估算是将开发项目与一个或多个
5、已完成的类似项目进行比较,找到与某个相类似项目的若干 不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。 类似的部分按已知的实际量计算,不同的部分则采用某种方法进行估算。 优点:估算的准确程度高。 缺点:不容易划分相似的界限。,2.2,2020/6/21,4根据经验估算公式,通过众多实际软件项目的经验,总结出一些有价值的软件成本和工作量估算的经验模型。这些模型对于软件项目管理具有一定的指导意义和验证效果。 没有一种估算模型能够适合于所有类型的软件项目。因此,对估算的结果应当慎重使用。 在实际估算时,几种估算方法可单独、同时或组合使用,以便提高估算的准确程度。,2.2,2020/6
6、/21,估算方法举例,【例3.1】下面给出了“软件库存情况更新”项目采用自顶向下估算方法的一个参考例子。 由过去已完成的项目的工作量,估算出该项目的总工作量为53。然后将其按比例分配到各个阶段,如表3-1所示。从中可以看出软件开发各阶段工作量的分配情况。,2.2,2020/6/21,表3-1 软件项目的自顶向下估算,2.2,2020/6/21,3.2 代码行和功能点的估算,采用所介绍的四种估算方法可以估算出代码行LOC或功能点FP的乐观值a、一般值m和悲观值b,并用如下的加权平均公式计算LOC或FP的期望值: e =( a +4 m +b)/ 6 (3-10) 希望LOC或FP落在,b之外概率
7、很小。软件的LOC或FP的期望值估算出来后,就可以用LOC/PM或FP/PM计算工作量,进一步对成本等进行估算。,2.2,2020/6/21,【例3.2】对CAD软件项目进行估算,这里采用自底向上的估算方法。即: 首先:将CAD项目按功能分解为7个子项目,估算出每个子项目LOC的乐观值a、一般值m和悲观值b,由此可估算出每个子项目的代码行的期望值e。 其次:根据已知的类似子项目的生产率P(平均每人月开发的功能点的数量)和平均成本C(总成本 /功能点数)即可估算出每一个子项目的成本和工作量 最后:将7个子项目的成本和工作量分别累加,即可估算出软件项目的总成本S和总工作量E。如表2-7所示。,2.
8、2,2020/6/21,表3-7 采用加权平均、自底向上方法估算代码行、成本和工作量,2.2,2020/6/21,估算的组织实施,为了使估算更准确,可以组织几个专家采用无记名的方式分别填写表3-7,然后组织者计算出这几个表格的平均值;这一过程可反复几次,直到获得一个得到多数专家共识的软件规模。 另外,还可以将每个子项目再按生存周期划分,估算其各阶段的工作量,再累加求出每个子项目的工作量和整个项目的工作量。可将用几种方法估算的结果进行比较来验证估算的准确性。,2.2,2020/6/21,3.3 软件项目的经验估算模型 1IBM模型,IBM模型是根据已估算出的源代码行数来估算其他资源的需要量的,因
9、此该模型是面向LOC的静态单变量估算模型。,2.2,2020/6/21,IBM模型,1977年,IBM公司对60个软件项目的数据利用最小二乘法拟合,得到的经验估算公式: E = 5.2 L0.91 (3-11) D=4.1L0.36 = 2.136 E0. 3956 (3-12) S = 0.54 E0.6 (3-13) DOC = 49 L1.01 (3-14) 其中:E为工作量(PM);L为源代码行数( KLOC ); D为项目持续的时间,以月为单位; S为人员需要量(人);DOC为文档数量(页)。,2.2,2020/6/21,2Putnam模型,1978年,Putnam提出了大型软件项目
10、的动态多变量估算模型。 该模型以工作量在30人年以上的大型软件项目的实测数据为依据,推导出了工作量分布曲线,如图3.2-1所示。 图中的工作量分布曲线的形状与著名的Rayleigh-Norden曲线相似。,2.2,2020/6/21,图3.2-1 软件项目的工作量分布曲线,2.2,2020/6/21,2Putnam模型,由上图可得出Putnam估算模型如下: L = Ck E1/3 td 4/3 (3-15) L为源代码行数;E为开发与维护的工作量;td为开发时间;Ck为技术状态常数,与开发环境有关,如下: 2000 较差,没有方法学的支持,缺乏文档 和评审,采用批处理方式; C k = 80
11、00 一般,有方法学的支持,有适当的文档 和评审,采用交互处理方式; 11000 较好,有集成化的CASE工具和环境。,2.2,2020/6/21,Putnam模型,由式(2-15)可以得出估算工作量的式子: E = L3 / (Ck3 td4) (3-16) 工作量估算出来之后,就可以估算软件项目的成本。 td是对应于软件交付时的时间,它正好是工作量曲线的峰值,说明此时的工作量最大、参加项目的人最多。,2.2,2020/6/21,图3.2-2 概率密度图,给出了软件开发项目每年所需的人年数与开发时间的关系。工作量分布曲线不是线性的,如果按线性方案平均分配人员则开发的初期一部分人力是多余的,而
12、到了峰值段人力明显不足,到了开发的后期再临时增加人力已为时过晚,即造成了浪费,又拖延了进度。,2.2,2020/6/21,从公式E = L3 / (Ck3 td4)可以看出: 如果条件允许,适当地推迟交货时间(即使td增大),可大幅度降低开发工作量。 例如:如果以1.1td代替式中的td,即推迟10%的时间交货,开发工作量E减少到原来的68%。 如果以0.9td代替td,即提前10%的时间交货,会使E比原来增加52%。 因此,工作量与时间的折衷就显得十分重要。,2.2,2020/6/21,图3.2-3 人力资源的分配,给出了各类人员随开发工作的进展在软件工程各阶段参与情况的典型曲线。,2.2,
13、2020/6/21,Putnam模型的优缺点,优点: 揭示了软件项目的源程序代码长度、软件开发时间和工作量三者之间的关系,在理论上有重要意义。 缺点: 准确程度不高。 没有反映软件产品、项目、参加人员、软硬件资源等属性。,2.2,2020/6/21,3CoCoMo模型,1981年,Boehm提出了CoCoMo模型(Constructive Cost Model,即构造性成本模型)。该模型是以静态单变量模型为基础构造出来的。CoCoMo模型按其详细程度分三个层次: 基本CoCoMo模型; 中间CoCoMo模型; 详细CoCoMo模型。,2.2,2020/6/21,1)基本CoCoMo模型,其工作
14、量和开发时间的估算公式如下: E = a Lb (3-17) D = c Ed (3-18) L :软件代码行的估算值(以KLOC计); E:工作量(以PM计); D:开发时间(以月计); a、b、c、d:经验常数。应根据待开发软件所属的类型按照表3-8来选取。,2.2,2020/6/21,表3-8 a、b、c、d参数值的选取,基本CoComo模型主要用于系统开发的初期估算整 个系统开发和维护的工作量及软件开发所需时间。,2.2,2020/6/21,组织型、嵌入型、半独立型,(1)组织型(organic): 相对较小、较简单的软件项目,程序的规模不是很大(50000行)。开发人员对开发目标理解
15、比较充分,与软件系统相关的工作经验丰富,对软件的使用环境很熟悉,受硬件的约束较小。 (2)嵌入型(embedded): 要求在紧密联系的硬件、软件和操作的限制条件下运行,通常与某种复杂的硬件设备紧密结合在一起。对接口,数据结构,算法的要求高。软件规模任意。如大而复杂的事务处理系统,大型/超大型操作系统,航天用控制系统,大型指挥系统等。 (3)半独立型(semidetached): 介于上述两种软件之间。规模和复杂度都属于中等或更高。最大可达30万行。,2.2,2020/6/21,【例3.3】用基本CoCoMo模型计算开发CAD软件所需的工作量、开发时间以及需要参加项目的平均人数。,在【例3.2】中已估算出CAD软件的代码行数为33.5KLOC,CAD软件为半独立型、中等规模的软件 由表3-8可查出a = 3.0,b = 1.12,c = 2.5,d = 0.35。 CAD项目的开发工作量为: E = a Lb = 3.033.51.12 = 153 PM 开发时间为: D = c Ed =2.5 1530.35 = 14.54(月) CAD项目平均需要的人力为: N = E / D = 153 / 14.54 11人,2.2,2020/6/21,2)中间CoCoMo模型,中间CoCoMo模型在估算工作量时,在基本CoCoMo模型的基础上再乘以由15个因素组成的工作