Blue Spec ๋ช ๋ น ์๋ฎฌ๋ ์ด์ ํ๊ธฐ
์ด ์คํฌ์ ๋ช ๋ น์ ์๋ฎฌ๋ ์ด์ ํ๋ ๊ฒ์ด ์๊ฐ๋ณด๋ค ์ฝ๊ฒ ์๋ชป๋์ด ์ฌ์ฉ์์ ์๊ฐ๊ณผ ์ ๋ขฐ๋ฅผ ๋ญ๋นํ ์ ์๊ธฐ ๋๋ฌธ์ ์กด์ฌํฉ๋๋ค. ์๋ง์ ์ํ์ฐฉ์ค ๋์ ๋ค ๊ฐ์ง ๋ถ๊ฐ์นจ ๊ท์น๊ณผ ํ๋์ ๋ฐฉ๋ฒ๋ก ์ด ๋์ถ๋์์ต๋๋ค. ์ด๋ฅผ ์ ํํ ๋ฐ๋ฅด์ธ์.
์ฌ์ฉ์๊ฐ /bluespec.* ๋ช
๋ น(charter, detect, plan, harden, verify) ์ค ํ๋๋ฅผ "์๋ฎฌ๋ ์ด์
", "๋ฐ๋ชจ", "์ค์ ๋ก ๋ณด์ฌ์ค", "์คํ", ๋๋ "์ค์ ๋์"์ ์์ฒญํ๊ฑฐ๋, ๋ช
๋ น์ ์ค์ ๋ก ์ ์ฉํ๊ธฐ ์ ์ ์ด๋ป๊ฒ ๋์ํ๋์ง ๋ฏธ๋ฆฌ ๋ณด๋ ค๊ณ ํ ๋ ์ด ์คํฌ์ ์ฌ์ฉํ์ธ์.
์์ํ๊ธฐ ์ ์ (ํ์)
์๋ฎฌ๋ ์ด์ ์ ์์ํ๊ฑฐ๋, ์๋๋ฆฌ์ค๋ฅผ ๊ตฌ์ฑํ๊ฑฐ๋, ํฝ์ค์ฒ๋ฅผ ๋ณต์ฌํ๊ธฐ ์ ์ ๋ค์ ๋ ๊ฐ์ง๊ฐ ๋ฐ๋์ ์์๋๋ก ํด๊ฒฐ๋์ด์ผ ํฉ๋๋ค:
- ์ฌ์ฉ์๋ ์ด๋ค Blue Spec ๋ช
๋ น์ ์๋ฎฌ๋ ์ด์
ํ ์ง ์๋ ค์ค์ผ ํฉ๋๋ค. ์ด๋ ํ์์ด๋ฉฐ, ์ ๋ ์ถ์ธกํ๊ฑฐ๋ ์ ํํ์ง ๋ง์ธ์. ์ฌ์ฉ์๊ฐ ๋ช
๋ น(
charter,detect,plan,harden, ๋๋verify)์ ์ง์ ํ์ง ์์๋ค๋ฉด, ๋ค๋ฅธ ์์ ์ ํ๊ธฐ ์ ์ ๋จผ์ ์ด๋ค ๋ช ๋ น์ธ์ง ๋ฌผ์ด๋ณด์ธ์. ๋ ๊ฐ ์ด์์ ์ง์ ํ๋ค๋ฉด, ์คํํ ์์๋ฅผ ํ์ธํ์ธ์. - ๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ ๊ฐ๋ฅํ ํฝ์ค์ฒ(fixture)๋ฅผ ๋ฒํธ ๋ชฉ๋ก์ผ๋ก ์ ์ํ๊ณ ์ฌ์ฉ์๊ฐ ์ ํํ๋๋ก ํฉ๋๋ค. ๋ช
๋ น์ด ์ ํด์ง๋ฉด
.claude/skills/simulate/fixtures/๋๋ ํ ๋ฆฌ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ํฝ์ค์ฒ๋ฅผ ๊ฐ ์๋๋ฆฌ์ค๋ฅผ ํ ์ค๋ก ์ค๋ช ํ์ฌ ๋ฒํธ ๋ชฉ๋ก์ผ๋ก ๋ณด์ฌ์ฃผ๊ณ , ์ฌ์ฉ์์๊ฒ ๋ฒํธ๋ก ํ๋๋ฅผ ์ ํํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์. ์๋์ผ๋ก ํน์ ํฝ์ค์ฒ๋ฅผ ์ ํํ์ง ๋ง์ธ์. ํฝ์ค์ฒ๊ฐ ํ๋๋ง ์๋๋ผ๋, ๊ทธ๊ฒ์ ์ ์ํ๊ณ ์ฌ์ฉํ๊ธฐ ์ ์ ํ์ธ์ ๋ฐ์ผ์ธ์. ์ด๋ค ํฝ์ค์ฒ๋ ๋ช ๋ น์ ์ ํฉํ์ง ์๋ค๋ฉด, ๊ทธ๋ ๊ฒ ๋งํ๊ณ ์ ํฝ์ค์ฒ๋ฅผ ์ถ๊ฐํ๊ฒ ๋ค๊ณ ์ ์ํ์ธ์ (ํฝ์ค์ฒ ์น์ ์ฐธ๊ณ ).
๋ช ๋ น์ด ์ง์ ๋๊ณ ํฝ์ค์ฒ๊ฐ ์ ํ๋ ํ์๋ง ์๋์ ๊ท์น๊ณผ ๋ฐฉ๋ฒ์ ์งํํฉ๋๋ค.
์ด ์คํฌ์ด ์กด์ฌํ๋ ์ด์ (๋จผ์ ์ฝ์ผ์ธ์)
Blue Spec ๋ช
๋ น์ ๋
๋ฆฝ ์คํํ ํ๋ก๊ทธ๋จ์ด ์๋๋๋ค. ์ด๊ฒ์ AI ์์ด์ ํธ์๊ฒ ๋ณด์ ์์
์ ํ ๋จ๊ณ๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๋ ๋ช
๋ น์ด ํ์ผ(spec/commands/bluespec.<phase>.md, ์์ด์ ํธ๊ฐ ์ฝ๋ ์คํฌ๋ก ์ค์บํด๋ฉ๋จ)์
๋๋ค. "๋ช
๋ น์ ์คํํ๋ค"๋ ๊ฒ์ ์์ด์ ํธ๊ฐ ๊ทธ ์ง์นจ์ ๋ฐ๋ฅด๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์์ด์ ํธ์ ๋
๋ฆฝ์ ์ผ๋ก ๊ฒฐ์ ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋๋ ๋ฐ์ด๋๋ฆฌ ๊ฐ์ ๊ฒ์ ์์ต๋๋ค. ๋ฐ๋ผ์ "์๋ฎฌ๋ ์ด์
"์ ์์ด์ ํธ๊ฐ ์ค์ ์๋๋ฆฌ์ค๋ฅผ ๋์์ผ๋ก ๋ช
๋ น์ ๋จ๊ณ๋ฅผ ์ค์ ๋ก ์ํํ๋ฉด์ ๊ทธ ์์
๊ณผ์ ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์
๋๋ค.
ํผํด์ผ ํ ์คํจ ํจํด: ๋ช ๋ น์ด ์ถ๋ ฅํ ๊ฒ์ด๋ผ๊ณ ์์ํ๋ ๋ด์ฉ์ ์์ ํ๊ณ , ๋ง์น ํฐ๋ฏธ๋ ์ถ๋ ฅ์ฒ๋ผ ๋ณด์ด๊ฒ ํฌ๋งทํ ํ ๋ค์, ์ค์ ๋ก ์คํ๋ ๊ฒ์ฒ๋ผ ์ ์ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ์ฐ๊ทน์ผ ๋ฟ์ ๋๋ค. ์ฌ์ฉ์๋ ๋ง๋ค์ด์ง ์ถ๋ ฅ๊ณผ ์ค์ ์ถ๋ ฅ์ ๊ตฌ๋ถํ ์ ์์ผ๋ฉฐ, ๋น์ฐํ ๊ทธ๊ฒ์ "ํ๊ตฌ"๋ผ๊ณ ๋ถ๋ฅผ ๊ฒ์ ๋๋ค. ์๋์ ๋ชจ๋ ๋ด์ฉ์ ์๋ฎฌ๋ ์ด์ ์ด ์ค์ ๋ก ์ํ๋๊ณ ์ฌ์ฉ์๊ฐ ํ์ธํ ์ ์๋๋ก ๋ง๋ค๊ธฐ ์ํด ์ค๊ณ๋ ๊ฒ์ด์ง, ์ผ๋ฅผ ์ํ ๊ฒ์ด ์๋๋๋ค.
๋ค ๊ฐ์ง ๋ถ๊ฐ์นจ ๊ท์น
๊ท์น 1: ./temp ๋๋ ํ ๋ฆฌ ์๋์์ ์๋๋ฆฌ์ค ์คํ
์๋ฎฌ๋ ์ด์
์ด ๋ค๋ฃจ๋ ๋ชจ๋ ๊ฒ(ํฝ์ค์ฒ, ๋จ๊ณ๊ฐ ์์ฑํ๋ .bluespec/memory/ ์ํฐํฉํธ, ๋ชจ๋ ์
๋ ฅ)์ ์์คํ
/tmp๊ฐ ์๋ ์ ์ฅ์ ๋ฃจํธ์ ./temp ๋๋ ํ ๋ฆฌ ์์ ๊ตฌ์ถํ์ธ์.
/tmp๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์์ต๋๋ค: ์๋ํฐ์์ ํด๋น ํ์ผ์ ์ด ์ ์์ผ๋ฏ๋ก, ๊ฑฐ๊ธฐ์ ํ๋ ๋ชจ๋ ์์ ์ "์ ๋ฅผ ๋ฏฟ์ผ์ธ์"๊ฐ ๋ฉ๋๋ค../temp๋ ์ฌ์ฉ์์ ์์ ๊ณต๊ฐ์ ์์ผ๋ฉฐ, ์ด๊ณ ๊ฒ์ฌํ ์ ์์ต๋๋ค../temp๋ git์ ๋ฌด์๋๋ฏ๋ก(.gitignore์ฒ๋ฆฌ), ์๋ฎฌ๋ ์ด์ ์ด ์ปค๋ฐ์ ์ค์ผ์ํค์ง ์์ต๋๋ค.- ์ฌ์ฉ์๊ฐ ์์
์ ๋ง์น๋ฉด
./temp๋ฅผ ์ ๋ฆฌํ๊ฑฐ๋, ๊ฒ์ฌํ ์ ์๋๋ก ๋จ๊ฒจ๋๋, ๋จผ์ ์ฌ์ฉ์์๊ฒ ๋ฌผ์ด๋ณด์ธ์.
ํฝ์ค์ฒ: ๋ชจ๋ ์๋ฎฌ๋ ์ด์ ์ ํ๋์ ํฝ์ค์ฒ์์ ์์
์ค๋ฆฝ์ ์ธ ์ํ ํ๋ก์ ํธ๋ ์ด ์คํฌ ์์ ์ ๊ณต๋๋ฉฐ, ๊ฐ๊ฐ .claude/skills/simulate/fixtures/<name>/ ๋๋ ํ ๋ฆฌ์ ์์ต๋๋ค. ๋ช
๋ น์ด ํ์๋ก ํ๋ ์๋๋ฆฌ์ค์ ๋ง๋ ํฝ์ค์ฒ๋ฅผ ์ ํํ๊ฑฐ๋, ์ ํฝ์ค์ฒ๋ฅผ ์ถ๊ฐํ์ธ์ (์๋ ์ฐธ๊ณ ). ๋ชจ๋ ํฝ์ค์ฒ๋ ์๊ณ ์ค์ ์ ์ธ ํ๋ก์ ํธ๋ก, **์ค๋ฆฝ์ ์ธ ์(neutral pairs)**์ผ๋ก ์๋์ ์ผ๋ก ๊ฒฌ๊ณ ํ ์ฝ๋์ ์ทจ์ฝํ ์ฝ๋๋ฅผ ๋ชจ๋ ํฌํจํ๊ณ ์์ด ๋ช
๋ น์ด ๋ ์ด๋ธ์ ์ฝ๋ ๊ฒ์ด ์๋ ์ฝ๋๋ฅผ ๋ถ์ํ๋๋ก ํฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ํฝ์ค์ฒ:
image-upload-service: ์ด๋ฏธ์ง ์ ๋ก๋๋ฅผ ๋ฐ๊ณ ๋ค์ ์ ๊ณตํ๋ ์์ ESM HTTP ์๋น์ค์ ๋๋ค.template-toolkit: ํ ํ๋ฆฟ ๋ ๋๋ง ๋ฐ ํ ์คํธ ํ์ฑ์ ์ํ, ๋ฐฐํฌ ๊ฐ๋ฅํ ESM npm ํจํค์ง(๋ผ์ด๋ธ๋ฌ๋ฆฌ +tmplCLI)์ ๋๋ค.
ํญ์ ํ๋์ ํฝ์ค์ฒ๋ฅผ ๊ทธ๋๋ก ./temp ๋๋ ํ ๋ฆฌ๋ก ๋ณต์ฌํ์ฌ ์๋ฎฌ๋ ์ด์
์ ์์ํ์ธ์. ๋ง์ฝ ./temp๊ฐ ์ด๋ฏธ ์กด์ฌํ๊ณ ๋น์ด์์ง ์๋ค๋ฉด, ๋จผ์ ๋น์ด ํ ๊ฐ ์คํ์ด ๊นจ๋ํ๊ฒ ์์๋๋๋ก ํ์ธ์ (<name>์ ์ ํํ ํฝ์ค์ฒ ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ์ธ์):
rm -rf ./temp && mkdir -p ./temp
cp -R .claude/skills/simulate/fixtures/<name>/. ./temp/
๊ทธ๋ฐ ๋ค์ ๊ท์น 4์ ๋ฐ๋ผ ์์ ๋จ๊ณ๋ฅผ ์ค์ ๋ก ์คํํ์ฌ ./temp์ ์ฒด์ธ์ ๊ตฌ์ถํ์ธ์. ๋ช
๋ น์ด ์ฝ๋ .bluespec/memory/*.md ์ํฐํฉํธ๋ ์ง์ ์์ฑ๋ ๊ฒ์ด ์๋๋ผ ํด๋น ๋จ๊ณ ์์ฒด์ ์ํด ์์ฑ๋์ด์ผ ํฉ๋๋ค. ๊ท์น 3์ ๋ฐ๋ผ ์ฌ์์ ๋ฌธ์ ๊ทธ๋๋ก ๋ฐ๋ฅด๋ฉฐ ./temp๋ฅผ ๋์์ผ๋ก ๋ช
๋ น์ ๋จ๊ณ๋ฅผ ์คํํ๊ณ , ๊ท์น 2์ ๋ฐ๋ผ ๊ฐ ๋จ๊ณ์ ์ถ๋ ฅ์ ๋ณด์ฌ์ฃผ์ธ์.
ํฝ์ค์ฒ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด .claude/skills/simulate/fixtures/<new-name>/ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฒด package.json์ ๊ฐ์ง ์๊ณ ์ค์ ์ ์ธ ํ๋ก์ ํธ๋ก ๋ง๋ค๊ณ , ๊ฒฌ๊ณ ํ ์ฝ๋์ ์ทจ์ฝํ ์ฝ๋๋ฅผ ์ค๋ฆฝ์ ์ธ ์์ผ๋ก ์ ์งํ๋ฉฐ, ๋ด์ฉ์ ์์ํ๋ ์ฃผ์์ด๋ ์ด๋ฆ์ ์ถ๊ฐํ์ง ๋ง์ธ์. ๊ทธ๋ฆฌ๊ณ ์ ๋ชฉ๋ก์ ์ถ๊ฐํ์ธ์. ํ์ฌ ํฝ์ค์ฒ๊ฐ ๋ค๋ฃจ์ง ์๋ ์๋ฃ(๋ค๋ฅธ ์ธ์ด๋ ์คํ, ๋น๋ฐ ์ฒ๋ฆฌ, ์ธ์ฆ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ)๊ฐ ๋ช
๋ น์ ํ์ํ ๋ ์ถ๊ฐํ์ธ์.
๊ท์น 2: ํ๋กฌํํธ์ ์๋ต์ ์ฑํ ๋ฉ์์ง์ ํ์ค ์ฝ๋ ๋ธ๋ก์ผ๋ก ํ์
์ด ๊ท์น์ ๋ฐฐ์ฐ๋ ๋ฐ ๊ฐ์ฅ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค. ๋๊ตฌ(Bash, Read)๋ฅผ ์คํํ ๋, ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ํด๋น ๋๊ตฌ์ IN๊ณผ OUT์ ๋ํ ์๋ฆฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ผ๋ง๋ ๋ง์ด ๋ณด์ฌ์ค์ง๋ ํต์ ํ ์ ์์ผ๋ฉฐ, ๋๋ถ๋ถ ์๋ ค์ ๋ณด์
๋๋ค. ๋ง์ฝ ์ฃผ์ฅ์ ๋ท๋ฐ์นจํ๋ ์ฆ๊ฑฐ๊ฐ ๋๊ตฌ ํธ์ถ์ ์ถ๋ ฅ ์์๋ง ์๋ค๋ฉด, ์ฌ์ฉ์๋ ๊ทธ๊ฒ์ ๋ณผ ์ ์๊ณ , ๊ทธ๊ฒ์ ์ค๋ช
ํ๋ ์ด๋ค ๋ฌธ์ฅ๋ ํ๊ตฌ์ฒ๋ผ ์ฝํ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์:
- ๋๊ตฌ๋ฅผ ์คํํ ํ, ๊ด๋ จ ์์ ์ถ๋ ฅ์ ํ์ค ์ฝ๋ ๋ธ๋ก(์ผ์ค ๋ฐฑํฑ
```)์ผ๋ก ๋ณต์ฌํ์ฌ ์ผ๋ฐ ์ฑํ ๋ฉ์์ง์ ๋ฃ์ผ์ธ์. ํ์ค ๋ธ๋ก์ ๋ชจ๋ ์ธํฐํ์ด์ค์์ ์์ ํ๊ณ ๋์ผํ๊ฒ ๋ ๋๋ง๋ฉ๋๋ค. ์ด๊ฒ์ด ์ฌ์ฉ์๊ฐ ์๋ฏธํ๋ "๋ ธ๋ ๊ธ์จ(yellow letters)", ์ฆ ๋งํฌ๋ค์ด ์ฝ๋ ๋ธ๋ก์ ๋๋ค. - ๋ช
๋ น์ ํ๋กฌํํธ์ ์ํธ์์ฉ(์ฆ,
/bluespec.<phase>๊ฐ ์คํ๋ ๋ ๋ณด์ฌ์ฃผ๋ ๋จ๊ณ๋ณ ์งํ, ๋ฒ์ ๊ฒฐ์ , ํ์ ๋ฑ)๋ ํ์ค ์ฝ๋ ๋ธ๋ก์ ๋ํ๋ก์ฒ๋ผ ๋ฃ์ผ์ธ์. - ์ ๋ ๋๊ตฌ ํธ์ถ์ ๊ฐ๋ฆฌํค๋ฉฐ "์ ์ถ๋ ฅ์ด X๋ฅผ ๋ณด์ฌ์ค๋๋ค"๋ผ๊ณ ์ฐ์ง ๋ง์ธ์. ์ฌ์ฉ์๊ฐ ์ ์ฒด๋ฅผ ์ฝ์ ์ ์๋๋ก ๋น์ ์ด ๋ถ์ฌ๋ฃ์ ํ์ค ๋ธ๋ก์ ๊ฐ๋ฆฌํค์ธ์.
- ๋ํ๋ก์ ์๋ ์ซ์๋ ์ค์ด ์ค์ ์คํ์์ ๋์จ ๊ฒ์ด๋ผ๋ฉด, ๋น์ ์ด ๋ถ์ฌ๋ฃ์ ์์ ์ถ๋ ฅ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค. ๋ถ์ฌ๋ฃ์ ์์ ์ถ๋ ฅ์ผ๋ก ๋ท๋ฐ์นจ๋์ง ์๋ ๋ํ๋ก ์ค์ ์์ฑํ๋ค๋ฉด, ๊ทธ๊ฒ์ ์ง์ด๋ด๋ ๊ฒ์ด๋ ์ค๋จํ์ธ์.
์ ๋ขฐํ ์ ์๋ ํจํด: ๋ช
๋ น์ ์คํํ๊ณ , ์์ ์ถ๋ ฅ์ ./temp ์๋ ํ์ผ(์: ./temp/run.log)๋ก ๋ฆฌ๋๋ ์
ํ ๋ค์, ํด๋น ํ์ผ์ Readํ๊ณ (Read ๊ฒฐ๊ณผ๋ ์ ์ฒด๊ฐ ํ์๋จ) ๊ทธ ๋ด์ฉ์ ํ์ค ๋ธ๋ก์ ๋ถ์ฌ๋ฃ์ผ์ธ์. ์ฌ์ฉ์๋ ๋ํ ./temp/run.log๋ฅผ ์ด์ด ํ์ธํ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ ํ๊บผ๋ฒ์ ๋ชจ์์ ๋ณด์ฌ์ฃผ์ง ๋ง๊ณ , ์งํํ๋ฉด์ ๋ฐ๋ก๋ฐ๋ก ๋ณด์ฌ์ฃผ์ธ์. ํธ๋ฆฌ๊ฑฐ๋ ๋จ๊ณ๋ณ์ ๋๋ค: ๋จ๊ณ๊ฐ ์ฌ์ฉ์๊ฐ ๋ด์ผ ํ ๋ฌด์ธ๊ฐ(์ฝ์ ์ ๋ ฅ, ๋ํ๋ก, ์์ฑํ ์ํฐํฉํธ)๋ฅผ ์์ฑํ๋ ์ฆ์, ๋ค์ ๋จ๊ณ ์ ์ ๊ฐ์ ๋ฉ์์ง์ ํ์ค ๋ธ๋ก์ ๋ถ์ฌ๋ฃ์ผ์ธ์. ๋ง์ฝ ๋ค์ ๋จ๊ณ๋ ์์ ์ ์์ํ๋ ค๊ณ ํ๋๋ฐ ์ด์ ๋จ๊ณ์ ์ถ๋ ฅ์ด ์์ง ํ๋ฉด์ ์๋ค๋ฉด, ๋ฉ์ถ๊ณ ๋จผ์ ๋ถ์ฌ๋ฃ์ผ์ธ์. ์ฌ์ฉ์๊ฐ ๋ช ๋ น์ ์ถ๋ ฅ์ ๋ณด์ฌ๋ฌ๋ผ๊ณ ์๊ธฐ์์ผ์ผ ํ๋ค๋ฉด, ์ด๋ฏธ ๊ท์น์ ์๋ฐํ ๊ฒ์ ๋๋ค.
๊ท์น 3: ๋น์ ์ด ๋ช ๋ น์ด๋ฏ๋ก, ๊ทธ ์ฌ์์ ๋ฌธ์ ๊ทธ๋๋ก ๋ฐ๋ฅด์ธ์
"๋ช
๋ น ์คํ"์ ๋น์ ์ด spec/commands/bluespec.<phase>.md๋ฅผ ๋จ๊ณ๋ณ๋ก ์คํํ๋ ๊ฒ์ด์ง, ๋น์ ๋ง์ ๋ฐฉ์์ผ๋ก ๋จ๊ณ๋ฅผ ์ํํ๊ณ ๊ทธ๊ฒ์ ๋ช
๋ น์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ด ์๋๋๋ค.
- ๋จผ์ ํด๋น ์ฌ์์ ์ด๊ณ ๋จ์ผ ์ง์ค ๊ณต๊ธ์์ผ๋ก ์ทจ๊ธํ์ธ์. ์์๋๋ก ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์. ๊ธฐ์ต์ด๋ ์ด ์คํฌ์ ์์ฝ์์ ๋จ๊ณ๋ฅผ ์คํํ์ง ๋ง์ธ์.
- ์ฌ์์ด ์๊ตฌํ๋ ๋ชจ๋ ํ์ธ ์ค๋จ(confirmation stop)์ ์ค์ ๋ก ์ํํ์ธ์.
harden์ ์ฝ๋๋ฅผ ํธ์งํ๊ธฐ ์ ์ ๋ฐ๋์ ํ์ธ์ ๋ฐ์์ผ ํ๋ฉฐ, ์ ์ฒดdetect์ค์บ์ ํ ํฐ์ ๋ง์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ์ธ์ด ํ์ํฉ๋๋ค. ์ฌ์์ด ์ ์ํ๋ผ๊ณ ํ๋ ๋ด์ฉ์ ๋ํ๋ก ๋ธ๋ก์ ์ ์ํ๊ณ ๊ธฐ๋ค๋ฆฌ์ธ์. ํ์ธ ์์ด ์ฝ๋๋ฅผ ํธ์งํ๊ฑฐ๋ ์ค๋จ๋ ๋จ๊ณ๋ฅผ ์คํํ์ง ๋ง์ธ์. - ๋ฒ์, ํ์ , ์์ , ์ฐ์ ์์, ๋ฐ๊ฒฌ ์ฌํญ์ ์ค์ ์๋๋ฆฌ์ค๋ฅผ ๋ฐํ์ผ๋ก ์ฌ์์ ๋จ๊ณ๊ฐ ๊ฒฐ์ ํ๋ ๋ฐฉ์์ผ๋ก ๊ฒฐ์ ํ์ธ์. ๋ง์ฝ ์ถ๋ ฅ์ ํ ์ค์ ์ ๋นํํ๋ ์ฌ์ ๋จ๊ณ๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ค๋ฉด, ๋น์ ์ ๋น์ ์์ ์ผ๋ก ํ๋ํ๊ณ ์๋ ๊ฒ์ด๋ฏ๋ก, ์ค๋จํ๊ณ ์ฌ์์ ๋ฐ๋ฅด์ธ์.
๊ท์น 4: ๊ฐ ๋จ๊ณ์ ์ ๋ ฅ์ ๋น์ ์ด ์๋ ์ด์ ๋จ๊ณ ์คํ์์ ๋์์ผ ํจ
์ฒด์ธ์ charter โ detect โ plan โ harden โ verify ์์์ด๋ฉฐ, ๊ฐ ๋จ๊ณ๋ ์ด์ ๋จ๊ณ๊ฐ ์์ฑํ ๋ด์ฉ์ ์ฝ์ต๋๋ค. ๋น์ ์ด ์์ํ๋ ๋ต๋ณ์ด ์ด๋ฏธ ๊ธฐ๋ก๋ ํ์ ๋จ๊ณ ์ํฐํฉํธ(์๋ฅผ ๋ค์ด, verify๊ฐ ํ์ธํ๊ฑฐ๋ ์ก์๋ด๊ธธ ์ํ๋ ๊ฒ์ ์ ํํ ๊ธฐ๋กํ harden.md)๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ์ ์คํจ์
๋๋ค: ๊ทธ๋ฌ๋ฉด ํ์ ๋จ๊ณ๋ ์ค์ ์ํฉ์ด ์๋ ๋น์ ์ ์์ธก์ ๋์์ผ๋ก ํ
์คํธ๋๋ฏ๋ก, ๋น์ ์ด ๋์น ๊ฒ์ ๊ทธ๋๋ก ๋์น๊ฒ ๋ฉ๋๋ค.
- ๋ชจ๋ ์์ ๋จ๊ณ ์ํฐํฉํธ๋ฅผ ํด๋น ๋จ๊ณ๋ฅผ ์คํํ์ฌ ์์ฑํ๊ณ , ๊ท์น 2์ ๋ฐ๋ผ ๊ทธ ๊ณผ์ ์ ๋ณด์ฌ์ฃผ์ธ์.
verify๋ฅผ ๋ฐ๋ชจํ๋ ค๋ฉด,detect(์ฝ๋ ์ฝ๊ธฐ)๋ฅผ ์คํํ๊ณ ,plan(detect.md์ฝ๊ธฐ)์ ์คํํ๊ณ ,harden(plan.md์ฝ๊ธฐ, ์ฝ๋ ํธ์ง)์ ์คํํ์ธ์. ์ฌ์ฉ์๊ฐ ์ค๊ฐ ์ฒด์ธ๋ถํฐ ์์ํ๋๋ผ๋, ์ด๋ ๊ฒ ์์๋๋ก ๋๋ฝ๋ ์ํฐํฉํธ๋ฅผ ๊ตฌ์ถํ์ธ์. - ์ํฐํฉํธ๊ฐ ์ค์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋งํ๊ฒ ํ์ธ์.
Partial,Blocked, ์์์น ๋ชปํ ๋ฐ๊ฒฌ ๋ฑ ๊ทธ๋๋ก ํฌํจ์์ผ์ผ ํฉ๋๋ค. ์์ฌ์ค๋ฌ์ธ ์ ๋๋ก ๊น๋ํ ์ํฐํฉํธ๋ ์ด ๊ท์น์ด ์๋ฐ๋์์์ ์๋ ค์ฃผ๋ ์ ํธ์ ๋๋ค. - ์๋์ ์ผ๋ก ์๋๋ฆฌ์ค๋ฅผ ๋ค๋ฅด๊ฒ ๋ง๋๋ ๊ฒ์ ๊ด์ฐฎ์ต๋๋ค(harden์ด ๋ชจ๋ ๊ฒ์ ์ ์ฉํ ํ, ์ฝ๋๋ฅผ ๋๋๋ ค์
verify๊ฐ ๋ณ๊ฒฝ์ ์ก์๋ด์ผ ํ๋๋ก ํ๋ ๊ฒฝ์ฐ ๋ฑ). ํ์ง๋ง ๋ณ๊ฒฝ ์ฌํญ์ ์๊ฐ์ ์ผ๋ก ๋์ ํ๊ณ (ํ์๋ ๋๊ตฌ ํธ์ถ์์ ๋๋๋ฆฌ๊ธฐ, ์ค์ ์ํฐํฉํธ ์ ์ง), ์คํ์์ ์์ฑ๋์ง ์์ ๊ธฐ๋ก์ ์ง์ ์์ฑํ์ง ๋ง์ธ์.
๋ฐฉ๋ฒ๋ก : ๋จ๊ณ๋ณ
๊ฐ ๋จ๊ณ๋ ์ด์ ๋จ๊ณ๋ฅผ ์ฝ๊ณ ํ๋์ ์ํฐํฉํธ๋ฅผ ์๋๋ค. ์ด ์ฒด์ธ์ ์๊ณ ์ ๋ ๊นจ๋จ๋ฆฌ์ง ๋ง์ธ์:
| ๋จ๊ณ | ์ฝ๋ ๋์ | ์ฐ๋ ๋์ |
|---|---|---|
charter | ํ๋ก์ ํธ ์ปจํ ์คํธ | .bluespec/memory/charter.md |
detect | ์ฝ๋ | .bluespec/memory/detect.md |
plan | ์ค์ง detect.md๋ง, ์ ๋ ์ฝ๋๋ ์ฝ์ง ์์ | .bluespec/memory/plan.md |
harden | ์ค์ง plan.md + ํ์ฅ(charter), ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์ ์ฝ๋๋ฅผ ํธ์ง | .bluespec/memory/harden.md |
verify | harden.md ๋ฐ ์ฝ๋๋ฅผ ์ฝ์ด ๊ธฐ๋ก๊ณผ ์ค์ ๋ฅผ ๋์กฐํ๊ณ , ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์ | .bluespec/memory/verify.md |
๊ทธ๋ฐ ๋ค์, ์๋ฎฌ๋ ์ด์ ํ๋ ๋ช ๋ น์ ๋ํด:
- ํฝ์ค์ฒ๋ฅผ ๊ทธ๋๋ก
./temp์ ๋ณต์ฌํฉ๋๋ค (๊ท์น 1). - ๊ฐ ์์ ๋จ๊ณ๋ฅผ ์์๋๋ก
./temp์ ๋ํด ์คํํ์ฌ ์ฒด์ธ์ ๊ตฌ์ถํฉ๋๋ค (๊ท์น 4). - ๋์ ๋จ๊ณ๋ฅผ ํด๋น
spec/commands/bluespec.<phase>.md์ฌ์์ ๋ฐ๋ผ ๋ฌธ์ ๊ทธ๋๋ก ์คํํฉ๋๋ค (๊ท์น 3). - ์งํํ๋ฉด์ ๋ชจ๋ ์
๋ ฅ, ๋ํ๋ก, ์ํฐํฉํธ๋ฅผ ํ์ค ๋ธ๋ก์ผ๋ก ๋ณด์ฌ์ค๋๋ค (๊ท์น 2). ๊ฐ ์ถ๋ ฅ ์ํฐํฉํธ๋ฅผ ์ค์ ํ์ผ๋ก ์์ฑํ ๋ค์,
Readํ์ฌ ๋ณด์ฌ์ค๋๋ค.
๋ฌด์์ด๋ ์ ์ํ๊ธฐ ์ ์ ์ ์ง์ฑ ํ์ธ
- ์ด๊ฒ์ด ์ค์ ๋ก ์คํ๋ ๊ฒ์ธ๊ฐ, ์๋๋ฉด ๋ด๊ฐ ๋ฌด์์ด ์ผ์ด๋ ์ง ์๊ฐ๋๋ ๋๋ก ์ ๋ ฅํ๊ณ ์๋๊ฐ?
- ๋ชจ๋ ๋ํ๋ก ์ค์ด ๋ด๊ฐ ๋ถ์ฌ๋ฃ์ ์์ ์ถ๋ ฅ์ด๋ ์ฌ์ฉ์๊ฐ ์ด ์ ์๋
./tempํ์ผ(์๋ฆฐ ๋๊ตฌ ํธ์ถ์ด ์๋)๋ก ๋ท๋ฐ์นจ๋๋๊ฐ? (๊ท์น 2) - ์ง๊ธ๊น์ง ๊ฐ ๋จ๊ณ์ ์ถ๋ ฅ์ ์ด๋ฏธ ๋ถ์ฌ๋ฃ์ด์ ์ฌ์ฉ์๊ฐ ์ ๋ ๋ฌผ์ด๋ณผ ํ์๊ฐ ์๊ฒ ํ๋๊ฐ? (๊ท์น 2)
- ๋ด๊ฐ ์๋ ๋ช ๋ น์ผ๋ก์ ํ๋ํ๊ธฐ ์ํด ๊ฐ ๋จ๊ณ์ ์ฌ์๊ณผ ํ์ธ ์ค๋จ์ ๋ฐ๋๋๊ฐ? (๊ท์น 3)
- ๊ฐ ์์ ๋จ๊ณ ์ํฐํฉํธ๊ฐ ๋ด๊ฐ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ง์ ์์ฑํ ๊ฒ์ด ์๋๋ผ, ํด๋น ๋จ๊ณ๋ฅผ ์คํํ์ฌ ๋์จ ๊ฒ์ธ๊ฐ? (๊ท์น 4)
- ์๋๋ฆฌ์ค๊ฐ
/tmp์ ์จ๊ฒจ์ง์ง ์๊ณ./temp์๋์ ์๋๊ฐ? (๊ท์น 1)
๋ง์ฝ ํ๋๋ผ๋ '์๋์ค'๋ผ๋ฉด, ๋ณด๋ด๊ธฐ ์ ์ ์์ ํ์ธ์. ์ฌ์ฉ์๋ ์ ์ ๋ ํ๊ตฌ๋ณด๋ค๋ ์๋ฐํ์ง๋ง ์ค์ ์ ์ธ ์ถ๋ ฅ์ ๋ณด๋ ๊ฒ์ ์ ํธํฉ๋๋ค.