Introducción a la Ingeniería de Requerimientos Parte 1: Qué es y Porqué. Parte 2: Fundamentos. Parte 3: Entregables (Repaso) La Ingeniería de Software • Se ocupa de construir un producto de software de alta calidad bajo restricciones de tiempo y presupuesto. • Sus dos problemáticas fundamentales son: – Lidiar con la escala y complejidad de sistemas de software actuales. – Identificar que significa alta calidad • Requiere (como todas las ingenierías) – Rigor, creatividad, documentación y gestión. Sebastian Uchitel 2 Calidad ~ Cumplimiento con Propósito • Software se desarrolla para un propósito • El propósito es relativo a actividades humanas – E.g. El propósito de un sistema bancario se relaciona con los negocios de un un banco y las necesidades de sus clientes. • El propósito es generalmente complejo. • Mucha gente y actividades involucradas • Intereses contrapuestos • ... • Ingeniería de Requerimientos trata (en parte) con la identificación del propósito. Sebastian Uchitel (transparencia adaptada de Steve Easterbrook) 3 Qué es Ingeniería de Requerimientos? No es una fase o etapa! Comunicación es tan importante como la recolección y análisis Calidad signifíca que cumple con su propósito. No se puede decir nada acerca de calidad si no se entiende el propósito. Sebastian Uchitel Requirements Engineering (RE) is a set of activities concerned with identifying and communicating the purpose of a software-intensive system, and the contexts in which it will be used. Hence, RE acts as the bridge between the real world needs of users, customers, and other constituencies affected by a software system, and the capabilities and opportunities afforded by softwareintensive technologies Diseñadores necesitan saber cómo y donde el sistema será utilizado. Requerimientos tratan en parte de lo que se necesita… …y en parte de lo que es posible Necesidad de indentificar todas las partes involucradas - no sólo el usario y cliente (transparencia de Steve Easterbrook) 4 El Software siempre está embebido • Si la calidad del software depende del grado de cumplimiento de su propósito, entonces debemos considerar el software como embebido... • Embebido en Hardware – Propiedades de hardware? – Obvio, pero a veces olvidado... • Embebido en actividad humana – Propiedades? • Embebido en un mundo físico – Propiedades? • En este curso hablaremos de Sistemas Intensivos en Software (o “Sistema”) para referirnos a Software + Hardware + Entorno • Ingeniería de Requerimientos de Sistemas (Intensivos en Software) Sebastian Uchitel 5 La voz de la experiencia... • Poor requirements are ubiquitous ... "requirements need to be engineered and have continuing review & revision" (Bell & Thayer, empirical study, 1976) • RE is hard & critical ... "hardest, most important function of SE is the iterative extraction & refinement of requirements" (F. Brooks, 1987) • Prohibitive cost of late correction ... "up to 200 x cost of early correction" (Boehm, 1981) Sebastian Uchitel (transparencia de Emmanuel Letier) 6 Costo Relativo de Correción de Errores El Costo de Corrección Tardía (Boehm, 1981) 200 50 1 5 10 20 o os eño d to ón g t i a i n n c id a ie is e od i t n D m C p U e ni rim c e e e d A u nt t e q s a d M Re t Te s Te Sebastian Uchitel El costo de un error depende del numero de decisiones que luego se hacen sobre él Errores cometidos al entender los requerimientos tienen el potencial de ser los de mayor costo, porque muchas decisiones de diseño dependen de estos. (transparencia de Emmanuel Letier) 7 (transparencia de Miguel Felder) Problemas de Desarrollo: Un ejemplo regional... Sebastian Uchitel 8 El Problema de los Requerimientos: (más recientemente...) • Relevamiento de proyectos de software en EEUU por el Standish Group • 1994 1998 Exitosos 16% 26% Con problemas 53% 46% Cancelados 31% 28% Causa percibida de éxito y fracaso (Top 3) Exitoso Con problemas Cancelado 1. Usuarios involucrados Falta de input de los usuarios Requerimientos incompletos 2. Apoyo de gerencia ejecutiva Requerimientos incompletos Falta de input de los usuarios 3. Clara descripción de requerimientos Requerimientos cambiantes Falta de recursos Sebastian Uchitel (transparencia de Emmanuel Letier) 9 Factores que ponen en problemas un proyecto 1. Falta de input de los usuarios 12.8% 2. Requerimientos y Especificaciones Incompletos 12.3% 3. Requerimientos y Especificaciones cambiantes 11.8% 4. Falta de apoyo de gerencia ejecutiva 7.5% 5. Incompetencia técnica 7.0% 6. Falta de recursos 6.4% 7. Expectativas no realistas 5.9% 8. Objetivos poco claros 5.3% 9. Tiempos poco realistas 4.3% 10. Tecnología nueva 3.7% Otros 23.0% Posiblemente anecdótico pero da una indicación de los problemas percibidos en el desarrollo de software Sebastian Uchitel (transparencia de Emmanuel Letier) 10 Factores que causan una cancelación 1. Requerimientos incompletos 13.1% 2. Falta de involucramiento de usuarios 12.4% 3. Falta de recursos 10.6% 4. Expectativas no realistas 9.9% 5. Falta de apoyo gerencial 9.3% 6. Requerimientos y Especificaciones cambiantes 8.7% 7. Falta de planificación 8.1% 8. “Ya no lo necesitabamos” 7.5% 9. Falta de gestión 6.2% 10. Incompetencia Tecnológica Otros Sebastian Uchitel 4.3% 9.9% (transparencia de Emmanuel Letier) 11 Factores que contribuyen al éxito Sebastian Uchitel 1. Involucramiento de Usuarios 15.9% 2. Apoyo de Gerencia Ejecutiva 13.9% 3. Descripción de Requerimientos Clara 13.0% 4. Planificación Apropiada 9.6% 5. Expectativas realistas 8.2% 6. Entregas (milestones) mas pequeñas 7.7% 7. Personal competente 7.2% 8. Ownership 5.3% 9. Visión y Objetivos claros 2.9% 10. Otros 13.9% (transparencia de Emmanuel Letier) 12 Resultados similares en otros estudios ... • Relevamiento de 3800 organizaciones europeas, 17 países Los problemas mayores en software son... – Especificación de requerimientos > 50% respuestas – Gestión de requerimientos > 50% respuestas (European Software Institute, 1996) Sebastian Uchitel (transparencia de Emmanuel Letier) 13 Porqué IR es tan difícil? • Sistemas compuestos: Gente + Software + Dispositivos físicos. – Modos de interacción: complejos, de larga duración, iniciativa híbrida, iniciativa mixta, social. – Software le da forma a la actividad humana de manera compleja. • Muchos de los problemas que queremos resolver son “difíciles” – – – – – Sebastian Uchitel Formulación definitiva del problema? Correctitud de Soluciones no suele ser blanco o negro Cada problema es único hasta cierto punto Cada problema puede ser tratado como síntoma de otro Problemas suelen tener dimensiones políticas, éticas y y/o profesionales de peso. 14 Porqué IR es tan difícil? • Múltiples sistemas coexisten: – – – – sistema actual, múltiples propuestas de sistema a construir, familia de sistemas, posibles evoluciones del sistema • Múltiples niveles de abstracción: – de objetivos de negocios a detalles operativos • Múltiples aspectos – Funcional, calidad, desarrollo – aspectos duros y blandos • Stakeholders (partes interesadas) con antecedentes e intereses diversos – clientes, usuarios, expertos del dominio, desarrolladores, ... → conflictos Sebastian Uchitel (transparencia adapteda de A. van Lamsweerde) 15 Qué hace un Ingeniero de Requerimientos? (1) • “Elicitar” Información – Objetivos, contexto y alcance Elicit: to evoke or draw out (a response, answer, or fact) from someone in reaction to one's own actions or questions – Conocimiento del Dominio y Requerimientos • Modelado y Análisis – Objetivos, objetos, casos de uso, escenarios, ... • Comunicar requerimientos – resultados del análisis (Feedback), Documento de Especificación de Requerimientos, prototipos, ... Sebastian Uchitel (transparencia adapteda de E. Letier) 16 Qué hace un Ingeniero de Requerimientos? (1) • Negociación y acuerdo de requerimientos – Manejo de conflictos y riesgos – Ayuda en selección y priorización de requerimientos • Gestión y Evolución de Requerimientos – Trazabilidad de requerimientos – Gestión de pedidos de cambios a requerimientos y sus impactos Sebastian Uchitel (transparencia adapteda de E. Letier) 17 El rol central de modelos de requerimientos Modelos de Requerimientos generación de entregables stakeholders elicitación y modelado sistemas existentes Especificación de Requerimientos documentos análisis y validación Sebastian Uchitel (transparencia adapted de E. Letier) 18 Resumen de Parte 1 • Definición de Ingeniería de Requerimientos • Importancia y dificultades de IR en el desarrollo de sistemas • Actividades del Ingeniero de Requerimientos • Rol central de modelos en IR Sebastian Uchitel 19