3

这更像是一个普遍的问题,即哪个方向对公司来说是更好的投资。

我们公司的核心业务应用程序是用 Visual FoxPro 编写的,大约有 9 年的历史。该数据库是 15 多个演出的巨大数据库,核心逻辑很复杂,更糟糕的是,数据模型很糟糕。这些年来建造并维护它的两个人至少已经 50 多岁了,所以不用说退休或死亡可能会在未来十年左右到来。

这个 VFP 应用驱动我们所有的核心业务功能,需要终端服务和 citrix 从外部访问它。我们的 Web 应用程序必须通过 ODBC 与之交互,而且我们总是遇到性能问题。运行这个系统的服务器也很老旧,比如 Win 2000 服务器,正在分崩离析。

最近,我们一直在召开会议,讨论升级运行这个核心应用程序的系统以及电子邮件和文件存储等其他服务。然而,最大的开支是购买新的服务器硬件、操作系统许可、终端服务许可、Citrix 许可等,以解决我们目前遇到的一些性能和外部访问问题,以及让我们在系统上保持最新状态。

价格标签将在 $55K 到 $65K 的价格范围内。因此,作为一名网络开发人员,我的观点是,这是一种巨大的金钱浪费!我的解决方案是将这笔钱投资于重写核心系统以在基于 Web 的 .Net 平台上运行。这将消除对终端服务器和 Citrix 许可以及运行它的昂贵硬件和配置管理的需要。我看不出将这种钱投资在一个过时的系统上,不管怎样,这个系统应该已经淘汰了。

我正在寻找一些令人信服的论据来解释为什么这是浪费钱。希望在此之前遇到过这种情况的人可以给我一些观点。硬件升级似乎是最简单的方法,因为他们只需聘请顾问来完成所有工作。一个软件开发项目需要更长的时间,需要更多的资源并且可能花费更多的钱。

4

10 回答 10

6

短期重写与重新硬件的争论无法获胜。硬件和许可证总是比重写便宜。硬件加许可证似乎没有风险。

您无法在 ROI 论点上获胜。除非系统微不足道并且您是天才,否则重写一个实际执行某些操作的应用程序总是要花费 10 万美元或更多。想想多人年。

你可能会赢得“技术债务”的争论。变革变得越来越复杂、风险和代价高昂。此代码存在的时间越长,累积的风险和成本就越大。

真正的问题是“现在开始修复?” 或“等到它破裂,然后再受苦?” 这没有明确的价值答案。

你不能在金钱上竞争,所以你必须在风险、特性、增长、可维护性、适应性、标准合规性、安全性、为每个客户创造独特价值等方面进行竞争。


“我们现在正在寻找更大的客户群和更多数据”。这是一个你可能会赢的论点。

(我已经 50 多岁了,我不打算很快死去。那个论点并没有赢得人心。除非他们超过 80 岁,否则你不能真正使用年龄,除非是为了让你的论点被忽略.)

关注做出改变的成本(和风险)。

证明您拥有基于 Web 的解决方案,可以降低更改成本和风险。

此外,深入研究那里的内容并找到可以被 Web 框架替换的部分。您不编写的代码维护您编写的代码的成本更低。

于 2010-01-12T20:32:02.153 回答
3

每个项目都需要进行成本效益分析。如果 60,000 美元的一次性投资将解决未来 10 年的所有问题,那么它(可能)比雇佣一个开发团队甚至一年来构建一个更新、更好的系统要经济得多。

另一方面,如果它已经花费了 50,000 美元/年的维护成本,而这笔资本成本只是为了维持系统的运行,并且您需要在几年后再花费 60,000 美元,那么它值得认真考虑尊重重新设计。

或者你可以采取中间道路,开始将它封装在一些不透明的东西中,比如 Web 服务,然后逐渐用更好(更高效、更可维护等)的内部组件替换组件。许多公司走这条路是因为它推迟了重写的前期成本;如有必要,您可以将 IT 资源推迟到其他地方。

不过,S.Lott 是对的——您很可能无法仅凭成本进行竞争。您必须尝试量化与这些古老系统相关的风险——例如,如果最初的程序员决定退出,公司将花费多少成本来寻找和培训合格的 FoxPro 开发人员(或者,用我这么多经理的话见过,“被公共汽车碾过”)...


只是为了对此添加一些进一步的观点:在 .NET 之前(以及之后的几年),我的大部分项目都是在 Delphi 中进行的。在当时,确实是企业发展的绝佳选择。我其实是不想“升级”的人。然而,过了一段时间,我和我的上级都明白,这让公司以外的人感到害怕。

投资者、审计师,所有人——他们不喜欢我们的核心 IT 资产是用某种“晦涩”的语言完成的。当然,Delphi 并不是/不是真的那么晦涩难懂。SO上有一个“delphi”标签,计数为3340。但让我们使用SO作为我们的例子 - 这是当前的计数:

  • c#- 57293
  • .net- 30577
  • asp.net- 26600
  • java- 31023
  • vb.net- 5996
  • delphi- 3340
  • foxpro- 69
  • vfp- 27

让这些数字沉入一段时间。我当时选择的工具 Delphi 现在只有不到 10% 的 C# 表示,这让非技术人员感到紧张。Foxpro/VFP 甚至不到 1%。我什至不记得有多少次我必须回答以下问题:

  • 如果主要开发人员(我)退出或被公共汽车碾过怎么办?
  • 雇用该领域的程序员会有多困难/成本高昂?
  • 如果供应商停止支持它怎么办?(这几乎发生了)
  • 如果我们想获得外部帮助怎么办?顾问?安全审计?
  • 让它与外部产品一起工作有多容易?

Blah blah blah,担心担心担心,这就是我当时的感受,而这款产品并没有那么晦涩难懂。就您而言,我们在这里谈论的是FoxPro。FoxPro 已经变得几乎像 COBOL 了。当然,它仍然存在,有人知道它,但今天谁在 FoxPro 中启动了一个新项目?这很无聊,完全是贫民窟。VB6 开始成为贫民区,多年前 VB/Access 有效地取代了 FoxPro。

我显然在这里有点夸张,但如果我是你,这就是我要采取的角度。忘记短期经济,忘记时代,关注产品的默默无闻。如果他们为 FoxPro 开发人员发布招聘广告,他们认为会得到多少真实、合格的回复?他们必须为这样的职位提供什么样的薪酬?营业额会是怎样的?如果这两个开发人员已经在那里工作了 20 多年,这一切似乎都遥不可及,但是当您经营着数百万美元的业务时,您应该知道,将自己的生存赌在一两个员工身上绝不是一个好主意- 如果你能帮上忙的话

于 2010-01-12T20:35:22.907 回答
1

一般来说,补充这么多硬件的糟糕系统是一个糟糕的计划,我可能会说它#s better to rewrite,但如果不知道细节就很难说。

请记住,体面的重写应该会提高性能、可靠性和可维护性,因此潜在的节省是很大的,并且只会逐年增加,即使初始投资多一点。

于 2010-01-12T20:33:07.903 回答
1

为了确定它是否值得,除了重写的成本之外,您还必须计算:

  1. 记录系统当前所做的一切,并对需求进行逆向工程。

  2. 为当前存在的所有内容编写单元和集成测试。这可能不存在,但应该存在。

  3. 维护新系统的成本。新系统不会消除维护成本,只会降低它。你会节省多少钱?

  4. 新系统的硬件成本。新系统将不得不在某些东西上运行。

  5. 任何软件/等的许可费用。这是新系统所需要的。一切都会开源吗?或者您是否需要为您的开发人员和测试人员提供多个 Visual Studio 测试版?

  6. 雇用新员工进行开发的成本。除了直接的工资成本外,还有办公成本。对于 3 名开发人员来说,总额可能是 300,000 美元,包括工资、办公空间、设备、许可证、医疗保健福利。

  7. 节省的时间范围。节省不会立即发生。它会在未来发生。与此同时,他们仍然必须为当前系统的许可付费,因为在新系统到位之前,必须做一些事情。

  8. 现金流问题。由于上述原因,短期内他们将需要更多资金来资助开发。实际成本更高,因为他们基本上必须获得贷款、筹集股权或有机会成本(他们将不得不放弃一些其他投资机会来进行重写)。

  9. 商业风险。可能存在重写成本更高、工作更糟、

于 2010-01-12T21:17:57.880 回答
1

两个重要的数字:

  • 目前在旧金山的 craigslist 中列出的“FoxPro”工作数量:2。
  • 目前在旧金山的 craigslist 中列出的“.NET”工作数量:252。

已经提到的许多其他观点是有效的。但是,您可以在硬件上花费尽可能多的钱,但事实是,如果出现问题并且您需要帮助,那么您将有一段时间寻找更多的人来帮助。

听起来是开始谈论迁移¹到更新、更好支持的技术的好时机。(在 .NET 成为老帽子的 10 年后,你可以从头再来:)

[1]进化系统,不要重写。我猜你当前的系统是根据当时的需求有机地发展起来的。你不可能完全取代所有这些(至少,不是没有几年和几百万美元)。

于 2010-01-12T21:30:39.737 回答
1

作为一个历史悠久的 VFP 开发者(使用 Foxpro/VFP 超过 20 年,并且仍然有人要求我使用 VFP 编写/更新他们的系统,出于各种原因),它仍然非常强大。然而,在研究和利用我的大部分 OOP 和开发经验并使用 .Net 时,我确实发现 .Net 中的一些东西要容易得多,尤其是强大的类型转换。然而,做一个基本的报告需要对数据库表/结构/对象的所有强类型转换,到目前为止,在许多情况下,需要做一个 PITA。

重写的价格标签始终是重要的考虑因素,但任何系统的崩溃也是如此……无论 VFP、VB、Access 或其他系统如何。我强烈建议找一家咨询公司来帮助您重新建模您的系统,并可能充当您的内部程序员员工的项目经理/导师,他们可能能够提供他们的才能,即使这可能需要一些在新的发展环境中进行培训。通过这种方式,您可以获得强大的语言天赋的良好基础,同时通过使用自己的编程人员来降低一些成本 - 但您可能需要聘请补充编程人员。从 VFP 到 .Net 的学习曲线就在那里,而且仍然令人头疼。

有很多公司是 VFP 专家,他们随后将他们的服务迁移到 .Net 世界,并可能为您的组织提供完美的匹配,让他们拥有两个世界的历史知识和专业经验。我知道他们也可以担任此类工作发展的导师。

于 2010-01-13T16:32:46.060 回答
0

在您分析了投资回报率之后,您只能说这是浪费金钱——这在很大程度上取决于重写系统的成本。

于 2010-01-12T20:27:10.727 回答
0

JOS 上的经典错误 - “系统一团糟,让我们重写吧”。

这就像看着这座古老的建筑,看到一根牙签,想知道它为什么在那里。你认为它不需要,然后把它拔出来。

突然,建筑物在你的头顶倒塌:)

于 2010-01-12T21:06:28.700 回答
0

这可能是一个更好的主意

  1. 考虑重写系统的某些部分以获得更好的可维护性。

  2. 优化系统以获得更好的性能。

  3. 抽象 Foxpro 的特定部分,因此可以更容易地转换为其他技术。

这种渐进式方法将降低风险,并提供一些短期改进。

于 2010-01-12T22:23:47.637 回答
0

对于公司来说,这里没有灵丹妙药。唯一可以确定的方法是使用新服务器,以获得现有关键业务软件带来的稳定性和速度优势。然后,一旦停顿了几年,就开始在 .NET 等不同的平台上重新设计这个东西,如果这是你想做的。请记住,有时您必须将 VFP 数据迁移到新的数据库结构中。

于 2010-01-13T17:36:31.937 回答