paint-brush
我是如何构建软件成本计算器的经过@romanlapa
2,562 讀數
2,562 讀數

我是如何构建软件成本计算器的

经过 Roman Lapa10m2023/04/26
Read on Terminal Reader

太長; 讀書

本文详细介绍了创建可生成高度准确估算的软件开发成本计算器的经验。继续阅读以了解该解决方案的工作原理!
featured image - 我是如何构建软件成本计算器的
Roman Lapa HackerNoon profile picture
0-item
1-item

作为一家构建定制 IoT 解决方案的小型软件开发公司的 CTO,我在为我们的前景准备项目估算时帮助我的队友评估应用程序开发成本。


由于我们主要与初创公司合作,因此我们的客户对他们的预算非常敏感。

理想情况下,您从发现阶段开始每个软件开发项目,并尽早深入了解产品的功能和非功能需求。因此,您可以定义产品的功能集,从功能原型到 MVP 再到成熟的产品,并提出切合实际的准确估算。


理想情况下——但对于小本经营的初创公司来说情况并非如此,因为发现也需要花钱。 *


我们的一些客户也可能对开发技术解决方案的价格抱有不切实际的期望。我们都听过关于初创公司希望以 1 万美元的价格建立 Facebook 克隆的笑话——最可悲的是,有些人确实认为这是可能的。


因此,我一直在考虑尽量减少我们这边的评估工作,同时在客户联系我的团队之前给他们一个大概的价格,让他们将他们的技术想法付诸实践。如果您愿意,可以进行现实检查。 🙂


软件成本计算器的概念就是这样在我脑海中形成的


本质上是极客,职业是移动开发人员,我决定一箭双雕。除了上述目标外,我还测试了我对 Flutter 的了解。我开发了一个跨平台的软件成本计算器应用程序,它可以在 iOS 和 Android 设备以及浏览器中无缝运行,而无需借助 JavaScript,而 JavaScript 的纯粹形式让我感到畏缩。


事实证明,Flutter 足够稳定和高效来完成这项任务。我什至考虑构建一个基于单板计算机的物理计算器,作为送给我们忠实客户的圣诞礼物。此外,其他开发人员可以使用计算器来评估在他们的专业知识之外开发特定技术解决方案(或其中的一部分!)的价格。


总之,在这篇文章中,我详细介绍了我创建解决方案的经验——以及我在这个过程中遇到的挑战。


所以我们开始吧。


我是如何将软件开发成本计算器的想法付诸实践的

好的,好的,我知道你在想什么。


*设计软件解决方案,无论是小型在线商店还是完整的用于协调冷冻治疗单元的后台系统,是一条漫长而多风的道路,有数百个可能的转弯和需要避免的陷阱。*


除非您准备了一份详尽的软件需求规范 (SRS) 文档,列出产品的功能集、UI/UX 要求、最佳技术栈、目标受众、合规性规定以及其他十几个问题,否则不可能定价你的申请。


这些正是我的担忧。所以我决定看看其他软件工程师是如何解决我之前的估计准确性问题的。


在测试了多个软件成本计算器之后,我指出了在创建解决方案时要记住的几个问题:


  1. 竞争对手的计算器完全忽略了非技术用户的需求。例如,如果我是编程新手,我究竟应该如何知道我的应用程序将使用哪些编程语言?为了解决这个问题,我确保在随附的登录页面上写了一份关于如何使用我的计算器的详细指南。


  2. 一些解决方案估算了建立软件团队而不是构建软件产品的成本。除非您之前曾在软件工程公司工作过或自己经营过软件工程公司,否则您可能不了解软件开发的内部结构,包括软件团队的最佳组成及其中的角色。这就是为什么我专注于软件功能而不是开发人员的责任,并实施了混合速率修改器来简化计算。


  3. 大多数计算器仅提供估算值以换取企业电子邮件地址。我是软件工程师,不是营销人员。 🙂 我想解决公司的问题,而不是用推销我们服务的电子邮件轰炸他们;如果他们需要帮助,他们会写信给我们!这就是为什么我的计算器不收集任何数据——并且在得到你的估计之前不需要你填写任何表格。我们只知道有人登陆了软件成本计算器登陆页面,勾选了所有方框,并收到了估算。

我的计算器如何评估定制软件开发的成本

我的计算器考虑了应用程序的目标平台和预期功能以生成准确的软件成本估算。接下来,根据项目阶段和特定于行业的影响,实施各种修改器来降低或提高定制软件的价格。在最后一步中,将以人时估算的软件开发工作量乘以混合 IT 团队比率。


为了设计评估机制,我研究了我公司完成的 20 多个项目和我们合作伙伴组合中的十几个项目。这些项目的规模和复杂程度各不相同,从活动预订应用程序到定制智能家居解决方案。一些技术和解决方案,比如人工智能和AR/VR,在计算器中被故意遗漏了,因为我很少构建这样的应用程序。因此,该计算器反映了我公司的核心专业知识,我可以保证其估算的准确性。


以下是计算器考虑的主要成本因素:


  • 目标平台。为特定平台(iOS、Android、Web 或基于Flutter 的跨平台解决方案)构建的应用程序具有最小可行功能集,软件开发工作总计 X 人时。如果我们正在构建一个多平台解决方案,我们必须将小时数乘以目标平台的数量。


  • 特色价格。每个应用程序功能——例如,最终用户或管理员配置文件——都有一个最少 Y 人时的时间标签。当您添加子功能以增强应用程序的功能时,工作量会成比例地增加。


  • 修饰符。行业和软件功能有难度乘数。例如,我将医疗保健 IT 项目的小时数增加了 20%,以解决可能的开发问题,例如与现有医疗系统的集成、合规性等。为了计算复杂性修正值,我将软件功能的总和除以总小时数数数。常数修饰符将项目管理和质量保证数字添加到估算中。评估应用程序的功能和预期平台后,该数字将乘以 1.3,将小时数增加 30%。最后,还有项目阶段修改器,它根据产品的准备情况评估软件开发的成本。如果用户只想设计应用程序的界面,则最终估算值乘以 0.16。对于功能原型,修饰符为 0.25。软件解决方案的最小可行产品 (MVP) 版本仅包含足够投放市场的功能,其修饰符为 0.5-0.75。最后,市场就绪产品的开发工作量乘以 1。


  • 开发人员的小时费率。构建定制软件解决方案的价格取决于制造者。软件工程师的时薪根据个人的专业、经验和居住国家/地区的不同而有很大差异。根据Accelerance 最近的一项调查,这些费率从南亚移动开发人员每人每小时 25 美元到北美高级软件工程师每小时 172 美元(而且还在增加!)不等。在开发我的软件成本计算器时,我将其编程为将最终小时数乘以驻扎在我公司运营所在的东欧的软件项目团队的混合费率。目前,它在每人每小时 41.6 美元左右波动。


您将在下面找到一个公式,该公式总结了上述因素以产生估算值:

为了计算定制软件开发的成本,基于 Flutter 的计算器评估了几个参数,包括支持的平台数量、项目阶段和软件功能复杂性。



让我为您写下:


  1. 如果一个功能与移动无关,不需要在多个平台上实现,它将被标记为featurePrice。


  2. avgFeatureComplexityMult根据项目的技术堆栈和目标行业增加估计。


  3. productStageMultiplier表示产品的预期阶段——即设计同意、原型、MVP 或市场就绪解决方案。


  4. PM/QA 时间对所有项目都是强制性的,除非客户处理管理和质量保证部分。然而,在这种情况下,没有开发人员可以保证错误不会出现在代码中。这里需要澄清一点:一些公司希望他们的供应商在第一次尝试时就产生无错误的代码,并且真正想知道为什么他们需要质量保证。


    相反,成熟的客户对测试代码质量有足够的期望,并及早投资 QA 以避免在发布后处理错误。


问题是,这些估计有多准确?


考虑到我作为 CTO 和高级 Android 开发人员的经验,软件成本计算器可以为所有简单项目和中等复杂度项目提供即时估算。


对于涉及物联网等创新技术的更具挑战性的工作,计算器可能会将最终估计值降低 10-13%。在这种情况下,我们会在决定解决方案的技术堆栈和功能集后修改价格。如果您的 IT 系统包含计算器中省略的功能和技术,例如人工智能和与第三方服务的集成,也需要进行修改。

如何使用我的软件成本计算器估算您的项目

网站访问者需要填写有关应用程序以下特征的信息:


  1. 解决方案类型。此部分允许用户选择六个类别之一:物联网、电子商务、教育、旅游、教育或其他。
  2. 项目阶段。正如我之前告诉您的,项目阶段修改器根据软件产品的准备情况增加或减少软件开发成本。不同产品阶段的估计值之间的差异还可以让客户了解他们需要花费多少才能进一步推进他们的概念,从而在发布后增强解决方案。
  3. 目标平台。当前版本的计算器允许用户在本地移动应用程序开发技术堆栈(iOS、Android)、使用 Flutter 构建的跨平台应用程序以及 Web 和平板电脑应用程序之间进行选择。由于用户界面的大量定制,我将平板电脑版本的移动应用程序单独列为一个类别。
  4. 用户界面/用户体验设计。根据预期的设计资产复杂性,UI/UX 修改器将一定数量的人时添加到估算中。对于希望在功能原型中的应用程序屏幕之间创建平滑导航过渡的客户,我在列表中包含了动画功能。如果用户愿意提供他们自己的设计资产,估计将减少。
  5. 用户角色。软件成本计算器包含一个列出应用程序预期用户角色的部分。这些范围从最终用户到满足公司员工、应用程序经理和客户需求的多层次软件解决方案。
  6. 支持的语言。软件开发成本计算器将增加对多语言网站和应用程序的估算。
  7. 登录选项。在这里,我选择了三种最常用的登录机制——即通过社交媒体帐户、电子邮件地址或一次性密码 (OTP)。
  8. 客户支持。打算与客户保持联系的潜在客户可以选择一个或多个可用的客户支持选项,从联系表格到集成票务系统,复杂程度各不相同。
  9. 货币化策略。在这个区块中,用户可以在一次性购买和订阅之间进行选择——或者选择退出任何货币化机制。
  10. 内容类型。我将文本、照片、视频和音频文件列为软件解决方案中最常见的可用内容类型,同时将流媒体功能作为单独的功能添加。可以在估算中添加多个选项。
  11. 用于客户支持的实时聊天和音频/视频通话。作为前面讨论的客户支持功能的一部分,实时聊天可以允许多个用户加入对话并交换文件。音频和视频通话功能单独计费。
  12. 地理位置。在创建软件计算器时,我配置了带有引脚的地图和带有路由的地图作为主要的地理定位选项。
  13. 活动预订。估计会增加,具体取决于您的应用程序是否支持活动预订功能以及谁可以执行它(例如,管理员或最终用户)。
  14. 客户参与。我选择推送通知和深度链接作为保持用户参与的主要机制。
  15. 欣慰与欣慰。该计算器只允许用户在喜欢和评分之间进行选择。用户还可以添加游戏化功能,如进度条和排行榜。
  16. 分析。该计算器提供在应用程序功能集中包含基本或高级分析功能。请注意,我们在这里不是在谈论人工智能驱动的分析。
  17. 遵守。如果自定义应用程序需要遵守某些法规,例如 HIPAA、GDPR 或 PCI/DSS,我们的估计势必会增加。
  18. 内容管理。最后,软件成本计算器要求用户阐明他们的内容管理需求,从基本的内容创作能力到适当的 CMS 和 CMS 加数据可视化组合。

总结一下

万岁,我们做到了!


现在用户有了一个大概的估计,他们可以通过手动删除或添加软件功能、指定产品阶段等来调整它。


在撰写本文时,我还填写了表格,选择了准备投放市场的符合 HIPAA 标准的定制医疗物联网产品的特征。计算器给我的估计是 3390.4 人时,如果乘以混合团队费率(41.6 美元),则为 140,992 美元。


让我们将估算值提高 10%,考虑到项目类型 ( IoT ) 和目标行业(医疗保健)可能存在的差异,我们将获得 150,000 美元。


这是定制物联网解决方案的现实价格吗?


我在文章开头提到的冷冻室软件套件可帮助我们的客户管理安装在美国数十家健身中心和水疗沙龙中的联网冷冻装置。虽然该项目仍在开发中当前形式的成本超过 1,000,000 美元,两年前,当软件解决方案超过 3,000 人时大关时,它具有与我试图使用计算器估算的假想项目大致相同的功能。


总的来说,我对结果很满意:我已经成功地测试了 Flutter,确信它强大的跨平台开发能力,最大限度地减少了我团队的评估工作,并让我们的潜在客户在之前对他们的软件项目进行了现实的估计联系一家软件工程公司。


但是因为我可能有各种各样的偏见——毕竟,是我写了代码! — 我鼓励您试用一下计算器,并分享您对其功能和准确性的看法!


所以,点击下面的评论部分!非常感谢您的反馈!