Skip to content
My Guidelines
Guides
In this guide (14 items)

Functional Specification Anatomy

Especificación funcional — anatomía y convenciones

Para qué existe. Define la forma de un documento funcional de módulo: el que lee negocio y operación, el que el cliente firma, y contra el que se mide el cumplimiento. Está destilado de tres especificaciones reales que comparten columna vertebral —abonos SPEI, portal de firmas y ledger— y sirve tanto para escribir una nueva como para evaluar una que llega de fuera.

Cuándo aplica. Un módulo funcional con reglas de negocio que alguien ajeno al equipo tiene que validar y aprobar. No aplica a una decisión puntual —eso es adr.md— ni a la arquitectura de plataforma —eso es arch-doc-spec.md.

Guía compañera: spec-trazabilidad.md — qué se hace con el documento una vez existe: auditar, versionar y repartir lo que falta.


1. Anatomía

Tres bloques antes de la numeración, un núcleo variable y un cierre fijo.

Antes de numerar

BloqueContenidoObligatorio
MetadataComponente · alcance en una línea · entidad · documentos relacionados · última actualizaciónSí
Cómo leer este documentoPara quién es, dónde está cada cosa, y la guía de identificadores (§3)Sí
GlosarioTérminos del dominio que negocio y desarrollo usan distintoRecomendado

Columna vertebral

#SecciónObligatoriaNota
1Resumen ejecutivoSíMedia página. Qué hace el módulo y por qué existe
2Alcance / fuera de alcanceSíLas dos mitades. Ver §4
3Actores y rolesRecomendadaSi no está, la matriz de responsabilidades (§7) se queda sin catálogo y hay que inferirla
4Estados y ciclo de vidaSíDiagrama + tabla de transiciones
5–NNúcleo del dominioSíVariable: por fases del flujo, por requerimientos funcionales, o por conceptos
N+1Requerimientos no funcionalesSíRNF-. Rendimiento, disponibilidad, seguridad, retención
N+2Criterios de aceptaciónSíCA-. Ver §5
N+3Diagramas de flujoRecomendadaExtremo a extremo, sólo lo que está dentro de alcance
N+4Casos de uso e historias de usuarioSíUC- y HU-: el mismo escenario en dos formatos
N+5Matriz de trazabilidadSíVer §6
N+6Matriz de responsabilidadesRecomendadaVer §7
N+7DatosSíEntidades afectadas, catálogos, diccionario de campos
N+8Supuestos de implementaciónSíS-. Ver §8
N+9AnexosSíCatálogos externos, ficheros fuente con su nombre exacto

Las dos que más se omiten son las dos que más cuestan después: sin matriz de trazabilidad no se puede auditar, y sin casos de uso no se puede probar. De las tres specs destiladas, la del ledger no tiene ninguna de las dos — y es justo la que sigue sin código.

El núcleo se organiza como el dominio pida. Si el flujo tiene fases con dueños distintos, organizarlo por fases: eso hace que el reparto por dueño salga solo cuando haya que auditarlo.


2. Bloque de metadatos

## Metadata
- **Componente**: <sistema y subsistema al que pertenece>
- **Alcance**: <una línea, con la frontera explícita: hasta dónde llega>
- **Entidad**: <la organización, con su identificador regulatorio si lo tiene>
- **Documentos relacionados**: <otros funcionales, por nombre corto>
- **Última actualización**: <AAAA-MM-DD>

El campo Alcance dice hasta dónde llega, no de qué trata. “abono SPEI tipo 1, extremo a extremo, hasta la frontera Rechazada” informa; “el proceso de abonos” no.


3. Guía de identificadores — la tabla que no es opcional

Toda spec abre con una tabla de prefijos, con una columna en lenguaje llano:

PrefijoQué identificaEn palabras simples
RF-<CTX>-XXRequisito funcionalAlgo concreto que el sistema debe hacer
RNF-<CTX>-XXRequisito no funcionalUna cualidad del sistema, no una acción puntual
CA-<CTX>-XXCriterio de aceptaciónCómo se comprueba que un requisito quedó bien implementado
UC-<CTX>-XXCaso de usoUn escenario completo, contado como historia
HU-<CTX>-XXHistoria de usuarioEl mismo escenario, en formato “como / quiero / para”
S-XXSupuesto de implementaciónUna definición que se adopta porque aún no está cerrada

<CTX> son dos o tres letras del módulo (AB abonos, PF portal de firmas). Las secuencias propias del dominio —pasos de un pipeline, filas de un catálogo de resultados— se definen en la misma tabla.

La columna «en palabras simples» es el corazón de la convención. Un identificador sin su referente no informa a nadie; la tabla es lo que lo evita en el documento, y la misma regla aplica después en los tickets y en el daily.

Identificadores estables

Nunca se renumera. Al insertar un requisito entre dos existentes se añade sufijo de letra: RF-AB-02a, CA-AB-05a, RF-AB-05b. Renumerar invalida todas las citas en código, tests, commits, ADR y matrices de cobertura.

Un identificador retirado no se reutiliza. Su número muere con él.

La trampa: cambio de significado sin cambio de nombre

S-05 era el contrato de respuesta en la v19 de abonos y es la ventana de retención del duplicado en la v20. Mismo nombre, otra cosa. Cuando se publica una versión nueva, el documento dice explícitamente qué identificadores cambiaron de significado, aunque no cambien de nombre. Sin eso, quien audita lee mal y no se entera.


4. Alcance y fuera de alcance

Las dos mitades, siempre. El fuera de alcance es la mitad que evita el trabajo que nadie pidió, y se escribe con el motivo:

- Devoluciones y retornos: quedan fuera de v1. Sus causas viven en un catálogo aparte que esta
versión no usa.

Si una regla del documento cita un catálogo o un flujo que está fuera de alcance, dilo donde lo citas. Es donde el lector va a dudar.


5. Criterios de aceptación

Formato: casilla, identificador en negrita, y el paso del pipeline entre paréntesis si lo tiene.

- [ ] **CA-AB-12** (V8): con el mismo hash de payload ya usado y vigente dentro de la ventana de
retención (S-05), el resultado tiene `codigo`=**2030**, `descripcion`="Deposito duplicado."
(HTTP 400).

Qué lo hace verificable:

PiezaPor qué
Casilla - [ ]Greppable. Es lo que permite contar y auditar
Condición previa concreta”con el mismo hash… dentro de la ventana”, no “en caso de duplicado”
Resultado observable, con valores literalesCódigos, descripciones exactas, estado HTTP. Se convierte en test sin traducir
Referencia al supuesto o requisito(S-05), (RF-AB-07). Cierra el círculo con la trazabilidad

Agrupa por fase o por etapa del flujo. El orden del pipeline es él mismo un criterio —cuál falla primero cuando fallan varios— y se escribe aparte.

Mal: “el sistema debe ser idempotente”. No se puede verificar sin volver a preguntar qué significa.


6. Matriz de trazabilidad

Una fila por RF y por RNF:

IDSecciónFaseDiagrama / Caso de usoOrigen / FuenteCA relacionados
RF-AB-074.2Fase 110 · UC-AB-02Catálogo de campos (…xlsx, hoja “Campos TP=1”, §15.1)CA-AB-05
RF-AB-064.2Fase 110Decisión de arquitectura de la consultora (config-as-data)CA-AB-03, CA-AB-18

La columna Origen / Fuente es la que casi nadie pone y la que más vale. Distingue cuatro procedencias que se tratan distinto:

OrigenQué implica
Contrato con un terceroNo es negociable. Cambiarlo es renegociar
Catálogo o fichero externoSe cita con su nombre exacto y su hoja. Si el fichero cambia, el requisito cambia
Regla de negocio del clienteNegociable con el cliente, no con nosotros
Decisión de diseño nuestraLa única que podemos cambiar solos. Suele merecer ADR

Sin esta columna, seis meses después nadie sabe si un requisito raro lo pidió el cliente o nos lo inventamos.


7. Matriz de responsabilidades

Por sección completa, no por requisito: quién solicita, quién valida, quién aprueba.

SecciónSolicitaValidaAprueba
4. Fase 1: recepción y validaciónCliente (Operaciones + Cumplimiento)Consultora (desarrollo) + SeguridadCliente (Operaciones)
8. Requerimientos no funcionalesCliente (Infraestructura / Seguridad)Consultora (arquitectura)Cliente (Infraestructura)

Dos reglas:

  • Si las áreas se infirieron del contenido en vez de salir de un catálogo de roles acordado, el documento lo dice y lo marca como pendiente de confirmar. Una matriz inferida que se presenta como acordada es peor que no tenerla.
  • Esta matriz es la fuente de autoridad sobre quién decide qué. Cuando después haya que repartir huecos por dueño, se cita, no se reinventa.

8. Supuestos de implementación

S-XX: una definición que la versión adopta porque aún no está cerrada formalmente con el cliente. Explícitos, numerados y con su condición de revisión.

- **S-05**: la ventana de retención del hash de duplicados es de N días. Valor pendiente de
confirmar con el cliente; si cambia la definición, se revisa este supuesto y los criterios que
lo citan (CA-AB-12, CA-AB-14).

Un supuesto que nadie cita desde ningún criterio probablemente no hacía falta. Un supuesto citado por tres criterios es un riesgo concentrado: si cae, caen los tres.

Un supuesto no es un bloqueo. El supuesto permite avanzar con una definición provisional; el bloqueo (B-) impide avanzar. Confundirlos hace que el equipo se pare donde podía seguir, o siga donde debía parar.


9. Anti-patrones

No hagasHaz
Publicar sin guía de identificadoresLa tabla de prefijos, con la columna en lenguaje llano
Renumerar al insertar un requisitoSufijo de letra: CA-AB-05a
Reutilizar el número de un identificador retiradoMuere con él
Cambiar el significado de un id sin avisarloDecirlo explícitamente en la versión nueva
Criterios tipo “debe funcionar correctamente”Condición previa concreta + resultado observable con valores literales
Matriz de trazabilidad sin columna de origenSin ella nadie sabe qué es negociable
Citar un catálogo externo sin nombre de fichero y hojaNombre exacto, en anexos
Matriz de responsabilidades inferida presentada como acordadaMarcarla como pendiente de confirmar
Omitir el “fuera de alcance”Es la mitad que evita el trabajo que nadie pidió
Mezclar supuesto (S-) con bloqueo (B-)El supuesto deja avanzar; el bloqueo no

10. Checklist antes de circular

  • Metadata completa, con el alcance como frontera, no como tema
  • Guía de identificadores, con columna en lenguaje llano
  • Alcance y fuera de alcance, cada exclusión con su motivo
  • Estados y ciclo de vida, con tabla de transiciones
  • Cada CA es verificable sin preguntar nada: condición, resultado, valores literales
  • Cada RF/RNF aparece en la matriz de trazabilidad, con origen y CA que lo prueban
  • Cada UC tiene su HU y viceversa
  • Cada S- dice qué lo revisa y qué criterios caen con él
  • Ningún identificador renumerado respecto de la versión anterior
  • Los que cambiaron de significado sin cambiar de nombre están señalados
  • Catálogos externos citados con nombre de fichero y hoja, listados en anexos