611 likes | 976 Views
Ingeniería de Requerimientos. Análisis. Adquisición. Desarrollo. Análisis. Especificación. Validación. Control de Cambios. Administración. Control de Versiones. Seguimiento. Ingeniería de Requerimientos. Análisis.
E N D
Ingeniería de Requerimientos Análisis
Adquisición Desarrollo Análisis Especificación Validación Control de Cambios Administración Control de Versiones Seguimiento Ingeniería de Requerimientos
Análisis • El objetivo del análisis es descubrir problemas, inconsistencias y faltantes en los requerimientos adquiridos. Esto sirve de retroalimentación para las personas interesadas, de manera que se puedan resolver mediante un proceso de negociación
Temas • Priorizar • Identificar problemas • Identificar oportunidades • Negociar
Priorizar • Los proyectos de software tienen recursos limitados • Es importante priorizar los requerimientos • Ayuda a resolver conflictos • Permite planificar las entregas • Facilita el uso adecuado de los recursos • Balancear beneficios y costos
Priorizar • Es un trabajo realizado entre usuarios/clientes y desarrolladores • Usuarios/clientes definen las funciones con mayores beneficios • Desarrolladores definen costos, riegos técnicos, y dificultad de cada función • Todos los requerimientos pactados se implementarán, pero algunos no son tan esenciales
Priorizar • Escalas • Pocos valores • Puede ser subjetiva • Todos deben estar de acuerdo en el significado • Tres valores • Alta – Media – Baja • Esencial – Condicional – Opcional • Crítica – Importante - Útil
1 2 3 Priorizar • Alta – Esencial • Requerimiento de misión crítica • El software no es aceptable sin él
Priorizar • Media – Condicional • Operaciones de soporte del sistema • Amplía la funcionalidad del software, pero se puede aceptar sin él al comienzo • Baja – Opcional • Interesante tener esta funcionalidad o cualidad, si los recursos lo permiten • Funciones que no son muy valiosas
Priorizar • La prioridad de cada requerimiento debe ir en la especificación de los casos de uso o en la especificación de los requerimientos • En un caso de uso con varias alternativas, algunas pueden tener mayor prioridad que otras
Priorizar • Identificar • Regulaciones externas • Funciones núcleo del negocio y/o diferenciadoras • Las demás características • Priorizar basados en costos, beneficios y riesgos
Priorizar • RUP • Priorizar basado en: • Beneficios (para el negocio) • Crítico, importante, útil • Impacto en la arquitectura • Ninguno, extiende, modifica • Riesgos • Tienen más alta prioridad los más críticos, con mayor impacto y riesgo
Priorizar • Pasos (1) • Hacer una lista con los casos de uso y los requerimientos del sistema que no están en los casos de uso • Para cada caso de uso/requerimiento se califican de 0 a 3 los siguientes aspectos: • Significativo para la arquitectura • Riesgo • Naturaleza crítica (beneficio)
Priorizar • Pasos (2) • Se determina el peso que se dará a cada aspecto, en un rango de 1 a 3 • Se calcula la prioridad de cada caso de uso/requerimiento, sumando los valores de cada aspecto (multiplicados previamente por su respectivo peso) • Los valores más altos corresponden a las mayores prioridades
Priorizar • Ejemplo: Pesos: Arq: 1, Riesgo: 2, Beneficio: 3
Priorizar • XP • PlanningGame • Priorizar basado en: • Importancia para el negocio • Esfuerzo (costo) • Riesgo
Priorizar • XP • Los usuarios/clientes definen el valor para el negocio (crítico – significante - útil) • Los desarrolladores definen el riesgo (bajo, medio, alto) y estiman el esfuerzo • Se negocian las prioridades y se selecciona la historia de usuario que se implementará
Priorizar • Karl Wiegers • Priorizar basado en: • Valor del requerimiento • Beneficio, costo de no tenerlo • Costo y riesgo • Implementación, elementos técnicos • La prioridad está directamente relacionada con el valor e inversamente relacionada con el costo y el riesgo
Priorizar • Pasos (1) • Listar los requerimientos, características o casos de uso que se desean priorizar • Estimar el beneficio relativo (1 muy bajo, 9 el máximo) • Basado en los objetivos del negocio • Determinado principalmente por los clientes
Priorizar • Pasos (2) • Estimar el costo de no tener la función (1 bajo, 9 alto) • Valor = Suma del beneficio y el costo • Se puede dar un peso a cada uno • Estimar el costo de implementar la función (1 bajo, 9 alto) • Complejidad, Interfaz de usuario, … • Determinado por los desarrolladores
Priorizar • Pasos (3) • Estimar el riesgo asociado (1 bajo, 9 alto) • Falta de experiencia, tecnología nueva, … • Calcular la prioridad, así: • Prioridad = % Valor / (% Costo + % Riesgo) • Se puede dar pesos al costo y al riesgo • El porcentaje es con respecto al total de todas las funciones evaluadas
Priorizar • Pasos (4) • Ordenar de forma descendente • Los primeros elementos, por tener un balance favorable en costo/beneficio, son candidatos a tener alta prioridad
Priorizar • Ejemplo Pesos: Beneficio: 2, Costo no tener: 1, Costo: 1, Riesgo: 0.5
Priorizar • Tablas: • Son una herramienta de gran ayuda, que incluye elementos numéricos en una valoración que generalmente es subjetiva • Los resultados obtenidos deben ser revisados, pues sirven de guía pero no son absolutos
Priorizar • Otros aspectos que se pueden considerar • Volatilidad de los requerimientos • Competidores • Recursos • …
Ejercicio • Elabore una plantilla para calcular las prioridades de los requerimientos
Priorizar • Otras técnicas • Voto acumulativo (100-Dollar Test) • Distribuir 100 unidades (pesos, horas) entre los requerimientos • Puntuación (Ranking) • Dar un puntaje de 1 a N (para N requerimientos), donde 1 es el menos importante • Diez primeros (Top Ten)
Temas • Priorizar • Identificar problemas • Identificar oportunidades • Negociar
Identificar problemas • Determinar • Los requerimientos son factibles • Técnicamente • Económicamente • Operacionalmente • No hay contradicciones/inconsistencias
Identificar problemas • Algunas técnicas • Lista de preguntas • Revisar casos de uso • Matriz de requerimientos • Matriz CRUD
Identificar problemas • Ejemplo Lista de preguntas • ¿Los requerimientos son consistentes con los objetivos propuestos? • ¿Hay requerimientos “cosméticos”, es decir, que no son realmente necesarios? • ¿Se requiere tecnología con la que no se cuenta actualmente? • ¿Algún requerimiento se puede dividir en otros requerimientos?
Identificar problemas • Revisar casos de uso (1) • El diagrama de casos de uso presenta claramente el comportamiento del sistema • No hay cadenas de relaciones “include” y/o “extends” • Hay pocas dependencias entre casos de uso • Todas las relaciones entre los casos de uso están justificadas
Identificar problemas • Revisar casos de uso (2) • Se han identificado todos los casos de uso • No hay casos de uso innecesarios • Si el modelo es muy grande o las responsabilidades están distribuidas, se han utilizado paquetes • Los paquetes hacen el modelo más fácil de entender
Identificar problemas • Matriz de requerimientos • Filas y columnas con los requerimientos • Cero (0) si son independientes • Uno (1) si presentan algún conflicto • Dos (2) si tienen elementos comunes, es decir, se solapan
Identificar problemas • Ejemplo - Matriz de requerimientos
Identificar problemas • Matriz CRUD • Permite encontrar requerimientos faltantes • Filas Casos de uso • Columnas Entidades - Conceptos • Celdas: • C: Crear • R: Leer - Consultar • U: Actualizar • D: Borrar
Identificar problemas • Ejemplo – Matriz CRUD
Identificar problemas • Entidades que no tengan alguna de las acciones • ¿Falta un caso de uso? • ¿Algún caso de uso está incompleto? • ¿El objeto no es necesario? • ¿Falta determinar alguna regla del negocio?
Ejercicio • Elabore la matriz CRUD para los casos de uso y entidades en el ejemplo • Determine posibles requerimientos faltantes
Temas • Priorizar • Identificar problemas • Identificar oportunidades • Negociar
¿Cómo va a ser el resultado? ¿Cómo va a ser la entrada? Restricciones de datos Restricciones de tiempo de ejecución Identificar oportunidades • Refinar los requerimientos Requerimiento
Identificar oportunidades • Requerimientos explícitos • Se declaran y establecen • Requerimientos implícitos • Se asume que se deben cumplir • Requerimientos innovadores • Van más allá de las expectativas del cliente
Identificar oportunidades • Mejorar “usabilidad” (facilidad de uso) del sistema • Ayudas o guías para el usuario • No son triviales, impactan positivamente • Promedio de uso de cada acción • Acciones más frecuentes tienen mayor prioridad y facilidad de acceso
Temas • Priorizar • Identificar problemas • Identificar oportunidades • Negociar
Negociar • Consiste en llegar a un acuerdo en los requerimientos, con las personas interesadas en el proyecto • Se realiza • Cuando hay conflictos • Diferentes objetivos y perspectivas de las personas interesadas
Negociar • Se deben identificar los conflictos • Elementos en conflicto • Autores, Fuentes • Participarán en la negociación • Descripción del conflicto • Posibles alternativas • Importancia / Urgencia
Negociar • Plantilla propuesta
Negociar • Se deben evitar los conflictos emocionales • Contar con un buen facilitar • Además de los conflictos y las alternativas, se deben hace explícitas las argumentaciones • Apoyan la solución seleccionada
Negociar • Pasos (1) • Definir el problema • Definir los interesados • Identificar los objetivos de cada interesado • Analizar los objetivos • Inconsistencias • Riesgos • Supuestos
Negociar • Pasos (2) • Determinar los criterios/reglas para evaluar las alternativas • Negociación, basada en: • Realizar propuestas y definir qué aspectos se está dispuesto a cambiar • Buscar alternativas para los puntos en conflicto • Establecer beneficios y compromisos de cada una de las partes