
譯者 | 李睿
審校 | 重樓
將遺留代碼和應(yīng)用程序遷移到現(xiàn)代系統(tǒng)面臨風(fēng)險(xiǎn)并且耗時(shí)費(fèi)力,然而這一過(guò)程通常是不可避免的。本文將闡述利用生成式人工智能工具簡(jiǎn)化應(yīng)用程序遷移的一些有效策略。
一項(xiàng)研究表明,在財(cái)富5000強(qiáng)公司使用的軟件中,多達(dá)70%的軟件都是在20年前開(kāi)發(fā)的。雖然升級(jí)遺留應(yīng)用程序具有充分商業(yè)理由,但這種遷移通常面臨風(fēng)險(xiǎn)。遷移軟件成本高昂,遺留技術(shù)知識(shí)的缺乏,以及測(cè)試?yán)吓f軟件的復(fù)雜性,這些挑戰(zhàn)減緩了遷移進(jìn)度,并增加了技術(shù)債務(wù)。
應(yīng)用現(xiàn)代化的方法可以用所謂的“云遷移的7R法則”來(lái)概括:退役(Retire)、替換(Replace)、遷移(Relocating)、重新平臺(tái)化(Re-platforming)、重用(Reusing)、重構(gòu)(Refactoring)和重建(Rebuilding)。好在生成式人工智能(GenAI)可以簡(jiǎn)化并加速這些過(guò)程。
本文將應(yīng)用程序遷移定義為需要在新平臺(tái)上編碼的任何方法;例如,在語(yǔ)言和開(kāi)發(fā)平臺(tái)(如Java、.Net、Python、JavaScript和PHP)之間遷移全部或部分的應(yīng)用程序或服務(wù)。
應(yīng)用程序遷移也許是明確之舉
需要大量重新編碼的應(yīng)用程序遷移通常被視為最后的手段。但有時(shí),遷移是實(shí)現(xiàn)系統(tǒng)現(xiàn)代化最謹(jǐn)慎的方式。以下是一些例子:
- 需要對(duì)數(shù)據(jù)模型、業(yè)務(wù)邏輯或用戶(hù)體驗(yàn)進(jìn)行重大重新設(shè)計(jì)的應(yīng)用程序在重新利用現(xiàn)有代碼方面可能沒(méi)有什么價(jià)值。
- 通過(guò)庫(kù)和第三方服務(wù)的新功能可能會(huì)使許多現(xiàn)有代碼變得過(guò)時(shí),重寫(xiě)代碼可以大幅減少技術(shù)債務(wù)。
- 具有重大可擴(kuò)展性挑戰(zhàn)或新安全要求的API、服務(wù)和應(yīng)用程序可能需要重新設(shè)計(jì)自下而上的架構(gòu)。
- 對(duì)于在過(guò)時(shí)的平臺(tái)上運(yùn)行遺留應(yīng)用程序并且文檔很少,以及管理應(yīng)用程序的工作人員離職的組織來(lái)說(shuō),可能別無(wú)選擇,只能遷移應(yīng)用程序。
- 收購(gòu)小型企業(yè)的組織可能會(huì)選擇將應(yīng)用程序遷移到標(biāo)準(zhǔn)平臺(tái),以降低成本并簡(jiǎn)化維護(hù)。
生成式人工智能如何提供幫助
對(duì)于組織來(lái)說(shuō),應(yīng)用程序遷移的成本高昂。如果組織希望在不改變架構(gòu)或用戶(hù)體驗(yàn)的情況下重新編碼,代碼翻譯器可以幫助加快這一過(guò)程。但是在需要進(jìn)行重大更改的情況下,應(yīng)用程序遷移可能需要完全重寫(xiě)代碼。在某些情況下,生成式人工智能可以加速流程、降低成本或提高質(zhì)量。
Descope公司的聯(lián)合創(chuàng)始人Gilad Shriki說(shuō):“生成式人工智能正在通過(guò)簡(jiǎn)化開(kāi)發(fā)工作流來(lái)改變應(yīng)用程序遷移,包括生成啟動(dòng)器模板和轉(zhuǎn)換腳本,幫助開(kāi)發(fā)人員在適應(yīng)新范式的同時(shí)保持邏輯一致性。”
根據(jù)麥肯錫公司發(fā)布的研究報(bào)告,生成式人工智能可以消除應(yīng)用程序現(xiàn)代化過(guò)程中的大部分人工工作,從而使進(jìn)度加快40%至50%,并將成本降低40%。接下來(lái),將探討在使用生成式人工智能功能規(guī)劃應(yīng)用程序遷移時(shí)的關(guān)鍵考慮因素。
了解工作流和變更需求
審查現(xiàn)有文檔和采訪(fǎng)主題專(zhuān)家通常是為應(yīng)用程序遷移做準(zhǔn)備的最佳起點(diǎn)。在尋求改進(jìn)的機(jī)會(huì)時(shí),了解現(xiàn)有系統(tǒng)的業(yè)務(wù)目的、工作流和數(shù)據(jù)需求至關(guān)重要。
這種由外而內(nèi)的審查有助于組織的開(kāi)發(fā)團(tuán)隊(duì)制定一份清單,列出對(duì)遷移至關(guān)重要的需求,需要更改的內(nèi)容,以及需要進(jìn)一步發(fā)現(xiàn)的未知因素。此外,開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)該期望并計(jì)劃變更管理程序,以便在遷移過(guò)程中為最終用戶(hù)提供支持。即使只需要很少的應(yīng)用程序更改,與最終用戶(hù)的溝通也有助于緩解他們的擔(dān)憂(yōu),并開(kāi)辟反饋渠道來(lái)報(bào)告意外問(wèn)題。
產(chǎn)品所有者和業(yè)務(wù)分析師應(yīng)該審查新興的生成式人工智能工具,以幫助編寫(xiě)需求和敏捷用戶(hù)故事。Jira平臺(tái)的示例包括Jira的人工智能測(cè)試用例和用戶(hù)故事問(wèn)題自動(dòng)生成器,以及Jira的敏捷用戶(hù)故事圖、投資組合路線(xiàn)圖和人物角色。
分析架構(gòu)中的依賴(lài)項(xiàng)
技術(shù)人員還需要進(jìn)行由內(nèi)而外的分析,包括代碼審查、繪制運(yùn)行時(shí)基礎(chǔ)設(shè)施圖、進(jìn)行數(shù)據(jù)發(fā)現(xiàn),并分析日志文件或其他可觀(guān)察性數(shù)據(jù)。更重要的是捕獲依賴(lài)項(xiàng),包括依賴(lài)的API、第三方數(shù)據(jù)源和數(shù)據(jù)管道。
這種架構(gòu)審查可能非常耗時(shí),并且通常需要豐富的技術(shù)專(zhuān)業(yè)知識(shí)。使用生成式人工智能可以簡(jiǎn)化和加速該過(guò)程。Chronospher公司首席技術(shù)官兼聯(lián)合創(chuàng)始人Rob Skillington表示:“生成式人工智能正以多種方式影響應(yīng)用程序的遷移,包括幫助開(kāi)發(fā)人員和系統(tǒng)架構(gòu)師快速回答有關(guān)目標(biāo)遷移應(yīng)用程序的架構(gòu)和部署選項(xiàng)的問(wèn)題。此外,生成式人工智能通過(guò)幫助概述可以在新擬議架構(gòu)中使用的外部依賴(lài)項(xiàng)(如數(shù)據(jù)庫(kù)、負(fù)載均衡器和第三方服務(wù))來(lái)加速應(yīng)用程序的遷移,從而創(chuàng)建一種與遷移的風(fēng)險(xiǎn)和可用性約束相匹配的遷移方法?!?/span>
利用生成式人工智能的創(chuàng)建架構(gòu)和流程圖的方法包括使用ChatGPT生成PlantUML圖,以及使用Eraser的DiamondGPT對(duì)代碼庫(kù)進(jìn)行診斷。
冷靜理智地解讀代碼
審查他人的代碼是軟件開(kāi)發(fā)人員最厭煩的工作之一。然而,代碼審查對(duì)于發(fā)現(xiàn)缺陷、識(shí)別安全漏洞、為拉取請(qǐng)求生成文檔以及遵守編碼標(biāo)準(zhǔn)是至關(guān)重要。
在準(zhǔn)備遷移時(shí),分析遺留代碼甚至更為重要。像OpenAI Codex(現(xiàn)在是ChatGPT的一部分)和GitHub Copilot這樣的生成式人工智能工具可以加速將代碼轉(zhuǎn)換為描述、提取業(yè)務(wù)規(guī)則、繪制函數(shù)調(diào)用序列圖、識(shí)別數(shù)據(jù)驗(yàn)證以及分離測(cè)試功能等任務(wù)。
SADA公司人工智能主管Chad Johnson表示,“應(yīng)用程序遷移的一個(gè)常見(jiàn)挑戰(zhàn)是理解遺留代碼和應(yīng)用程序邏輯,特別是由于時(shí)間流逝或人員流失而丟失的知識(shí)。生成式人工智能可以幫助破譯和解釋遺留代碼,而無(wú)需工程師了解老舊語(yǔ)言和細(xì)微差別。深度研究代理可以廣泛掃描網(wǎng)絡(luò)存檔文檔、用戶(hù)論壇和博客,以制定解決復(fù)雜漏洞和遷移問(wèn)題的方案。”
開(kāi)發(fā)人員可以用代碼段提示生成式人工智能工具,并收到自然語(yǔ)言的響應(yīng),解釋其目的并描述其功能。
將實(shí)用程序代碼翻譯成其他語(yǔ)言
在審查應(yīng)用程序的遷移時(shí),需要重寫(xiě)某些代碼區(qū)域,特別是在用戶(hù)體驗(yàn)或業(yè)務(wù)邏輯需要更改的情況下。其他實(shí)用程序代碼區(qū)域可能只需要從一種語(yǔ)言翻譯成另一種語(yǔ)言,同時(shí)提高性能并避免缺陷。代碼翻譯器是自動(dòng)化部分轉(zhuǎn)換的一種選擇。
Yugabyte公司副總裁Shreyas Agnihotri說(shuō),“生成式人工智能通過(guò)自動(dòng)化代碼翻譯、優(yōu)化性能和識(shí)別遷移過(guò)程中的錯(cuò)誤來(lái)簡(jiǎn)化應(yīng)用程序移植。例如,當(dāng)將應(yīng)用程序轉(zhuǎn)換為利用更新的技術(shù)時(shí),生成式人工智能可以重構(gòu)遺留代碼以獲得兼容性,生成測(cè)試用例,簡(jiǎn)化依賴(lài)項(xiàng)映射,從而顯著減少人工工作量和風(fēng)險(xiǎn)?!?/span>
開(kāi)發(fā)人員可以使用Java語(yǔ)言轉(zhuǎn)換助手(JLCA)之類(lèi)的工具將Java轉(zhuǎn)換為.Net,或者使用CodeConvert將C#轉(zhuǎn)換為Java或Python。解釋和翻譯來(lái)自遺留語(yǔ)言(如COBOL)的代碼具有額外的挑戰(zhàn),因?yàn)楹茈y找到熟練的專(zhuān)家。生成式人工智能和其他用于遷移Cobol項(xiàng)目的工具使得沒(méi)有Cobol專(zhuān)業(yè)知識(shí)的開(kāi)發(fā)人員更容易為這些項(xiàng)目做出貢獻(xiàn)。
Postman公司高級(jí)開(kāi)發(fā)人員倡導(dǎo)者Sterling Chin說(shuō),“在大型機(jī)到現(xiàn)代平臺(tái)的遷移過(guò)程中,生成式人工智能分析COBOL和其他遺留代碼庫(kù)的能力變得特別有價(jià)值。它可以解析嵌入在幾十年前的代碼中的復(fù)雜業(yè)務(wù)規(guī)則,在現(xiàn)代測(cè)試框架中自動(dòng)生成等效的測(cè)試場(chǎng)景,并驗(yàn)證關(guān)鍵業(yè)務(wù)邏輯在遷移過(guò)程中保持不變?!?/span>
為遺留代碼生成測(cè)試用例
翻譯、重構(gòu)和改進(jìn)代碼可能是應(yīng)用程序遷移中比較容易的方面。測(cè)試通常是更困難的挑戰(zhàn),特別是因?yàn)樵S多遺留應(yīng)用程序缺乏單元測(cè)試和自動(dòng)化回歸測(cè)試。
Chin說(shuō),“生成式人工智能全面分析現(xiàn)有應(yīng)用程序的能力使測(cè)試驅(qū)動(dòng)的遷移方法成為可能。可以預(yù)先生成自動(dòng)化的測(cè)試套件,以驗(yàn)證整個(gè)遷移過(guò)程中的功能一致性,確保每個(gè)遷移的組件在支持增量現(xiàn)代化的同時(shí)保持原始系統(tǒng)的行為。”
在可能的情況下,最佳實(shí)踐是在遷移遺留應(yīng)用程序之前生成測(cè)試用例和測(cè)試框架。然后,可以使用新的應(yīng)用程序上的等效測(cè)試用例對(duì)兩個(gè)應(yīng)用程序版本的結(jié)果進(jìn)行基準(zhǔn)測(cè)試。
Shriki補(bǔ)充說(shuō):“人工智能測(cè)試框架通過(guò)自動(dòng)生成測(cè)試用例,在軟件開(kāi)發(fā)生命周期的早期集成安全檢查,以及優(yōu)化新平臺(tái)的性能基準(zhǔn),進(jìn)一步加速了這一過(guò)程。這些進(jìn)步不僅減少了技術(shù)債務(wù),而且使開(kāi)發(fā)團(tuán)隊(duì)能夠更快地實(shí)現(xiàn)應(yīng)用程序的現(xiàn)代化,而不會(huì)影響質(zhì)量、安全性或開(kāi)發(fā)人員的效率?!?/span>
規(guī)劃數(shù)據(jù)遷移
即使在測(cè)試了應(yīng)用程序及其依賴(lài)項(xiàng)之后,也可能需要進(jìn)行數(shù)據(jù)遷移。如果數(shù)據(jù)庫(kù)技術(shù)和模式不需要更改,那么應(yīng)用程序的遷移可能很簡(jiǎn)單;例如,將小型的本地SQL數(shù)據(jù)庫(kù)轉(zhuǎn)換為云數(shù)據(jù)庫(kù)服務(wù)。但是,如果模式發(fā)生了重大變化,或者需要修復(fù)數(shù)據(jù)質(zhì)量問(wèn)題,那么遷移本身就是一個(gè)項(xiàng)目。
SS&C Blue Prism公司美洲首席技術(shù)官Lou Bachenheimer表示:“生成式人工智能可以解決與應(yīng)用程序遷移相關(guān)的兩個(gè)主要痛點(diǎn):考慮各種依賴(lài)項(xiàng)的廣泛計(jì)劃,以及通過(guò)繁瑣的檢查來(lái)防止數(shù)據(jù)丟失或損壞的重復(fù)數(shù)據(jù)遷移。人工智能可以理解必要的步驟,并觸發(fā)預(yù)先構(gòu)建的受控自動(dòng)化來(lái)執(zhí)行數(shù)據(jù)遷移,利用傳統(tǒng)的自動(dòng)化技術(shù)來(lái)減輕與生成式人工智能接觸潛在敏感數(shù)據(jù)相關(guān)的風(fēng)險(xiǎn),從而顯著加速并簡(jiǎn)化遷移過(guò)程。”
如果應(yīng)用程序具有高吞吐量事務(wù),或者業(yè)務(wù)無(wú)法在長(zhǎng)時(shí)間停機(jī)后從遺留應(yīng)用程序切換到遷移的應(yīng)用程序,那么對(duì)于大型數(shù)據(jù)庫(kù)來(lái)說(shuō),迭代遷移數(shù)據(jù)段的增量遷移可能是必要的。
管理人工智能生成代碼的風(fēng)險(xiǎn)
雖然許多工具都可以幫助應(yīng)用程序遷移和生成代碼,但專(zhuān)家警告說(shuō),開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)該將詳細(xì)的代碼和安全審查作為測(cè)試的一部分,即使應(yīng)用程序正在經(jīng)歷最小的功能更改。開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)該與利益相關(guān)者溝通,應(yīng)用程序遷移仍然需要測(cè)試和安全審查。
Apiiro公司首席產(chǎn)品官M(fèi)oti Gindi表示:“在軟件開(kāi)發(fā)中采用生成式人工智能工具極大地提升了開(kāi)發(fā)人員的工作效率,但代碼量的快速增長(zhǎng)已經(jīng)超越了關(guān)鍵的人工應(yīng)用程序安全控制措施的步伐,例如安全審查或威脅建模,這凸顯了這些過(guò)程實(shí)現(xiàn)自動(dòng)化的必要性。雖然采用生成式人工智能生成的代碼高效,但通常缺乏對(duì)公司特定政策和合規(guī)要求的認(rèn)識(shí),因此可能會(huì)引入新的業(yè)務(wù)風(fēng)險(xiǎn)。此外,將生成式人工智能集成到每個(gè)業(yè)務(wù)的應(yīng)用程序堆棧中會(huì)引入新的潛在攻擊面(例如提示注入),需要針對(duì)這種新出現(xiàn)的威脅實(shí)施和執(zhí)行新的代碼安全控制?!?/span>
成功遷移的關(guān)鍵是理解需求、與最終用戶(hù)溝通、選擇適當(dāng)?shù)墓ぞ邅?lái)幫助應(yīng)用程序的遷移,以及制定全面的測(cè)試計(jì)劃。企業(yè)有大量需要現(xiàn)代化的應(yīng)用程序,開(kāi)發(fā)遷移實(shí)踐的IT組織可以加速遷移、降低成本,并最大限度地降低風(fēng)險(xiǎn)。
原文標(biāo)題:How to simplify app migration with generative AI tools,作者:Isaac Sacolick




































