Bỏ qua đến nội dung chính

Claude Code modernizes a legacy COBOL codebase

TL;DR

  • Claude Code tự động khám phá và tài liệu hóa các codebase COBOL kế thừa, tạo ra các tài liệu chi tiết, danh sách công việc và sơ đồ quy trình kinh doanh (Mermaid diagrams) để cung cấp cái nhìn sâu sắc về logic phức tạp.
  • Công cụ này sau đó hỗ trợ di chuyển các tính năng cốt lõi của COBOL sang các ngôn ngữ hiện đại như Java, phát triển kế hoạch chi tiết và tạo ra mã Java chuẩn, dễ bảo trì.
  • Để đảm bảo độ chính xác, Claude Code thực hiện xác minh từng bit bằng cách sử dụng khung kiểm thử kép, so sánh kết quả đầu ra cuối cùng cũng như các phép tính trung gian, đảm bảo hành vi nhất quán.

Điểm chính

  • Sử dụng các tác nhân phụ (sub-agent) của Claude Code cho các tác vụ chuyên biệt như tài liệu hóa và dịch COBOL, cho phép chúng hoạt động song song với các cửa sổ ngữ cảnh riêng biệt.
  • Kích hoạt chế độ suy nghĩ (thinking mode) để Claude Code phân tích kiến trúc codebase và tự động tạo danh sách việc cần làm nhằm theo dõi tiến độ tài liệu hóa.
  • Tận dụng khả năng của Claude Code để tạo sơ đồ Mermaid và các tệp bộ nhớ (ví dụ: Catalog.Tex) để trực quan hóa các quy trình kinh doanh (business workflow) và các phụ thuộc của codebase.
  • Chuyển sang chế độ lập kế hoạch (planning mode) trước khi di chuyển để Claude Code xây dựng chiến lược di chuyển toàn diện, bao gồm cấu trúc dự án, dịch mô hình dữ liệu và lớp IO.
  • Đảm bảo quá trình chuyển đổi tạo ra mã Java chuẩn (Idiomatic Java) phù hợp với các mẫu thiết kế (design patterns) hiện đại, xử lý lỗi (error handling) và ghi nhật ký (logging) để dễ bảo trì.
  • Triển khai khung kiểm thử kép (dual test harness) để thực hiện xác minh (verification) độ trung thực từng bit (bit-for-bit fidelity), so sánh không chỉ kết quả cuối cùng mà còn cả các phép tính trung gian và ghi tệp.
  • Các kỹ thuật này có khả năng mở rộng (scalable) để xử lý các codebase COBOL kế thừa lớn hơn nhiều, với khả năng chạy tự chủ (autonomously) trong thời gian dài.

Từ vựng

  • COBOL codebase — codebase COBOL
  • sub-agent — tác nhân phụ
  • thinking mode — chế độ suy nghĩ
  • business workflow — quy trình kinh doanh
  • Mermaid diagrams — sơ đồ Mermaid
  • planning mode — chế độ lập kế hoạch
  • dual test harness — khung kiểm thử kép
  • bit-for-bit fidelity — độ trung thực từng bit
  • Idiomatic Java — Mã Java chuẩn
  • scalable — khả năng mở rộng

Nội dung chi tiết

Giới thiệu về Hiện đại hóa COBOL với Claude Code

Hãy cùng khám phá cách các nhà phát triển có thể sử dụng Claude Code để hiện đại hóa một COBOL codebase. Để phục vụ demo này, chúng tôi sử dụng Mainframe Modernization Demo Repository của AWS. Đây là một hệ thống quản lý thẻ tín dụng cỡ trung bình với khoảng 100 tệp, bao gồm các chương trình COBOL, copybooksJCL scripts.

Giai đoạn 1: Khám phá và Tài liệu hóa Codebase

COBOL codebase mẫu của chúng tôi gần như không có tài liệu. Điều này, tất nhiên, rất phổ biến với các codebase kế thừa (legacy codebases) nơi logic kinh doanh quan trọngyêu cầu quy định được nhúng trong mã không có tài liệu. Các nhà phát triển đã viết đã rời khỏi tổ chức từ lâu, và rất khó để thuê các nhà phát triển quen thuộc với COBOL.

Tạo Tác nhân Phụ chuyên biệt và Phân tích Kiến trúc

Chúng tôi đầu tiên tạo một tác nhân phụ (sub-agent) chuyên biệt bằng cách sử dụng lệnh /agent của Claude Code. Đây là chuyên gia tài liệu COBOLngười dịch của chúng tôi. Các tác nhân phụ có thể được Claude Code gọi song song, và chúng hoạt động với các cửa sổ ngữ cảnh (context window) riêng biệt để tránh làm ô nhiễm luồng chính. Chúng tôi đã bật chế độ suy nghĩ (thinking mode) và yêu cầu Claude Code phân tích kiến trúc của codebase. Claude Code đã tạo một danh sách việc cần làm gồm tất cả 94 tệp và theo dõi tiến độ của nó để đảm bảo không có tệp nào được xử lý hai lần và không có gì bị bỏ sót.

Tạo Tài liệu và Sơ đồ Quy trình Kinh doanh Chi tiết

Tài liệuClaude tạo ra đã vượt xa các bình luận mã đơn thuần. Ví dụ, hãy xem chương trình tính lãi, CBACT04C. Nó đã trích xuất toàn bộ quy trình kinh doanh (business workflow). Cách chương trình đọc số dư theo danh mục giao dịch, tra cứu lãi suất theo nhóm tài khoản, áp dụng quy tắc kinh doanh cho lãi suất dự phòng, và cập nhật hồ sơ tài khoản. Claude đã thực hiện điều này cho từng tệp, nhưng cũng tạo ra hai tệp bộ nhớ dưới dạng văn bản thuần túy. Catalog.Tex dịch các tên khó hiểu như CBACT04C thành "chương trình xử lý hàng loạt tính lãi". CBACT04C.Tex ánh xạ mọi phụ thuộc bằng cách sử dụng định dạng phân tách bằng dấu gạch đứng (pipe-delimited format) đơn giản. Sử dụng các chỉ mục này, Claude sau đó đã tạo ra các sơ đồ Mermaid, một bản đồ hoàn chỉnh về quy trình xử lý hàng loạt hàng ngày (daily batch processing workflow), cho thấy dữ liệu chảy từ đầu vào giao dịch qua hạch toán, tính lãi, và cuối cùng đến sao kê khách hàng như thế nào.

Khả năng Mở rộng của Quy trình Tài liệu hóa

Trong demo này, Claude Code đã chạy liên tục trong một giờ để soạn thảo hơn 100 trang tài liệu. Claude Code có khả năng chạy tự chủ (autonomously) trong hơn 30 giờ, và các kỹ thuật được sử dụng ở đây có thể mở rộng (scale) cho các codebase lớn hơn rất nhiều.

Giai đoạn 2: Di chuyển và Xác minh Mã

Sau khi đã tài liệu hóa kỹ lưỡng COBOL codebase, chúng tôi yêu cầu Claude di chuyển (migrate) một trong những tính năng cốt lõi của nó sang Java. Chúng tôi đã chuyển sang chế độ lập kế hoạch (planning mode) để đảm bảo Claude sẽ suy nghĩ kỹ về toàn bộ chiến lược di chuyển mà không chỉnh sửa tệp (editing files) quá sớm.

Phát triển Kế hoạch Di chuyển sang Java

Claude đã phân tích chương trình được biết đến với tên gọi CBACT04C và xác định các mẫu COBOL phức tạp như xử lý ngắt dòng (line break processing) và điều phối đa tệp (multi-file coordination). Claude đã phát triển một kế hoạch di chuyển cho tính năng này với năm giai đoạn:

  1. Tạo cấu trúc dự án.
  2. Dịch các mô hình dữ liệu từ copybooks sang lớp Java (Java classes).
  3. Xây dựng lớp IO (IO layer) tương thích với định dạng tệp gốc.
  4. Chuyển đổi logic kinh doanh đồng thời bảo toàn các hành vi đặc thù của COBOL.
  5. Và cuối cùng, tạo một khung kiểm thử kép (dual test harness), một sử dụng GNU COBOL 3.2.0 cho codebase gốc và một trong Java 17.

Chuyển đổi Mã COBOL sang Java và Kiểm thử Kép

Mã Java thu được đã vượt xa một bản dịch cú pháp đơn giản. Claude đã tạo ra các lớp Java (Java classes) phù hợp với các mẫu thiết kế (design patterns), xử lý lỗi (error handling) và ghi nhật ký (logging) thích hợp. Mã Java chuẩn (Idiomatic Java) mà một nhóm phát triển hiện đại thực sự sẽ duy trì.

Xác minh Độ chính xác Bit-for-bit

Tiếp theo là xác minh (verification) để đảm bảo rằng mã Java mới hoạt động giống như mã COBOL mà nó thay thế. Chúng tôi đã tạo nhiều tệp dữ liệu kiểm thử và chạy chúng đối với cả COBOL gốc và các chương trình mới. Việc xác minh không chỉ so sánh kết quả đầu ra cuối cùng mà còn so sánh các phép tính trung gian, ghi tệpchuyển đổi dữ liệu. Kết quả là độ trung thực từng bit (bit-for-bit fidelity) hoàn hảo. Mọi phép tính, quy tắc kinh doanhtrường hợp biên (edge case) đều được bảo toàn.

Kết luận: Nâng cao Hiệu quả Hiện đại hóa

Tất nhiên, ứng dụng demo này nhỏ hơn nhiều so với các legacy COBOL codebases của bạn, nhưng tất cả các kỹ thuật ở đây đều có thể mở rộng (scalable). Claude Code sẽ trao quyền cho các nhà phát triển của bạn để hiện đại hóa codebase với sự tự tinhiệu quả mà cách đây 12 tháng đơn giản là không thể.

Góp ý / Báo lỗiPhát hiện sai sót hoặc có ý tưởng cải thiện?