加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

如何评估一个Linux发行版的总体成本

发布时间:2019-04-12 20:24:56 所属栏目:Windows 来源:Amanda Mcpherson, Brian Proffi
导读:开源之道引言:为什么要翻译十一年前的一份白皮书? (本白皮书发表于 2008 年。)答案很简单,就是要学会算经济账,一个开源项目,尤其是大型的、经过多年开发的,企业利用该项目就要在开始的时候算好一笔经济账,它不是零成本,它像一个快速向前滚动(发

欲计算该发行版的开发成本,我们从美国劳工统计局查阅了计算机程序员的基本工资概况。根据美国劳工统计局的数据,2008 年 7 月美国程序员的平均工资为 75,662.08 美元。 10 这也是我们的 SLOCCount 运行中使用的工资金额。(当然,如今大多数软件开发都是全球性的,因此使用仅限美国的工资数字有点以偏概全。然而这时一个值得我们持续探索的主题,在未来我们要找到一个途径来确定全球平均工资,将之作为生产成本的基准。)

还应该指出的是,薪水本身并不是软件开发成本的唯一决定因素。在他的文章中,Wheeler 提及了 SLOCCount 中的开销参数,其中包括测试成本、设备、公司运营成本以及开发人员的总赔偿金。这些参数被称之为总包比例wrap rate

要知道这些总包比例的增长是非常之迅速的,在美国,专业员工的平均薪酬百分比(病假、休假、保险福利)为 29.0%。11 因此,虽然我们刚才所提及的美国劳工统计局给出的数据是程序员的平均工资为 75,662.0810 美元,但是企业主实际要付的数字为 97,604.08 美元。而且这只是总包比例的一部分。

Wheeler 当年的评估将总包比例的值设为 2.4。虽然这个数字明显因公司和地区而异,但进一步的研究显示,没有任何重要证据表明这个数字需要在我们所测试中进行调整。

源代码和估计成本结果

根据前面所示的所有假设,Fedora 9 的 SLOC 和估计产量值如下。

旁注:最初的 SLOCCount 年薪数字是 2000 年 $56,286 美元,有心人可以看到我们对此进行了相应的转换。为了实现它,我们将总费用乘以 2008 年美元(10,784,484,309 美元)的 0.744,这是 SLOCCount 通常使用的 2000 年程序员工资($56,286)与我们发现的 2008 年 7 月工资($ 75,662.08)之间的比率。结果是 2000 年开发 Fedora 9 的成本超过 80 亿美元。这使读者很好地了解了这六年中 Linux 发行版中添加了多少代码和功能。

聚焦 Linux内核,及其增强 COCOMO 模型

正如本文的研究覆盖的内容,聪明的读者一定发现了,并非所有 Linux 系统中所有的组件都需要得到同等的对待。根据 COCOMO 模型,一些项目的性质和复杂性需要不同的考虑。

这一点在 Wheeler 自己的 2002 年文章的后续行动中更为明显,他强调了对 Linux 内核就应该使用的不同估计模型。12 在这篇新文章中,Wheeler 坚持认为,由于 Linux 内核代码通常比“普通”应用程序更复杂 —— 特殊的除外 —— 它需要的分析超出了基本的 COCOMO 模型。例如,像 Mozilla 这样的用户空间应用程序更容易逐行编码,因为它在更高的层次上被抽象,并且只需要处理更少的任务。然而,现代企业级操作系统内核则需要同时执行大量极其复杂的操作,也就是说技术含量更高、难度也更大。

所以 Wheeler 解释说,发行版中的组件不能使用同一种标准的方法来进行分析,就内核来说就应该使用增强 COCOMO 模型intermediate COCOMO model来进行衡量。增强的 COCOMO 模型有更多的参数供选择,因此,应该更准确地分析一个复杂的软件本身。在 2004 年的文章中,他详述了他对这些参数的评估细节,即调整整体的净效应,将 SLOCCount 中的工作因子值从默认值 3 到 4.64607,同时,-effort 指数值也变为 1.12,在增强的 COCOMO 软件估算模型下,这是分配给半分离软件semi-detached software项目的值。

基于这些新的参数,针对 Linux 内核做了一个单独的评估(Fedora 9 的内核版本是 linux-2.6.25.i686):

本研究方法的局限性和优势

没有完美的方法来估计像 Linux 那样复杂和不断发展的软件项目的价值。虽然我们认为这种方法是最好的方法,但它可能过度计算价值的某些方面,而低估了其他方面。以下是我们认为该方法存在限制的部分:

  • COCOMO 模型是研究封闭式软件开发而设计的。因此,我们认为它低估了开源、协作开发的软件项目(如 Linux)中固有的测试复杂性。由于变更的频繁,且不论大小,而且开发者本身均是分布全球各地,Linux 生态系统参与者的测试负担比专有的独立公司高出一个数量级。
  • 衡量 Linux 发行版价值的另一个困难就是确定开始时包含 Linux 发行版的内容。我们的研究包含了 Fedora 的公共源代码库中所有软件包。但是,Fedora 本身也有不同的版本(例如 LiveCD 版本)。当然还有更大的发行版,例如,Debian GNU / Linux 的代码仓库 13 就比 Fedora 更大。还有大量的开源软件在任何一个发行版中都找不到。开源是一个非常大的宇宙,我们只是以 Linux 发行版为研究单位,尽可能的包含足够多的开源软件罢了。
  • SLOC 分析的最大弱点是它专注于软件项目的净增加。举例来讲,任何熟悉内核开发的人都会意识到,开发过程中最高的人力成本是删除和修改代码的时候。删除和更改代码所花费的精力,并未反映在与此估算相关的值中。因为在协作开发模型中,代码被开发,然后被更改和删除,真正的价值远远大于现有的代码库。聪明的你,想一下内核的开发流程:当几行代码添加到内核时,必须修改更多代码才能与现有的代码兼容。理解依赖关系和结果然后更改代码的工作在本研究中没有得到很好的体现。
  • 协作开发意味着,通常会有多个个人或小组致力于解决相同技术问题的不同方法,其中只有一种方法“获胜”而包含在最终版本中。 由于“失败”方法并未包含在最终的发布版本中,因此该 SLOC 方法未考虑这些方法的开发工作。
  • 由于 Linux 不同的发行版之间,以及同一个发行版的不同版本之间的代码行数是有着巨大差异的,所以将本研究冠以研究 “Linux” 是有点牵强的。 分析内容有很多不同的选择,我们只能选择一种。出于这个原因,我们发现所有发行版共享的离散包的估计值(例如内核)更有意义。
  • 很遗憾的是,我们只能以量来代替研究质。Linux 社区的壮大速度很快,但同时也包含了一些不被经常用到的代码,比如旧的驱动程序。但是,包含此代码非常重要,因为 Linux 中包含特定于体系结构的代码以及驱动程序(与其他操作系统不同)。因此,此数字将大于操作系统本身内不包含这些组件的其他操作系统。
  • 本研究假设所有开发者都来自美国,那么相应的就以美国劳动力的相关成本为基准来计算。尽管事实上,绝大多数的开源软件开发都是全球性的,其劳动力成本也会相应变化。
  • 本研究中反映的数字表示从头开始一款 Linux 发行版,进而计算开发所需的成本。 值得注意的是,这可以估算成本,但不会估算更大生态系统的价值,因为如此广泛使用的核心技术改变将产生巨大而深远的经济影响。

Linux 是如何增长的

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!