定制软件还是现成方案(SaaS)?
位于匈牙利布达佩斯的软件开发公司 Mesterséges Intelligencia Központ Kft. 认为,现成软件(SaaS)能覆盖企业流程时就已足够;当企业的运作方式与常规不同,或者软件本身就是业务优势时,定制软件才更划算。
要点:如果某款现成产品无需开发就能覆盖企业的大部分流程,而且企业可以接受去适应它,那么现成方案是更快的途径。如果企业的运作方式与现成产品所依据的模式不同、需要连接许多系统,或者对数据和后续开发的掌控是一个战略问题,那么定制开发更划算。很多时候,正确答案是两者兼用:以现成产品为基础,再加上定制的补充。
什么是定制软件、现成软件和 SaaS?
这三个概念回答的是两个不同的问题:一是软件是为谁开发的,二是软件以何种方式到达用户手中。
- 定制软件:根据某家企业的需求、受委托开发的程序。它具备客户在规格说明中要求的功能,按照该企业员工的工作方式运作,后续开发的方向也由客户决定。
- 现成(套装)软件:面向众多客户开发的产品,企业购买其使用许可,通常在自己的计算机或服务器上安装和运行。它可以通过设置进行调整,但运作逻辑由厂商决定。
- SaaS(Software as a Service,软件即服务):由厂商在自己的云端运行的现成软件,企业以订阅方式,通过浏览器或编程接口使用。编程接口(API,application programming interface,应用程序编程接口)是两个程序无需人工参与即可交换数据的连接点。
根据美国国家标准与技术研究院(NIST)对云计算的定义,在 SaaS 模式下,用户使用的是服务商运行在云端的应用,并不管理其背后的基础设施(网络、服务器、操作系统、存储),甚至也不管理各项应用功能,至多只能进行有限的、针对用户的配置设置(NIST SP 800-145)。这既是 SaaS 的优势,也是它的局限:厂商替企业卸下了运行的负担,但产品中改变什么、何时改变,也由厂商决定。
第三条路:以现成产品为基础,加上定制补充
这种决策很少是“非此即彼”。对许多企业来说,可行的做法是:会计、邮件、办公事务等常规任务继续使用现成产品,只在企业的运作方式确实与众不同的地方进行定制开发。混合方案最常见的形式有:
- 集成:由定制程序通过 API 或 Webhook 把各个现成系统连接起来,数据就无需再手工复制。Webhook 是一个系统在某个事件发生时向另一个系统自动发送的通知,例如在收到新订单时。
- 定制模块:在现成系统旁边开发一款自有应用,用于现成产品无法覆盖的流程,例如某种特殊的定价规则、生产排程或某个行业特有的登记簿。
- 在现成系统之上构建自有界面:客户或外勤员工获得一个简单、贴合其任务的界面,后台则由现成系统运行。
混合路线的优点是,企业只需为真正独特的部分支付开发费用。缺点是,定制部分必须跟随现成系统接口的变化而调整,因此集成中需要日志记录和错误告警,而且必须有人负责其维护。关于系统互联和重复性工作的自动化,我们在流程自动化页面中有专门介绍。
决策要素一览表
| 要素 | 倾向于现成软件(SaaS),如果…… | 倾向于定制开发,如果…… |
|---|---|---|
| 与流程的契合度 | 流程比较常规,企业也接受去适应软件 | 企业的运作方式与常规不同,并希望保留这种差异 |
| 竞争优势 | 该领域并不能让企业有别于竞争对手 | 软件本身就是业务优势,或是业务优势的载体 |
| 集成数量 | 需要连接的系统不多,并且有现成的连接器 | 需要连接许多系统,或者没有现成的连接器 |
| 数据与退出 | 厂商提供完整的、机器可读的导出,退出条件清楚明确 | 数据模型和对系统的掌控是一个战略问题 |
| 用户与许可模式 | 用户少,人数可预测 | 用户多或增长迅速,按用户收取的费用举足轻重 |
| 启用速度 | 需要尽快投入使用,现成功能也已足够 | 启用可以等待开发完成,或者可以分阶段启用 |
| 由谁维护? | 没有自己的 IT 力量,厂商的维护就已足够 | 有人负责运行:自己的团队或签约的开发方 |
| 数据位置与合规 | 厂商的数据存储地点和合同符合要求 | 数据必须保留在指定地点,或须遵守严格的行业规定 |
并不需要每一行都指向同一边。如果大多数要素倾向于现成产品,就值得从现成产品起步。但如果分量最重的几行,即契合度、竞争优势和集成,指向定制开发,就值得更深入地规划,并至少针对一个功能组做具体的对比。
总拥有成本取决于什么?
总拥有成本(total cost of ownership,简称 TCO)是软件在整个使用期内的全部投入,而不仅仅是起步的价格。两条路线的成本结构不同,因此只比较一年可能会产生误导:应着眼于计划的使用期。
对于现成软件和 SaaS,成本通常由以下因素决定:
- 订阅费,往往随用户数量和所选套餐一同增长;
- 附加模块和更高级的套餐,如果某项所需功能只在其中提供;
- 实施、配置和员工培训;
- 集成和个性化调整,通常由另外的合作伙伴完成;
- 退出:一旦需要更换,数据的导出和迁移。
对于定制软件:
- 开发,主要取决于软件的功能规模;
- 运行:主机托管、监控和安全更新;
- 随着企业需求变化而进行的维护和后续开发;
- 知识的留存:文档和完整的源代码,让系统不依赖于某一个人。
如果对范围进行度量,而不是凭感觉估算,定制开发的成本就可以规划。我们以 COSMIC 功能点(ISO/IEC 19761)度量开发工作的功能规模,并据此编制报价和进度安排;具体方法见定价方式页面。从长远看哪条路线花费更少,取决于用户数量、变化的频率和集成的数量。这个问题没有通用的答案,只能针对具体情况进行计算。
厂商锁定与数据可携性
厂商锁定(vendor lock-in)是指改用另一款产品困难或代价高昂到企业实际上无法退出的情况。其原因可能是封闭的数据格式、不完整的导出功能、大量只与该产品绑定的设置,或者难以解除的合同。
欧盟的《数据法案》(Data Act,条例 (EU) 2023/2854)自 2025 年 9 月 12 日起适用,并以单独一章规范数据处理服务之间的切换;其序言把 SaaS 也列入这类服务。该条例的文本规定的内容包括(2026 年 10 月 17 日核实):
- 切换条件必须在书面合同中写明,启动切换所需的通知期最长不得超过两个月(第 25 条)。
- 应客户请求,必须在没有不当延误的情况下、在最长 30 个日历日的过渡期内实现切换,其间服务必须继续运行;如果这在技术上不可行,服务商可以说明理由,另定一个最长七个月的过渡期(第 25 条)。
- 合同必须逐项列出可迁移的数据,并为取回数据提供至少 30 个日历日的期限(第 25 条)。
- 自 2027 年 1 月 12 日起,服务商不得就切换过程收取费用;在此之前只能收取降低后的费用,且不得超过其与切换直接相关的成本(第 29 条)。
一个重要的例外是:关于费用的规定和部分技术义务,不适用于其主要特性在很大程度上是为单一客户量身定制、且不在广泛范围内提供的服务(第 31 条)。如果现成系统受企业委托处理个人数据,《通用数据保护条例》(GDPR)同样对服务商具有约束力:服务结束时,服务商应按照数据控制者的选择删除或返还全部个人数据(GDPR 第 28 条第 3 款 (g) 项)。以上内容仅供参考,不构成法律意见。
法律改善了条件,但退出仍需企业自己规划,最好在选型时就开始。值得核查的有:
- 全部数据能以什么格式导出,例如 CSV(逗号分隔的文本文件)、JSON(机器可读的结构化文本格式)或数据库备份,其中是否包括附件、备注和修改日志;
- 是否有文档完善的 API,可以持续提取数据;
- 能否通过一次试导出来确认数据可以导入另一个系统;
- 合同对解约、切换费用和数据删除有何规定。
源代码归谁所有?
对于现成软件和 SaaS,企业购买的是使用权:源代码留在厂商手中,产品的未来(新功能、价格变化、产品停止服务)由厂商决定。只要产品稳定、数据可以导出,这本身并不是问题。
对于定制开发,源代码和使用权问题由合同规定,因此值得明确写明代码归谁所有、客户是否获得完整的源代码和文档,以及系统能否由其他开发方继续开发。在我们这里,源代码和使用权同样由合同约定。关于合同中的其他要点,请见如何选择软件开发公司?一文。
不同类型的系统,权衡的重点也不同
上述要素是通用的,但在不同类型的系统中,其分量各不相同。对于企业资源计划系统,个性化调整与可升级性之间的关系是决定性问题,详见定制 ERP 还是经个性化调整的现成 ERP?一文。对于客户关系管理系统,独特的销售流程和按用户计费的许可影响很大,参见什么情况下值得开发定制 CRM?一文。对于网店,租用式平台的快速上线与自由扩展的能力相互权衡(见网店:租用式平台还是定制开发?一文)。关于企业系统开发的总体情况,请见企业软件页面。
决策检查清单
对以下问题的回答,通常就能自然地指明方向:
- 我们能否把流程描述得足够详细,以便在现成产品的演示中逐项核对?
- 现成产品无需开发、仅通过设置能覆盖流程的多大部分?
- 这个领域能让企业有别于竞争对手,还是在每家企业中的运作方式都大同小异?
- 需要连接多少个系统,是否有厂商支持的现成连接器?
- 几年后会有多少用户在系统中工作,订阅费会因此如何变化?
- 我们能否获得完整的、机器可读的导出,是否已经通过试导出验证过?
- 数据存储和处理在哪里,这是否符合企业的数据保护要求和行业要求?
- 由谁负责系统的运行和后续开发,如果这个合作伙伴退出会怎样?
- 距离启用还有多少时间,系统能否分阶段启用?
典型错误
- 比较功能清单而不是流程:两款产品可能承诺同样的功能,差别在于它们如何契合企业的日常工作。最好在演示中用企业自己的真实案例逐一走一遍。
- 只比较第一年的成本:订阅费会随人数增长,而定制系统的运行和后续开发则是在多年中陆续产生的。
- 忘记了退出:数据导出应该在选型时就核查,而不是等到解约时。
- 对现成产品做过多的个性化调整:超过一定程度后,升级一个经过大量个性化调整的现成系统,比维护一个边界清晰的定制模块更费工夫。
- 一次性替换所有系统:分阶段切换(先换一个模块,再换下一个)比一次性的大规模切换风险更小。
常见问题
什么情况下值得开发定制软件?
当企业的运作方式与现成产品所依据的模式不同,并希望保留这种差异时;当需要连接许多系统,而又没有现成的连接器时;或者当软件本身就是业务优势时。如果某款现成产品无需开发就能覆盖大部分流程,那么它通常是更快的途径;在首次咨询中,我们也会如实告诉您。
从长远看,定制软件更贵吗?
不一定,但也不会自动更便宜。现成软件的订阅费会随用户数量和套餐一同增长,而定制系统的运行和后续开发则是持续性的成本。哪一种花费更少,取决于计划的使用期、人数、集成和变化的频率;最好针对具体情况进行计算。
如果我们取消 SaaS 订阅,数据会怎样?
这首先取决于合同,因此在选型时就值得核查。根据欧盟《数据法案》,合同必须逐项规定可迁移的数据,并为取回数据提供至少 30 个日历日;根据 GDPR,个人数据在服务结束时必须按照数据控制者的选择予以删除或返还。实践中,一次试导出就能显示这些数据在另一个系统中有多大的可用性。
两者可以结合使用吗?
可以,而且对许多企业来说,这正是可行的路线:常规任务继续使用现成系统,由定制集成把它与其他系统连接起来,再为企业与众不同的地方开发定制模块。前提是现成系统可以通过文档完善的 API 进行访问。
源代码将归谁所有?
对于现成软件和 SaaS,源代码归厂商所有,企业获得的是使用权。对于定制开发,源代码和使用权由合同约定,在我们这里也是如此。
我们如何提供帮助?
Mesterséges Intelligencia Központ Kft. 开发定制软件,并把各个现成系统连接起来,在能真正节省工作量的地方也借助人工智能:我们把 OpenAI(ChatGPT)、Anthropic(Claude)和 Google(Gemini)的语言模型接入现有系统。首次咨询免费,届时如果现成产品就已足够,我们也会如实告诉您。如果需要定制开发,我们以 COSMIC 功能点度量其功能规模,并据此编制报价和进度安排。可应要求签署保密协议(NDA),交付后我们还承担运行与维护工作。源代码和使用权由合同约定。
详情请见定制软件开发页面。如果您想和我们谈谈自己的情况,请通过联系我们页面上的联系方式给我们写信。