tangguo

重写旧代码

android

我的部门目前承担着维护相当大的COBOL代码库的任务。我们想知道如何添加新功能来满足业务需求。如今,COBOL程序员很难再出现了,我们还认为,使用Java或C#等更现代的语言可以提高生产率。

我们认为我们有四个选择:

  1. 从头开始重写所有内容,将旧应用程序留给自己,直到准备好进行替换
  2. 从头开始重写所有内容,使一些人可以维护旧的应用程序,以适应新的业务需求。
  3. 用现代语言编写所有新功能,并找到某种方式将新代码与旧功能集成在一起。
  4. 继续维护旧的应用程序。

您认为什么是我们的最佳选择,为什么?


阅读 271

收藏
2020-11-09

共2个答案

一尘不染

诚然,问题涉及到cobol,它会根据您的需求做出任何特定的回答,如果您说“我们有一个旧的VB应用程序”或旧的C应用程序,则选择#3始终是正确的方法。

我曾在3家决定选择方案2的公司工作。第2位破产者试图为新系统付费,而仅从旧版本中获得收益,第3位确实非常接近。

行动3的另一个因素是,您必须保留多年来使用的所有旧错误修正程序。每次重写总是会引入越来越多的错误,部分是因为您希望快速完成重写,部分是因为您将用一种陌生的新语言编写它,部分是因为所有新代码都包含错误。

重构并替换旧应用程序的逻辑块,最终您将拥有一个漂亮的闪亮新应用程序。从GUI开始,以获得最安全的新方法。此外,当您用新内容重新编写应用程序时,更新的内容将是最酷的,新应用程序将过时,您将再次发布相同的问题!

2020-11-09
一尘不染

这是选项3的变体:

Microfocus提供了一个称为Enterprise Server的工具,该工具允许COBOL与Web服务进行交互。

如果您有一个COBOL程序A和另一个COBOL程序B,并且A通过接口部分调用B,则该工具允许您将B的接口部分公开为Web服务。

然后,对于程序A,您将生成一个客户端代理,并且A现在可以通过Web服务调用B。

当然,由于B现在具有Web服务,因此任何其他类型的程序(命令行,Windows应用程序,Java,ASP等)现在也可以调用它。

使用这种方法,您可以“蚕食边缘”,使用ASP之类的工具将GUI迁移到基于浏览器的现代方法,同时仍然利用COBOL业务引擎。

并且,一旦有了一套不错的Web服务,这些服务便可以用于任何新开发,从而从长远角度提供摆脱COBOL的方式。

2020-11-09