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