스펙 기반 개발(Spec-Driven Development)이란 무엇인가?
대부분의 AI 코딩은 비슷한 방식으로 시작됩니다. 에이전트에게 짧은 프롬프트를 입력합니다. 에이전트가 코드를 작성하는 것을 지켜봅니다. 빨라 보입니다. 그러다 에이전트가 잘못된 것을 만들었다는 사실을 깨닫게 됩니다. 결국 그것을 수정하는 데 한 시간을 허비하게 됩니다.
에이전트가 코드를 작성하는 데 어려움을 겪은 것이 아닙니다. 에이전트는 당신의 의도를 이해하는 데 어려움을 겪은 것입니다.
스펙 기반 개발(Spec-driven development)은 이 문제를 해결합니다. 코드를 짜달라고 프롬프트를 넣는 대신, 먼저 스펙을 작성합니다. 이 스펙은 문서화된 계획입니다. 계획이 올바를 때까지 수정합니다. 그제야 에이전트가 빌드하도록 합니다.
AWS Kiro나 GitHub spec-kit 같은 새로운 도구들이 이 과정을 쉽게 만들어 줍니다. 하지만 이 개념은 오래된 것입니다. 그저 훌륭한 엔지니어링일 뿐입니다.
좋은 스펙은 세 가지 부분으로 구성됩니다:
• 요구사항(Requirements): 기능이 무엇을 하는지, 그리고 성공을 어떻게 측정할 것인지에 대한 내용입니다. 이는 코드가 아닌 동작을 설명합니다. • 설계(Design): 기술적 계획입니다. 아키텍처, 데이터 모델, 제약 조건 등이 포함됩니다. • 작업(Tasks): 작고 테스트 가능한 단위입니다. 에이전트가 한 번에 끝낼 수 있을 만큼 충분히 단순해야 합니다.
각 부분은 다음 단계로 이어집니다. 요구사항은 설계를 안내합니다. 설계는 작업을 생성합니다. 작업은 에이전트를 안내합니다.
과거에는 코드를 작성하는 것이 느렸습니다. 스펙을 작성하는 것은 시간 낭비처럼 느껴졌습니다. 이제 AI는 몇 분 만에 코드를 작성합니다. 병목 현상은 더 이상 타이핑이 아닙니다. 병목 현상은 정확히 무엇을 만들지 결정하는 것입니다.
스펙은 실수를 수정 비용이 저렴한 단계로 옮겨줍니다. 문서의 잘못된 문장은 수정하기 쉽습니다. 코드베이스의 잘못된 구현을 되돌리는 것은 비용이 많이 듭니다.
코드를 리뷰하는 것은 어렵습니다. 작성자가 무엇을 의도했는지 역공학(reverse-engineer)해야 하기 때문입니다. 스펙을 리뷰하는 것은 쉽습니다. 코드가 존재하기 전에 의도에 대해 합의할 수 있습니다.
이 방식은 확장성을 높이는 데도 도움이 됩니다. 서로 다른 에이전트에게 서로 다른 작업을 맡길 수 있습니다. 스펙은 에이전트들이 일관성을 유지하도록 돕는 계약서 역할을 합니다.
이 접근 방식이 항상 정답인 것은 아닙니다.
- 작은 수정에는 과할 수 있습니다. 한 줄짜리 변경을 위해 스펙을 작성하지 마세요.
- 스펙이 최신 상태를 유지하지 못할 수 있습니다. 코드는 변경되었는데 스펙이 변경되지 않으면, 스펙은 거짓이 됩니다.
- 에이전트가 항상 명령을 따르는 것은 아닙니다. 스펙은 혼란을 줄여주지만, 여전히 결과물을 검토해야 합니다.
의도를 명확히 하기 위해 스펙을 사용하세요. 실수가 단지 글자에 불과할 때 이를 잡아내기 위해 스펙을 활용하세요.
출처: https://dev.to/jcamarate/what-is-spec-driven-development-with-ai-coding-agents-56mc
선택 사항 학습 커뮤니티: https://t.me/GyaanSetuAi