COBOL 코드 변형에 대한 LLM 시스템 견고성 평가 프레임워크

읽는 시간: 4 분
...

📝 원문 정보

  • Title: Evaluating perturbation robustness of generative systems that use COBOL code inputs
  • ArXiv ID: 2511.18488
  • 발행일: 2025-11-23
  • 저자: Samuel Ackerman, Wesam Ibraheem, Orna Raz, Marcel Zalmanovici

📝 초록 (Abstract)

대형 언어 모델(LLM)을 구성 요소로 사용하는 시스템은 의미를 바꾸지 않는 사소한 입력 변동에도 민감하게 반응(즉, 비견고)하는 것으로 알려져 있으며, 이러한 민감성은 시스템 활용도를 저하시킬 수 있다. 본 연구에서는 COBOL 코드를 입력으로 사용하는 시스템의 견고성을 평가하기 위한 프레임워크를 제시한다. 적용 사례는 COBOL과 Java 간의 번역이지만, 코드 생성이나 설명과 같은 다른 작업에도 확장 가능하다. COBOL은 많은 기업 핵심 애플리케이션에 사용되지만, 해당 코드는 일반적으로 독점적인 레거시 시스템에 포함되어 있어 LLM 훈련에 활용되기 어렵다. 우리는 COBOL 절(paragraph) 및 전체 프로그램 수준의 변형 방법을 담은 라이브러리를 개발하고, 특정 과제에 대한 벤치마크 데이터셋을 변형 확장 버전으로 구축하였다. 시스템의 견고성은 출력물에 대해 개별 및 집계 메트릭 값을 측정함으로써 평가한다. 마지막으로, 출력물 디버깅과 민감성 원인 파악을 돕는 동적 테이블·차트 시각화 대시보드를 제공한다. 이러한 도구는 전처리 단계에서 다루어야 할 변형을 식별하는 등 시스템 개선에도 활용될 수 있다.

💡 논문 핵심 해설 (Deep Analysis)

Figure 1
본 논문이 다루는 핵심 문제는 “LLM 기반 시스템이 입력 코드의 사소한 변형에 얼마나 취약한가”라는 질문이다. 특히 COBOL이라는 레거시 언어는 금융·보험·정부 등 핵심 산업에서 아직도 대규모 운영 시스템을 지탱하고 있으며, 그 코드베이스는 대부분 폐쇄형이며 LLM 훈련 데이터에 포함되지 않는다. 따라서 기존의 LLM 평가 방법을 그대로 적용하기 어렵다. 저자들은 이러한 상황을 인식하고, COBOL 코드를 대상으로 하는 전용 견고성 평가 프레임워크를 설계하였다.

첫 번째 기여는 “COBOL 파라그래프 및 전체 프로그램 수준의 변형 라이브러리”이다. 여기에는 변수명 교체, 주석 추가·삭제, 공백·줄바꿈 변화, 데이터 선언 순서 변경, 불필요한 레코드 삽입 등 실제 유지보수 과정에서 발생할 수 있는 다양한 변형이 포함된다. 이러한 변형은 의미를 보존하면서도 텍스트 형태를 크게 바꾸어 LLM이 입력을 다르게 해석하도록 만든다.

두 번째 기여는 “변형 확장 벤치마크 데이터셋”이다. 기존의 COBOL‑Java 번역 데이터셋에 변형 라이브러리를 적용해 원본과 변형 버전을 1:1 매핑한 다중 버전 데이터를 생성한다. 이를 통해 동일한 의미를 가진 입력이 여러 형태로 존재할 때, LLM이 일관된 번역 결과를 내는지를 정량적으로 측정할 수 있다.

세 번째 기여는 “메트릭 기반 견고성 평가”이다. 출력물에 대해 정확도(예: BLEU, CodeBLEU), 실행 가능성(컴파일 성공 여부), 기능 일치(테스트 케이스 통과율) 등 개별 메트릭을 산출하고, 변형 전후의 차이를 집계한다. 메트릭 변화량이 클수록 시스템이 입력 변형에 취약하다는 의미이다.

마지막으로, 저자들은 “동적 시각화 대시보드”를 구현하였다. 대시보드는 변형 종류별 메트릭 변동을 테이블·히트맵·라인 차트 등으로 실시간 표시하고, 문제 발생 원인을 빠르게 추적할 수 있게 한다. 예를 들어, 특정 주석 추가가 번역 정확도에 큰 영향을 미친다면, 전처리 단계에서 주석을 제거하거나 표준화하는 전략을 도입할 수 있다.

이 프레임워크는 COBOL에 국한되지 않고, 다른 레거시 언어나 도메인‑특화 코드에도 적용 가능하다. 다만 현재 연구는 번역 작업에 초점을 맞추었으며, 코드 생성·디버깅·설명 등 다른 태스크에 대한 확장성 검증은 향후 과제로 남는다. 또한 변형 라이브러리가 인간 전문가가 설계한 규칙 기반이므로, 실제 운영 환경에서 발생하는 모든 변형을 포괄하지 못할 가능성이 있다. 이러한 한계를 보완하기 위해서는 실사용 로그 기반 자동 변형 추출이나, 변형에 대한 메타학습 기법을 도입해 LLM 자체가 변형에 강인하도록 훈련하는 방안이 필요하다. 전반적으로 본 연구는 레거시 시스템을 AI와 연결하려는 실무자에게 실질적인 평가 도구와 개선 로드맵을 제공한다는 점에서 큰 의의를 가진다.

📄 논문 본문 발췌 (Excerpt)

시스템에 대형 언어 모델(LLM)을 구성 요소로 포함시키는 경우, 의미를 바꾸지 않는 사소한 입력 변동에도 민감하게 반응(즉, 비견고)하는 것으로 알려져 있다; 이러한 민감성은 시스템의 유용성을 저하시킬 수 있다. 여기서는 COBOL 코드를 입력으로 사용하는 시스템의 견고성을 평가하기 위한 프레임워크를 제시한다; 우리의 적용 사례는 COBOL과 Java 프로그래밍 언어 간의 번역이지만, 이 접근 방식은 코드 생성이나 설명과 같은 다른 작업에도 확장될 수 있다. COBOL을 입력으로 하는 시스템의 견고성을 목표로 하는 것은 필수적이면서도 도전적인 과제이다. 많은 비즈니스 핵심 애플리케이션이 COBOL로 작성되어 있으나, 이러한 애플리케이션은 일반적으로 독점적인 레거시 시스템에 포함되어 있어 코드가 LLM 훈련에 사용될 수 없다. 우리는 COBOL 절(paragraph) 및 전체 프로그램 수준의 변형 방법을 담은 라이브러리를 개발하고, 특정 과제에 대한 벤치마크 데이터셋의 변형 확장 버전을 만든다. LLM 기반 시스템의 견고성은 시스템 출력물에 대해 개별 및 집계 메트릭 값을 측정함으로써 평가한다. 마지막으로, 시스템 출력물 디버깅과 입력 변동에 대한 민감성의 근본 원인을 파악하는 데 도움이 되는 동적 테이블 및 차트 시각화 대시보드 시리즈를 제시한다. 이러한 도구는 예를 들어 전처리 단계에서 처리해야 할 변형을 식별하는 등 시스템 개선에도 활용될 수 있다.

CCS Concepts • Software and its engineering → Operational analysis; Software testing and debugging.

📸 추가 이미지 갤러리

AddConstToVar.png AddTWoVarGivingVarRound.png EvalScope.png acceptalphnum.png add_endevaluate_period.png add_endif_period.png add_random_leading_trailing_whitespace.png combine_two_lines_into_one.png debug_change_indicators.png debug_cobol_para_change.png debug_java_para_change.png evalnested.png force_continuation_lines_in_literals.png ifiszero.png insert_distraction_continue_after_statement.png insert_empty_lines.png insert_empty_lines_at_end.png insert_line_break_between_tokens.png insertcustomer.png linkagesection.png move.png overall_average_change.png overall_average_change_by_category.png overall_average_change_by_method.png overall_each_change_by_category.png overall_each_change_by_method.png period_newline_end_of_sentence.png random_content_in_comment_lines.png random_continuation_lines_breaks.png remove_all_comment_lines.png remove_all_trailing_whitespace.png remove_content_in_comment_lines.png remove_empty_lines.png remove_endevaluate.png remove_endif.png remove_leading_trailing_whitespace.png rename_identifiers_gibberish_names.png rename_identifiers_random_suffix.png rename_identifiers_random_words_sequence.png rename_identifiers_replace_name_word_with_synonym.png rename_identifiers_shuffle_names.png rename_identifiers_switch_dashes_underscores.png rename_identifiers_varnum.png replace_single_spaces_with_multiples.png sample_table.png tokens_capitalcase.png tokens_lowercase.png tokens_uppercase.png variablesfortime.png vars_to_lowercase.png writeerrormessage.png

Reference

이 글은 ArXiv의 공개 자료를 바탕으로 AI가 자동 번역 및 요약한 내용입니다. 저작권은 원저자에게 있으며, 인류 지식 발전에 기여한 연구자분들께 감사드립니다.

검색 시작

검색어를 입력하세요

↑↓
ESC
⌘K 단축키