Skip to content

spec-driven development (SDD)

Spec-driven development, or SDD, is a software development approach in which a structured, version-controlled specification, rather than the source code, is the primary artifact and source of truth. The specification states what a system should do in precise terms, capturing intended behavior, constraints, edge cases, and acceptance criteria before any implementation begins.

The specification then drives the work. A team derives a design and a list of concrete tasks from it, writes or generates the code to satisfy it, and revises the specification first whenever requirements change so that the implementation can be brought back into line. This inverts the common pattern in which code is written first and documentation, where it exists at all, trails behind and drifts out of date.

Approaches differ in how strictly the specification is held as the authority:

A horizontal spectrum axis running from less spec authority to more spec authority, with three marked points labeled Spec-first, Spec-anchored, and Spec-as-source, the rightmost highlighted.
The three approaches sit on one rising scale of spec authority.
  • Spec-first: The specification guides the initial build and is then set aside.
  • Spec-anchored: The specification is retained and evolved alongside the code over time.
  • Spec-as-source: The specification is the primary file, and the generated code is treated as a disposable build product that nobody edits by hand.

The idea draws on older practices such as requirements specifications, model-driven development, and contract-first design, along with the test-driven and behavior-driven families that also let a precise description guide the code. Interest in spec-driven development grew sharply around 2025, when AI coding agents made it practical to turn a detailed natural-language specification directly into a working implementation.

Getting Started With Testing in Python

Course

Test-Driven Development With pytest

In this hands-on course, you’ll see how to create Python unit tests, execute them, and find the bugs before your users do. You’ll learn about the tools available to write and execute tests, check your application’s performance, and even look for security issues.

intermediate testing

For additional information on related topics, take a look at the following resources:


By Martin Breuss • Updated July 15, 2026