Agenda
Requerimientos dentro Definir el concepto de requerimiento.
del Desarrollo de Explicación de los diferentes niveles de detalle de
requerimientos que se necesiten.
Software: Ingeniería y Introducción a la Noción de Ingeniería de
Requerimientos.
Administración Explicar porque los Requerimientos se involucran
durante el tiempo de vida de un sistema.
Ing. Antonio Nicolás Camacho Las habilidades de la Ingeniería de requerimientos.
Ing. Miguel E. Torres MSc.
Pontificia Universidad Javeriana – Facultad de Ingeniería
Departamento de Ingeniería de Sistemas
En La Actualidad ¿Cuál Es El Problema?
La dependencia de la economía global en el software ha Los requerimientos son la causa más común por la que
generado una carrera en el mejoramiento de las técnicas fallan los proyectos de software [Reporte 94-00 de
de desarrollo de software.
Standish Group’s CHAOS]
Entonces…¿Por qué se sigue presentando fracaso en
los proyectos de hoy en día? El cambio, la incomprensión e inexactitud en los
requerimientos son las causas más comunes por las que
Los proyectos están plagados de: falla un proyecto.
Retrasos
Problemas de Calidad La incapacidad de manejar el cambio
Sobrecostos
CAMBIO!!!! Afán por comenzar el “trabajo en serio!!”
¿Cuál Es La Solución? ¿Qué Es Un Requerimiento?
Según el Glosario Estándar de la Terminología de la
Ingeniería de Software de la IEEE(1997), un requerimiento
¿Cómo registrar lo que un nuevo producto de software es:
requiere? No es fácil manejar su ciclo de vida ya que es
intangible… (1) Una condición o capacidad que un usuario necesita
para resolver un problema o alcanzar un objetivo.
“Los requerimientos son una especificaión de lo que
debe ser implementado. Estos son descripciones de (2) Una capacidad o condición que debe poseer el sistema
cómo el sistema se debe comportar, de las propiedades o los componentes del sistema para satisfacer un contrato,
estándar, especificación, u otro documento formalmente
y atributos del mismo. Deben ser una restricción del
impuesto.
proceso de desarrollo del sistema” 1
(3) Una representación documentada de una condición o
capacidad documentada como las descritas en (1) y (2).
1 Sommerville and Sawyer 1997
1
¿Qué Es Un Requerimiento? Niveles De Descripción De Los
Requerimientos
Otras Definiciones… Requerimientos de Negocio: Representan a gran nivel los
objetivos de la organización y/o las solicitudes del cliente con
“Un requerimiento puede ser algo que el producto debe hacer o respecto al sistema o producto.
una cualidad que el producto debe tener. Un requerimiento
existe ya sea porque el tipo de producto demanda ciertas Requerimientos de Usuarios: Describen las tareas de los
funciones o cualidades o porque el cliente quiere que ese usuarios que deben poder ser realizadas con el producto.
requerimiento sea parte del producto final”.
Requerimientos del Sistema: Definen la funcionalidad del
“Requerimiento es una especificación de que debería ser
software que los desarrolladores deben construir dentro del
implementado. Son descripciones de cómo el sistema debería producto para permitir al usuario realizar sus tareas y satisfacer
comportarse, o de las propiedades o atributos de un sistema. los Requerimientos del Negocio.
También pueden ser una limitación en el proceso de desarrollo
del sistema.”
Tipos De Requerimientos de Sistema Tipos De Requerimientos de
Sistema
Restricciones: Reflejan características del
Software
dominio del sistema o del proceso mismo de
Requerimientos Funcionales: Define que hace el sistema
(describen entradas y salidas), es decir, las funciones del
desarrollo (Normalmente restricciones del
sistema. dominio, funcionales como no funcionales). Ej:
Proceso de pruebas
Requerimientos No Funcionales: Definen los atributos que Interface
le indican al sistema como realizar su trabajo (eficiencia, Lugar donde se debe realizar la implementación
hardware, software, interfaces, usabilidad, etc.). Es el como,
cuando y cuanto del que.
Hardware
Restricciones: tipo de maquina, Desempeño, tiempo,
carga, etc.
Otros Tipos de Otros Tipos de
Requerimientos Requerimientos (cont.)
Necesidades del Cliente y Expectativas: Una vez Verificados y Validados:
Del Negocio (Stockholder’s) Verificados (en diseño)
Del Usuario (user’s) Validados (en implementación)
Cualificados (constraints)
Una vez analizados:
De Diseño
Del Sistema
etcétera
Funcionales
IMPORTANTE: Todos los requerimientos
No funcionales deben estar asociados a un subsistema
De Diseño de la aplicación
2
Características De Un Buen Características De Una Buena
Requerimientos Especificación De Requerimientos
Un Buen Requerimiento
debe ser:
Completo Necesario
Un Buen Especificación de Requerimientos de ser:
Correcto Conciso
Feasible Consistente (No en
conflicto con otros) Completa
Necesario
No Repetido Consistente
Priorizable
No Ambiguo Puede Seguirse Modificable.
(Traceability) Trazable - Fácil de Seguir
Verificable
Localizado (en un
Escrito en forma de
componente o elemento
“Debe”
del sistema)
Identificador único
Independiente del Diseño
¿Cómo Llevar A Cabo Una Buena
Documentación De Los Ingeniería De Requerimientos
Requerimientos?
Ciencia y disciplina que se preocupa por
Problemas más Frecuentes: encontrar, establecer y documentar los
Difíciles de Recolectar requerimientos de Software.
Imposibilidad de Rastrear el cambio
Difíciles de Escribir En el SWEBOK (Software Engineering Body of
Demasiada forma, poco contenido Knowledge) la Ingeniería de Requerimientos se
Falta de organización define en un modelo de cuatro fases. Además,
hay una fase que se realiza transversal a través
de todo el proceso que es la Administración de
Hay ramas de la Ingeniería de Software cuyo objetivo es
Los Requerimientos.
el llevar un proceso que permita encontrar y manejar
esas necesidades que definen un sistema.
Actividades De La Ingeniería De
Ingeniería De Requerimientos Requerimientos
Objetivo: Definir el propósito de un sistema Identificación de Stakeholders
propuesto y esbozar su comportamiento Recolección y Descubrimiento de los
externo. requerimientos: Explorar, adquirir y concretar.
Aplicabilidad: Identificación y clarificación de los
Etapa inicial requerimientos en sentencias simples
Durante el ciclo de vida (refinamiento) Analizar y Modelar requerimientos:
Mantenimiento Representar el mundo real como descripción
Reingeniería – Ingeniería en Reversa
abstracta de los requerimientos.
3
Actividades De La Ingeniería De Proceso De La Ingeniería De
Requerimientos Requerimientos
Especificación de los requerimientos: Descripción
precisa para todos los Stakeholders y formalización.
Priorización
Análisis y
Derivación de requerimientos (requerimientos de diseño o Recolección
Negociaciones
Documentación Validación
requerimientos para el usuario final)
Partición (hardware, software, proceso, etc.)
Localización por subsistemas
Pruebas y Verificación Necesidades de Usuario
Documento de
Dominio de la Información
Administración de los requerimientos: Planeamiento, Requerimientos Requerimientos
seguimiento, evaluación del impacto de cambios. Información Existente que se
Regulaciones Pactaron
Validación de los requerimientos: Corrección y
Restricciones Documento del Sistema
viabilidad. Estándares
Estructura De La Ingeniería De Administración De Requerimientos
Requerimientos
Es una ciencia derivada de la ingeniería de
Ingeniería de Requerimientos requerimientos que busca encontrar formas sistemáticas
de descubrir, organizar y documentar los requerimientos.
En este proceso se busca establecer y mantener el
acuerdo entre los involucrados en el sistema.
Desarrollo Administración
Rastrear cambios
Mantener acuerdos
Incluye la Planeación del proceso
Recolección Análisis Especificación Verificación
El Plan de Requerimientos
El Plan de Requerimientos
(cont.)
Propósito Definiciones
Resumen del Proyecto/Contrato Mecanismos, métodos, técnicas, herramientas
Trasfondo: a usar
Origen del proyecto Identificación de Best-practices
Stakeholders Referencias
Evolución de los requerimientos
Mecanismo
Roles y responsabilidades
4
Las Actividades - Técnicas Las Actividades - Técnicas
Recolección de Análisis de Especificación de Validación de
Requerimientos: Requerimientos: Requerimientos: Requerimientos:
Entrevistas Sesiones JAD Especificación Validación de
Casos de Uso y/o Priorización de Asistida Modelos
Escenarios Requerimientos Manejo de Plantillas Pruebas de
Observación y Modelos Especificación Aceptación
Análisis Social Análisis de Riesgos y Formal Prototipos
Lluvia de Ideas Costos Meta Lenguajes Inspección de la
Prototipos Especificación
Actividades Del Ciclo De Vida De
Problemas Más Frecuentes
Los Requerimientos
Delineación de
Análisis del Restricciones La definición del alcance del sistema
Idea
Problema Refinamiento de El entendimiento común de los requerimientos entre las
Restricciones diferentes comunidades participantes en el desarrollo
Entendimiento de del sistema
Problema
Entendimiento relativamente completo de
Expansión de la
Tratar con la naturaleza volátil de los requerimientos
los requerimientos Información Arrastrar requerimientos
Documentos de requerimientos: con pérdidas,
información presentada con ambigüedades o mal
Descripción del Verificación de la interpretadas, representación pobre o inadecuada
Producto Consistencia
Oraciones inestables de los requerimientos
Conciliación
Información obsoleta
Un SRS completo y consistente
Habilidades De La Ingeniería De
Problemas Más Frecuentes
Requerimientos
Consecuencias: Debe poseer las siguientes habilidades:
Requerimientos pobres Comunicación (lectura – escritura)
Cancelación del desarrollo del sistema Conocimiento del Negocio
Desarrollo de un sistema que será Conocimiento Técnico (procesos,
insatisfactorio o inaceptable, con altos costos desarrollo, administración, etc.)
de mantenimiento o con una gran frecuencia
de cambios.
Costos.
5
Habilidades De La Ingeniería De Habilidades De La Ingeniería De
Requerimientos Requerimientos (cont.)
Definir el Sistema:
Analizar el Problema: Tomar Las necesidades y traducirlas a lo que el sistema
Entender los problemas del negocio
debe hacer
Identificar usuarios finales Qué constituye un requerimiento
Proponer ideas macroscópicas Formato de documentación
Entender las Necesidades del Usuario: Formalidad del lenguaje
Determinar las fuentes Prioridades y estimaciones
Extraer la información (cómo acceder a la misma) Riesgos técnicos
Entrevistas Alcance
Lluvia de Ideas Administrar el Alcance del Sistema.
Prototipos Administrar el alcance del Proyecto
Cuestionarios Tiempo
Asignar Prioridad Personal
Dinero
Habilidades De La Ingeniería De Conceptos Importantes De Los
Requerimientos (cont.) Requerimientos
Atributos de los Requerimientos
Prioridad Para aplicar estas habilidades hay que
Esfuerzo tener en cuenta los siguientes conceptos
Riesgo
Refinar la Definición del Sistema:
Descripciones más detalladas Tipos de requerimientos
Verificar que el sistema cumpla con las necesidades de
los usuarios. Equipos Poli-funcionales
Administrar el cambio de los requerimientos: Trazabilidad
Línea Base Atributos Multi -dimensionales
Rastreo histórico
Determinar dependencias Rastreables Cambio histórico
Mantenimiento de versiones
Tipos De Requerimientos Equipos Interdisciplinarios
Tipo de Requerimiento: Una clase específica de
Requerimientos.
Diseñadores e Aseguramiento
Implementadores de la Calidad
TR Reglas del Negocio, la Visión
Necesidades de usuario, Analistas Requerimientos Técnicos
TR1 TR2 requerimientos del Producto,
Características
Jefe del Director del
TR1.1 TR1.2 TR1.3 Casos de Uso, Procedimientos Producto Proyecto
6
Trazabilidad Atributos Multidimensionales
Las Características de un Requerimiento están acompañadas de
otras.
TR Atributos No tan Detallados
Req. A Requerimientos del Producto
Requerimientos Detallados R1 R2 R3
Req. B
Documentación Detallados hasta
Diseño Pruebas Procesos finales
de usuarios donde se necesite
Atributos
Historial De Cambios Calidad De Los Requerimientos
Gravar las versiones
Para mejorar la calidad de los proyectos
Capturar las razones del cambio
hay que:
Reducir el Riesgo
Estandarizar
¿Por qué cambió? Medir
¿Qué cambió? Hacer uso de herramientas
Cuando
Bajo que autorización
Requerimientos Lectores De Requerimientos
Definición/Especificación
Gerencia de Cliente
Definición de Requerimientos
Definición de Usuarios Finales del Sistema
Una declaración en un Lenguaje Natural incluye los Ingenieros de Clientes
Requerimientos
diagramas de los servicios del sistema y sus límites Gerencia de Contratistas
operacionales. Escrito para clientes. Arquitectos del Sistema
Especificación de Requerimientos
Un documento estructurado con descripción o detalle de los
Usuarios Finales del Sistema
servicios del sistema. Escrito como un contrato entre el Requerimientos
Ingenieros de Cliente
cliente y el contratista. Especificación de
Arquitectos del Sistema
Especificación de Software Desarrolladores de Software
Descripción detallada de software, la cual, puede servir
como una base para diseño o implementación. Escrito para
Especificación de (Quizá) Ingenieros de Clientes
desarrolladores.
Software Arquitectos del Sistema
Desarrolladores de Software
7
Definiciones Y Especificaciones Productos
Definición de Requerimientos
Documento de especificación de los requerimientos
1. El Software proporcionará significado de representación y acceso a
del software.
archivos externos creados por otras herramientas.
Internamente consistente
Especificación de Requerimientos Consistente con documentos prácticas negocio
1.1 El usuario debe proporcionar facilidades para definir el tipo de archivos externos. Correcto y completo (necesidades usuario)
1.2 Cada tipo de archivo externo puede tener una herramienta asociada. La cual, será Claro
aplicada para el archivo.
1.3 Cada tipo de archivo externo será representado como un icono específico mostrado al Base para diseño y pruebas
usuario. Puede ser documento legal
1.4 Las facilidades proporcionadas para la representación del icono en un tipo de archivo
externo será definido por el usuario. Planeación y gestión
1.5 Cuando un usuario selecciona una representación de icono de un archivo externo, el Base para manual de usuario
efecto de la selección es aplicar las herramientas asociadas con el tipo de archivo ex-
terno al archivo representado por la selección del icono.
Referencias (algunas!)
Institute for Electronics and Electrical Engineers. Glosario
Estándar de la Terminología de La Ingeniería de Software. 1997.
Rational Software. Applying Requirements Management With Use
Cases. Rational Software Corporation, 2000.
Sommerville Ian, Sawyer Peter. Requirements Engineering: A
Good Practice Guide. John Wiley. 2000.
Young, Ralph, The Requirements Engineering Handbook, Artech
House, Inc., 2004.
Thayer, Richard, Dorfam, Merlin. Software Requirements
Engineering. IEEE Computer Science Press. 2000.
Wiegers, Karl. Software Requirements. Microsoft Press. Segunda
edición. 2003.