将遗留代码和应用程序迁移到现代系统面临风险并且耗时费力,然而这一过程通常是不可避免的。本文将阐述利用生成式人工智能工具简化应用程序迁移的一些有效策略。
一项研究表明,在财富5000强公司使用的软件中,多达70%的软件都是在20年前开发的。虽然升级遗留应用程序具有充分商业理由,但这种迁移通常面临风险。迁移软件成本高昂,遗留技术知识的缺乏,以及测试老旧软件的复杂性,这些挑战减缓了迁移进度,并增加了技术债务。
应用现代化的方法可以用所谓的“云迁移的7R法则”来概括:退役(Retire)、替换(Replace)、迁移(Relocating)、重新平台化(Re-platforming)、重用(Reusing)、重构(Refactoring)和重建(Rebuilding)。好在生成式人工智能(GenAI)可以简化并加速这些过程。
本文将应用程序迁移定义为需要在新平台上编码的任何方法;例如,在语言和开发平台(如Java、.Net、Python、JavaScript和PHP)之间迁移全部或部分的应用程序或服务。
应用程序迁移也许是明确之举
需要大量重新编码的应用程序迁移通常被视为最后的手段。但有时,迁移是实现系统现代化最谨慎的方式。以下是一些例子:
需要对数据模型、业务逻辑或用户体验进行重大重新设计的应用程序在重新利用现有代码方面可能没有什么价值。
通过库和第三方服务的新功能可能会使许多现有代码变得过时,重写代码可以大幅减少技术债务。
具有重大可扩展性挑战或新安全要求的API、服务和应用程序可能需要重新设计自下而上的架构。
对于在过时的平台上运行遗留应用程序并且文档很少,以及管理应用程序的工作人员离职的组织来说,可能别无选择,只能迁移应用程序。
收购小型企业的组织可能会选择将应用程序迁移到标准平台,以降低成本并简化维护。
生成式人工智能如何提供帮助
对于组织来说,应用程序迁移的成本高昂。如果组织希望在不改变架构或用户体验的情况下重新编码,代码翻译器可以帮助加快这一过程。但是在需要进行重大更改的情况下,应用程序迁移可能需要完全重写代码。在某些情况下,生成式人工智能可以加速流程、降低成本或提高质量。
Descope公司的联合创始人Gilad Shriki说:“生成式人工智能正在通过简化开发工作流来改变应用程序迁移,包括生成启动器模板和转换脚本,帮助开发人员在适应新范式的同时保持逻辑一致性。”
根据麦肯锡公司发布的研究报告,生成式人工智能可以消除应用程序现代化过程中的大部分人工工作,从而使进度加快40%至50%,并将成本降低40%。接下来,将探讨在使用生成式人工智能功能规划应用程序迁移时的关键考虑因素。
了解工作流和变更需求
审查现有文档和采访主题专家通常是为应用程序迁移做准备的更优起点。在寻求改进的机会时,了解现有系统的业务目的、工作流和数据需求至关重要。
这种由外而内的审查有助于组织的开发团队制定一份清单,列出对迁移至关重要的需求,需要更改的内容,以及需要进一步发现的未知因素。此外,开发团队应该期望并计划变更管理程序,以便在迁移过程中为最终用户提供支持。即使只需要很少的应用程序更改,与最终用户的沟通也有助于缓解他们的担忧,并开辟反馈渠道来报告意外问题。
产品所有者和业务分析师应该审查新兴的生成式人工智能工具,以帮助编写需求和敏捷用户故事。Jira平台的示例包括Jira的人工智能测试用例和用户故事问题自动生成器,以及Jira的敏捷用户故事图、投资组合路线图和人物角色。
分析架构中的依赖项
技术人员还需要进行由内而外的分析,包括代码审查、绘制运行时基础设施图、进行数据发现,并分析日志文件或其他可观察性数据。更重要的是捕获依赖项,包括依赖的API、第三方数据源和数据管道。
这种架构审查可能非常耗时,并且通常需要丰富的技术专业知识。使用生成式人工智能可以简化和加速该过程。Chronospher公司首席技术官兼联合创始人Rob Skillington表示:“生成式人工智能正以多种方式影响应用程序的迁移,包括帮助开发人员和系统架构师快速回答有关目标迁移应用程序的架构和部署选项的问题。此外,生成式人工智能通过帮助概述可以在新拟议架构中使用的外部依赖项(如数据库、负载均衡器和第三方服务)来加速应用程序的迁移,从而创建一种与迁移的风险和可用性约束相匹配的迁移方法。”
利用生成式人工智能的创建架构和流程图的方法包括使用ChatGPT生成PlantUML图,以及使用Eraser的DiamondGPT对代码库进行诊断。
冷静理智地解读代码
审查他人的代码是软件开发人员最厌烦的工作之一。然而,代码审查对于发现缺陷、识别安全漏洞、为拉取请求生成文档以及遵守编码标准是至关重要。
在准备迁移时,分析遗留代码甚至更为重要。像OpenAI Codex(现在是ChatGPT的一部分)和GitHub Copilot这样的生成式人工智能工具可以加速将代码转换为描述、提取业务规则、绘制函数调用序列图、识别数据验证以及分离测试功能等任务。
SADA公司人工智能主管Chad Johnson表示,“应用程序迁移的一个常见挑战是理解遗留代码和应用程序逻辑,特别是由于时间流逝或人员流失而丢失的知识。生成式人工智能可以帮助破译和解释遗留代码,而无需工程师了解老旧语言和细微差别。深度研究代理可以广泛扫描网络存档文档、用户论坛和博客,以制定解决复杂漏洞和迁移问题的方案。”
开发人员可以用代码段提示生成式人工智能工具,并收到自然语言的响应,解释其目的并描述其功能。
将实用程序代码翻译成其他语言
在审查应用程序的迁移时,需要重写某些代码区域,特别是在用户体验或业务逻辑需要更改的情况下。其他实用程序代码区域可能只需要从一种语言翻译成另一种语言,同时提高性能并避免缺陷。代码翻译器是自动化部分转换的一种选择。
Yugabyte公司副总裁Shreyas Agnihotri说,“生成式人工智能通过自动化代码翻译、优化性能和识别迁移过程中的错误来简化应用程序移植。例如,当将应用程序转换为利用更新的技术时,生成式人工智能可以重构遗留代码以获得兼容性,生成测试用例,简化依赖项映射,从而显著减少人工工作量和风险。”
开发人员可以使用Java语言转换助手(JLCA)之类的工具将Java转换为.Net,或者使用CodeConvert将C#转换为Java或Python。解释和翻译来自遗留语言(如COBOL)的代码具有额外的挑战,因为很难找到熟练的专家。生成式人工智能和其他用于迁移Cobol项目的工具使得没有Cobol专业知识的开发人员更容易为这些项目做出贡献。
Postman公司高级开发人员倡导者Sterling Chin说,“在大型机到现代平台的迁移过程中,生成式人工智能分析COBOL和其他遗留代码库的能力变得特别有价值。它可以解析嵌入在几十年前的代码中的复杂业务规则,在现代测试框架中自动生成等效的测试场景,并验证关键业务逻辑在迁移过程中保持不变。”
为遗留代码生成测试用例
翻译、重构和改进代码可能是应用程序迁移中比较容易的方面。测试通常是更困难的挑战,特别是因为许多遗留应用程序缺乏单元测试和自动化回归测试。
Chin说,“生成式人工智能全面分析现有应用程序的能力使测试驱动的迁移方法成为可能。可以预先生成自动化的测试套件,以验证整个迁移过程中的功能一致性,确保每个迁移的组件在支持增量现代化的同时保持原始系统的行为。”
在可能的情况下,优秀实践是在迁移遗留应用程序之前生成测试用例和测试框架。然后,可以使用新的应用程序上的等效测试用例对两个应用程序版本的结果进行基准测试。
Shriki补充说:“人工智能测试框架通过自动生成测试用例,在软件开发生命周期的早期集成安全检查,以及优化新平台的性能基准,进一步加速了这一过程。这些进步不仅减少了技术债务,而且使开发团队能够更快地实现应用程序的现代化,而不会影响质量、安全性或开发人员的效率。”
规划数据迁移
即使在测试了应用程序及其依赖项之后,也可能需要进行数据迁移。如果数据库技术和模式不需要更改,那么应用程序的迁移可能很简单;例如,将小型的本地SQL数据库转换为云数据库服务。但是,如果模式发生了重大变化,或者需要修复数据质量问题,那么迁移本身就是一个项目。
SS&C Blue Prism公司美洲首席技术官Lou Bachenheimer表示:“生成式人工智能可以解决与应用程序迁移相关的两个主要痛点:考虑各种依赖项的广泛计划,以及通过繁琐的检查来防止数据丢失或损坏的重复数据迁移。人工智能可以理解必要的步骤,并触发预先构建的受控自动化来执行数据迁移,利用传统的自动化技术来减轻与生成式人工智能接触潜在敏感数据相关的风险,从而显著加速并简化迁移过程。”
如果应用程序具有高吞吐量事务,或者业务无法在长时间停机后从遗留应用程序切换到迁移的应用程序,那么对于大型数据库来说,迭代迁移数据段的增量迁移可能是必要的。
管理人工智能生成代码的风险
虽然许多工具都可以帮助应用程序迁移和生成代码,但专家警告说,开发团队应该将详细的代码和安全审查作为测试的一部分,即使应用程序正在经历最小的功能更改。开发团队应该与利益相关者沟通,应用程序迁移仍然需要测试和安全审查。
Apiiro公司首席产品官Moti Gindi表示:“在软件开发中采用生成式人工智能工具极大地提升了开发人员的工作效率,但代码量的快速增长已经超越了关键的人工应用程序安全控制措施的步伐,例如安全审查或威胁建模,这凸显了这些过程实现自动化的必要性。虽然采用生成式人工智能生成的代码高效,但通常缺乏对公司特定政策和合规要求的认识,因此可能会引入新的业务风险。此外,将生成式人工智能集成到每个业务的应用程序堆栈中会引入新的潜在攻击面(例如提示注入),需要针对这种新出现的威胁实施和执行新的代码安全控制。”
成功迁移的关键是理解需求、与最终用户沟通、选择适当的工具来帮助应用程序的迁移,以及制定全面的测试计划。企业有大量需要现代化的应用程序,开发迁移实践的IT组织可以加速迁移、降低成本,并最大限度地降低风险。
原文链接:https://www.infoworld.com/article/3844351/how-to-simplify-app-migration-with-generative-ai-tools.html