最近,大型数据分析和风险评估跨国公司 Verisk 的软件工程高级副总裁 Sid Mohanram 正在负责公司系统从 COBOL 编程语言中迁移出来。
Verisk 只是众多这样做的公司的其中一个。现在,公司们和政府正在探索除了运行世界上一些最关键应用程序的编程语言之外的其他选择。
「我们的目标是摆脱大型机。」Mohanram 说道。
新冠疫情的蔓延为使用 60 年历史的古早编程语言 COBOL 编写核心计算机系统的机构们敲响了警钟,在美国,新泽西州、威斯康星州、佛蒙特州、爱荷华州、堪萨斯州,甚至联邦政府都面临着 COBOL 程序员短缺的问题,一些系统无法在申请失业救济金系统出现历史性飙升的情况下维持良好运行。
但是,COBOL 程序员的短缺并不是唯一的问题。在编程语言和软件开发的高速世界中,COBOL 已经成为一个陈旧的(尽管仍然相当可靠)的机器。
「我们在 COBOL 中实施更改的速度很慢,人们开始寻找变通办法,」Mohanram 说,这造成了所谓「技术债务」的积累。
「开发人员说:我需要进行更改,但我太忙了,无法进行 COBOL 更改,所以我不会触及现有的 COBOL 程序,但我会在 COBOL 之外再添加三个步骤,包括 Excel 电子表格或其他东西来应用更改。所以就有了现在这些非常过时的 COBOL 程序,以及一堆其他的东西作为获得最终结果的变通方法。」
仍然有这么多程序使用 COBOL 的原因之一是它出奇地稳定。但如今,对于许多应用程序而言,灵活性更为重要。
「COBOL 代码是防攻击的,因为它几乎从不改变,」Diffblue 的首席执行官 Mathew Lodge 说,这是一家为 Java 和其他更新的编程语言自动编写单元测试的初创公司。「但那是旧世界了,现状则完全相反——你必须时刻改变以保持竞争力。」
IBM 的大型机运行着世界上大部分的 COBOL 代码,拥有一个致力于推进该技术的整个团队,因此客户可以继续使用该语言。Z 是 IBM 最先进的大型计算机的品牌名称,IBM 负责 Z 产品管理的副总裁 Barry Baker 说:「我们一直在这方面投资,哪怕仅是为了寻找工作人员,或是在工具功能和产品上帮助他们真正直观地了解跨应用程序的数据流。」
Baker 说,用 COBOL 构建的应用程序通常没有很好的文档记录,有时甚至会丢失原始源代码的整个模块。与此同时,设计这些应用程序的人已经退休,有时甚至已经去世。此外,测试 COBOL 程序也可能是一个问题,因为许多 COBOL 程序是在单元测试普及之前的时代编写的。
「当测试与代码同时编写时,测试是最有效的,」Mohanram 说。他补充说,现在最佳实践是先编写单元测试,因为单元测试描述了需求,然后编写实际函数以获得给定输入集的预期输出。「单元测试将迫使开发人员编写更容易测试的代码。」
然而,IBM 的 Baker 表示,单元测试实际上已经为开发人员提供了相当长的一段时间。「大约 20 年前,当我还是一名开发人员时,我在自己的 IBM Z 开发中使用了测试驱动开发。」
SoftwareMining 的创始人 Cyrus Montakab 说,测试可能比翻译更昂贵、更困难,Verisk 正在使用它的工具将 COBOL 代码翻译成现代编程语言。「我们一直告诉人们,现在开始翻译,这样你就可以在最后一个 COBOL 程序员离开之前对其进行测试。」
目前,也有 AI 工具可以支持自动编写单元测试,这可以加快流程并节省资金,比如 Lodge 的 Diffblue 使用强化学习来自动编写单元测试。
「如果想在现代软件流程中使用该代码,你不仅需要翻译代码,还必须提出一组单元测试来快速发现错误,」Lodge 说,他的公司正在帮助大型养老基金用 Java 重写 COBOL 程序。使用自动化测试可以确保代码质量,同时跟上市场的需求。
路透社预估,2015 年仍有 2200 亿行 COBOL 代码仍在生产中,运行着全球 43% 的银行系统和 95% 的 ATM,包括红绿灯、航空公司、养老基金和工资系统都定期在 COBOL 上运行。
许多公司不愿意触碰更大的 COBOL 应用程序,只要它还能工作。「总是一再推迟,老 IT 主管说这不归自己管,」帮助企业替换 COBOL 的公司 Astadia 的首席技术官 Walter Sweat 说。「他们不想冒险并将这件事推给下一代,但到了某个阶段,必须有人处理它。」
Sweat 说,他认为退出 COBOL 是一种增长趋势。两年前,他采访过的潜在客户中只有一半希望将他们的系统迁移到不同的编程语言。现在, 75% 到 80% 已经希望摆脱 COBOL。这是因为 COBOL 程序跟不上机器学习或云集成等新的发展。
对于许多传统银行来说,随着移动金融应用程序的爆炸式增长,这种编程语言可能会迎接未来的挑战,这些应用程序允许消费者在手机上完成从基本银行业务到商品交易的所有事情。然而,整个行业创纪录的利润说明了一个不同的故事,这表明这些传统银行已经能够建立自己的移动应用程序,这些应用程序由运行在 COBOL 中的服务和数据支持。
Baker 表示,IBM 认为企业中使用的 COBOL 不太可能很快消失,但将关键应用程序翻译成更灵活的语言比以往变得都容易。