Rac*_*hel 3 java migration coldfusion spring
这个问题与移民项目有关.目前,遗留应用程序位于ColdFusion中,我们希望将其迁移到Spring Framework.
所以我的主要问题是:
我知道有些人可能会认为这是一个非常开放的问题,但这是我的第一个迁移项目,我从未有过任何迁移项目的经验以及在此寻找一些有用的指导.
移民项目充满了危险.
第一个危险是,"这是昂贵和痛苦的.让我们从头开始重建它,并实现任何新的想法或功能,任何营销人员/经理/程序员使用结构化的方法,等等等等......"这条道路导致厄运,因为
1)它是一个开放式的工作量,和
2)没有人真正知道旧系统做了什么(最近看过规范?)因此你最终会重新发现新系统上线后的旧系统,给组织的工作能力造成极大的痛苦和损害使用新软件.通常情况下,新系统通常不会赶上旧系统,因此重写会导致丑陋的死亡.
执行此类迁移的正确方法是:坚持单独保留功能,并转换现有系统.没有新的好东西,功能,方法.
这种坚持有其自身的麻烦:组织经常不得不在迁移发生的窗口期间为生存原因做出一些改变.
为了解决这个问题,您确实需要一个自动迁移工具,因此"无功能更改"规则仅适用于实际转换期间,因此尽可能短.移植工具的开发人员可以花一些时间来构建它并彻底测试转换工具; 与此同时,组织可以通过常规方法增强遗留系统.当迁移工具准备就绪时......拉动触发器,转换代码,修补问题并测试结果系统的有效性.
一旦系统迁移完毕,您就可以考虑彻底重组或重塑,因为我们知道基本功能仍然是合理的.
无论您选择何种自动迁移工具,都需要注意它所生成的代码在新环境中是可维护的.许多转换器实现了真正天真的1对1转换,并且生成的代码最终成为旧式的foo编码的新条形码,或者在天真的COBOL转换为Java之后笑称为"JOBOL".关于如何映射语言结构,转换工具必须很复杂.(您可能希望阅读这篇关于PL/1到Java转换的讨论).
你最大的麻烦可能是"测试".目前的系统有完整的功能测试,对吧?呃,你不会有任何功能测试?您将如何验证新系统是否实现了旧系统正确执行的操作?
这里正确的答案是根据输入输出行为构建遗留系统的测试,并将这些测试应用于遗留系统和迁移系统.这是很多工作,没有人愿意这样做,更不用说为此付出代价了.这是迁移失败的第二种方式.
最后发生的事情是管理层严重缺乏资金并承担正确执行此项工作所需的工作.通常与开发团队的谈判如下:
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.
Run Code Online (Sandbox Code Playgroud)
请注意这里的工作没有实际讨论.
在6个月结束时,将开始指点.经理:"我问你们,你说6个月......"
你正在艰难地骑行.仔细准备.坚持认为人们确实列出了所有问题,并且他们产生了可信的估计.如果您是第一次进行迁移,那么您没有良好的基础来进行此类估算; 如果该组织是第一次,它没有依据判断任何估计是否正确.
(完全披露:我有偏见.我已经构建了22年的自动迁移工具.请查看B2迁移.)
很大程度上取决于CFML应用程序的现有结构.虽然有一个可用于CFML的框架与Spring的IoC部分非常接近,但我怀疑你正在考虑从非结构化CFML应用程序迁移到Spring Web,而不仅仅是IoC部分 - 而且你正在考虑从一种语言到另一种语言:CFML到Java.
所以现实是:它不是一个迁移项目,它是一个彻底的重写.
我知道你说"迁移是一项要求"(原文如此)但我认为你需要更多地解释一下这是什么驱使这一点所以人们可以提供一个更好的答案,而不是"你疯了,不要这样做!" - 因为你提供的信息很少,所以没有人能够提供有用的答案.
至于这种迁移的机制,如果你有一个使用ColdSpring的结构良好的MVC CFML应用程序,你可以将模型逐个迁移到Java并使用Spring的IoC而不是ColdSpring进行bean管理(你'我希望Spring成为ColdSpring的父bean工厂,这样你的其余CFML代码仍然可以访问新迁移的bean).
一旦将所有模型(和数据访问层)迁移到Java/Spring,您就可以解决所有.cfm视图页面到.jsp视图页面的转换,并重写所有CFML控制器/监听器(取决于哪个CFML)框架正在使用)到Spring Web处理程序.
它可能是一个庞大的项目 - 而且假设一个结构良好的,MVC框架驱动的CFML应用程序已经使用ColdSpring来管理模型.
我敢打赌,你开始的是一个非结构化的混乱(这就是为什么有一个迁移的指令),在这种情况下你的大型项目变得更加庞大.
| 归档时间: |
|
| 查看次数: |
3487 次 |
| 最近记录: |