SDD(Spec-Driven Development) 방법론 #21
Replies: 5 comments
SDD(Spec-Driven Development) 방법론 #211. SDD의 정의와 등장 배경을 설명해주세요.Spec-Driven Development는 코드를 먼저 작성하기 보다, 명세(spec)를 작성하고 그 명세를 기준으로 설계, 구현, 테스트, 리뷰를 진행하는 개발 방법론입니다. 여기서 명세는 단순 요구사항 목록뿐만 아니라, 무엇을 만들지, 어떤 동작을 할지/하지말지, 예외 상황 어떻게 처리할지, 입출력, 완료 기준, 테스트 방법 등을 포함합니다. 2. SDD의 핵심 원칙과 워크플로우를 설명해주세요.핵심 원칙은 대표적으로 Spec First, Shared Source of Truth, Unambiguous Behavior, Testable Secification, Iterative Refinement, Boundary Clarity 로 6가지가 있습니다.
일반적인 워크플로우는 문제와 목표 정의, 명세 작성, 명세 리뷰, 테스트 기준화, 구현, 검증, 명세 갱신 순서를 따릅니다. 3. SDD의 장점과 한계를 설명해주세요.장점)
한계)
4. SDD 프레임워크 2~3개 정도를 간단하게 소개해주세요.SDD 프레임워크는 대표적으로 SpecDD, BDD, Specification by Example이 있습니다.
|
|
SDD의 정의와 등장 배경을 설명해주세요.spec driven development. SDD의 핵심 원칙과 워크플로우를 설명해주세요.핵심 원칙
워크플로우
SDD의 장점과 한계를 설명해주세요.장점위의 sdd 의 특징에서 장점들을 생각해볼 수 있는데
단점단점은 장점보다 생각하기 어려울 것 같다
SDD 프레임워크 2~3개 정도를 간단하게 소개해주세요.
|
SDD는 무엇이며 어떻게 소프트웨어 개발을 명세 중심으로 바꾸는가?SDD의 정의와 등장 배경SDD란?SDD(Spec-Driven Development)는 코드를 작성하기 전에 요구사항과 제약 조건을 명확한 명세로 만들고 그 명세를 기준으로 설계, 작업, 코드, 테스트를 생성하고 검증하는 개발 방식이다. -> 일단 코드를 만들고 문서화하는게 아니라 쿠엇을 만들어햐 하는지 먼저 합의하고 그 명세에 따라 코드를 만드는 것이다. 전통적인 개발에서는 요구사항 문서가 구현을 위한 참고 자료로 사용되다가, 개발이 시작되면 코드가 사실상의 기준이 된느 경우가 많았다. SDD는 명세가 코드를 보조하는 것이 아니라 코드가 명세를 구현하는 방향이다. 등장 배경 1: 문서와 코드의 불일치구현이 변경될 떄 문서가 함께 갱신되지 않으면 요구사항에는 있지만 코드에는 없는 문제, 코드에는 있지만 문서화되지 않은 동작, 변경된 요구사항이 테스트에 반영되지 않는 문제 등등이 발생힘 -> SDD는 일회성 문서가 아닌 지속적으로 관리하는 핵심 산출물로 취급하여 불일치를 줄인다. 등장 배경 2: 모호한 요구사항기획자, 개발자, 사용자가 요구사항을 서로 다르게 이해하면 기술적으로 완성된 코드를 작성해도 잘못된 서비스가 만들어질 수 있다.
등장 배경 3: AI 코딩 에이전트의 확산AI에게 모호한 문장을 주고 코드를 작성하게 하면 AI는 누락된 내용을 스스로 추측한다. SDD의 핵심 원칙과 워크플로우핵심 워칙 1: 명세가 기준 정보이다.SDD에서는 요구사항과 구현이 충돌할 때 판단이 되는 자료가 명세이다.
핵심 원칙 2: 완료 조건을 검증할 수 있어야 한다.명세에는 무엇을 만들 것인지뿐 아니라 언제 완성됐다고 판단할 것인지를 포함한다. 핵심 원칙 3: 요구사항부터 테스트까지 추적할 수 있어야 한다.특정 요구사항이 변경됐을 때 영향을 받는 설계, 작업, 코드와 테스트를 찾을 수 있어야 한다. 핵심 원칙 4: 명세와 구현을 반복적으로 개선하고 검증한다.SDD는 처음부터 완벽한 문서를 작성하고 그대로 구현하는 폭포수 방식이 아니다. 구현 중 새로운 기술적 제약이 발견되거나 사용자 피드백이 들어오면 명세를 수정할 수 있다. 이때 변경 내용을 채팅이나 개인의 기억이만 남지기 않고 명세에도 반영해야 한다. 핵심 원칙 5: 중요한 판단은 사람이 승인한다.
워크플로우
SDD의 장점과 한계장점
한계
대표적인 SDD 프레임 워크1. GitHub Spec KitGitHub가 공개한 오픈소스 SDD 툴킷이다. 여러 AI 코딩 에이전트와 함께 사용할 수 있다. 2. Kiro SpecsKiro는 AWS가 개발한 AI 개발 환경이다. IDE, CLI와 웹에서 명세 기반 개발 흐름을 제공한다. 3. OpenSpecOpenSpec은 여러 AI 코딩 도구와 함께 사용할 수 있는 비교적 가벼운 오픈소스 SDD 프레임워크다. 비교
|
기본 질문1. SDD의 정의와 등장 배경을 설명해주세요.SDD는 Spec Driven Development의 약자로 개발자가 코드 구현에 앞서 요구사항을 담은 명세서를 먼저 작성 후 이를 중심으로 개발을 진행하는 개발 방법론입니다. SDD는 여러 개발자가 협력하는 단계에서 서로 요구사항을 다르게 해석하면서 코드가 깨지는 경우, 명세를 얇게 잡고 코드를 구현할 때 기능 요구사항이 변경되면 코드만 변경되고 명세 문서는 갱신을 안하게 되면서 명세와 코드가 파편화 되는 경우 그리고 거대한 시스템을 코드 구현을 먼저 하면 시스템의 전체적인 구조가 흐트러지는 경우의 원인으로 SDD 방법론이 제안 되었습니다. 이처럼 과거부터 있었던 SDD가 최근 주목 받는 이유는 코딩 에이전트의 등장 때문입니다. 코딩 에이전트는 탄탄한 명세만 제공되면 그 요구사항을 수준 높은 코드로 빠르게 구현해줍니다. 이러면서 개발자들은 코드를 고민하기 보다 정교한 명세 작성에 노력을 투자하면서 자연스레 SDD 개발 방법론이 각광 받고 있습니다. 2. SDD의 핵심 원칙과 워크플로우를 설명해주세요.SDD의 핵심 원칙은 명세를 진실의 단일 원천(SSOT, Single Source of Truth) 삼기, 선 명세 후 구현, 단방향 수정 원칙 등이 있습니다. 원칙을 풀어서 설명하자면 시스템의 모든 동작을 명세를 최우선 기준으로 삼아 개발자의 개인적인 판단, 과거 논의 내용보다 기록된 명세를 절대적 기준으로 잡고, 구현은 명세가 없이 선행되어 서는 안되고, 수정이 요구된다면 개발 중 코드를 먼저 수정하는게 아닌 명세 작성 단계로 돌아와 명세 먼저 수정 후 다시 코드 구현으로 가는 것입니다. 이에 따라 워크플로우를 보면 명세 작성 → 검증 & 계약 확정 → 코드 구현 → 명세 기반 테스트 → 명세 선 수정 및 유지보수의 흐름을 따릅니다. 3. SDD의 장점과 한계를 설명해주세요.SDD의 장점으로는 모두가 같은 명세를 절대적 기준으로 삼기 때문에 소통 오류를 최소화하고 항상 코드는 문서를 따르기 때문에 코드와 문서 간의 완벽한 동기화를 이끌어내며 시스템의 구조적 안정성과 명확한 테스트 기준을 갖습니다. 반면 초기 명세 작성 비용이 상당히 높고 숙련된 설계가 요구된다는 높은 진입 장벽을 가지고 요구 사항이 자주 바뀌는 초기 단계에서 단방향 수정 원칙이 병목이 되기도 한다는 한계가 존재합니다. 4. SDD 프레임워크 2~3개 정도를 간단하게 소개해주세요.먼저 OpenAPI로 코딩 에이전트 등장 전의 SDD 프레임워크로 YAML, JSON의 형태로 REST API의 경로, 데이터 타입, 에러 응답을 명세로 작성하면 OpenAPI Generator 도구를 통해 Java, Python 등의 서버 뼈대 코드와 API 문서를 자동으로 생성해주는 프레임워크가 존재했고, 코딩 에이전트 등장 이후 SDD가 각광 받는 시대에는 SpecKit이 있고, 이는 Markdown 명세의 형태로 SDD 방법론의 워크플로우를 따를 수 있게 하는 에이전트 스킬을 모아둔 플러그인 툴킷입니다. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
📆 일자: 26년 7월 29일(수)
🤔오늘의 질문
All reactions