软件开发过程与项目管理(6.软件项目成本计划)

软件项目规模
软件项目规模即工作量包括
软件规划,软件管理,需求,设计,编码,测试,以及后期的维护等任务。
软件规模单位包括
- 源代码长度的测量:LOC(Loc of Code)
- 用系统的功能数量来测量:FP(Function Point)
- 人月
- 人天
- 人年
软件项目成本
- 完成软件规模相应付出的代价
- 待开发的软件项目需要的资金
- 人的劳动的消耗所需要的代价是软件产品的主要成本
- 成本的单位包括
- 人民币元
- 美元
- …
成本估算
- 规模是成本的主要因素,是成本估算的基础
- 有了规模就确定了成本
- 估算不是很准确,有误差
- 项目经验数据非常重要
- 不要太迷信某些数学模型
- 成本估算结果包括
- 直接成本:与具体项目相关的成本 例如:参与项目的人员成本
- 间接成本:可以分摊到各个具体项目中的成本 例如:培训、房租水电、员工福利、市场费用管理费、其他等等
估算基本方法
- 代码行估算法
- 功能点估算法(Albrecht、Mark Ⅱ、COSMIC-FFP)
- 用例点估算法
- 类比 (自顶向下)估算法
- 参数估算法(COCOMO、 COCOMO 81、 COCOMO Ⅱ、Walston-Felix、神经网络)
- 专家估算法
- 故事点估算法(敏捷项目)
代码行估算法(简略)
- 要求:功能分解足够详细,同时还要有一定的经验数据
- 优点:代码是所有软件开发项目都有的产品,而且很容易计算代码行数
- 缺点:
- 对代码行没有公认的可接受的标准定义。
- 代码行数量依赖于所用的编程语言和个人的编程风格
- 在项目早期,需求不稳定、设计不成熟、实现不确定的情况下很难准确地估算代码量。
- 代码行强调编码的工作量,只是项目实现阶段的一部分。
功能点估算法- Albrecht
- Albrecht适合于信息系统估算
- 与实现的语言和技术没有关系
- 用系统的功能数量来测量其规模
- 通过评估、加权、量化得出功能点
- 功能点公式:FP =UFC*TCF
- FP:功能点
- UFC:未调整功能点计数
- TCF:技术复杂度因子
- 功能计数项:(5类组件、从处理逻辑的角度)
- 外部输入(External Inputs:EI)
- 外部输出(External Outputs:EO)
- 外部查询(External Inquiry:EQ)
- 外部接口文件(External Interface File:EIF)
- 内部逻辑文件(Internal Logical File:ILF)
举例
链接: https://wenku.baidu.com/view/0194bc086c175f0e7cd13737.html.
链接: https://blog.youkuaiyun.com/zhang_jim/article/details/2578756.
其它功能点估算法
Albrecht 功能点估算法主要适合信息系统,不适合实时系统或者嵌人式系统,因为实时系统或者嵌人式系统的外部特征并不明显。
- Mark II功能点估算方法
- COSMIC-FFP功能点估算方法
用例点估算法
用例点估算法通过分析用例角色、场景和技术与环境因子等来进行软件估算,估算中用到很多变量和公式,如未调整用例点、技术复杂度因子和环境复杂度因子等变量。
基本步骤如下:
- 对每个角色进行加权,计算未调整
的角色的权值 - 计算未调整的用例权值
- 计算未调整的用例点
- 计算技术和环境因子
- 计算调整的用例点
- 计算工作量
类比 (自顶向下)估算法(简略)
类比估算法是从项目的整体出发,进行类推,即估算人员根据以往完成类似项目所消耗的总成本(或工作量)来推算将要开发的软件的总成本(或工作量),然后按比例将它分配到各个开发任务单元中,是种自上而下的估算形式,也称为自顶向下方法。
优点:在项目的初期技信息不足时采用此方法,如合同期和市场招标时等。简单易行,花费少。
缺点:具有一定的局限性,准确性差,可能导致项目出现困难。
参数估算法(简略)
参数模型估算法的基本思想是找到软件工作量的各种成本影响因子,并判定其对工作量所产生影响的程度是可加的、乘数的还是指数的,以期得到最佳的模型算法表达形式。
优点:参数模型可以提供工作量(规模)的直接估计;因为是算法模型或者经验导出模型,是通过大量的项目数据进行数学分析导出的模型,因此结果相对比较准确。
缺点:目前没有一种模型或者方法能适应所有项目。
专家估算法(简略)
专家估算法是由一些被认为是该任务专家的人来进行的,并且估算过程
的很大一部分是基于不清晰、 不可重复的推理过程,也就是直觉。
专家估算法-Deiphi
- 多位专家进行成本估算
- 组织者确定专家,这些专家互相不见面
- 组织者发给每位专家一份软件规格说明
- 专家以无记名对该软件给出3个规模的
估算值
1 最小ai 2 最可能的mi 3 最大bi - 组织者计算每位专家的
Ei=(ai+4mi+bi)/6 - 如果各个专家的估算差异超出规定的范
围(例如:15%),则需重复上述过程 - 最终可以获得一个多数专家共识的软件
规模:E=E1+E2+…En/n(N:表示N 个
专家)
特点:
- 专家估算法是一种经验估算法,也是一种原始的估算方法。
- 进行估算的人有专门的知识和丰富的经验,据此提出一个近似的数据。
- 此方法只适用于要求很快拿出项目的大概数字的情况,不适用于要求详细估算的项目。
故事点估算法(敏捷项目)
- 敏捷开发模型scrum中,整个团队参与估算过程
- Scrum专家将估算过程变成了一个名为“计划扑克”的游戏
- 这种方法也称为故事点估算法
- 基于小组讨论的估算比个人估算更准确。
- 要用于估计软件开发中的开发目标的工作量或相对大小
总成本估算
-
成本估算结果包括
- 直接成本:与具体项目相关的成本
- 间接成本:可以分摊到各个具体项目中的成本
-
项目总估算成本=直接成本+间接成本=规模*成本系数
例如:成本系数= 1000元/工时
成本预算
- 成本预算是将项目的总成本按照项目的进度分摊到各个工作单元中去
- 成本预算的目的是产生成本基线
- 分配项目成本预算包括三种情况:
- 给任务分配资源成本
- 给任务分配固定资源成本
- 给任务分配固定成本
例题
简答题
项目经理正在进行一个图书馆信息查询系统的项目估算,他采用Delphi 的成本估算方法,邀请了3 位专家进行估算,第一位专家给出了2 万元、7 万元、12 万元的估算值,第二位专家给出了4 万元、6 万元、8 万元的估算值,第三个专家给出 2 万元、6 万元、10 万元的估算值,请计算这个项目的成本估算值是多少?
答:
第一个专家E1=(2 + 47 + 12) / 6 = 7;
第二个专家E2=(4 + 46 +8) / 6 = 6;
第三个专家E3=(2 + 4*6 +10) / 6 = 6;
项目成本估算值E=(E1 + E2+ E3) /3 = 6.3(万元)
自练
-
在成本管理过程中,项目经理确定的每个时间段,各个工作单元的成本是
A.
估算
B.
预算
C.
直接成本
D.
间接成本
正确答案: B -
下列哪个不是软件项目规模的衡量单位?
A.
源代码长度(LOC)
B.
功能点(FP)
C.
人天、人月、人年
D.
小时
正确答案: D -
在项目初期,进行竞标合同的时,一般采用的成本估算方法是
A.
参数估算法
B.
类比估算法
C.
专家估算法
D.
功能点估算
正确答案: B -
估算的基本方法不包括?
A.
代码行、功能点
B.
参数估算法
C.
专家估算法
D.
函数估算法
正确答案: D -
成本预算的目的是
A.
产生成本基线
B.
编写报告书
C.
指导开发过程
D.
方便进度管理
正确答案: A -
下列哪项不是UFC的功能计数项?
A.
外部输出
B.
外部接口文件
C.
内部输出
D.
内部逻辑文件
正确答案: C -
常见的成本估算方法不包括哪一项
A.
代码行
B.
功能点
C.
类比法
D.
关键路径法
正确答案: D -
______是成本的主要因素,是成本估算的基础。
A.
计划
B.
规模
C.
风险
D.
利润
正确答案: B -
下面关于估算的说法错误的是
A.
估算不是很准确,是有误差的
B.
估算时不要太迷信数学模型
C.
经验对于估算来说不重要
D.
历史数据对于估算非常重要
正确答案: C -
间接成本是与一个具体项目相关的成本。
正确答案: 错误 -
在进行软件项目估算的时候,可以直接参照其它企业的模型进行项目估算。
正确答案: 错误 -
估算时既要考虑直接成本又要考虑间接成本。
正确答案: 正确 -
经验对于估算来说不重要。
正确答案: 错误 -
COCOMO 81有3个等级的模型: 有机模型、嵌入式模型、半有机模型。
正确答案: 错误 -
功能点估算与项目所使用的语言和技术有关。
正确答案: 错误 -
人的劳动消耗所付出的代价是软件产品的主要成本。
正确答案: 正确 -
在软件项目估算中,估算结果是没有误差的。
正确答案: 错误 -
软件项目规模即工作量。
正确答案: 正确 -
填空 1方法通过分析用例角色、场景和技术与环境因子等来进行软件估算。
正确答案:
填空 1:
用例点 -
软件项目的主要成本是 填空 1 。(提示:13个汉字)
正确答案:
填空 1:
人的劳动的消耗所需要的代价 -
功能点方法中5类功能组件的计数项是填空 1、填空 2 、填空 3、填空 4 、填空 5。
正确答案:
填空 1:
外部输入
填空 2:
外部输出
填空 3:
外部查询
填空 4:
外部接口文件
填空 5:
内部逻辑文件 -
在项目初期,一般采用的成本估算方法是: 填空 1。
正确答案:
填空 1:
类比估算法 -
软件项目成本包括直接成本和间接成本,一般而言,人力成本归属于 填空 1 成本。
正确答案:
填空 1:
直接