CodeIA Logo
Inicio
¿Qué es la Ingeniería de Contexto?ExperienciaProyectos realizados
Comunidad
FeedMiembrosCuadro de HonorCalendarioBolsa de trabajoEncuestasProyectos de la Comunidad
NoticiasPrecios
Formación
CursosLecciones
Co-Projects
Propuestas de proyectosEnviar propuesta de proyecto
RoadmapGlosarioContacto
Iniciar Sesión
CodeIA Logo

Transformando ideas en software profesional con IA. La nueva era del desarrollo ágil.

Legal

Política de PrivacidadTérminos de ServicioTérminos de SuscripciónAviso LegalCookies

Sígueme

Contactar

© 2026 CodeIA. Todos los derechos reservados.

Hecho con♥por sn4p.dev

Glosario/Spec-Driven Development o SDD

Spec-Driven Development o SDD

Santiago13 de marzo de 2026

Definición

El Desarrollo Guiado por Especificaciones (Spec-Driven Development o SDD) es un enfoque de ingeniería de software que utiliza especificaciones detalladas y estructuradas como el artefacto principal para dirigir la generación de código mediante agentes de IA.

Descripción

El Desarrollo Guiado por Especificaciones (Spec-Driven Development o SDD) es un enfoque de ingeniería de software que utiliza especificaciones detalladas y estructuradas como el artefacto principal para dirigir la generación de código mediante agentes de IA. A diferencia del "vibe coding" (programación intuitiva y basada en prompts rápidos), el SDD busca imponer rigor y predictibilidad al proceso de desarrollo asistido por modelos de lenguaje (LLM). Niveles de SDD Existen tres niveles comunes de implementación, que varían según el grado de autoridad que tiene la especificación sobre el código: Spec-First: Se escribe la especificación antes de codificar para guiar a la IA en una tarea específica; una vez completada, el código es el entregable principal y la especificación puede descartarse. Spec-Anchored: La especificación se mantiene como un "ancla" permanente durante todo el ciclo de vida de la funcionalidad, sirviendo para el mantenimiento y la evolución del código. Spec-as-Source: El nivel más radical, donde la especificación es la única fuente de verdad; los humanos solo editan la especificación y el código se regenera íntegramente a partir de ella. El Flujo de Trabajo Típico El SDD suele estructurarse en cuatro o cinco fases consecutivas que transforman la intención en software funcional: Specify (Especificar): Definir objetivos, reglas de negocio y criterios de aceptación en lenguaje natural estructurado (ej. Markdown o EARS). Plan (Planificar): Traducir los requisitos en una arquitectura técnica, definiendo el stack, esquemas de bases de datos y contratos de API. Task (Descomponer): Dividir el plan en tareas atómicas y ejecutables que una IA pueda procesar individualmente. Implement (Implementar): El agente de IA genera el código basándose estrictamente en los documentos anteriores. Validate (Validar): Verificación continua mediante tests automatizados para asegurar que el código no se desvíe de la especificación original. Comparación con otras metodologías TDD (Test-Driven): Se enfoca en la corrección a nivel de función o unidad; el SDD opera a un nivel arquitectónico más alto. BDD (Behavior-Driven): Define el comportamiento desde la perspectiva del usuario; el SDD utiliza estos escenarios pero los convierte en contratos ejecutables y planes técnicos.

Ejemplo

// markdown # Especificación: Sistema de Autenticación Simple ## Objetivo Implementar un servicio de autenticación JWT en Node.js/Express. ## Reglas de Negocio - Los usuarios deben proporcionar `email` y `password`. - El password debe tener al menos 8 caracteres. - Las contraseñas deben guardarse hasheadas (bcrypt). - El sistema debe retornar un JWT válido por 1 hora tras un login exitoso. ## Contrato de API (Interface) - POST `/auth/register`: Crea usuario. Retorna 201. - POST `/auth/login`: Valida credenciales. Retorna `{ token: string }`. ## Criterios de Aceptación 1. Intentar registrar un email ya existente debe devolver error 400. 2. Un login con password incorrecto debe devolver error 401. // javascript const express = require('express'); const bcrypt = require('bcrypt'); const jwt = require('jsonwebtoken'); const router = express.Router(); const users = []; // Base de datos volátil para el ejemplo router.post('/register', async (req, res) => { const { email, password } = req.body; // Validación según especificación if (password.length < 8) { return res.status(400).json({ error: 'Password must be 8+ chars' }); } const exists = users.find(u => u.email === email); if (exists) return res.status(400).json({ error: 'User already exists' }); const hashedPassword = await bcrypt.hash(password, 10); users.push({ email, password: hashedPassword }); res.status(201).send(); }); router.post('/login', async (req, res) => { const { email, password } = req.body; const user = users.find(u => u.email === email); if (!user || !(await bcrypt.compare(password, user.password))) { return res.status(401).json({ error: 'Invalid credentials' }); } const token = jwt.sign({ email }, 'secret_key', { expiresIn: '1h' }); res.json({ token }); }); module.exports = router;

← Volver al glosario