Al terminar esta lección
- Clasificar una frase del cliente como objetivo, requerimiento funcional, regla de negocio, restricción, requisito no funcional o mecanismo heredado del proceso actual.
- Reescribir un requerimiento vago como un enunciado refutable, con condición, respuesta y efectos observables.
- Convertir un adjetivo ("rápido", "seguro") en un NFR con estímulo, entorno, respuesta y medida.
- Trazar una frontera IN, OUT y BLOCKED donde cada decisión nombra su razón, lo que falta y quién lo resuelve.
- Verificar la trazabilidad de un requerimiento hasta su evidencia de origen y hasta la prueba que lo defendería.
4. Convertir evidencia en requerimientos sin copiar el proceso actual
Comprender el negocio no obliga a digitalizarlo tal como está. En los módulos anteriores acumulaste episodios, reglas candidatas y desconocidos sobre Nexo B2B. Ahora tenés que decidir qué problema va a resolver el software, qué decisiones siguen siendo humanas y qué restricciones no son negociables.
El riesgo de este paso es doble. Si copiás el proceso, construís una versión digital del desorden: el pedido que hoy se reescribe tres veces pasa a reescribirse tres veces en una pantalla. Si te saltás la evidencia, construís lo que alguien pidió con más énfasis. En los dos casos el requerimiento no tiene un problema detrás, y eso se nota recién cuando el equipo de desarrollo hace preguntas que nadie puede contestar.
Esta lección te da el vocabulario y los criterios para evitarlo. La lección 4.2 los aplica al caso Nexo con artefactos completos y la 4.3 te hace producir los tuyos.
4.1 Cinco cosas que suelen mezclarse y conviene separar
Una frase de un cliente casi nunca es una sola cosa. "Que el sistema controle el crédito" contiene un objetivo, una regla, un comportamiento, una cualidad y una restricción, todo junto. Si no las separás, cada una se escribe, se prueba y se cambia a un ritmo distinto, y las vas a tener que pelear en un solo renglón.
Para cada una de las cinco tenés que poder responder: qué problema resuelve separarla, cómo se define de forma operativa, cómo se ve en Nexo, qué antipatrón aparece y cómo se verifica.
Objetivo de negocio
Problema que resuelve. Sin objetivo no hay manera de decidir si un requerimiento vale la pena ni de saber si el proyecto funcionó. Los features compiten entre sí por tiempo, y el único árbitro es lo que la empresa quiere mejorar.
Definición operativa. Un resultado que la empresa puede observar, medido sobre algo que ya existe. Se escribe como cambio en una magnitud ("bajar", "evitar", "reducir") y nombra qué se mide, no qué se construye.
En Nexo. Reducir el tiempo entre que llega un pedido y que alguien sabe si puede confirmarse (confirmado, pendiente de autorización o rechazado con motivo). La línea base sale de episodios reales: el pedido 48231, que llegó por audio con 12 productos, tardó de 08:47 a 09:51 en quedar resuelto, con siete minutos de identificación, cinco de autorización y trece de quiebre de stock. En este módulo, "confirmado" como estado significa CONFIRMADO_COMERCIAL (el pedido pasó crédito); la colisión con el "confirmado" de depósito se cierra en el modelo de estados.
Antipatrón. "Tener un portal." Es una solución, no un resultado. Tampoco sirve "mejorar la experiencia": no dice cuánto, medido dónde.
Cómo se verifica. Podés escribir cómo lo medirías hoy, antes de construir nada. Si no existe una forma de medir la línea base, todavía no tenés un objetivo: tenés un deseo.
Requerimiento funcional (RF)
Problema que resuelve. Traduce el objetivo en algo que alguien pueda construir y alguien pueda refutar.
Definición operativa. Un comportamiento que el sistema ofrece en una condición dada, con una respuesta y efectos observables. Contribuye a un objetivo y se apoya en reglas, pero no es la regla.
En Nexo. "Al confirmar un pedido, el sistema evalúa la exposición de crédito del cliente y devuelve aprobado, requiere autorización o rechazado, según las reglas vigentes."
Antipatrón. Convertir un paso del proceso actual en un RF: "imprimir el pedido para llevarlo a depósito" se vuelve RF-17 Imprimir pedido. Lo que importa es el propósito (que depósito reciba y priorice pedidos confirmados), no el papel.
Cómo se verifica. Podés imaginar un caso que lo contradiga. Si no se te ocurre ninguno, el enunciado es demasiado vago.
Regla de negocio (RN)
Problema que resuelve. Saca de las cabezas y de los audios las condiciones que gobiernan una decisión, para que no se redescubran en cada conversación ni dependan de quién atienda.
Definición operativa. Una condición que gobierna una decisión de negocio, exista o no software. Tiene una frontera concreta y un estado de validación.
En Nexo. RN-01: un cliente ESTÁNDAR no puede confirmar si saldoDeudor más totalPedido supera limiteCredito; igual al límite está permitido y un centavo más bloquea. Existe aunque Nexo no tenga sistema: Laura, de administración, ya la aplica a mano mirando el PDF de saldos y la planilla de cheques. Está confirmada (la confirma Laura, que tiene la autoridad de crédito), aunque qué entra exactamente en saldoDeudor, es decir, la definición de exposición, sigue abierto (U-01).
Antipatrón. Dejar la regla dentro del RF ("bloquear pedidos que exceden el límite"). Cuando la política cambie, hay que reescribir la intención del caso de uso. Peor: escribir la regla con precisión que nadie confirmó. RN-02 (tolerancia de los clientes PLATINO) está BLOCKED porque nadie sabe todavía cuánto es "poco"; escribir un porcentaje inventado la convierte en mentira con aspecto de regla.
Cómo se verifica. Una regla tiene fuente (quién la dice), frontera (ejemplo en el borde) y estado (confirmada, a validar, BLOCKED). Si le falta alguna, no está lista para respaldar un RF.
Restricción
Problema que resuelve. Evita diseñar contra un límite que el equipo no puede mover y gastar tiempo discutiendo cosas decididas.
Definición operativa. Un límite impuesto por el entorno, la regulación, el presupuesto, la tecnología existente o un contrato. No se negocia dentro del proyecto; se acepta y se diseña alrededor.
En Nexo. Durante la primera etapa el ERP legacy sigue siendo el maestro de productos, clientes y listas base; el proveedor fiscal es externo; el equipo es chico. Nada de eso se prueba con un test de aceptación: condiciona qué alternativas son viables.
Antipatrón. Presentar una preferencia como restricción ("tiene que ser en la nube porque sí") o una restricción como si fuera un RF ("el sistema debe usar el ERP").
Cómo se verifica. Preguntá quién puede levantarla y cuánto costaría. Si nadie del proyecto puede levantarla, es restricción; si alguien puede, es decisión pendiente.
Requisito no funcional (NFR)
Problema que resuelve. Captura cómo puede fallar el negocio aunque cada función exista: concurrencia, lentitud, falta de trazabilidad, acceso indebido, falla de un tercero. Estas propiedades suelen forzar la arquitectura mucho más que cualquier pantalla.
Definición operativa. Una cualidad verificable del comportamiento, escrita como escenario con medida. Aplica al sistema entero o a un caso de uso concreto.
En Nexo. NFR-02: toda autorización de sobregiro conserva actor, instante, regla aplicada, pedido y motivo durante el período acordado.
Antipatrón. Un adjetivo ("rápido", "seguro", "escalable"). No guía el diseño ni la prueba.
Cómo se verifica. Tiene estímulo, entorno, respuesta y medida. Con eso podés escribir una prueba o definir una observación.
La distinción evita errores muy comunes: convertir "hoy imprimimos una hoja" en un requisito funcional o escribir "ser rápido" como NFR. El primero es un accidente del proceso actual y el segundo no se puede verificar. El software tiene que preservar intención y restricciones, no rituales.
Una misma frase, mal separada y bien separada
"RF-03: el sistema bloquea los pedidos que superan el límite de crédito, rápido y con auditoría, usando los saldos del ERP."
Un solo renglón con una regla (bloquear, sin distinguir categorías de cliente), una cualidad vaga (rápido), una exigencia de auditoría sin medida y una restricción tecnológica. No se puede probar ni cambiar una parte sin tocar las demás.
- Objetivo: que cada pedido llegue a una decisión observable sin ida y vuelta con administración.
- RN-01 y RN-02: la regla para ESTÁNDAR (confirmada) y para PLATINO (BLOCKED en su tolerancia).
- RF: evaluar exposición y devolver aprobado, requiere autorización o rechazado según la RN vigente.
- NFR-02: toda autorización conserva actor, instante, regla, pedido y motivo.
- Restricción: los saldos provienen del ERP durante la etapa 1.
Cada pieza tiene dueño, fuente y forma de verificarse.
Primera interacción: ¿qué es cada frase?
Clasificá cada frase
Elegí la categoría que mejor describe cada frase. Fijate en qué pregunta responde: qué se quiere lograr, qué hace el sistema, qué gobierna una decisión, qué no se puede mover, cómo debe comportarse o cómo se hace hoy.
Reducir el tiempo entre que llega un pedido y que alguien sabe si puede confirmarse.
Al confirmar un pedido, el sistema evalúa la exposición de crédito y devuelve aprobado, requiere autorización o rechazado.
Un cliente ESTÁNDAR no puede confirmar si saldoDeudor más totalPedido supera limiteCredito.
Los maestros de productos y clientes siguen viviendo en el ERP legacy durante la primera etapa.
Toda autorización de sobregiro conserva actor, instante, regla aplicada, pedido y motivo.
Imprimir el pedido y llevarlo a depósito.
La emisión del comprobante la hace un proveedor fiscal externo.
Una reserva nunca puede dejar el disponible de un SKU en un depósito por debajo de cero.
Reducir los pedidos que salen con precio incorrecto.
El p95 del registro de pedido es menor a 800 ms con 30 usuarios concurrentes.
4.2 La frontera IN / OUT / BLOCKED
Antes de enumerar features, escribí la frontera. Es la decisión que más trabajo ahorra y la que más se posterga.
- IN: el proyecto se compromete a resolverlo ahora.
- OUT: deliberadamente no entra en este release.
- BLOCKED: podría entrar, pero falta evidencia o una decisión externa.
BLOCKED no es una forma elegante de decir "algún día". Tiene que decir exactamente qué falta y quién puede resolverlo; si no, es un OUT disfrazado o un IN con una trampa adentro.
Cómo se decide
Cada candidato recorre las mismas preguntas. La frontera sale de responderlas con evidencia, no de una votación.
La frontera inicial de Nexo
La tabla siguiente es la frontera de partida del primer slice. Fijate que cada fila tiene una razón concreta y que el único BLOCKED nombra qué le falta.
| Tema | Estado | Razón |
|---|---|---|
| Registro de pedido mayorista | IN | Dolor central, reglas conocidas y slice con valor observable. |
| Cálculo de precio autorizado | IN | Evita errores y define la autoridad del dato. |
| Evaluación de crédito | IN | Condiciona la confirmación y requiere auditoría. |
| Reserva concurrente de stock | IN | Evita la promesa duplicada. El TTL de la reserva (RN-07) queda parametrizado y BLOCKED hasta validar. |
| Facturación electrónica | OUT | La emisión real es una integración posterior. El primer release solo deja el pedido marcado "pendiente de facturación". |
| Motor de recomendaciones con IA | OUT | No existe un problema priorizado que lo justifique. |
| Devoluciones complejas | BLOCKED | Faltan políticas y volumen. No debe contaminar el primer slice. |
| Reemplazo total del ERP | OUT | El ERP seguirá siendo la fuente de maestros durante la primera etapa. |
La facturación merece una nota. Parece natural incluirla porque "al final hay que facturar", pero el dolor que motivó el proyecto está antes: la decisión sobre el pedido. Mantenerla OUT no significa ignorarla: el pedido confirmado queda marcado como pendiente de facturación para que la integración posterior tenga de dónde colgarse.
Cada decisión como artefacto
Una tabla en una presentación se olvida. Una frontera que vive en el repositorio se discute, se versiona y se reabre con una condición explícita. Este es el formato que usamos:
release: nexo-release-1
objective: "Reducir el tiempo entre recepción de un pedido y una decisión observable."
items:
- id: reserva-concurrente
state: IN
reason: "Evita prometer dos veces la misma unidad (EV-05)."
exit_criteria: "Con una unidad disponible y dos reservas simultáneas, exactamente una confirma."
note: "El TTL de la reserva en espera depende de RN-07, que está BLOCKED."
- id: reserva-expirable
state: BLOCKED
missing: "Cuánto tiempo puede esperar una reserva sin autorización firme."
needed_from: "Depósito (Sergio) y comercial."
resolves_by: "medición en la primera semana de operación del release."
meanwhile: "El TTL queda como parámetro; no se fija valor definitivo."
- id: recomendaciones-ia
state: OUT
reason: "Ningún episodio observado muestra que la falta de recomendaciones retrase o rompa un pedido."
reopen_when: "Existe una métrica de venta cruzada con línea base y un responsable comercial."
Los tres tienen la misma forma, pero cada estado exige campos distintos. IN pide criterio de salida; BLOCKED pide qué falta, quién y cuándo; OUT pide el motivo y la condición de reapertura. Si un ítem no puede completar sus campos, está en el estado equivocado.
Un BLOCKED débil y uno defendible
"Reserva con expiración: BLOCKED, pendiente de definir."
No dice qué falta ni quién resuelve. Se convierte en una promesa de cosas que "se ven más adelante" y el equipo termina decidiendo el valor por su cuenta cuando llega el momento de programarlo.
"Reserva con expiración: BLOCKED. Falta saber cuánto tiempo puede esperar una reserva en espera de autorización. Lo resuelven depósito y comercial con datos de la primera semana (pedidos pendientes y demora de autorizaciones). Hasta entonces el TTL es un parámetro y el diseño no asume un valor."
Localiza la incertidumbre, nombra responsables y evita que el valor se cuele en el código.
Segunda interacción: ubicá cada tema en la frontera
IN, OUT o BLOCKED
Clasificá cada tema para el primer release de Nexo. Pensá si falta una decisión externa (BLOCKED) o si deliberadamente no entra (OUT).
Registrar un pedido mayorista con precio autorizado.
Motor de recomendaciones de productos con IA.
Política de expiración de las reservas en espera de autorización.
Reemplazar el ERP por un sistema propio.
Devoluciones con reglas especiales por tipo de producto.
Sugerir sustitutos automáticamente cuando falta una marca.
Evaluar el crédito de un cliente ESTÁNDAR al confirmar.
Chatbot que toma pedidos por WhatsApp.
4.3 Requerimientos que pueden ser refutados
Un buen requerimiento permite imaginar una prueba que lo contradiga. Eso es lo que se llama refutable, y es la propiedad que separa una especificación de un deseo.
"El sistema debe controlar el crédito" no es refutable: ¿qué resultado lo contradiría? "Al intentar confirmar un pedido para un cliente estándar, si saldoDeudor más total supera limiteCredito, el sistema no confirma, no reserva stock y explica que se requiere regularizar saldo" sí lo es. Tiene una condición, una respuesta y efectos observables, incluido un efecto negativo (no reserva). Es una versión inicial: la vía de autorización para ESTÁNDAR se revisa en el módulo 5.
Una plantilla simple que alcanza para la mayoría de los RF:
Cuando [actor/condición], el sistema [respuesta observable],
[y deja/no deja] [efecto verificable en datos o estado],
según [RN/CU de referencia].
Aplicada a RN-01 con su frontera:
- id: RF-04
text: >
Al confirmar un pedido de un cliente ESTÁNDAR, si saldoDeudor más totalPedido
supera limiteCredito, el sistema no confirma, no reserva stock y devuelve el
motivo "crédito".
rules: [RN-01]
sources: ["minuta de la reunión 1 (Laura, pantalla compartida)"]
objective: "decision-observable"
refutation:
- "saldo + pedido == límite: debe permitir (frontera de RN-01)"
- "saldo + pedido == límite + 0,01: debe bloquear y no dejar reservas"
Fijate en el campo refutation. Obligarte a escribir cómo se lo contradiría es la forma más barata de descubrir que el requerimiento no dice lo suficiente. Y esos dos casos de frontera son, tal cual, los futuros tests de RN-01.
Si la respuesta exacta depende de una regla no cerrada, esa dependencia se referencia en lugar de inventarse. Por eso el RF de más arriba cita RN-01 (versión inicial; la vía de autorización para ESTÁNDAR se revisa en el módulo 5), y el equivalente para PLATINO diría "según RN-02 (BLOCKED)" en lugar de poner un porcentaje.
Tercera interacción: encontrá los requerimientos defectuosos
Este fragmento de catálogo tiene cuatro renglones con problemas distintos: un adjetivo, un mecanismo heredado, una regla hardcodeada que contradice una RN y una promesa sin condición medible. Marcalos.
¿Qué requerimientos no sobreviven a una revisión?
Hacé clic en las líneas con el defecto. Cada defecto está en una sola línea.
4.4 NFR: de adjetivos a escenarios medibles
Los NFR limitan las alternativas de diseño y pueden aplicar a todo el sistema o a casos de uso concretos. Un NFR útil tiene métrica, contexto y umbral. "Debe ser rápido" no guía el diseño ni la prueba. Esto sí:
El p95 del registro de pedido, con la emisión fiscal fuera del camino, debe ser menor a 800 ms con 30 usuarios concurrentes en la carga acordada.
Usamos 30 usuarios porque Nexo tiene unos treinta usuarios internos (los 25 vendedores más administración y depósito), con los vendedores trabajando en horario pico. Son cifras del caso, no de un contrato real: lo importante es que el escenario nombra su carga, y que quien lo lea sepa contra qué lo va a medir.
Anatomía de un escenario de calidad
Una forma probada de escribir NFR es el escenario de calidad (lo describen, entre otros, Bass, Clements y Kazman en Software Architecture in Practice). Tiene cinco partes:
| Parte | Pregunta | Ejemplo en NFR-01 |
|---|---|---|
| Estímulo | ¿Qué ocurre? | Un vendedor confirma un pedido de hasta 50 líneas. |
| Entorno | ¿En qué condiciones? | Horario pico, 30 usuarios concurrentes, dataset de producción representativo. |
| Respuesta | ¿Qué hace el sistema? | Devuelve número, estado y totales. |
| Medida | ¿Cómo sé que alcanza? | p95 menor a 800 ms. |
| Estado | ¿Qué tan firme es el umbral? | Propuesto: se valida con prototipo antes de comprometerlo. |
El último renglón no es un adorno. El 800 es un umbral acordado como punto de partida; el equipo no lo promete hasta medir en el prototipo. Escribir el estado evita que una cifra inicial se convierta en contrato por inercia.
- id: NFR-01
quality: latencia
stimulus: "un vendedor confirma un pedido de hasta 50 líneas"
environment: "horario pico, 30 usuarios concurrentes, dataset de producción representativo"
response: "el sistema devuelve número, estado y totales"
measure: "p95 < 800 ms"
status: "umbral propuesto; se valida con prototipo"
why: "evita que los vendedores vuelvan a WhatsApp por lentitud"
- id: NFR-02
quality: auditoría
stimulus: "una persona autoriza un sobregiro"
environment: "cualquier momento"
response: "se conserva actor, instante, regla aplicada, pedido y motivo"
measure: "100% de las autorizaciones con los cinco campos, durante el período acordado"
status: "período de retención por acordar con administración"
why: "permite explicar decisiones y resolver disputas"
Los cuatro NFR de partida
| NFR | Escenario verificable | Por qué importa |
|---|---|---|
| NFR-01 Latencia | El p95 del registro de pedido es menor a 800 ms con 30 usuarios concurrentes, en la carga acordada. | Evita que los vendedores vuelvan a WhatsApp por lentitud. |
| NFR-02 Auditoría | Toda autorización de sobregiro conserva actor, instante, regla aplicada, pedido y motivo durante el período acordado. | Permite explicar decisiones y resolver disputas. |
| NFR-03 Seguridad | Un vendedor solo puede operar clientes de su cartera salvo permiso explícito; todo intento denegado queda auditado. | Reduce exposición y errores de contexto. |
| NFR-04 Recuperación | Una falla del proveedor fiscal después del commit no duplica pedido ni comprobante al reintentar. | Protege la integridad bajo fallos externos. |
NFR-04 merece una aclaración: la emisión real de comprobantes es OUT del primer release, así que el escenario se verifica contra un simulador del proveedor (un fake) que falla a pedido. Lo que se protege es el contrato: el pedido ya confirmado permanece válido y la intención de facturar se puede reintentar sin duplicarse.
De dónde salen los NFR
Los NFR no se copian de una lista estándar. Salen de cómo puede fallar este negocio en esta operación:
- Latencia importa distinto si 25 vendedores trabajan de 8 a 18 que si hubiera un portal 24/7. Por eso se mide en horario pico.
- Auditoría aparece porque hay autorizaciones por audio que "no están escritas, más o menos sabemos" quién puede dar. El daño de no tenerla es no poder explicar un sobregiro.
- Seguridad aparece por la cartera de clientes: un vendedor no debería ver ni operar la de otro.
- Recuperación aparece porque hay un tercero (el proveedor fiscal) que va a fallar en algún momento.
Si no podés explicar el daño de incumplir un NFR, probablemente no es prioritario. Y si el adjetivo es lo único que tenés, volvé a preguntar qué demora o qué falla interrumpe el trabajo.
El mismo pedido de la dueña, antes y después de preguntar
"El portal tiene que volar."
No dice qué operación, con cuánta gente, medida cómo. Cualquier implementación lo cumple o lo incumple según el humor de quien lo mira.
NFR-01: al confirmar un pedido de hasta 50 líneas, en horario pico con 30 usuarios concurrentes, el p95 del registro es menor a 800 ms. Umbral propuesto, a validar con prototipo.
Se puede escribir una prueba de carga, discutir el número y decidir qué arquitectura lo sostiene.
Cuarta interacción: reescribí un adjetivo
Del adjetivo al escenario
Un vendedor te dice: 'el buscador del catálogo tiene que ser rápido, si no vuelvo a pedir por WhatsApp'. Reescribilo como un NFR verificable con estímulo, entorno, respuesta y medida. Si no sabés el umbral, marcalo como propuesto y decí cómo lo validarías.
4.5 Trazabilidad ligera: cada decisión debe poder volver a su origen
No necesitás una matriz gigantesca para cada proyecto. Sí necesitás poder responder, ante una regla crítica, de dónde salió, qué comportamiento afecta y cómo se prueba. La trazabilidad puede vivir en IDs y enlaces simples. Lo importante es que un cambio no obligue a confiar en la memoria del equipo.

Un ejemplo concreto de cadena para el crédito de un cliente ESTÁNDAR:
Si la cadena se corta, la información se cae:
- Un RF sin evidencia ni regla es un requerimiento huérfano: lo pidió alguien, pero nadie sabe por qué.
- Una RN sin RF que la use es una regla que el sistema no aplica.
- Un RF sin prueba posible es un deseo.
Un linter que revisa lo que se puede revisar
La parte mecánica de la trazabilidad se puede automatizar con muy poco código. Si el catálogo de requerimientos vive en YAML, un script detecta huérfanos, adjetivos y vocabulario de interfaz antes de que alguien lo lea. No reemplaza la revisión humana: ahorra la parte aburrida.
import { readFileSync } from "node:fs";
import { parse } from "yaml";
type Requirement = {
id: string;
text: string;
rules?: string[];
sources?: string[];
objective?: string;
refutation?: string[];
};
const VAGUE =
/(?<!\p{L})(rápid[oa]s?|fácil(?:es)?|amigable|intuitiv[oa]|robust[oa]|escalable|flexible|moderno|óptim[oa]|en tiempo real)(?!\p{L})/iu;
const UI_WORDS = /(?<!\p{L})(botón|pantalla|modal|menú|dropdown|clic|click)(?!\p{L})/iu;
export function lint(reqs: Requirement[]): string[] {
const problems: string[] = [];
for (const r of reqs) {
if (!r.sources?.length && !r.rules?.length) {
problems.push(`${r.id}: huérfano, no cita evidencia ni regla`);
}
if (!r.objective) problems.push(`${r.id}: no apunta a un objetivo`);
const vague = VAGUE.exec(r.text);
if (vague) problems.push(`${r.id}: adjetivo no medible ("${vague[1]}")`);
const ui = UI_WORDS.exec(r.text);
if (ui) problems.push(`${r.id}: vocabulario de interfaz ("${ui[1]}"), ¿es parte del contrato?`);
if (!r.refutation?.length) problems.push(`${r.id}: no dice cómo se lo contradiría`);
}
return problems;
}
const file = process.argv[2] ?? "requirements/rf.yaml";
const problems = lint(parse(readFileSync(file, "utf8")) as Requirement[]);
problems.forEach((p) => console.error(p));
process.exit(problems.length ? 1 : 0);
Cuidado con lo que no hace: no sabe si un requerimiento es correcto, solo si es revisable. Un RF puede pasar el linter y estar equivocado. Lo vamos a usar en el taller como primera barrera, antes de la revisión con un compañero o con un agente.
Quinta interacción: ordená la cadena de derivación
Ordená la derivación de un requerimiento
Ordená de arriba hacia abajo la cadena que justifica un requerimiento defendible.
- Posición 1 de 5: Objetivo de negocio medible que ese problema afecta
- Posición 2 de 5: Criterio de aceptación que permite refutarlo
- Posición 3 de 5: Regla o restricción que gobierna la decisión
- Posición 4 de 5: Comportamiento que el sistema debe ofrecer
- Posición 5 de 5: Problema o riesgo observado en un episodio (evidencia)
Qué puede hacer el agente: auditar consistencia entre requerimientos y reglas, proponer escenarios de frontera, detectar adjetivos no medibles, buscar duplicados y contradicciones, y señalar qué requerimientos parecen decisiones de diseño disfrazadas.
Qué no debe decidir: priorizar por valor comercial sin contexto, declarar OUT algo que el cliente necesita, o convertir un desconocido en un número.
Contexto mínimo útil: catálogo de evidencia (EV), objetivos, RN con su estado, glosario y desconocidos, NFR y la frontera actual. Sin eso el agente rellena con generalidades.
Cómo verificar: cada requerimiento propuesto debe citar RN, EV u objetivo. Si no puede trazarse, vuelve a candidato.
Un prompt que funciona razonablemente para la primera revisión:
Rol: revisor de requerimientos. No agregues requerimientos nuevos.
Contexto:
- Objetivo: reducir el tiempo entre recepción de un pedido y una decisión observable.
- Reglas: RN-01 a RN-07 con su estado (adjuntas). RN-01 confirmada (la definición de
exposición sigue abierta, U-01); RN-02 BLOCKED (tolerancia PLATINO sin definir);
RN-03, RN-05, RN-06 y RN-07 son invariantes o políticas del sistema futuro derivadas
del negocio, no reglas del proceso actual (RN-07 está BLOCKED).
- Glosario y desconocidos de la entrega E03 (adjuntos).
- Evidencia: EV-01 a EV-08 (adjunta).
- Frontera: IN/OUT/BLOCKED (adjunta).
- Catálogo a revisar: requirements/rf.yaml y requirements/nfr.yaml.
Tarea: para cada requerimiento devolvé una tabla con:
1. ¿Es refutable? Escribí un caso que lo contradiga o decí por qué no existe.
2. ¿Mezcla política con mecanismo? Citá la frase.
3. ¿Contiene adjetivos sin medida? Citá la palabra.
4. ¿Cita al menos una RN o EV existente? Si inventa un ID, marcalo.
Restricciones: no propongas números donde la regla esté BLOCKED. Si falta información,
escribí "falta: ..." en lugar de suponer.
Cómo revisar la salida. Tres controles antes de aceptar nada:
- Los IDs que menciona existen en tu catálogo (los agentes inventan
EV-14con total confianza). - Ningún "caso que lo contradiga" asume una regla que está BLOCKED.
- Cada observación que aceptás la podés defender con una frase tuya; si no, la descartás aunque suene razonable.
Errores frecuentes
| Síntoma | Causa | Corrección |
|---|---|---|
| El RF dice "el sistema debe bloquear pedidos que exceden el límite" y el cliente PLATINO queda mal tratado. | La regla se escribió dentro del requerimiento y sin distinguir categorías. | Dejar el RF como capacidad (evaluar y derivar) y mover la política a RN-01 y RN-02, con RN-02 BLOCKED. |
| Hay un RF que dice "imprimir el pedido". | Se copió un paso del proceso actual sin preguntar su propósito. | Preguntar para qué sirve el papel (cola de preparación) y expresar ese propósito. El mecanismo queda abierto. |
| El NFR dice "alta disponibilidad". | Se tomó una lista estándar de atributos sin mirar la operación. | Escribir el escenario: quién, cuándo, qué falla, cuánto daño. Si no hay daño explicable, descartarlo. |
| Un BLOCKED lleva meses sin cambios. | No se registró qué falta ni quién lo resuelve. | Completar missing, needed_from y resolves_by; si no hay responsable, pasarlo a OUT con condición de reapertura. |
| El NFR de latencia fija 800 ms como compromiso. | El estado "propuesto" se perdió al copiar el número a otro documento. | Mantener el campo status y revisar el umbral con el prototipo antes de comunicar la cifra. |
| El agente "completó" el catálogo con 20 requerimientos nuevos. | El prompt pedía ideas, no revisión; no tenía fronteras claras. | Pedir revisión sobre un catálogo existente y rechazar todo lo que no cite RN o EV. |
Repaso del vocabulario
Vocabulario del módulo 4
Frente
Objetivo de negocio
Comprobá lo que entendiste
La dueña dice: 'quiero ver el stock en tiempo real'. ¿Cuál es el siguiente paso más profesional?
Para llevarte
- Una frase del cliente casi siempre contiene objetivo, regla, función, cualidad y restricción: separalas antes de escribir un renglón.
- Un requerimiento es bueno si podés imaginar una prueba que lo contradiga; escribí el caso que lo refuta al lado del requerimiento.
- Un NFR sin estímulo, entorno, respuesta y medida es un adjetivo. Si el umbral todavía no se midió, marcalo como propuesto.
- BLOCKED es un estado con tres campos: qué falta, quién lo resuelve y cuándo se revisa. Sin eso es un OUT sin motivo.
- Todo RF tiene que poder volver a una evidencia y avanzar hasta una prueba; los huérfanos se justifican o se eliminan.
- Un agente puede revisar tu catálogo, no decidir tu alcance: los IDs que cita se verifican uno por uno.
¿Cómo valoras el contenido técnico de esta lección?
Tu feedback nos ayuda a mejorar los laboratorios prácticos de Eje Z.