# 소프트웨어 공학을 위한 제약 코드 생성

표준 HTML: https://aogavrilov.com/ko/research-notes/constrained-code-generation-software-engineering/
영어 버전: https://aogavrilov.com/research-notes/constrained-code-generation-software-engineering/
문서 언어: ko
출처 논문: https://aogavrilov.com/ko/publications/inspectable-control/
영어 논문 전문: https://aogavrilov.com/publications/inspectable-control/full-text/
DOI: https://doi.org/10.1145/3803437.3807386

생성 코드에 대한 문법 제약, 타입 제약, 보존 경계, 동작 수준 합격 검사를 실무적으로 구분하는 방법.

## 짧은 답

### 소프트웨어 공학 워크플로에서 제약 코드 생성은 무엇을 보장하는가?

제약이 명시적으로 강제하는 속성만 보장한다. 문법 제약 디코딩은 특정 문법에 속함을 보장할 수 있고 타입 인식 방법은 타입 유효성을 목표로 할 수 있다. 그러나 어느 쪽도 그 자체로 작업 정확성, 의미 동등성, 동작 보존 또는 편집 국소성을 증명하지 않는다.

## 이 구분이 중요한 이유

무엇을 제약하는지 이름을 붙이기 전에는 “제약됨”이라는 말이 불완전하다. 디코더는 문법을 강제할 수 있고, 타입 검사기는 유효한 연속을 제한할 수 있으며, 편집기는 특정 영역을 보호할 수 있고, 수리 절차는 테스트를 통과한 후보만 받아들일 수 있다. 이 메커니즘들은 서로 다른 문제를 해결한다.

따라서 유효한 평가는 제어 메커니즘과 주장하는 보장을 맞춰야 한다. 파서를 통과했다는 사실은 문법에 대한 근거지만 프로그램이 요청을 충족하거나 편집 밖 동작을 보존했다는 근거는 아니다.

## 실행 절차

1. **필요한 속성 명명.** 요구사항이 문법, 타입, API, 소스 국소성, 구조 불변량, 테스트 또는 다른 관찰 가능 계약 중 무엇인지 정한다.
2. **강제 지점 선택.** 가능하면 디코딩 중에 제약을 적용하고, 생성 뒤에만 검사할 수 있는 속성은 후보 제안 후 검증 절차를 사용한다.
3. **별도의 합격 검사 유지.** 디코더가 문법이나 타입을 이미 보장하더라도 작업 성공과 보호 속성을 별도로 검사한다.
4. **거부와 실패 동작 보고.** 후보 거부 빈도, 유효한 해가 여전히 도달 가능한지, 아직 검사하지 않은 속성을 공개한다.

## 요구해야 할 근거

- 제약되는 속성을 관찰 가능한 용어로 명시한다.
- 강제 메커니즘과 생성 후 검사를 구분한다.
- 문법 또는 타입 유효성을 기능 정확성으로 제시하지 않는다.
- 변경하지 않은 코드가 주장의 일부라면 국소성을 직접 측정한다.
- 제약 실패, 거부율, 작업 성공률을 보고한다.

## 연결된 연구가 실제로 보고한 내용

- 연결된 계층적 잠재 연구는 선택한 학습 코드 위치를 잠그고 디코딩 뒤 파싱 성공률, 편집 자유도, 다양성을 측정한다.
- 이는 점검 가능한 부분 제어 실험이며 형식 문법, 타입, 의미 또는 동작 보장이 아니다.
- 제약 워크플로에 주는 가치는 명시적인 제어 표면과 측정 규율이지 잠재 잠금이 형식 검증을 대체한다는 주장이 아니다.

## 적용 범위와 한계

- 서로 다른 제약은 충돌할 수 있으며 더 강한 제한은 유효한 해를 제거하거나 생성 다양성을 줄일 수 있다.
- 생성 후 테스트는 해당 테스트가 다루는 동작에 대해서만 근거를 제공한다.
- 연결된 논문은 형식 제약 디코딩이나 저장소 규모 소프트웨어 수리를 평가하지 않는다.

전체 연구 안내서: https://aogavrilov.com/ko/projects/discrete-latent-generation/#comparison

## 주요 출처와 인접 연구

- [Inspectable Control for Structure-Preserving Software Regeneration](https://aogavrilov.com/publications/inspectable-control/): 계층적 잠재에서 점검 가능한 부분 제어를 다루는 주요 사이트 논문.
- [Constrained Decoding of Diffusion LLMs with Context-Free Grammars](https://arxiv.org/abs/2508.10111): 확산 디코딩 중 문맥 자유 문법을 강제하는 방법.
- [Type-Constrained Code Generation with Language Models](https://doi.org/10.1145/3729274): 언어 모델 코드 생성에 타입 인식 제약을 적용하는 방법.

이 유지 관리형 노트는 기존 근거만 요약하며 인용된 출처를 넘어서는 새로운 실험 결과를 추가하지 않는다.
