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

  • 软件项目规模
    • 软件项目规模即工作量包括
    • 软件规模单位包括
  • 软件项目成本
  • 成本估算
  • 估算基本方法
    • 代码行估算法(简略)
    • 功能点估算法- Albrecht
      • 举例
      • 其它功能点估算法
    • 用例点估算法
    • 类比 (自顶向下)估算法(简略)
    • 参数估算法(简略)
    • 专家估算法(简略)
    • 故事点估算法(敏捷项目)
  • 总成本估算
  • 成本预算
  • 例题
    • 简答题
    • 自练

软件项目规模

软件项目规模即工作量包括

软件规划,软件管理,需求,设计,编码,测试,以及后期的维护等任务。

软件规模单位包括

  • 源代码长度的测量:LOC(Loc of Code)
  • 用系统的功能数量来测量:FP(Function Point)
  • 人月
  • 人天
  • 人年

软件项目成本

  • 完成软件规模相应付出的代价
  • 待开发的软件项目需要的资金
  • 人的劳动的消耗所需要的代价是软件产品的主要成本
  • 成本的单位包括
    • 人民币元
    • 美元

成本估算

  • 规模是成本的主要因素,是成本估算的基础
  • 有了规模就确定了成本
  • 估算不是很准确,有误差
  • 项目经验数据非常重要
  • 不要太迷信某些数学模型
  • 成本估算结果包括
    • 直接成本:与具体项目相关的成本 例如:参与项目的人员成本
    • 间接成本:可以分摊到各个具体项目中的成本 例如:培训、房租水电、员工福利、市场费用管理费、其他等等

估算基本方法

  • 代码行估算法
  • 功能点估算法(Albrecht、Mark Ⅱ、COSMIC-FFP)
  • 用例点估算法
  • 类比 (自顶向下)估算法
  • 参数估算法(COCOMO、 COCOMO 81、 COCOMO Ⅱ、Walston-Felix、神经网络)
  • 专家估算法
  • 故事点估算法(敏捷项目)

代码行估算法(简略)

  • 要求:功能分解足够详细,同时还要有一定的经验数据
  • 优点:代码是所有软件开发项目都有的产品,而且很容易计算代码行数
  • 缺点:
    1. 对代码行没有公认的可接受的标准定义。
    2. 代码行数量依赖于所用的编程语言和个人的编程风格
    3. 在项目早期,需求不稳定、设计不成熟、实现不确定的情况下很难准确地估算代码量。
    4. 代码行强调编码的工作量,只是项目实现阶段的一部分。

功能点估算法- 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.csdn.net/zhang_jim/article/details/2578756.

其它功能点估算法

Albrecht 功能点估算法主要适合信息系统,不适合实时系统或者嵌人式系统,因为实时系统或者嵌人式系统的外部特征并不明显。

  • Mark II功能点估算方法
  • COSMIC-FFP功能点估算方法

用例点估算法

用例点估算法通过分析用例角色、场景和技术与环境因子等来进行软件估算,估算中用到很多变量和公式,如未调整用例点、技术复杂度因子和环境复杂度因子等变量。

基本步骤如下:

  1. 对每个角色进行加权,计算未调整
    的角色的权值
  2. 计算未调整的用例权值
  3. 计算未调整的用例点
  4. 计算技术和环境因子
  5. 计算调整的用例点
  6. 计算工作量

类比 (自顶向下)估算法(简略)

类比估算法是从项目的整体出发,进行类推,即估算人员根据以往完成类似项目所消耗的总成本(或工作量)来推算将要开发的软件的总成本(或工作量),然后按比例将它分配到各个开发任务单元中,是种自上而下的估算形式,也称为自顶向下方法。

优点:在项目的初期技信息不足时采用此方法,如合同期和市场招标时等。简单易行,花费少。

缺点:具有一定的局限性,准确性差,可能导致项目出现困难。

参数估算法(简略)

参数模型估算法的基本思想是找到软件工作量的各种成本影响因子,并判定其对工作量所产生影响的程度是可加的、乘数的还是指数的,以期得到最佳的模型算法表达形式。

优点:参数模型可以提供工作量(规模)的直接估计;因为是算法模型或者经验导出模型,是通过大量的项目数据进行数学分析导出的模型,因此结果相对比较准确。

缺点:目前没有一种模型或者方法能适应所有项目。

专家估算法(简略)

专家估算法是由一些被认为是该任务专家的人来进行的,并且估算过程
的很大一部分是基于不清晰、 不可重复的推理过程,也就是直觉。

专家估算法-Deiphi

  1. 多位专家进行成本估算
  2. 组织者确定专家,这些专家互相不见面
  3. 组织者发给每位专家一份软件规格说明
  4. 专家以无记名对该软件给出3个规模的
    估算值
    1 最小ai 2 最可能的mi 3 最大bi
  5. 组织者计算每位专家的
    Ei=(ai+4mi+bi)/6
  6. 如果各个专家的估算差异超出规定的范
    围(例如:15%),则需重复上述过程
  7. 最终可以获得一个多数专家共识的软件
    规模: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 + 4
6 +8) / 6 = 6;
第三个专家E3=(2 + 4*6 +10) / 6 = 6;
项目成本估算值E=(E1 + E2+ E3) /3 = 6.3(万元)

自练

  1. 在成本管理过程中,项目经理确定的每个时间段,各个工作单元的成本是
    A.
    估算
    B.
    预算
    C.
    直接成本
    D.
    间接成本
    正确答案: B

  2. 下列哪个不是软件项目规模的衡量单位?
    A.
    源代码长度(LOC)
    B.
    功能点(FP)
    C.
    人天、人月、人年
    D.
    小时
    正确答案: D

  3. 在项目初期,进行竞标合同的时,一般采用的成本估算方法是
    A.
    参数估算法
    B.
    类比估算法
    C.
    专家估算法
    D.
    功能点估算
    正确答案: B

  4. 估算的基本方法不包括?
    A.
    代码行、功能点
    B.
    参数估算法
    C.
    专家估算法
    D.
    函数估算法
    正确答案: D

  5. 成本预算的目的是
    A.
    产生成本基线
    B.
    编写报告书
    C.
    指导开发过程
    D.
    方便进度管理
    正确答案: A

  6. 下列哪项不是UFC的功能计数项?
    A.
    外部输出
    B.
    外部接口文件
    C.
    内部输出
    D.
    内部逻辑文件
    正确答案: C

  7. 常见的成本估算方法不包括哪一项
    A.
    代码行
    B.
    功能点
    C.
    类比法
    D.
    关键路径法
    正确答案: D

  8. ______是成本的主要因素,是成本估算的基础。
    A.
    计划
    B.
    规模
    C.
    风险
    D.
    利润
    正确答案: B

  9. 下面关于估算的说法错误的是
    A.
    估算不是很准确,是有误差的
    B.
    估算时不要太迷信数学模型
    C.
    经验对于估算来说不重要
    D.
    历史数据对于估算非常重要
    正确答案: C

  10. 间接成本是与一个具体项目相关的成本。
    正确答案: 错误

  11. 在进行软件项目估算的时候,可以直接参照其它企业的模型进行项目估算。
    正确答案: 错误

  12. 估算时既要考虑直接成本又要考虑间接成本。
    正确答案: 正确

  13. 经验对于估算来说不重要。
    正确答案: 错误

  14. COCOMO 81有3个等级的模型: 有机模型、嵌入式模型、半有机模型。
    正确答案: 错误

  15. 功能点估算与项目所使用的语言和技术有关。
    正确答案: 错误

  16. 人的劳动消耗所付出的代价是软件产品的主要成本。
    正确答案: 正确

  17. 在软件项目估算中,估算结果是没有误差的。
    正确答案: 错误

  18. 软件项目规模即工作量。
    正确答案: 正确

  19. 填空 1方法通过分析用例角色、场景和技术与环境因子等来进行软件估算。
    正确答案:
    填空 1:
    用例点

  20. 软件项目的主要成本是 填空 1 。(提示:13个汉字)
    正确答案:
    填空 1:
    人的劳动的消耗所需要的代价

  21. 功能点方法中5类功能组件的计数项是填空 1、填空 2 、填空 3、填空 4 、填空 5。
    正确答案:
    填空 1:
    外部输入
    填空 2:
    外部输出
    填空 3:
    外部查询
    填空 4:
    外部接口文件
    填空 5:
    内部逻辑文件

  22. 在项目初期,一般采用的成本估算方法是: 填空 1。
    正确答案:
    填空 1:
    类比估算法

  23. 软件项目成本包括直接成本和间接成本,一般而言,人力成本归属于 填空 1 成本。
    正确答案:
    填空 1:
    直接

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

  1. 软件开发过程与项目管理(13.软件项目集成计划控制)

    软件开发过程与项目管理(13.软件项目集成计划控制 项目集成计划 软件项目管理的最重要的四个要素 四要素的关系 项目集成计划的作用 项目集成计划的内容 项目集成计划的流程 项目集成计划风险 项目集成计 ...

  2. 软件开发过程与项目管理(16.项目结束)

    软件开发过程与项目管理(16.项目结束) 课件 项目终止 项目终止的条件 下列条件出现,可以终止项目: 项目计划中确定的可交付成果已经出现,项目的目标已经成功实现 由于相关原因,项目无法继续进行,例如 ...

  3. 软件开发过程与项目管理(14.项目核心计划执行控制)

    软件开发过程与项目管理(14.项目核心计划执行控制) 范围计划执行控制 范围核实 变更控制 进度与成本执行控制 图解控制法 挣值分析法(重点) 挣值分析法- 输入 BCWS-Budgeted Cost ...

  4. 软件开发过程与项目管理(10.软件项目人员与沟通计划)

    软件开发过程与项目管理(10.软件项目人员与沟通计划) 课件 项目人员计划 团队定义 团队是一定数量的个体成员组织的集合 包括自己组织的人.供应商.分包商.客户等 为一个共同的目标工作,协调一致,愉快 ...

  5. 软件开发过程与项目管理(2.软件项目确定)

    软件开发过程与项目管理(2.软件项目确定) 项目立项 Make or Buy 决策 项目招投标过程 乙方项目分析 项目经理的职责 小结 例题 简答题: 自练 项目立项 明确项目的目标.时间表.项目使用 ...

  6. 软件开发过程与项目管理(1.项目管理概述)

    软件开发过程与项目管理(1.项目管理概述) 项目定义 项目的特征 项目与日常运作 软件项目的特殊性 项目管理定义 软件项目管理 PMBOK(美国的项目管理知识体系) 过程管理 软件项目管理过程 软件项 ...

  7. 软件开发过程与项目管理(12.软件项目合同计划)

    软件开发过程与项目管理(12.软件项目合同计划) 课件 项目合同 合同是具有法律效力的协议 双方自愿达成的协议 签订者具有相应的法律能力 有充分的签约理由 具有合法的目的 合同条款 合同类型 总价合同 ...

  8. 软件开发过程与项目管理(11.软件项目风险计划)

    软件开发过程与项目管理(11.软件项目风险计划) 课件 风险基本概念 项目风险的三要素 一个事件 事件发生的概率 事件的影响 风险类型 预测角度: 已知风险 可预测风险 不可预测风险 范围角度: 商业 ...

  9. 浅谈软件开发过程及项目管理

    做软件也有几年了,将学到别人的经验,项目中自己的体验,参加培训的收获一起总结一下. 需求阶段: 首先要明确软件项目开发完后是为了解决什么问题?对于要解决的核心问题必须要明确,以后可以重点设计作为软件的 ...

最新文章

  1. 【聚类算法】sklearn聚类方法详解
  2. 中年程序员都在想什么?
  3. 职高中专的模块化课程设计难点
  4. java 线程交替输出,[java]java经典问题之线程交替打印数字
  5. jQuery自定义选择器
  6. 利用NLB建立双机负载均衡群集
  7. 探索 OpenStack 之(7):Neutron 深入探索之 Open vSwitch (OVS) + GRE 之 Neutron节点篇
  8. OpenCV-Python实战(番外篇)——基于 Haar 级联的猫脸检测器
  9. JavaScript 引擎 V8 新机制:JIT-less
  10. JavaWeb:HTTP、Request、Response
  11. spring事务失效二:业务代码捕获异常
  12. mysql的索引(二)
  13. fedora9的安装
  14. 笔记本装那一版本Linux好,在我的新笔记本电脑上安装五种Linux版本
  15. Ant Design Of react modal框动态控制footer展示或者隐藏
  16. 易优CMS:arcpagelist 瀑布流分页列表
  17. Linux 操作系统的体系结构
  18. dns服务器不正确,DNS服务器怎么设置?dns错误怎么办?
  19. Dynamical Isometry and a Mean Field Theory of CNNs
  20. 猫哥教你写爬虫 029--爬虫初探-requests

热门文章

  1. android切换原唱伴唱,切换伴奏和原声/设置KTV播放列表
  2. FastReport——打印和打印设置
  3. 子查询:单行子查询,多行子查询,多列子查询
  4. 2022第十三届蓝桥杯国赛真题javaB组
  5. 低波动溢价:是否还能持续?
  6. iptables之nat表的学习和实验
  7. flyway常用配置_如何使用Flyway配置来处理多个数据库
  8. 攒机笔记六(机械硬盘)
  9. python - Django
  10. Houdini 使用 Vscode 写 Vex 脚本