Bob, 메인프레임을 만나다
Bob을 출시했을 때, 우리는 흥미로운 문제가 새 코드를 작성하는 것이 아니라 이미 존재하는 시스템 안에서 작업하는 것이라고 말했습니다 — 변경할 적절한 위치를 찾고, 팀이 수년 전에 정립한 관례를 존중하며, 오랫동안 성장해온 파일 전반에서 일관된 동작을 유지하는 것.
"이미 존재하는 시스템"의 가장 오래된 버전은 메인프레임에서 실행됩니다. 수십 년간의 COBOL과 PL/I, 수백만 줄의 코드, Db2·CICS·IMS·배치 스케줄러를 통해 연결된 수만 개의 프로그램 — 어떠한 중단도 감당할 수 없는 비즈니스를 계속 운영하는 코드입니다.
오늘 IBM Bob Premium Package for Z (Bob PP4Z) 를 일반 공개합니다. IBM watsonx Code Assistant for Z를 대체하며, IBM Z 전문 지식 — 플랫폼 언어, 미들웨어 인식, 결정론적 엔터프라이즈 전체 분석 — 을 Bob 경험에 직접 통합합니다.
이것은 기능 소개가 아닌 엔지니어링 스토리입니다. PP4Z의 모든 기능을 나열하는 대신, 세 가지를 다루겠습니다:
- 범용 모델이 인정하는 것보다 더 자주 메인프레임 애플리케이션을 잘못 이해하는 이유.
- 확률 대신 결정론적 사실에 Bob을 근거하게 하는 방법.
- Z 전용 모드, 스킬, 워크플로 — 그리고 이로 무엇을 구축할 수 있는지.
1. 메인프레임이 어려운 이유
메인프레임 환경에 범용 모델을 적용하면 어떤 스마트 프롬프팅으로도 해결되지 않는 세 가지 문제에 부딪힙니다. PP4Z의 설계는 각각에 대한 솔루션을 제공합니다.
1.1. 규모와 컨텍스트 윈도우에 미치는 영향
단일 비즈니스 애플리케이션이 COBOL·PL/I·어셈블러에 걸쳐 수십만 개의 상호 연결된 모듈과 엔터프라이즈 스케줄러로 연결된 수천 개의 배치 작업으로 이루어져 있을 수 있습니다. "작은" 200개 프로그램도 쉽게 수십만 줄이 됩니다.
이는 컨텍스트 윈도우에 들어가지 않으며, 문제는 윈도우만이 아닙니다. 컨텍스트가 커질수록 모델 성능이 저하됩니다(Chroma Research Context Rot Study, 2025) — 답변이 불완전하거나 일관성이 없거나 자신 있게 틀려집니다. "관련 파일"을 가져오려면 어떤 파일이 관련 있는지 미리 알아야 하는데, 그것이 바로 찾으려던 것입니다.
1.2. 코드에 없는 의미
메인프레임 코드는 의미론적으로 밀도가 높습니다. 비즈니스 의미는 필드 이름과 수십 년간의 관례 속에 있으며, 파서가 읽을 수 있는 것에 있지 않습니다. 일부는 추측할 수 있습니다 — SERIALN은 아마도 일련번호, TOT-STTM은 아마도 총 결제. 대부분은 그렇지 않습니다: C-M이 무엇인가요? M-CAP은? CCZD 접두사는 왜 쓰나요?
의미는 실재하며 중요하지만, 코드만으로는 추측할 수 없습니다. 전통적인 해답은 데이터 사전이지만, 규모(수십억 개의 변수)가 손으로 또는 언어 모델의 힘만으로 구축하기 어렵게 만듭니다.
1.3. 가장 가능성 높은 답이 올바른 답이 아닌 이유
언어 모델은 학습 분포에서 통계적으로 가능성이 높은 것을 반환합니다. 모델은 비결정론적이므로 같은 질문에 날마다 다른 답이 나올 수 있습니다. 제어 흐름에 대한 잘못된 답변이 비즈니스 로직을 잘못 표현할 수 있는 시스템에서 이것은 심각한 위험입니다.
아마도 직접 경험했을 시나리오입니다. 실제 COBOL 배치 애플리케이션을 예로 들겠습니다: 233개 프로그램, 742개 카피북, 20MB 이상의 코드, 자주 호출되는 날짜 유틸리티 N991DATE. 메타데이터에 따르면 30개 프로그램이 이를 호출합니다. 프론티어 모델에게 직접 물어보면:
- 1일차. 모든 것을 로드할 수 없어 정적
CALL문을 검색하여 13을 보고합니다. 동적 호출에 대해 물으면 정규식을 확장하여 29를 보고합니다. 누락된CHKOUTB는ROCHKOUT.cbl이라는 파일에 있습니다 — 관례상 파일 이름은PROGRAM-ID와 일치하는 경우가 많지만 필수는 아니기 때문입니다. - 2일차. 같은 질문, 다른 휴리스틱으로 31을 보고합니다 — 과다 계산. 거짓 양성인
N285RODR은 working storage에서 리터럴'N991DATE'를 선언할 뿐 사용하지 않습니다. 모델은 여러 번의 후속 질문 후에야 이에 도달합니다.
이 휴리스틱들은 모두 불합리하지 않습니다. 그냥 충분하지 않으며, "누가 X를 호출하는가"는 영향 분석과 프로그램 이해에서 핵심적인 질문 중 하나입니다. 더 복잡한 질문 — 둘 이상의 프로그램에서 업데이트되는 테이블은? 읽히지만 쓰이지 않는 파일은? PREMPZ72의 WS-UIT02 계산에 관여하는 변수는? — 에는 패턴 매칭이 제공할 수 없는 완전하고 정밀한 분석이 필요합니다.
결론은 "모델이 메인프레임 프로그램 이해에 유용하지 않다"는 것이 아닙니다. 추론할 진실한 것이 있으면 모델 응답 품질이 크게 향상된다는 것입니다. 언어 모델은 데이터 처리에 뛰어납니다.
2. 확률이 아닌 사실에 Bob 근거하기
PP4Z의 답은 모델에게 소스 코드에서 시스템을 재구성하도록 요청하는 것을 중단하고, 대신 결정론적이고 쿼리 가능한 환경 표현을 제공하여 추론하게 하는 것입니다. 세 가지 메커니즘이 근거를 제공합니다: 모델은 요청 자체에서 모호한 z/OS 구성을 플래그하도록 지시받으며, 프롬프트는 권위 있는 IBM Z 인사이트·IBM 문서·참조 자료·검증된 샘플 등으로 풍부해지고 범용 프로그래밍 편향이 적극적으로 억제되며, 모델은 분석 메타데이터에서 먼저 답변하도록 지시받습니다. 목표는 답변을 훈련 분포가 아닌 IBM Z 시스템에 추적 가능하게 만드는 것입니다.
2.1. Z Understand: 환경의 쿼리 가능한 모델
Z Understand는 PP4Z의 기반이 되는 정적 분석 플랫폼입니다. 전체 소스에 접근할 수 있는 서버에서 실행되며, COBOL·PL/I·어셈블러 및 JCL과 Control-M·TWS 같은 스케줄러용 스캐너를 제공하고, 수천 개의 프로그램을 병렬로 처리하여 단일 쿼리 가능한 리포지토리에 저장합니다. 10,000개 이상의 프로그램 환경에서 결정론적이고 일관된 구조를 유지합니다.
다른 출력을 가진 컴파일러 파이프라인으로 생각하면 이해하기 쉽습니다: 실행 파일이 아니라 구조화된 쿼리 가능한 지식 — 데이터 정의, 프로그램과 작업 전반의 제어 흐름, 정밀한 데이터 흐름(REDEFINES 및 메모리 오프셋 포함), 서브시스템 상호작용.
2.2. 모델이 자체 쿼리를 작성하게 하기
메타데이터가 노출되는 방식은 메타데이터 자체만큼 중요합니다. 고정 API와 사전 정의된 MCP 쿼리 패턴은 알려진 예상 질문에는 매우 효율적이지만 개방형 분석에서는 실패합니다. 개방형 분석에서 실제 질문 하나는 추론이 진행되면서 변화하는 많은 하위 쿼리로 분기됩니다.
그래서 우리는 Bob이 제공된 기성 쿼리를 넘어 메타데이터에 대한 자체 쿼리를 생성하고 실행할 수 있도록 훈련했습니다. 이것은 모델이 진정으로 잘하는 것 — 추론과 쿼리 생성 — 을 활용하며, 구조화된 데이터가 확장되는 방식으로 확장됩니다.
2.3. 확장성, 커스텀 스캐너, 런타임 데이터
순수한 구문 분석은 동적 호출·API 추상화·전처리기가 실제 흐름을 숨길 때 중요한 관계를 놓칩니다. Z Understand Extensibility 프레임워크가 그 격차를 채웁니다:
- API 호출 / 매크로 해결은 간접적이고 매개변수 기반의 호출을 실제 대상에 매핑하여 일반적인 호출 엣지를 구체적인 호출자-피호출자 관계로 대체합니다.
- 전처리기 확장성은 비표준 문을 해석하면서 원본 소스 뷰를 보존하고, 전처리 전후 코드 간에 깔끔하게 매핑합니다.
- 커스텀 스캐너는 스키마 기반 JSON 인터페이스를 통해 독점 언어·4GL·비코드 소스까지 하나의 모델로 가져옵니다.
정적 분석은 무엇이 일어날 수 있는지를 알려주고, 런타임 데이터는 무엇이 일어났는지를 알려줍니다. PP4Z는 디버거를 데이터 수집 도구로 전환하여 정확한 트레이스를 Bob에 전달합니다.
2.4. 데이터 사전: 완전성보다 관련성
수십억 개의 변수를 문서화하는 것은 실현 가능하지도 유지 가능하지도 않으므로 PP4Z는 시도하지 않습니다. 결정론적 분석은 실제로 동작을 얼마나 구동하는지에 따라 변수를 순위 매기고 — 사용 빈도, 코드 영역 전반의 분포, 제어 흐름 참여, 데이터베이스와 I/O 상호작용 — 프로그램의 목적을 드러내는 소수의 세트를 선택합니다.
여기서의 유용한 발견: 제한적인 커버리지로 충분합니다. 프로그램당 상위 10-20개 변수를 정의하는 것만으로 전수 문서화 없이 이해도가 크게 향상됩니다. Z Understand Services가 CLI에서 전체 포트폴리오에 걸쳐 이를 자동화하고, 신뢰 점수가 임계값 이상의 정의만 유지하며, IDE의 human-in-the-loop 단계에서 개발자가 출력을 검토·수정·기존 용어집과 정렬할 수 있습니다.
3. Bob을 Z에 특화하기
근거 부여는 Bob에게 좋은 사실을 줍니다. 특화는 출력이 설명 가능하고 프로세스가 거버넌스를 충족해야 하는 환경에서 Bob을 예측 가능하게 만드는 것입니다. PP4Z는 네 가지로 구성됩니다: 모드, 도구, 스킬, 워크플로.
- 모드는 인터랙션 흐름의 역할과 경계를 설정합니다. 아키텍트 스타일 모드는 코드 수정이 명시적으로 금지된 상태에서 분석·문서화·종속성 발견을 우선시합니다. 개발자 모드는 코딩 표준 적용이 내장된 생성과 리팩토링에 최적화되어 있습니다.
- 도구는 모델에게 구조화된 시스템 지식에 대한 직접 접근을 제공합니다 — 프로그램 스캔, 메타데이터 조회, 데이터 사전 검색, 엔터프라이즈 전체 분석 서비스.
- 스킬은 반복되는 전문 지식을 재현 가능하고 감사 가능한 단계로 체계화합니다. 구현 계획 스킬은 예를 들어 고정 순서를 적용합니다: 컨텍스트 획득 및 검증, 요구사항 정의, 메타데이터에서 영향 매핑, 저장되고 검토 가능한 계획 생성.
- 워크플로는 상태 있는 오케스트레이션을 추가합니다 — 순서 적용, 중간 결과 검증, 잘못된 입력에서 중단. 데이터 사전 워크플로는 변수를 찾지 못하면 만들어내는 대신 중단합니다.
표준과 거버넌스는 리포지토리 수준의 agents.md 규칙으로 기본 적용됩니다. 코드를 작성하지 않고도 자체 스킬을 만들 수 있습니다.
이들이 결합되면 단일 프롬프트가 엔드투엔드 작업을 구동할 수 있습니다:
"전기차 여부를 기록하는 컬럼을 Motor Policy Table에 추가하고, 내 코딩 표준을 적용하여 영향 받는 모든 프로그램을 업데이트하세요."
Bob은 의도를 파악하고, 계획을 수립하며, 올바른 모드·스킬·리포지토리 규칙을 선택하고, 프로그램 분석·변수 추출·데이터 정의 업데이트·준수 결과 생성에 필요한 도구를 안전하게 실행합니다 — 거버넌스, 실행, 추론을 한 번에, 변경 사항 승인은 당신이 합니다.
4. 오늘 구축할 수 있는 것
- 드리프트하지 않는 문서. 문서를 결정론적 메타데이터와 소스 및 런타임 컨텍스트에 근거한 생성 아티팩트로 취급합니다 — 온디맨드로 재생성 가능, 현재 시스템에 정렬.
- z/OS에서의 결정론적 COBOL-to-Java 전환. PP4Z는 메타데이터를 변환의 백본으로 사용하여 아키텍처를 재현 가능하게 하고 비즈니스 로직을 정밀하게 매핑합니다.
- 목표 지향적 리팩토링 및 함수 추출. Bob은 비즈니스 기능으로 주석이 달린 리팩토링 후보의 순위 목록을 생성한 다음 명확한 입출력을 가진 독립적인 모듈을 추출합니다.
- 네이티브 z/OS 도구. Z Open Editor 기능과 새로운 MCP 도구: IDE에서 z/OS 빌드를 실행하는 Dependency Based Build (DBB), Z Code Scan, 라이브 디버그 세션을 AI 지원 근본 원인 분석으로 전환하는 IBM Debug for z/OS.
이것은 엔지니어링 포스트이므로 솔직하게: 이 중 어느 것도 개발자를 루프에서 제거하지 않으며 그럴 의도도 없습니다. 모드, 승인 게이트, human-in-the-loop 데이터 사전은 모두 이러한 시스템에서 "거의 맞음"이 실패 모드이지 목표가 아니기 때문에 존재합니다.
5. 접근 방법
Bob Premium Package for Z (PP4Z)는 IBM Bob의 애드온이며 별도로 다운로드하는 제품이 아닙니다. PP4Z는 엔터프라이즈 환경 내의 라이브 메인프레임 환경에 대해 실행됩니다 — 자격 부여는 영업 주도입니다.
- IBM 담당자에게 문의하거나 bob.ibm.com의 영업팀 연락을 이용하세요. 조직을 위한 IBM Bob 기본 플랜과 Z 애드온을 설정합니다.
- Bob 관리자가 Z 애드온이 포함된 시트를 할당하면 IBM Bob을 사용할 때 자격이 감지됩니다. Bob IDE를 설치하고 로그인하면 Z 전용 모드, 스킬, 도구가 표시됩니다.
6. 시작하기
- 이미 Bob을 사용하고 있다면 PP4Z는 기존 위에 Z 전용 모드, 스킬, 도구를 추가합니다.
- 내장된 이해 기능을 사용하여 워크스페이스의 코드에 대한 더 깊은 인사이트를 얻습니다.
- 이미 올바른 답을 알고 있는 실제 애플리케이션에 Z Understand를 겨냥하여 Bob의 분석을 그라운드 트루스와 대조합니다.
- 아직 명확한 답을 얻지 못한 질문부터 시작하세요: 이 유틸리티를 실제로 호출하는 것은 무엇인가? 이 작업이 어떤 테이블에 접근하는가? 이 변수는 무엇을 의미하는가?
- 데이터와 추론을 결합한 더 어려운 질문을 하세요: "주제별로 정리된 다이어그램이 있는 콜 그래프를 만들어 주세요"
링크
