Specifications as the better way of software development
¿Qué es una Specification?
Es una descripción detallada del diseño para hacer (make) algo. Lo importante es que es agnóstica a la implementación: es un contrato que se establece antes de iniciar el desarrollo.
Ejemplos de especificaciones usadas en la industria:
| Especificación | Dominio |
|---|---|
| UML | Modelado de software |
| gRPC / Protocol Buffers | Comunicación entre servicios |
| OpenAPI / Swagger | REST APIs |
| IaC (Terraform, CloudFormation) | Infraestructura |
El problema
El enfoque habitual es code-first: se desarrolla y luego (o nunca) se documenta. El enfoque specification-first invierte el orden: se define el contrato, se valida con stakeholders y recién entonces se empieza a codificar.
Esto resuelve problemas clásicos de la ingeniería de software: malentendidos de requisitos, integraciones rotas, acoplamiento entre equipos.
Solución: go-swagger
Generación del código y la estructura desde la especificación. Usa un archivo YAML y la librería genera todo el resto.
flowchart LR
S["Especificación\n(OpenAPI YAML)"] --> G["go-swagger\n(generador)"]
G --> SC["Código servidor\n(stubs)"]
G --> CC["Código cliente\n(SDK)"]
G --> D["Documentación\nautomática"]