๐Ÿ” ์—ฐ๊ตฌ์˜ ํ•„์š”์„ฑ


ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ์ œ๋Š” ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๊ฐ€์™€ ๊ทธ ํ•จ์ˆ˜์˜ ์ž…๋ ฅ์ด ๋ฌด์—‡์„ ๋งŒ์กฑํ•ด์•ผ ํ•˜๋Š”๊ฐ€๋ฅผ ๋™์‹œ์— ๋งํ•ฉ๋‹ˆ๋‹ค. "๋ฆฌ์ŠคํŠธ๋Š” ๋น„์–ด ์žˆ์œผ๋ฉด ์•ˆ ๋œ๋‹ค" ๊ฐ™์€ ์กฐ๊ฑด๋“ค์ด ๋ชจ์—ฌ Contract(ํ•จ์ˆ˜๊ฐ€ ๋ฐ›์•„๋“ค์ผ ์ž…๋ ฅ์˜ ๋ฒ”์œ„๋ฅผ ๊ทœ์ •ํ•˜๋Š” ์ „์ œ์กฐ๊ฑด)๋ฅผ ์ด๋ฃน๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ HumanEval, MBPP, EvalPlus๋Š” ์ด๋ฏธ ๋ชจ๋“  ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” valid input๋งŒ ์ด์šฉํ•ด ์ธก์ •ํ•˜๋ฏ€๋กœ, ๊ธฐ๋Šฅ์ด ๋งž๋Š”์ง€๋Š” ์žฌ๋„ ์ฝ”๋“œ๊ฐ€ Contract๋ฅผ enforcementํ•˜๋Š”์ง€๋Š” ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

Contract๋ฅผ ๋งŒ์กฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐ™์€ ํ•จ์ˆ˜ ํ•˜๋‚˜๋กœ ๋‘ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. valid input์—๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ถœ๋ ฅ์„ ๋‚ด๊ณ , contract-violating input์€ ์˜๋„์ ์œผ๋กœ ๊ฑฐ๋ถ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ์š”๊ตฌ๋Š” ์„œ๋กœ๋ฅผ ๋ฐ€์–ด๋ƒ…๋‹ˆ๋‹ค. enforcement๊ฐ€ ๋ถˆ์™„์ „ํ•˜๋ฉด ๊ฑฐ๋ถ€ํ•ด์•ผ ํ•  contract-violating input์ด ์กฐ์šฉํžˆ ํ†ต๊ณผํ•˜๊ณ , enforcement๊ฐ€ ๊ณผ๋„ํ•˜๋ฉด valid input๊นŒ์ง€ ๊ฑฐ๋ถ€ํ•ด ๊ธฐ๋Šฅ ์ •ํ™•๋„๊ฐ€ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ Contract ์กฐ๊ฑด์€ ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๊ฐ™์€ ์‚ฐ๋ฌธ ์•ˆ์— ์„ž์—ฌ ์žˆ์–ด ๋ชจ๋ธ์ด ์Šค์Šค๋กœ ์‹๋ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ช…์„ธ๋ฅผ ๋‚˜๋ˆ„์ง€ ์•Š์€ ์ฑ„ ํ•œ ๋ฒˆ์— ์ƒ์„ฑํ•˜๋„๋ก ์š”๊ตฌํ•˜๋ฉด ๋‘ ๋ชฉํ‘œ๊ฐ€ ๊ฒฝ์Ÿํ•˜๊ณ , ์‹ค์ œ๋กœ ๊ธฐ์กด ๊ธฐ๋ฒ•๋“ค์€ Base ๋Œ€๋น„ SSR์„ โˆ’9.04% ~ โˆ’0.45% ๋งŒํผ ์˜คํžˆ๋ ค ๋–จ์–ด๋œจ๋ฆฝ๋‹ˆ๋‹ค.

๊ธฐ์กด ์—ฐ๊ตฌ๋Š” ์ด ๋ฌธ์ œ์˜ ์ ˆ๋ฐ˜์”ฉ๋งŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ํ•œ ๊ฐˆ๋ž˜๋Š” contract condition์„ ๋ฝ‘์•„๋‚ด๋Š” ๋ฐ ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋‚˜ ์ž์—ฐ์–ด๋กœ๋ถ€ํ„ฐ preconditionยทpostcondition์„ ์ƒ์„ฑํ•ด๋‚ด์ง€๋งŒ, ๋ฝ‘์•„๋‚ธ contract condition์ด ์–ผ๋งˆ๋‚˜ ์ •ํ™•ํ•œ์ง€๋ฅผ ๋ณผ ๋ฟ ๊ทธ๊ฒƒ์ด ์‹ค์ œ ์ฝ”๋“œ ์•ˆ์—์„œ ์ง€์ผœ์ง€๋Š”์ง€๋Š” ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐˆ๋ž˜๋Š” contract condition์„ ๋ฏธ๋ฆฌ ๋ฐ›์•„์„œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋•Œ๋Š” contract condition์ด ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์ด๋ฏธ ๋ถ„๋ฆฌ๋œ ์ƒํƒœ๋กœ ์ฃผ์–ด์ง€๋ฏ€๋กœ, ์‚ฐ๋ฌธ ์†์— ์„ž์ธ ๊ฒƒ์„ ์ฐพ์•„๋‚ด๋Š” ์ผ ์ž์ฒด๊ฐ€ ๊ณผ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•œ์ชฝ์€ contract condition์„ ์ฐพ๋˜ ์ง€ํ‚ค๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š๊ณ , ๋‹ค๋ฅธ ์ชฝ์€ ์ง€ํ‚ค๊ฒŒ ํ•˜๋˜ ์ฐพ์„ ํ•„์š”๊ฐ€ ์—†๋Š” ์…ˆ์ž…๋‹ˆ๋‹ค. CodeTree๋‚˜ SpecFix๋Š” ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ์‹ ํ˜ธ๋งŒ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Contract๊ฐ€ ์‹œ์•ผ ๋ฐ–์— ์žˆ๊ณ , ContractEval์€ ํ‰๊ฐ€ ์„ธํŒ…์„ ์„ธ์› ์„ ๋ฟ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์€ ์ œ์‹œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด ๊ณต๋ฐฑ์„ ๋ฉ”์šฐ๊ธฐ ์œ„ํ•ด SLICE๋ฅผ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. SLICE๋Š” reference solution๋„ held-out test๋„ ์“ฐ์ง€ ์•Š๊ณ  ์ž์—ฐ์–ด ๋ช…์„ธ๋งŒ์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, Contract enforcement์™€ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ๋ช…์„ธ ์ˆ˜์ค€์—์„œ ๋ถ„๋ฆฌํ•ด ๊ฐ๊ฐ ๋‹ค๋ฅธ ์ƒ์„ฑ ๋‹จ๊ณ„์— ๋งก๊น๋‹ˆ๋‹ค.

โœจ SLICE์ด๋ž€?


overview-github.png

SLICE (Specification-Level Isolation of Contract Enforcement)๋Š” ์ž์—ฐ์–ด ๋ฌธ์ œ ๋ช…์„ธ๋งŒ์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„, ๊ธฐ๋Šฅ ๊ตฌํ˜„๊ณผ Contract enforcement๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ์ƒ์„ฑ ๋‹จ๊ณ„์— ๋งก๊ธฐ๋Š” ํŒŒ์ดํ”„๋ผ์ธ์ž…๋‹ˆ๋‹ค. ์ถœ๋ ฅ์€ ๋‘ ๊ฐœ์˜ ์‚ฐ์ถœ๋ฌผ์ด ์•„๋‹ˆ๋ผ, input-validation assertion์ด ์ง„์ž…๋ถ€์— ๋ถ™์€ ์™„์„ฑ๋œ ํ•จ์ˆ˜ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. reference solution๋„, held-out test๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ช…์„ธ์— ์ด๋ฏธ ์ ํ˜€ ์žˆ๋Š” ์˜ˆ์‹œ๋งŒ ์‹คํ–‰ ์‹ ํ˜ธ๋กœ ์”๋‹ˆ๋‹ค.

SLICE๋Š” ํ•œ ๋ฒˆ์˜ ์ƒ์„ฑ์ด ๋™์‹œ์— ๊ฐ๋‹นํ•ด์•ผ ํ–ˆ๋˜ ์„ธ ๊ณผ์ œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. Graph-Based Specification Structuring (๋ช…์„ธ์—์„œ Contract๋ฅผ ๋–ผ์–ด๋‚ด๊ธฐ)

<aside> ๐Ÿ“Œ

2. Functional Body Generation (๊ธฐ๋Šฅ ๋ณธ๋ฌธ๋งŒ ๋”ฐ๋กœ ๋งŒ๋“ค๊ณ  ๊ณ ๋ฅด๊ธฐ)

<aside> ๐Ÿ“Œ

3. Contract Assertion Generation (Contract๋งŒ ๋ณด๊ณ  ๊ฒ€์ฆ ์ฝ”๋“œ๋ฅผ ๋ถ™์ด๊ธฐ)

<aside> ๐Ÿ“Œ

ํ‰๊ฐ€ ์ง€ํ‘œ (Metric)

<aside> ๐Ÿ“Œ