본문으로 건너뛰기
cd /languages
  • 레거시 레버리지
  • 프로그래밍
  • AST 및 심볼 지원

Maguyva의 COBOL 지원: 레거시 현대화를 위한 의존성 분석

Maguyva는 AST 파싱과 심볼 추출로 COBOL을 지원하여, AI 에이전트가 현대화 또는 리팩터링 작업에 앞서 프로그램 구조, 카피북(copybook) 사용, 의존성 경로를 파악할 수 있게 합니다.

Maguyva의 COBOL 지원이 의미 있는 이유

최신 애플리케이션 언어에 대한 AI 지원을 주장하는 것은 누구나 할 수 있습니다. COBOL이 더 유의미한 이유는, 제품이 무엇에 강점이 있는지 정직하게 드러내도록 강제하기 때문입니다. 레거시 코드에서 가치는 빠른 코드 생성이 아닙니다. 탐색, 의존성 매핑, 신중한 검토, 그리고 현대화 계획입니다.

Maguyva가 COBOL에서 쓸모 있다면, 그것은 여전히 중요한 시스템을 옮기기 전에 엔지니어가 그 시스템을 이해하도록 돕기 때문입니다.

Maguyva가 COBOL에서 실제로 추출하는 것

Maguyva는 .cbl, .cob, .cpy를 다루므로, 카피북을 프로그램과 동일한 검색 범위 안에 유지할 수 있습니다. 또한 관계 분석 과정에서 호출 대상을 감싸는 따옴표와 괄호를 제거하는데, 이는 COBOL 코드베이스에서 이러한 래퍼가 흔해서 단순 텍스트 매칭을 노이즈로 만들 만큼 자주 등장하기 때문에 중요합니다.

객체지향 COBOL에서 Maguyva는 클래스 상속 관계를 추출합니다. 부모 클래스와 자식 클래스가 같은 소스 파일에 정의되어 있으면 메서드 오버라이드 관계도 연결합니다. 클래스 이름으로 한정된 메서드 이름은 오버라이드하는 메서드와 부모 클래스의 메서드를 구분하므로, 에이전트가 클래스를 변경하기 전에 상속된 동작을 확인하는 데 도움이 됩니다.

현대화 탐색을 위한 유용한 MCP 워크플로

가장 좋은 진입점은 탐색 지향적입니다.

  • “고객 배치 업데이트 흐름에서 카피북 사용을 추적해줘” 같은 프롬프트에는 get_task_context
  • 프로그램명, 카피북명, 안정적인 배치 진입점에는 text_pattern_search
  • 공유 루틴이나 정의를 파악한 뒤 그 사용처를 확인해야 할 때는 dependency_search

이 페이지가 유용한 경우

이 페이지는 코드 생성이 아니라 레거시 코드 탐색과 현대화 계획을 위한 것입니다. 자산이 COBOL과 더 새로운 서비스 레이어를 함께 사용한다면 Java나 C#와 비교해 보세요. 지원 매트릭스만 필요하다면 호환성을 이용하세요.

가장 적합한 경우

  • > 여전히 중요한 비즈니스 프로세스를 운영 중인 COBOL 시스템을 다루는 현대화 팀.
  • > 변경에 앞서 카피북, 배치 로직, 절차적 흐름을 파악해야 하는 저장소 또는 추출된 코드베이스.
  • > 레거시 자산을 무작정 다시 작성하기보다 먼저 이해하고 문서화하는 것이 목표인, 에이전트 지원 탐색 작업.

에이전트 워크플로

  • > 현대화 단계를 계획하기 전에 프로그램과 카피북 간의 관계를 파악합니다.
  • > 제안된 변경이 어떤 루틴이나 데이터 정의에 영향을 미치는지 파악합니다.
  • > 문서화, 마이그레이션, 리팩터링 계획을 위한 더 안전한 출발점을 엔지니어에게 제공합니다.

엔진 세부 정보

  • > COBOL 지원은 `.cbl`, `.cob`, `.cpy`를 포함하여, 카피북을 프로그램과 동일한 검색 범위에서 다룰 수 있게 합니다.
  • > 따옴표로 감싼 호출 대상은 관계 분석 전에 감싸는 따옴표와 괄호를 제거하여 정규화됩니다.
  • > 객체지향 COBOL은 클래스 상속을 지원합니다. 부모 클래스와 자식 클래스가 같은 소스 파일에 정의되어 있으면 메서드 오버라이드에 클래스 이름으로 한정된 메서드 이름을 사용합니다.

유용한 MCP 진입점

  • get_task_context

    "고객 배치 업데이트 흐름에서 카피북 사용 추적" 같은 탐색 프롬프트는 여기서 시작하세요.

  • text_pattern_search

    용어가 안정적일 때 프로그램 이름, 카피북 이름, 배치 진입점에 사용하세요.

  • dependency_search

    루틴이나 공유 정의를 확인한 뒤 어디서 사용되는지 보고 싶을 때 사용하세요.