移民项目充满危险。
第一个危险是,“这既昂贵又痛苦。让我们重建
一切从头开始,并实施任何新的想法或功能
任何营销人员/经理/程序员都使用结构化方法
等等等等等等……”这条路通向厄运,因为
1) 它的工作量是无限的,并且
2) 没有人真正知道旧系统的作用(最近看过规范吗?)因此,您最终会在新系统上线后重新发现旧系统,这会极大地损害组织的能力使用新软件完成其工作。通常实际上新系统永远赶不上旧系统,因此重写会死得很惨。
进行此类迁移的正确方法是:坚持保留功能,并转换现有系统。没有新的好东西、功能、方法。
这种坚持有其自身的问题:组织经常不得不做出一些改变
在发生迁移的窗口期间出于生存原因。
要解决这个问题,您确实需要一个自动迁移工具,以便“无功能更改”规则仅在实际转换期间适用,因此尽可能短。迁移工具的开发人员可以花一些时间来构建它并彻底测试转换工具;与此同时,本组织可以通过其惯用方法来增强遗留系统。当迁移工具准备就绪时......扣动扳机,转换代码,修补问题并测试结果系统的有效性。
系统迁移后,您可以考虑彻底重组或重塑,因为您知道基本功能仍然完好。
无论您为自动迁移工具选择什么,都需要注意它生成的代码在新环境中是可维护的。许多转换器实现了真正幼稚的一对一转换,并且生成的代码最终成为 legacy-foo-coded-in-new-bar,或者在幼稚的 COBOL 到 Java 转换之后可笑地称为“JOBOL”。转换工具必须复杂地映射语言结构。 (您可能想阅读这个关于PL/1 To Java Conversion 的 SO 讨论)。
您最大的麻烦可能是“测试”。目前的系统有完整的功能测试,对吧?呃,你没有任何功能测试吗?您将如何验证新系统是否正确执行旧系统?
这里的正确答案是构建遗留系统的输入输出行为测试,并将这些测试应用于遗留系统和迁移的系统。这是很多工作,没有人愿意做,更不用说付钱了。这是迁移失败的第二种方式。
发生的最后一件事是管理层严重资金不足,并且低估了完成这项工作所需的工作时间。通常与开发团队的谈判是这样的:
Mgr: How long to do this?
Team: Two years...?
Mgr: BZZZT! Wrong answer, try again...
Team: One year?
Mgr: BZZT! ..
Team: (Gulping) 6 months?
Mgr: OK, get started.
请注意这里没有对工作的实际讨论。
在 6 个月结束时,将开始相互指责。经理:“我问你们,你们说6个月……”
你的旅程很艰难。仔细准备。坚持人们确实列出了所有问题,并且他们做出了可信的估计。如果您是第一次进行迁移,则您没有良好的基础进行此类估算;如果这是该组织的第一次,它没有根据来判断任何估计是否正确。
(完全披露:我有偏见。我已经构建自动化迁移工具 22 年了。查看B2 migration。)