软件规模是项目成本估算的主要驱动因素

迄今为止,大多数软件开发成本估算模型, 增强或维护项目使用软件大小作为主要输入参数. 软件规模被广泛认为是软件项目所需工作量和成本的重要成本驱动因素. 然而,与许多物理对象不同, 没有通用的衡量标准来衡量软件规模. 虽然需要估算粉刷墙壁成本的画家通常会以平方英尺或平方米为单位测量这面墙的大小,作为估算的输入, 软件大小的测量很难,因为它没有真正的物理形状. 然而, 业界有多种方法可用于衡量软件规模. 然而,对于不是软件规模专家的成本估算员, 可能难以理解可用方法的优缺点,因此他们可能会发现难以为他们的目的选择最佳方法. 在这个博客中, 概述了业界可用的最广泛使用的软件大小调整方法. 还给出了这些方法的优缺点,以及针对哪种类型的软件项目估算使用哪种方法的建议. 下表显示了本博客中涵盖的软件大小测量方法.

软件大小测量测量范围尺寸
SLOC物理软件对象SLOC 中的技术规模
联合会功能性用户需求FP 中的功能大小
NESMA功能性用户需求FP 中的功能大小
COSMIC功能性用户需求CFP 中的功能大小
快照部分非功能性用户需求SNAP 点中的非功能性大小
用例点用例, 技术项目特点, 环保项目特点用例点中的“工作量/规模组合”
快速功能点功能用户需求和配置大小加特纳FFP
故事点积压项目, 功能性和非功能性故事点中的“努力/复杂性组合”

软件项目成本估算

在软件项目成本估算中, 重点通常是估计团队中人员的工作时间. 这样做的原因是工作时间通常会推动项目的总成本. 当然还有其他费用, 例如. 执照, 工作场所, 基础设施, 等等, 但这些成本不受软件大小的影响,也可以用更简单的方式计算.

一种 (简化) 估计模型如下图所示.

简化估计模型

Nesma 简化估计模型

待开发软件的大小是项目估算的主要输入参数. 准确测量尺寸对于估计的准确性至关重要. 选择一个切合实际的生产率也是非常重要的一步. 这应该基于历史数据或借助基于相关行业数据的专业参数工具来完成. 通常首选使用公司数据, 因为这显示了组织的实际能力,这可能是 (很多) 更好或 (很多) 低于行业平均水平. 项目的特定特征也很重要, 例如. 日程压力, 团队规模, 质量限制, 等等. 因此, 参数化工具通常在项目估算的这一步非常有用.

规模乘以生产力, 计算总工作时间. 通常需要根据风险分析进行一些调整. 如果一个人需要 99% 例如,确保不会超支成本, 工作时间可能会进行调整以产生意外情况.

软件规模测量方法分类

功能尺寸测量方法与其他方法之间存在重要区别 (非功能性尺寸测量方法或混合方法). 功能尺寸测量方法测量功能 (‘软件有什么作用’) 该软件为其用户提供并以某种方式对其进行量化. 用户可以使用的功能越多, 这更大的软件大小. 这类方法的主要优点之一是大小与所使用的技术无关 (例如. 爪哇, .网, 甲骨文) 和使用的实现方法 (COTS, 瀑布式开发, 敏捷开发, 等等).

非功能性尺寸测量方法测量软件的技术工件, 通常是构建的软件代码. 也有可用的混合方法来衡量功能方面, 软件项目的技术方面,有时还有环境方面,以便确定规模, 例如. 用例点. 然而, 大多数方法要么衡量软件的功能规模,要么衡量软件的技术规模.

功能尺寸测量方法——优点和缺点

一般来说, 所有 ISO/IEC 功能尺寸测量标准的主要优点是:

  • 尺寸测量以客观的方式进行. 两个经过认证的测量员在测量相同的功能用户需求时应该拿出相同的尺寸;
  • 尺寸测量是可重复和可验证的. 如果测量专家做出任何假设, 这些应记录为尺寸测量的一部分;
  • 尺寸测量可防. 这非常重要,因为功能大小通常用于供应商和客户之间的单价合同. 每个功能点的价格合同只有在功能规模可以确定而没有争议的情况下才有可能;
  • 一些方法提供派生方法,使成本估算者能够在项目生命周期的早期相当准确地测量功能规模. 例如 Nesma 指示法 可以在需求分析阶段之后使用,并提供了一种获取功能大小指示的快速方法 (+50% / -30% 准确性).
  • 功能大小可以被视为对软件系统的用户和客户的“价值”. 更多功能意味着更多价值,因此成本更高. 例如,与源代码行等技术规模相比 (地块) 不清楚更多 sloc 是否对用户和/或业务意味着更多价值.
  • 因为标准化, 最重要的优点是可以存储已完成项目的数据,以便用于新项目的估算. 就像画家拥有特定类型墙壁的每平方英尺工作时间数据一样, 组织能够以每个功能点的小时数来洞察他们的生产力. 这使基准测试成为可能, 例如针对国际软件基准标准组的开放行业数据库 (ISBSG).

使用功能大小测量方法进行软件大小和估计的一些缺点是:

  • 功能尺寸测量需要有专业知识的人来进行这项活动. 因为这是一项如此重要的活动, 真的建议只让经过认证的测量员进行尺寸调整,即使这样也有适当的审查过程. 有一些举措可以自动测量软件的功能大小,但直到现在这些都不是很准确;
  • 功能尺寸测量需要一些时间和成本. 通常这小于 1% 的项目预算,到目前为止,大多数项目都可以在 1 持续时间的一周. 通常,进行功能尺寸测量的好处比成本要高很多倍, 因为它使利益相关者能够制定更现实的计划并避免超支和可能的羞辱;
  • 功能规模测量方法测量功能文档中指定的功能用户需求. 本文档有一些要求,以便测量者能够对其进行测量. 然而, 如果不满足这些要求, 无论如何,该项目可能注定要失败, 因为程序员将无法编码,测试人员将无法使用这些文档进行测试. 功能尺寸测量实际上是对需求的强大静态测试, 在许多情况下会发现严重的缺陷和遗漏, 能够及早调整规格,从而避免后期检测和纠正缺陷的成本.

软件项目的功能规模可用于最广泛使用的参数估计工具和模型, 例如. QSM SLIM, 加洛拉斯先知, 价格系统真实计划可可二号.

下一篇博客

在下一篇关于这个主题的博客中, 我将就表中所列方法在软件项目成本估算方面的优缺点发表我的看法.

 

 

关于作者

Harold van Heeringen 是软件度量高级顾问 / 高级软件成本工程师 Sogeti Nederland B.V. 除了他在 Sizing 部门的工作, 估计 & 索盖提的控制, 他参与了 Nesma (董事会成员), 国际软件基准标准小组 (ISBSG, 现任总统) 和通用软件度量国际联盟 (COSMIC, 国际咨询委员会, 代表荷兰).

博文代表作者个人观点
而并不一定与官方NESMA政策一致.
分享对这个职位:

4 评论

发表评论
  1. 德姆贝克特 说:

    虽然我同意所说的一切, 我想谈谈几个值得考虑的项目. 对项目成本影响最大的因素之一 (和质量) 是时间表. 成本与进度的关系是非线性的. 简单地说, 以许多单位的努力为代价购买了一个单位的进度减少. 最后, 在估算时,探索各种时间表的影响很重要,因为它们会影响成本. 在 “神话人物月刊” 布鲁克斯表示,缺乏足够的时间表导致的软件项目失败比所有其他原因加起来还要多。. 我自己作为软件估算师的经验仅用于证实这一点.

    虽然我是支持者和实践者或功能性尺寸, 估算软件项目时,重要的是交付需要多长时间, 需要多少钱, 什么是最好的人员配置, 以及最终产品的可靠性如何. 非功能性需求在确定这些方面发挥作用,它们并不是所有可以基于功能性需求添加到模型中的固定成本. 例如, 在 ERP 实施中,很大一部分工作将用于配置产品. 配置没有任何功能, 但是任何忽略它的估计模型都会产生不准确的结果.

    在估算时,我们希望考虑所有会影响成本和进度的大小因素. 其中一些是功能大小, 其他人不是.

    最好的祝福,

    唐贝克特, CFPS

  2. 卡莉安娜(Kalyana Chakravarthy) 说:

    亲爱的团队,
    我对估计有一些疑问.

    1. 在开发RICEW组件时, 什么是最合适的估算方法.
    2. 从中实施Oracle R12时 ; 例如财务模块, 我们如何估计?
    有案例研究吗?
    提前致谢 !!!
    问候
    卡里亚娜

发表评论