對於全球眾多金融、保險、電信與政府機構而言,運行在 IBM Z 大型主機上的遺留核心系統,既是支撐每日數兆美元交易的營運命脈,也是技術架構演進中最棘手的包袱。經歷數十年沉澱的龐大 COBOL 程式碼庫依然穩定高效,但隨著初代大型主機資深工程師相繼退休,具備 COBOL 維護與開發經驗的人才出現嚴重斷層,老舊系統的文件缺乏與維運風險與日俱增。
在傳統的現代化路徑中,企業常面臨艱難抉擇:若採取高風險、長週期的「全面翻新重寫」(Rip-and-Replace),往往因預算失控或邏輯遺漏而以失敗收場;若仰賴基於靜態規則的語法轉換工具,則常產出被戲稱為「JOBOL」的劣質產物——表面上包裹 Java 語法外衣,實質上卻充滿全域變數、過程序跳轉與難以維護的迴圈結構,徹底背離了物件導向的設計理念。
為了解決這項產業痛點,IBM 推出了由 Granite 基礎程式碼模型驅動的 IBM watsonx Code Assistant for Z (WCA4Z)。該工具開創了一條具選擇性、漸進式的生成式 AI 現代化路徑,協助企業架構與開發團隊完成從應用探索、自然語言程式碼解釋、服務模組化重構,到高品質 Java 程式碼生成與語意等價性驗證的完整閉環,在順暢升級技術棧的同時,完整守護大型主機的高可用性與交易完整性。
1. 深度應用探索:運用 ADDI 與 Z Understand 繪製單體應用拓撲
大型主機應用程式極少獨立運作。一個典型的核心交易往往貫穿數十個 COBOL 程式、共享 Copybook 資料結構、批次 JCL 作業、CICS 交易管理中介軟體以及 Db2 或 VSAM 資料庫。在缺乏全盤脈絡的情況下盲目動工,極易引發災難性的系統回歸問題。
現代化團隊通常透過 IBM Application Discovery and Delivery Intelligence (ADDI) 與 Z Understand 介面展開首階段分析:
- 自動化依賴關係映射: ADDI 全面掃描解析大型主機原始碼資產,建立程式間的呼叫關係圖、控制流圖與資料流拓撲,視覺化呈現模組之間的耦合深度。
- 界定業務微服務邊界: 架構師不再面對數百萬行程式碼的龐然大物無從下手,而是能透過拓撲圖精準定位出封閉且具備高價值的業務子程序(例如利息計算、保費費率核算或信用評級邏輯),並將其列為優先現代化的目標。
- 業務規則智慧擷取: Z Understand 中的 AI 代理程式可掃描特定 COBOL 段落,自動提煉隱含的商業規則、關鍵變數定義與資料狀態變更,為後續的拆分提供清晰明確的規格定義。
2. 自然語言程式碼解釋:弭平跨世代開發者的溝通斷層
大型主機程式碼歷經數代工程師多年修補,常含有缺乏規範的縮寫、未記錄的補丁甚至廢棄的邏輯分支。新世代熟悉現代開發架構的 Java 與雲原生工程師面對這類古老代碼時往往難以參透。
watsonx Code Assistant for Z 將生成式 AI 解釋能力直接內建於主流 IDE(例如在 Visual Studio Code 中搭配 IBM Z Open Editor 擴充套件,或於基於 Eclipse 的 IBM Developer for z/OS 中操作):
- 平易易懂的技術摘要: 開發者反白選取複雜的 COBOL 業務段落、Copybook 結構或 JCL 流程後,即可向 AI 請求解釋。模型會將輸入條件、判斷邏輯、分支路徑與資料修改行為轉化為條理分明的自然語言說明。
- 促進跨團隊協同作業: 資深大型主機工程師無須耗費大量精力為年輕工程師逐行講解業務,Java 開發者也能快速理解複雜的金融演算法,大幅縮短需求梳理與程式碼審查的時程。
- 即時活化企業架構資產: 開發者可將 AI 產出的結構化解釋直接回填為原始碼註解或系統知識庫,快速修補長期遺失的技術文件體系。
3. 模組化解耦重構:程式語言轉換前的安全隔離區
現代化工程中最常見的誤區,是直接將龐大混亂的過程序程式碼丟入生成模型中轉換。watsonx Code Assistant for Z 建立嚴謹的工程規範:在執行語言轉換前,必須先進行模組化重構。
- 抽取獨立業務模組: 運用內建的輔助重構機制,工程師將深埋在大型主程式中的核心業務邏輯抽出,獨立成高內聚、低耦合的 COBOL 子程式。
- 劃分變數作用域: 工具會自動分析
WORKING-STORAGE SECTION與參數傳遞機制,釐清全域相依與區域狀態,確保重構後的子程式具備清晰的輸入與輸出規格。 - 在地編譯驗證: 解耦後的模組先在既有大型主機編譯環境中通過測試驗證,確認商業邏輯分毫不差後,才推進至下一步的語言轉換階段。
4. 生成式 AI 程式碼轉換:產出符合設計典範的物件導向 Java
重構完成的 COBOL 服務隨即進入核心轉換程序。相較於逐行硬譯的傳統轉換器,watsonx Code Assistant for Z 採用歷經大量企業級語言預訓練、並透過 InstructLab 架構精調的 Granite 20B 程式碼基礎模型:
- 標準物件導向設計: 模型能理解業務流背後的領域實體,輸出具備完善封裝、標準 Getter/Setter、清晰介面與例外處理機制的道地 Java 類別,徹底杜絕「JOBOL」現象。
- 資料型態與計算精準轉換: 針對 COBOL 特有的定長記錄結構、
OCCURS重複陣列與 Packed Decimal 壓縮十進位格式,生成對應的 Java 實體物件、集合架構與BigDecimal高精確度運算邏輯,杜絕金融級計算中的浮點數誤差。 - 無縫整合現代化建置流程: 轉換後的 Java 專案可完全融入標準開發規範,開發者能在 VS Code 中採用 Maven 或 Gradle 進行依賴與建置管理,並自 Maven Central 取得 IBM 官方支援函式庫。
- 彈性靈活的部署選擇: 現代化後的 Java 服務可就地執行於 IBM z/OS 的 WebSphere Application Server Liberty 或 CICS 容器中(利用 zIIP 專用處理器大幅降低常規運算計費),亦可容器化打包部署於 Red Hat OpenShift 等混合雲環境。
5. 自動化測試生成與語意等價性驗證
大型主機乘載著企業最核心的運營資料,轉換後系統的精確性不容絲毫妥協,任何邏輯偏差都可能引發嚴重的合規或營運危機。
watsonx Code Assistant for Z 提供了配套的測試輔助與語意等價性驗證體系:
- 自動產生 JUnit 測試案例: 系統能剖析原始 COBOL 程式碼的邊界條件與預期行為,自動建立對應的 JUnit 測試套件與 Mock 假資料結構。
- 雙軌並行比對驗證: 團隊利用生產環境去識別化資料或歷史交易記錄,使新產生的 Java 服務與原有 COBOL 模組並行運算,自動比對各項輸出結果與狀態變化。
- 杜絕邏輯飄移風險: 一旦在四捨五入計算規則、邊界極值或交易回滾邏輯上出現差異,驗證套件會即刻提出警示,協助工程師在部署前快速修正。
策略建議與最佳實踐準則
為了在大型主機現代化歷程中最大化投資回報並有效管控風險,企業技術主管應遵循以下實踐方針:
- 落實「選點突破、漸進演進」策略: 避免貿然採取一次性推倒重寫。優先聚焦於業務更動頻繁、亟需對外開放 API 的周邊與計算型服務(如費率計算、行銷規則),而對極度穩定且要求極致吞吐量的底層批次作業,則維持在 COBOL 中穩定運轉。
- 貫徹「人機協作(Human-in-the-Loop)」治理: 雖然生成式 AI 能大幅縮減 80% 的代碼理解與轉換時間,但架構設計審查、交易邊界劃分及安全審計仍須由資深架構師嚴格把關。
- 發揮大型主機同構與 zIIP 成本效益: 將現代化後的 Java 服務就地運行在大型主機內部,不僅能消除跨網路呼叫帶來的延遲與資安風險,更能透過 zIIP 專用處理器卸載運算負載,顯著壓低主機資源使用費用。
- 現代化工程環境標準化: 全面導入 VS Code、IBM Z Open Editor、Git 與現代 CI/CD 自動化流程,讓大型主機開發體系與雲原生工具生態無縫對齊,從根本上解決年輕工程人才的延攬與培育挑戰。
結合深度的系統相依性分析、AI 輔助理解、模組化重構與嚴謹的語意等價驗證,IBM watsonx Code Assistant for Z 成功將風險高昂的遺留大型主機升級工程,轉化為一門高度可控、可預期且成效卓越的現代化軟體工程實踐。