Antes de construir un sistema de software, el equipo necesita comprender qué se quiere lograr, qué se incluirá, qué quedará fuera y bajo qué condiciones deberá funcionar. Estas decisiones se expresan mediante objetivos, alcance y restricciones.
Si estos elementos no están claros, cada persona puede imaginar un producto distinto. El cliente puede esperar una solución completa, los usuarios pueden pedir funcionalidades no previstas y el equipo técnico puede construir algo que no coincide con las prioridades reales.
Definir objetivos, alcance y restricciones no elimina todos los cambios, pero crea una base para discutirlos con claridad.
Los objetivos explican para qué existe el sistema. Deben responder qué necesidad se busca resolver y qué resultado se espera obtener. Un objetivo bien definido orienta decisiones de diseño, prioridad, validación y aceptación.
Un objetivo débil suele describir una solución sin explicar el valor:
Un objetivo más claro conecta necesidad, usuarios y resultado:
El segundo objetivo permite entender qué problema se ataca y cómo podría evaluarse si la solución aporta valor.
Un buen objetivo de sistema debería ser claro, relevante y verificable. No siempre necesita tener una métrica exacta, pero sí debe permitir evaluar si el sistema se orienta en la dirección correcta.
El alcance define los límites del sistema. Indica qué funciones, procesos, usuarios, datos, integraciones y responsabilidades estarán incluidos. También debe aclarar qué queda fuera.
Definir alcance sirve para:
El alcance no es una lista rígida que jamás cambia. Puede evolucionar, pero cualquier cambio debería analizarse por su impacto en tiempo, costo, calidad y riesgos.
El alcance puede describirse desde distintas dimensiones. No conviene limitarlo a una lista de pantallas, porque el sistema incluye reglas, datos, procesos e integraciones.
| Dimensión | Qué define | Ejemplo |
|---|---|---|
| Funcionalidades | Qué acciones permitirá realizar el sistema. | Registrar pedidos, cancelar reservas, emitir reportes. |
| Usuarios o roles | Quiénes usarán el sistema y con qué permisos. | Administrador, vendedor, cliente, supervisor. |
| Procesos | Qué flujos de trabajo serán cubiertos. | Inscripción, aprobación, facturación, seguimiento. |
| Datos | Qué información se gestionará. | Clientes, productos, turnos, pagos, documentos. |
| Integraciones | Con qué sistemas externos se comunicará. | Pasarela de pagos, facturación, correo, identidad. |
| Ambientes | Dónde funcionará el sistema. | Web, móvil, red interna, nube, sucursales. |
Una parte fundamental del alcance es declarar qué no se incluirá. Muchas discusiones en proyectos ocurren porque algo nunca fue prometido, pero alguien lo suponía incluido.
Ejemplos de elementos fuera de alcance:
Declarar exclusiones no significa rechazarlas para siempre. Muchas pueden planificarse para versiones futuras.
Las restricciones son condiciones que limitan o condicionan la solución. Pueden venir del negocio, la tecnología, la ley, la organización, la operación o la seguridad.
Algunas restricciones típicas son:
Las restricciones influyen en diseño, arquitectura, pruebas, planificación y mantenimiento.
| Tipo | Descripción | Ejemplo |
|---|---|---|
| Técnica | Condiciona tecnologías, plataformas o integraciones. | Debe usar la base de datos corporativa existente. |
| Temporal | Impone fechas o ventanas de entrega. | Debe estar operativo antes del inicio de inscripciones. |
| Económica | Limita presupuesto, licencias o infraestructura. | No se podrán contratar servicios pagos adicionales. |
| Legal | Obliga a cumplir normas o regulaciones. | Debe conservar registros por cinco años. |
| Operativa | Condiciona uso, soporte, horarios o procedimientos. | No se puede detener el sistema durante horario comercial. |
| Organizacional | Surge de políticas, estructura o decisiones internas. | Todo usuario debe autenticarse con la cuenta institucional. |
| Seguridad | Define protección de datos, accesos y trazabilidad. | Las acciones administrativas deben quedar auditadas. |
Un requisito describe algo que el sistema debe cumplir. Una restricción limita cómo puede construirse, entregarse u operarse la solución. En la práctica, ambos conceptos están relacionados y a veces se expresan juntos.
| Elemento | Pregunta que responde | Ejemplo |
|---|---|---|
| Requisito | ¿Qué debe hacer o cumplir el sistema? | El usuario debe poder cancelar una reserva hasta dos horas antes. |
| Restricción | ¿Qué condición limita la solución? | El sistema debe integrarse con el calendario corporativo existente. |
Ambos deben documentarse porque afectan decisiones y expectativas.
Además de objetivos, alcance y restricciones, conviene registrar supuestos y dependencias.
Un supuesto es algo que se cree verdadero, pero que debe confirmarse. Una dependencia es algo externo que el proyecto necesita para avanzar.
| Concepto | Ejemplo | Riesgo si falla |
|---|---|---|
| Supuesto | Los usuarios conocen el proceso actual y podrán explicarlo. | El análisis puede demorar más de lo esperado. |
| Dependencia | El equipo de infraestructura debe crear el ambiente de pruebas. | La validación se retrasa aunque el desarrollo avance. |
Registrar supuestos y dependencias permite anticipar bloqueos y evitar sorpresas.
Definir límites significa aclarar dónde empieza y dónde termina la responsabilidad del sistema. Esto es especialmente importante cuando existen integraciones con otros sistemas o procesos manuales.
Por ejemplo, en un sistema de compras en línea:
Estos límites ayudan a definir responsabilidades, errores posibles, pruebas e integraciones.
Los criterios de éxito ayudan a saber si el sistema cumplió sus objetivos. No siempre se limitan a "la funcionalidad está implementada"; pueden incluir uso real, reducción de errores, tiempos de respuesta, satisfacción de usuarios o cumplimiento normativo.
Ejemplos de criterios de éxito:
Los criterios de éxito conectan el trabajo técnico con resultados observables.
El alcance puede cambiar. Esto es normal en muchos proyectos. Lo importante es que los cambios se gestionen de manera explícita.
Antes de aceptar un cambio, conviene analizar:
Gestionar cambios no significa bloquearlos. Significa tomar decisiones conscientes sobre sus consecuencias.
Supongamos que una clínica necesita un sistema de turnos.
| Objetivo | Permitir que pacientes soliciten turnos en línea y reducir la carga manual del personal administrativo. |
|---|---|
| Incluido en alcance | Registro de pacientes, consulta de disponibilidad, solicitud de turnos, cancelación y panel administrativo. |
| Fuera de alcance inicial | Pago en línea, historia clínica electrónica e integración con laboratorios externos. |
| Restricciones | Debe proteger datos personales, funcionar en navegadores modernos y usar autenticación institucional para administradores. |
| Supuestos | La clínica entregará horarios de profesionales actualizados antes del inicio del desarrollo. |
| Dependencias | El equipo de infraestructura debe habilitar el servidor de pruebas. |
| Criterio de éxito | La primera versión permite gestionar turnos de dos especialidades sin intervención telefónica para casos simples. |
Al definir objetivos, alcance y restricciones suelen aparecer errores como:
Una forma práctica de comenzar es completar una plantilla breve:
| Objetivo del sistema | ¿Qué necesidad resuelve y qué resultado se espera? |
|---|---|
| Usuarios principales | ¿Quiénes usarán el sistema y con qué propósito? |
| Funcionalidades incluidas | ¿Qué acciones permitirá realizar? |
| Fuera de alcance | ¿Qué no se incluirá en esta etapa? |
| Restricciones | ¿Qué condiciones limitan la solución? |
| Supuestos | ¿Qué se considera verdadero pero debe confirmarse? |
| Dependencias | ¿Qué necesita el proyecto de otras personas, sistemas o áreas? |
| Criterios de éxito | ¿Cómo sabremos que el sistema logró su propósito? |
Definir alcance, objetivos y restricciones es una actividad esencial para orientar el desarrollo de software. Estos elementos ayudan a establecer límites, priorizar decisiones, coordinar expectativas y evaluar si el sistema realmente cumple su propósito.
Para quien comienza, la idea principal es esta: un sistema bien definido no solo dice qué se construirá, sino también por qué se construye, hasta dónde llega y bajo qué condiciones debe funcionar.
En el próximo tema veremos una introducción a los requerimientos de software, donde profundizaremos en cómo expresar necesidades y condiciones que el sistema debe cumplir.