将遗留的Cobol / PL1迁移到Java的经验 [英] Experience migrating legacy Cobol/PL1 to Java

查看:230
本文介绍了将遗留的Cobol / PL1迁移到Java的经验的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

ORIGINAL Q:
我想知道是否有人有过将大型Cobol / PL1代码库迁移到Java的经验?

ORIGINAL Q: I'm wondering if anyone has had experience of migrating a large Cobol/PL1 codebase to Java?

流程的自动化程度和输出的可维护性如何?

How automated was the process and how maintainable was the output?

如何从交易转移到OO锻炼?

How did the move from transactional to OO work out?

在此过程中学到的任何经验教训或可能有益的资源/白皮书都将受到赞赏。

Any lessons learned along the way or resources/white papers that may be of benefit would be appreciated.

编辑7/7:当然NACA方法很有意思,能够继续让你的BAU更改为COBOL代码直到发布JAVA版本对任何组织都有价值。

EDIT 7/7: Certainly the NACA approach is interesting, the ability to continue making your BAU changes to the COBOL code right up to the point of releasing the JAVA version has merit for any organization.

与COBOL布局相同的过程Java的参数,让编码人员在熟悉Java语言时感到舒适,这是大型组织的有效论据。一个庞大的代码库。正如@Didier所指出的那样,每年节省300万美元,可以在任何BAU变化中提供大量填充的空间,以便持续重构代码。正如他所说,如果你关心你的人,你会找到一种让他们快乐的方法,同时逐渐挑战他们。

The argument for procedural Java in the same layout as the COBOL to give the coders a sense of comfort while familiarizing with the Java language is a valid argument for a large organisation with a large code base. As @Didier points out the $3mil annual saving gives scope for generous padding on any BAU changes going forward to refactor the code on an ongoing basis. As he puts it if you care about your people you find a way to keep them happy while gradually challenging them.

我在@duffymo的建议中看到这个问题

The problem as I see it with the suggestion from @duffymo to


最好尝试并真正理解其根源的
问题并重新表达它作为面向对象系统的

Best to try and really understand the problem at its roots and re-express it as an object-oriented system

如果您正在进行任何BAU更改,那么在LONG项目生命周期内对您的新OO系统进行编码时,您最终会编码&测试双倍的变化。这是NACA方法的主要优点。我有一些将Client-Server应用程序迁移到Web实现的经验,这是我们遇到的主要问题之一,由于BAU更改而不断变换需求。它使PM&安排一个真正的挑战。

is that if you have any BAU changes ongoing then during the LONG project lifetime of coding your new OO system you end up coding & testing changes on the double. That is a major benefit of the NACA approach. I've had some experience of migrating Client-Server applications to a web implementation and this was one of the major issues we encountered, constantly shifting requirements due to BAU changes. It made PM & scheduling a real challenge.

感谢@hhafez,他的经验非常好,因为相似但略有不同,并且获得了相当令人满意的体验从Ada到Java的自动代码迁移。

Thanks to @hhafez who's experience is nicely put as "similar but slightly different" and has had a reasonably satisfactory experience of an automatic code migration from Ada to Java.

感谢@Didier的贡献,我还在研究你的方法,如果我有任何Q,我会告诉你一个line。

Thanks @Didier for contributing, I'm still studying your approach and if I have any Q's I'll drop you a line.

推荐答案

更新6月25日:一位朋友跑过 NACA Cobol转Java转换器。看起来很有趣,它被用来翻译4米线的Cobol,准确度达到100%。这是 NACA开源项目页面。我见过的其他转换器都是专有的,材料显然缺乏成功案例和详细的示例代码。 NACA值得一看。

Update 6/25: A friend just ran across the NACA Cobol to Java converter. Looks quite interesting, it was used to translate 4m lines of Cobol with 100% accuracy. Here's the NACA open source project page. The other converters I've seen were proprietary, and the materials were conspicuously lacking success stories and detailed example code. NACA is worth a long look.

更新7/4: @Ira Baxter报道Java输出看起来很Cobol式,它是绝对的。对我来说,这是自动翻译的自然结果。我怀疑我们会找到一个更好的翻译。这也许是对逐步重写方法的争论。

Update 7/4: @Ira Baxter reports that the Java output looks very Cobol-esque, which it absolutely does. To me, this is the natural result of automatic translation. I doubt we'll ever find a much better translator. This perhaps argues for a gradual re-write approach.

更新2/7/11: @spgennard指出有一些Cobol编译器在JVM上,例如Veryant的 isCobol Evolve 。这些可用于帮助逐步转换代码库,但我认为OP对自动源转换更感兴趣。

Update 2/7/11: @spgennard points out that there are some Cobol compilers on the JVM, for example Veryant's isCobol Evolve. These could be used to help gradually transition the code base, though I think the OP was more interested in automated source conversion.

我对此非常谨慎。 (我曾经为一家自动纠正 Cobol和PL / I程序的Y2K公司工作,并做了将Cobol的许多方言转换成我们的中间分析形式的前端编译器,还有一个代码生成器。)我的感觉是你最终会得到一个Java代码库,它仍然不够优雅且不能令人满意。您可能会遇到性能问题,依赖于供应商提供的库,生成的错误代码等等。你肯定会产生巨大的测试费用。

I'd be very cautious about this. (I used to work for a company that automatically corrected Cobol and PL/I programs for Y2K, and did the front end compiler that converted many dialects of Cobol into our intermediate analytic form, and also a code generator.) My sense is that you'd wind up with a Java code base that still would be inelegant and unsatisfying to work with. You may wind up with performance problems, dependencies on vendor-supplied libraries, generated code that's buggy, and so on. You'll certainly incur a huge testing bill.

从头开始使用新的面向对象设计可能是正确的方法,但你也必须仔细考虑几十年由代码库表示的存储知识。通常,您的新代码可能会遗漏许多细微之处。另一方面,如果你很难找到工作人员来维护遗留系统,你可能没有选择。

Starting from scratch with a new object-oriented design can be the right approach, but you also have to carefully consider the decades of stored knowledge represented by the code base. Often there are many subtleties that your new code may miss. On the other hand, if you're having a hard time finding staff to maintain the legacy system, you may not have a choice.

一个渐进的方法是先行升级到Cobol 97.这会添加面向对象,因此您可以在添加新功能时单独重写和重构子系统。或者您可以用新编写的Java替换单个子系统。

One gradual approach would be to first upgrade to Cobol 97. This adds object-orientation, so you can rewrite and refactor subsystems individually when you add new functionality. Or you could replace individual subsystems with freshly-written Java.

有时您可以使用现成的软件替换组件:我们帮助一家大型保险公司仍使用传统语言拥有200万行代码它创建于20世纪50年代。我们将其中的一半转换为符合Y2K标准的遗留语言,并且他们用从外部供应商处购买的现代工资单系统替换了另一半。

Sometimes you'll be able to replace components with off-the-shelf software: we helped one very large insurance company that still had 2m lines of code in a legacy language it created in the 1950s. We converted half of it to Y2K compliant legacy language, and they replaced the other half with a modern payroll system they bought from an outside vendor.

这篇关于将遗留的Cobol / PL1迁移到Java的经验的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆