量化源代码和软件产品的价格


9

我要承担一个项目。这需要我编写代​​码,并且要编写大量代码。客户的要求是在项目结束时交付所有源代码。

我的问题是:如何量化源代码和软件产品的价格?是否有任何衡量指标的指标?我如何量化软件产品?

额外信息:该应用程序必须在任何操作系统上的任何位置运行,包括平板电脑(iPad,Galaxy标签等),智能手机(iPhone,Android手机等)以及网络上。 (现在,想象一下这将是多少代码)


2
当有人发现如何根据不断变化,不明确且通常不完整的用户需求神奇地量化软件产品的价格时,世界将会变得更好。但仍然对该问题+1。
阿森尼·穆尔琴科(Mosenko)2012年

定价软件唯一可靠的方法:(1)编写和测试程序;(2)衡量您的努力;(3)根据您的实际努力来出售软件。
布朗

您应该检出AppceleratorAirHaxe(可以同时定位或使用NME)。
back2dos 2012年

这不是特定于编程或软件的问题,它是关于价格的一般性问题,被伪装成与编程相关的问题。

I am about to undertake a project. This requires me to write code...。程序员+项目=代码(通常)。为什么要陈述显而易见的?
动态

Answers:


12

您永远无法知道确切的价格或接近准确的价格,因为它取决于许多因素。例:

案例分析

您收到了一个基于WordPress的小型网站的请求。您唯一需要做的就是:与您的设计师合作来创建精美的图形,然后创建网站本身(没有什么技术性,只需将一组插件添加到WordPress中),然后进行部署。这项工作真的很容易,您报价$ 600。

您的设计师创建了第一稿。客户解释说,他认为它根本没有吸引力。第二稿,第三稿和第四稿也是如此。最终,经过两周的努力,设计师终于得到了草图,并被客户接受。

但是可悲的是,设计师被公交车撞了,唯一得到的就是他发送给您的JPEG,而不是原始的PSD,所以您必须从新设计师开始。最后,您得到了图形并开始工作。

惊喜:您发现插件A与插件B不兼容,插件C不能按预期工作,并且插件D无法安装在最新版本的WordPress上,而插件A只能安装在这个最新版本上。现在,您必须手动进行许多PHP编码,并且由于您是Python开发人员,并且从未在PHP中编写过一行代码,所以这并不是最简单的任务。

同时,客户开始向您发送可怕的电子邮件,询问为什么工作仍未完成,而截止日期是一周前。您最终完成了PHP编码,一切都在您的计算机上运行良好。顾客很高兴。

然后,您开始将网站部署到托管服务器,以发现不仅网站因某种神秘错误而失败,而且托管公司不支持您在代码中使用很多的PHP功能。

最后,在这个项目上花费了超过3,000美元之后,您就可以启动并运行该网站。客户由于截止日期而生气,因为“没有任何事情能像您期望的那样工作”。您要价600美元吗?3,000元?

为什么会发生?

我在此示例中说明的情况比您想象的要频繁得多。为什么?因为您无法预测太多变量,因此增加了风险。在这里,风险通过以下方式增加:

  • 与视觉设计有关的规范不明确,
  • 设计师之死,
  • 您选择的插件不兼容,
  • 您选择的插件的不良支持,
  • 您以前没有使用过PHP的事实,
  • 开发环境与生产环境之间的差异以及没有过渡。

可以使用特定方法解决这些问题:

  • 明确而精确的功能和非功能要求,
  • 忙碌的场景管理(即设计师必须与您共享每个文档,以便他可以在任何时候死掉而不会影响项目),
  • 您必须使用的工具和语言的先验知识(这需要大量工作),
  • 暂存,强化测试等

唯一的问题是,采用这种方法时,您必须告诉客户他首先要支付至少5,000美元,因为这实际上是要求,规格,设计,测试等的价格。该客户有可能接受您的报价极低。

没事做吗

如果您不能给出非常精确的价格,您仍然可以给出一个近似值,该近似值将工作的每个部分都考虑进去,并且风险指数会受到影响。可预测的风险越高,价格越高。

您有两种方法可以做到这一点:

1. Watefally方式

如果您从事适合Waterfall / V-Model的项目,则可能会起作用:

  1. 列出项目的功能和非功能需求。以与客户签署合同相同的方式获取客户签署的文档。

  2. 获得此文档后,您将已经:

    • 您已经花费了收集需求并创建此文档的价格。这可能是一笔不小的数目,因为对于一个普通项目,这些文档可能从20页到一百页不等,而对于大型项目,则可能是数百页或数千页。

    • 对您要求做的产品的清楚,准确和完整的了解。

  3. 逐步与您的团队一起,分析每个需求并评估:

    • 该项目这部分的平均价格,

    • 不考虑风险的最高价格,

    • 风险指数。

    将考虑这三个因素,以确定您将给客户的价格。

  4. 资产风险不取决于特定需求,而取决于需求之间或总体上与系统之间的兼容性。

瀑布式方法的优点:考虑到您对要完成的工作和可能产生的风险有清晰的了解,因此客户可以得到非常精确的价格。

瀑布式方法的缺点:在给出价格之前,您必须写一个200页的文档。如果客户同时取消该项目或同时进行该怎么办?整个过程也非常繁重,以后的需求无法更改。

2.敏捷方式

如果您从事适合Scrum或其他敏捷模型的项目:

  • 要么不给出项目的整体价格,而是给出每个组件的价格,
  • 或者您可以在开始时指出一个非常近似的总体价格,然后给出越来越精确的价格。

在这两种情况下,您都应该在您和客户之间建立起牢固的信任,或者在销售部门拥有出色的人才。除此以外,

  • 在第一种情况下,那个人会相信你只是在偷她的钱一次又一次地索要小笔钱,而这永远不会结束,

  • 在第二种情况下,此人不会理解您为什么一直在更改价格,尤其是在大多数时候价格上涨的情况下。

敏捷方法的优点:客户可以随时取消。另外,如果她在早期取消,她仍然有一些可以使用的源代码。

敏捷方法的缺点:价格太不精确或什至没有给出。如果您不告诉他们必须支付多少费用,大多数客户将不愿意与您开展业务。


3

如果项目不能同时明确结果和客户需要支付的资金,则不要接受该项目。我只是执行以下操作:

  • 提出客户需要做的步骤和付款。
  • 完成上一步并支付了全款后,客户很高兴转到下一个步骤。

对于付款方式,请根据功能选择付款。因此,如果客户不能支付整个项目的费用,则有机会放弃这些功能。

根据代码行(LOC)获得报酬是愚蠢的事情。因为LOC并不代表任何东西!聪明地编写一个好的代码,并根据该功能收费!

祝好运,


1
指出LOC的+1是错误的指标。里程碑是获得报酬的明智方式
jqa 2012年

0

不接受开放式承诺的固定价格。如果这样做,您每次都会被搞砸。


+1“固定价格发展”是许多失败的企业战略
JQA
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.