FORMACIÓN · SEMANA 07

De la idea a una especificación ejecutable con IA

Aprenderás a transformar una idea de negocio, una necesidad de usuario o una conversación informal en requisitos claros que un agente de IA pueda convertir en software sin tener que adivinar lo que quieres.

Semana 7 de 24 · Nivel: Intermedio

1. Objetivos de la semana

OBJETIVO PRINCIPAL

Aprender a especificar software antes de construirlo

Una de las habilidades más importantes para trabajar con IA no es saber escribir mejores prompts. Es saber definir correctamente el problema.

Un agente puede escribir miles de líneas de código muchísimo más rápido que una persona. El problema es: ¿Está construyendo lo que realmente necesitábamos?

01

Requisitos

Convertir necesidades de negocio en requisitos.

02

User Stories

Describir funcionalidades desde el punto de vista del usuario.

03

Aceptación

Definir cuándo una funcionalidad está correctamente terminada.

04

Edge Cases

Pensar qué ocurre cuando las cosas no salen como esperamos.

05

Specifications

Crear documentos que la IA pueda utilizar como fuente de verdad.

06

Validación

Evaluar si una implementación realmente cumple el requisito.

2. El gran problema: "quiero una aplicación"

Una petición demasiado vaga

Quiero una aplicación para gestionar empleados.

Un agente puede construir algo. Pero... ¿Qué significa "gestionar"?

  • ¿Crear empleados?
  • ¿Eliminar?
  • ¿Editar?
  • ¿Buscar?
  • ¿Filtrar?
  • ¿Asignarlos a proyectos?
  • ¿Controlar vacaciones?
  • ¿Controlar disponibilidad?
  • ¿Qué roles existen?
  • ¿Quién puede hacer cada cosa?

El mismo requisito mejor definido

Como responsable de recursos humanos,

quiero poder crear un empleado indicando:

- nombre;
- apellidos;
- email;
- categoría;
- fecha de incorporación;

para poder mantener actualizado
el inventario de empleados.

Ahora tenemos mucha más información. Pero todavía falta.

La pregunta clave

¿Qué significa exactamente que esta funcionalidad está terminada?

3. Requirements Engineering

Requirements Engineering es el proceso de descubrir, documentar, analizar, validar y gestionar las necesidades que debe satisfacer un sistema.

Tipos de requisitos

Tipo Ejemplo
Funcional El usuario puede crear un proyecto.
No funcional La página debe cargar en menos de 2 segundos.
Seguridad Solo usuarios autorizados pueden eliminar proyectos.
Datos El email debe ser único.
Integración La aplicación debe enviar un email al crear una cuenta.
UX El usuario debe recibir confirmación después de guardar.

Ejemplo completo

Necesidad

"Quiero que los usuarios puedan recuperar su contraseña."

Requisitos funcionales

  • El usuario puede solicitar recuperación.
  • El sistema envía un enlace.
  • El enlace tiene caducidad.
  • El usuario puede establecer una nueva contraseña.

Requisitos de seguridad

  • No revelar si un email existe.
  • El token debe ser temporal.
  • El token debe invalidarse después de utilizarlo.

Requisitos UX

  • Mostrar confirmación.
  • Mostrar errores comprensibles.

Ejercicio

Convierte:

"Quiero que el usuario pueda gestionar tareas."

en al menos 8 requisitos concretos.

Mostrar una posible respuesta
  1. Crear tarea.
  2. Editar tarea.
  3. Eliminar tarea.
  4. Marcar como completada.
  5. Cambiar prioridad.
  6. Asignar fecha.
  7. Filtrar tareas.
  8. Buscar tareas.

Existen muchas respuestas válidas. El objetivo es aprender a descomponer.

4. User Stories

Una User Story describe una necesidad desde el punto de vista del usuario.

Formato clásico

Como [TIPO DE USUARIO]

quiero [ACCIÓN / OBJETIVO]

para [BENEFICIO / MOTIVACIÓN].

Ejemplo

Como gestor de proyectos,

quiero asignar una tarea a un empleado,

para saber quién es responsable de realizarla.

Mal ejemplo

Crear tabla task_assignment.

Esto describe una implementación técnica, no una necesidad del usuario.

Buen ejemplo

Como gestor de proyectos,

quiero asignar una tarea a un empleado,

para que quede claro quién es responsable.

User Story demasiado grande

Como usuario quiero gestionar toda mi cuenta,
mis proyectos, mis tareas, mis documentos,
mis preferencias y mis notificaciones.

Esto probablemente debería dividirse.

Descomposición

US-01
Crear proyecto

US-02
Editar proyecto

US-03
Eliminar proyecto

US-04
Crear tarea

US-05
Asignar tarea

US-06
Completar tarea

US-07
Configurar notificaciones

Regla práctica

Una buena User Story debería poder explicarse en una conversación corta. Si necesita una reunión de dos horas para entenderla, probablemente todavía es demasiado grande o ambigua.

5. Acceptance Criteria

Los criterios de aceptación son una de las herramientas más importantes cuando desarrollamos con IA.

Ejemplo

USER STORY

Como usuario,

quiero crear una tarea,

para organizar mi trabajo.


CRITERIOS DE ACEPTACIÓN

AC-01
El usuario puede introducir un título.


AC-02
El título es obligatorio.


AC-03
El título debe tener entre 1 y 200 caracteres.


AC-04
Al guardar correctamente,
la tarea aparece en la lista.


AC-05
Si falta el título,
se muestra un mensaje de error.


AC-06
La tarea se guarda en la base de datos.

¿Por qué son tan importantes para la IA?

Porque permiten transformar una conversación subjetiva en condiciones verificables.

REQUISITO

↓

CRITERIO

↓

TEST

↓

RESULTADO

PASS / FAIL

Ejemplo de criterio ambiguo

La aplicación debe ser rápida.

Mejor

El endpoint GET /api/tasks debe responder
en menos de 500 ms en condiciones normales
con 1000 tareas.

Otro ejemplo

Mal:

El formulario debe ser fácil de usar.

Mejor:

El usuario debe poder crear una tarea
sin abandonar la página actual.

Ejercicio

Transforma:

"El login debe ser seguro."

en al menos 5 criterios comprobables.

Mostrar solución orientativa
  • La contraseña nunca se almacena en texto plano.
  • El endpoint requiere credenciales válidas.
  • Después de varios intentos fallidos se aplica protección contra abuso.
  • Las sesiones expiran.
  • Los mensajes de error no revelan información innecesaria.

6. Edge Cases

Los casos normales son fáciles. Los problemas reales aparecen en las excepciones.

Ejemplo: crear usuario

Camino feliz:

Usuario introduce email válido

↓

Sistema valida

↓

Usuario creado

¿Qué puede salir mal?

Matriz de casos

Situación Resultado esperado
Email válido Crear usuario
Email vacío Error de validación
Email inválido Error de validación
Email existente Error controlado
Error DB Error controlado + log

Prompt para descubrir Edge Cases

Analiza esta funcionalidad:

[DESCRIPCIÓN]

Actúa como QA Senior.

Identifica:

1. Happy paths.
2. Validation errors.
3. Boundary conditions.
4. Security issues.
5. Concurrency problems.
6. Data consistency problems.
7. Integration failures.
8. UX failures.

No escribas código.

Devuelve una tabla con:

Caso
Entrada
Resultado esperado
Prioridad

7. Specification-Driven Development

A partir de ahora empezaremos a trabajar con una idea fundamental: La especificación es la fuente de verdad.

Estructura recomendada

docs/
│
├── product.md
│
├── requirements/
│   ├── US-001-login.md
│   ├── US-002-register.md
│   └── US-003-create-task.md
│
├── architecture/
│   └── architecture.md
│
├── api/
│   └── api.md
│
└── testing/
    └── test-plan.md

Plantilla de Specification

# US-003 — Crear tarea

## Objetivo

Permitir al usuario crear una tarea.

## Actor

Usuario autenticado.

## Precondiciones

El usuario debe estar autenticado.

## User Story

Como usuario,
quiero crear una tarea,
para organizar mi trabajo.

## Functional Requirements

FR-01
El título es obligatorio.

FR-02
La descripción es opcional.

FR-03
La prioridad puede ser:
LOW, MEDIUM, HIGH.

## Acceptance Criteria

AC-01
...

AC-02
...

## Edge Cases

EC-01
Título vacío.

EC-02
Título demasiado largo.

EC-03
Error de base de datos.

## Security

...

## Tests

...

## Out of Scope

...

¿Por qué "Out of Scope"?

Porque decirle a la IA qué NO debe hacer es tan importante como decirle qué debe hacer.

IN SCOPE

Crear tarea.


OUT OF SCOPE

- Reorganizar arquitectura.
- Cambiar framework.
- Crear sistema de notificaciones.
- Crear aplicación móvil.
- Cambiar autenticación.

8. Cómo trabajar con IA para crear especificaciones

Prompt 1 — Analista de negocio

Actúa como Business Analyst Senior.

Tengo esta necesidad:

"Quiero que los gestores puedan
asignar empleados a proyectos."

No escribas código.

Necesito:

1. Actores.
2. Objetivo.
3. User Stories.
4. Requisitos funcionales.
5. Requisitos no funcionales.
6. Reglas de negocio.
7. Edge Cases.
8. Criterios de aceptación.
9. Preguntas que faltan por resolver.

No inventes decisiones.
Cuando falte información,
indícalo explícitamente.

Prompt 2 — Product Manager

Actúa como Product Manager.

Revisa estos requisitos:

[PEGAR REQUISITOS]

Busca:

- ambigüedad;
- duplicaciones;
- contradicciones;
- requisitos innecesarios;
- funcionalidades demasiado grandes;
- funcionalidades que faltan.

Devuelve una lista priorizada.

No escribas código.

Prompt 3 — QA

Actúa como QA Lead.

A partir de esta specification:

[PEGAR SPEC]

Genera:

- casos positivos;
- casos negativos;
- edge cases;
- casos de seguridad;
- casos de integración;
- casos de regresión.

Cada caso debe incluir:

ID
Descripción
Precondiciones
Entrada
Resultado esperado
Prioridad

Prompt 4 — Software Architect

Actúa como Software Architect.

A partir de esta especificación:

[PEGAR SPEC]

Analiza si los requisitos son técnicamente
implementables.

Identifica:

- componentes;
- servicios;
- entidades;
- APIs;
- dependencias;
- riesgos.

No implementes.

Si una decisión requiere información
que no tenemos, pregunta antes de asumir.

La IA como equipo virtual

IDEA
 ↓
BUSINESS ANALYST
 ↓
PRODUCT MANAGER
 ↓
ARCHITECT
 ↓
DEVELOPER
 ↓
QA
 ↓
CODE REVIEW
 ↓
RELEASE

No significa que necesitemos diferentes agentes obligatoriamente. Significa que debemos adoptar diferentes perspectivas.

9. Workflow completo

1. Idea

"Quiero una aplicación para gestionar vacaciones."

2. Descubrimiento

Preguntamos qué problema queremos resolver.

3. Requisitos

Convertimos necesidades en requisitos.

4. User Stories

Dividimos funcionalidades.

5. Acceptance Criteria

Definimos cuándo está terminado.

6. Edge Cases

Analizamos excepciones.

7. Specification

Creamos documento de fuente de verdad.

8. Architecture

Decidimos cómo implementarlo.

9. Agent

La IA implementa.

10. QA

Validamos contra la specification.

10. Proyecto práctico de la semana

PROYECTO

Diseñar una aplicación de gestión de vacaciones

No vamos a centrarnos todavía en programarla. Esta semana vamos a construir la documentación que permitirá a un agente implementarla posteriormente.

Contexto

Una empresa necesita una aplicación donde sus empleados puedan solicitar vacaciones y los responsables puedan aprobarlas o rechazarlas.

Requisito inicial

"Queremos una aplicación para gestionar vacaciones."

Trabajo del alumno

Fase 1 — Descubrimiento

Crear:
docs/product.md
Debe responder:

Fase 2 — User Stories

Crear al menos:
US-001
Solicitar vacaciones

US-002
Consultar vacaciones

US-003
Aprobar vacaciones

US-004
Rechazar vacaciones

US-005
Cancelar solicitud

Fase 3 — Acceptance Criteria

Cada User Story debe tener al menos: 5 criterios de aceptación.

Fase 4 — Edge Cases

Identificar al menos: 15 casos excepcionales.

Fase 5 — Reglas de negocio

Por ejemplo:
RULE-001

Un empleado no puede solicitar
dos periodos que se solapen.


RULE-002

Solo un responsable autorizado
puede aprobar solicitudes.


RULE-003

Una solicitud aprobada no puede
ser modificada directamente.

Fase 6 — Specification

Crear:
docs/requirements/
con las especificaciones completas.

Fase 7 — Revisión con IA

Utilizar tres perspectivas:
BUSINESS ANALYST
        ↓
PRODUCT MANAGER
        ↓
QA LEAD
Cada uno deberá encontrar problemas diferentes.

11. Ejercicios prácticos

Ejercicio 1 — Detectar ambigüedad

El sistema debe permitir
gestionar empleados rápidamente.

Identifica al menos 5 problemas.

Respuesta
  • "gestionar" no está definido.
  • "rápidamente" no es medible.
  • No sabemos quién realiza la acción.
  • No sabemos qué datos se gestionan.
  • No sabemos qué operaciones existen.

Ejercicio 2 — User Story

Convierte:

"El usuario necesita recuperar su contraseña."
Respuesta
Como usuario,

quiero poder recuperar mi contraseña,

para recuperar el acceso a mi cuenta
si la he olvidado.

Ejercicio 3 — Acceptance Criteria

Escribe criterios para:

Como usuario quiero eliminar una tarea.
Respuesta orientativa
  • La tarea debe existir.
  • El usuario debe ser propietario o tener permiso.
  • El sistema debe pedir confirmación.
  • Después de eliminarla no aparece en la lista.
  • La operación queda persistida.
  • Si ocurre un error se muestra un mensaje.

Ejercicio 4 — Edge Cases

Para "eliminar tarea", identifica 10 casos problemáticos.

Respuesta
  • Tarea inexistente.
  • Tarea ya eliminada.
  • Usuario sin permisos.
  • Error DB.
  • Conexión perdida.
  • Dos usuarios eliminando simultáneamente.
  • Tarea con dependencias.
  • Tarea bloqueada.
  • Petición duplicada.
  • Usuario desconectado durante la operación.

Ejercicio 5 — Out of Scope

El requisito es:

"Permitir crear proyectos."

Escribe 5 cosas que deberían quedar fuera si no forman parte del requisito.

Respuesta orientativa
  • Aplicación móvil.
  • Sistema de facturación.
  • Chat interno.
  • Integración con Slack.
  • Reestructuración completa de la arquitectura.

12. Challenge avanzado

Convierte una idea en una especificación lista para IA

Idea:

"Quiero una aplicación para gestionar
empleados que están en bench."

Debes producir:

01 — Product Vision

02 — Personas / Actors

03 — Functional Requirements

04 — Non-Functional Requirements

05 — User Stories

06 — Acceptance Criteria

07 — Business Rules

08 — Edge Cases

09 — Security Requirements

10 — Out of Scope

11 — Data Requirements

12 — API Requirements

13 — UX Requirements

14 — Test Scenarios

15 — Final Specification

Regla

No permitas que la IA invente requisitos sin marcarlos. Utiliza:

[CONFIRMAR]

[SUPOSICIÓN]

[DECISIÓN]

[NO DEFINIDO]

Esto es extremadamente importante. La IA tiende a rellenar huecos. Un buen desarrollador aprende a distinguir entre información conocida e información inventada.

13. Test de evaluación

Pregunta 1

¿Qué describe mejor un requisito funcional?

Pregunta 2

¿Cuál es el formato clásico de una User Story?

Pregunta 3

¿Qué problema tiene "la aplicación debe ser rápida"?

Pregunta 4

¿Qué son los Acceptance Criteria?

Pregunta 5

¿Por qué son importantes los Edge Cases?

Pregunta 6

¿Qué significa Out of Scope?

Pregunta 7

¿Qué debería hacer la IA cuando falta información?

Pregunta 8

¿Qué es una Specification?

Pregunta 9

¿Qué debería ocurrir antes de implementar una User Story compleja?

Pregunta 10

¿Cuál es la mejor afirmación?

Pregunta 11

¿Cuál de estos es un requisito no funcional?

Pregunta 12

¿Qué perspectiva es especialmente útil para descubrir casos límite?

Ver respuestas explicadas
  1. 1 — A. Describe comportamiento que el sistema debe proporcionar.
  2. 2 — A. Es el formato clásico de User Story.
  3. 3 — A. "Rápido" debe transformarse en una condición medible.
  4. 4 — A. Permiten determinar objetivamente si se cumple una funcionalidad.
  5. 5 — A. Los Edge Cases cubren situaciones excepcionales.
  6. 6 — A. Define explícitamente qué no forma parte del alcance.
  7. 7 — B. No debemos permitir que la IA convierta una suposición en un requisito.
  8. 8 — A. Es una definición estructurada de lo que debe construirse.
  9. 9 — A. Antes de implementar necesitamos entender qué significa "terminado".
  10. 10 — B. Las decisiones de negocio siguen siendo responsabilidad humana.
  11. 11 — A. Rendimiento es una característica no funcional.
  12. 12 — A. QA aporta una perspectiva especialmente útil para excepciones y validación.

14. Recursos externos

Atlassian — User Stories
Introducción práctica a User Stories y Agile.
Atlassian — Acceptance Criteria
Guía práctica para definir criterios de aceptación.
Agile Alliance — User Stories
Conceptos y terminología Agile.
Agile Alliance — Acceptance Criteria
Definición y contexto profesional.
IBM — Requirements Engineering
Introducción al proceso de ingeniería de requisitos.
IREB — Certified Professional for Requirements Engineering
Referencia internacional sobre Requirements Engineering.
Martin Fowler
Recursos sobre desarrollo profesional, arquitectura y prácticas de ingeniería.
OWASP ASVS
Referencia para requisitos de seguridad verificables.
OpenAPI Specification
Especificación estándar para describir APIs HTTP.

15. Checklist de finalización

16. Autoevaluación

Competencia 1 2 3 4 5
Requirements Engineering ○ ○ ○ ○ ○
User Stories ○ ○ ○ ○ ○
Acceptance Criteria ○ ○ ○ ○ ○
Edge Cases ○ ○ ○ ○ ○
Specifications ○ ○ ○ ○ ○
Uso de IA para análisis ○ ○ ○ ○ ○

17. Conclusión

El cambio de mentalidad de Week 07

NO:

"IA, constrúyeme una aplicación."


SÍ:

"Este es el problema.

Estos son los usuarios.

Estos son los requisitos.

Estas son las reglas.

Estos son los criterios de aceptación.

Estos son los casos límite.

Esto está fuera del alcance.

Esta es la specification.

Ahora analiza cómo implementarlo."

La specification se convierte en el contrato

SPECIFICATION
      ↓
   AGENT
      ↓
IMPLEMENTATION
      ↓
    TESTS
      ↓
VALIDATION
      ↓
   RELEASE

A partir de aquí empezamos a construir un proceso de desarrollo realmente escalable con IA.

Preparación para Week 08

La siguiente semana entraremos en uno de los conceptos más importantes para convertirnos en desarrolladores AI-Native: Context Engineering.

Aprenderemos a construir el contexto que necesita un agente:

  • Project instructions.
  • AI rules.
  • AGENTS.md.
  • CLAUDE.md.
  • Cursor Rules.
  • Repository context.
  • Architecture context.
  • Documentation context.
  • Tool context.
  • Memory.
  • MCP.

Y construiremos un repositorio preparado específicamente para trabajar con agentes.

```