Urgent.News

What's breaking now, across thousands of outlets.

Tech

Spec-Driven Development: An Attempt at a Definition (Part 1 of 4)

As I explained in the opening post of my series According to Plan: spec-driven development, spec-native systems, and whatever it all ends up being called , I am dissatisfied with the current lack of a definition of the term spec-driven development (SDD) that is recognized across the industry. Since SDD's general approach to the problem domain and the reasoning behind it are compatible with how I…

In the opening post of my series, I discuss the concept of spec-driven development (SDD) and the need for a universally recognized definition. As I have been working in software engineering for over 25 years, I am familiar with the "not-invented-here" syndrome and aim to reconcile existing definitions rather than reinventing the wheel. I acknowledge that my work may not completely criticize existing definitions but may take a slightly different approach for clarity.

The first step in defining SDD is to dissect its constituent parts. Therefore, I plan to focus on each component separately before putting them back together to form a final definition. Throughout this process, I will discuss options and considerations to make the material more comprehensible and engaging. Some readers might find this approach too theoretical, but I understand their perspective and encourage them to skip supplementary bits and jump directly to the callouts for final results.

A key point that stands out when examining existing SDD definitions is the disagreement on even the most fundamental aspect: what a spec actually is. To address this, I will discuss the nature of a spec from various sources used to define SDD. These sources cover different aspects of specifications, including their role in generating executable implementations, defining system contracts, and evolving programming languages for human-centric input translation.

Additionally, they emphasize the importance of executable specifications that can produce code, documentation, SDKs, mocks, and even service infrastructure.

From these sources, several key properties of an SDD spec can be distilled:

1. A spec is written in natural language.

2. A spec defines testable behavior, focusing on what the system needs to do, rather than how it will be implemented or why.

3. A spec is executable, allowing an AI coding agent to translate it into source code that exhibits the specified behavior.

4. A spec is prescriptive, not descriptive.

5. A spec is long-lived, serving as a connective tissue across the entire software development lifecycle, linking business intent to architecture, implementation, tests, and validation.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

More from Thursday 24 September →