Estimación de Esfuerzo con Casos de Uso Ing. Natalia Bibiana Trejo
Estimación de Esfuerzo con Casos de Uso Necesitamos predecir Cuánto tiempo llevará el desarrollo del SW Cuántas personas se requieren para hacerlo Cuánto tiempo llevará al ingeniero de software cumplir una tarea dada depende principalmente de la complejidad del problema y de las habilidades del ingeniero
Estimación de Esfuerzo con Casos de Uso Necesitamos cuantificar La complejidad del sistema Funcionalidad Complejidad técnica El nivel de experiencia de las personas que integran el proyecto El tiempo necesario para producir una unidad de complejidad Se pretende obtener un número único que caracterice completamente al sistema y que se correlacione con la productividad observada del ingeniero
Estimación de Esfuerzo con Casos de Uso Estimador de Punto de Caso de Uso Un método de estimación creado por Gustav Karner de Rational Software Corporation Caracteriza la complejidad del sistema mediante Puntos de Casos de Uso Es usado para obtener una idea del número de horas-hombre para un proyecto Se derivó empíricamente y la cantidad de ensayos hasta la fecha muestran que es aplicable satisfactoriamente en aplicaciones de negocio, como los sistemas de información
Estimador de Punto de Caso de Uso Este método involucra los siguientes pasos Calcular Puntos de Casos de Uso no Ajustados (UUCP) Pesar Actores (UAW) & Pesar CUs (UUCW) UUCP = f (UAW;UUCW) = UAW + UUCW Calcular Puntos de Casos de Uso (UCP) Pesar Factores Técnicos (TCF) Pesar Factores Ambientales (EF) UCP = f (UUCP; TCF; EF) = UUCP * TCF * EF Estimar el número de horas-hombre Horas-hombre = f (UCP)
Un ejemplo Sistema de procesamiento de órdenes Registrar Reclamo Obtener Catálogo Obtener Estado de la Orden Administrador Soporte al Cliente Login Cliente Cancelar Orden <<include>> <<include>> <<include>> Actualizar Cuenta Ingresar Orden <<include>> Sistema Contable <<include>> <<include>> Actualizar Cantidades del Producto Devolver Producto Obtener Información del Producto Sistema de Inventario Cliente Rep Ejecutar Reporte de Ventas <<include>> <<include>> Recibir artículos ordenados pendientes Empleado Diagrama de Casos de Uso Completar y enviar orden Compañía de Envío
Pesar los Actores Calcular UUCP Considerar la complejidad de los actores determinando si cada actor es una persona u otro sistema y la forma en la que interactúa con el sistema a desarrollar Tipo de actor Simple Promedio Complejo Descripción Otro sistema con una API (Application Programming Interface) definida Otro sistema interactuando a través de un protocolo (ej. TCP/IP) o una persona interactuando a través de una interfaz en modo texto Una persona interactuando a través de una interfaz gráfica de usuario
Calcular UUCP Pesar los Actores (cont.) Contar cuántos actores de cada tipo existen en el sistema Multiplicar cada tipo por su factor de peso Tipo de actor Simple Promedio Complejo Factor 2 3 Sumar estos productos para obtener el total UAW
Calcular UUCP Pesar los Actores (cont.) Sistema Procesamiento de órdenes Determinar el tipo para cada actor del sistema Actor Tipo Cliente Sistema de inventario Sistema Contable Administrador de Soporte al Cliente Cliente Rep Vendedor Empresa de distribución Complejo Simple Simple Promedio Complejo Complejo Promedio
Calcular UUCP Pesar los Actores (cont.) Sistema Procesamiento de órdenes Contar cuántos actores hay de cada tipo 2 Simple, 2 Promedio y 3 Complejo Multiplicar las cantidades de cada tipo por su peso 2 Simple * = 2 2 Promedio * 2 = 4 3 Complejo * 3 = 9 Sumar estos productos para obtener el total Total de Pesos de Actores = 5 UAW
Calcular UUCP Pesar los CUs Para cada CU determinar si es simple, promedio o complejo Alternativas: Basado en Transacciones o basado en Clases de Análisis Contar cuántos CU de cada tipo hay en el sistema Multiplicar la cantidad de cada tipo por el factor de peso de ese tipo Sumar estos productos para obtener el total UUCW
Calcular UUCP Pesar los CUs Basado en transacciones Determinar el número de transacciones en un caso de uso, incluyendo los caminos alternativos Una transacción es un conjunto de actividades atómicas, donde se ejecutan todas ellas o no se ejecuta ninguna Tipo de CU Simple Promedio Complejo Descripción 3 transacciones o menos 4 a 7 transacciones Más de 7 transacciones Factor 5 0 5
Sistema de Procesamiento de órdenes Documento de CU Nombre: Ingresar orden Descripción breve Este CU describe el proceso mediante el cual las órdenes son ingresadas en el sistema de procesamiento de órdenes Flujo de Eventos Camino básico. El CU comienza cuando el cliente selecciona Ingresar Orden en la pantalla principal 2. El sistema muestra la pantalla de Ingresar Orden 3. El cliente ingresa su nombre y dirección 4. El cliente ingresa los códigos de productos a ser ordenados 5. Para cada código de producto ingresado a. Incluir Obtener Información del Producto b. El sistema agrega el precio del ítem al total Fin del bucle 6. El cliente ingresa la información de pago de la tarjeta de crédito 7. El cliente selecciona Aceptar 8. El sistema verifica la información 9. El sistema almacena la orden como pendiente Incluir Almacenar Orden 0. Incluir Actualizar Cuenta. El sistema marca la orden como confirmada Incluir Actualizar Orden 2. El sistema devuelve un ID de orden al cliente y el caso de uso finaliza
Sistema de Procesamiento de órdenes Nombre: Ingresar orden Descripción breve Flujo de Eventos Caminos alternativos Cancelar orden ingresada Error en el pago Dirección de envío incompleta Código de producto no coincide con los productos actuales El producto ya no se vende El cliente paga con cheque Camino alternativo: Cancelar orden ingresada Precondición: el usuario no selecciona Enviar. El camino alternativo comienza cuando el Cliente selecciona Cancelar 2. El sistema descarta cualquier información ingresada 3. El sistema regresa a la pantalla anterior 4. El caso de uso finaliza Documento de CU
Calcular UUCP Pesar los CUs Sistema de Procesamiento de órdenes Determinar si los casos de uso son de tipo simple, promedio o complejo Caso de Uso Ingresar orden Devolver producto Cancelar orden Obtener estado de orden Enviar catálogo Ejecutar reporte de ventas Registrar reclamo Completar y enviar orden Recibir ítems ordenados pendientes Tipo Promedio Promedio Simple Simple Simple Simple Simple Promedio Promedio
Calcular UUCP Pesar los CUs Sistema de Procesamiento de órdenes Contar cuántos CUs hay de cada tipo 5 Simple, 4 Promedio y 0 Complejo Multiplicar las cantidades de cada tipo por su peso 5 Simple * 5 = 25 4 Promedio * 0 = 40 0 Complejo * 5 = 0 Sumar estos productos para obtener el total Total de Pesos de CUs = 65 UUCW
Calcular UUCP Calcular los Puntos de Caso de Uso No Ajustados UUCP = UAW + UUCW UUCP Sistema de Procesamiento de órdenes = 5 + 65 = 80 UUCP nos dan una idea de la complejidad de los casos de uso y de sus interfaces, pero Qué hay acerca de los factores técnicos y ambientales o del entorno del sistema???
Calcular UCP Factores Técnicos Factor Descripción T Sistema distribuido T2 Objetivos de performance o tiempo de respuesta T3 Eficiencia del usuario final T4 Procesamiento interno complejo T5 El código debe ser reutilizable T6 Facilidad de instalación T7 Facilidad de uso T8 Portabilidad T9 Facilidad de cambio T0 Concurrencia T Incluye objetivos especiales de seguridad T2 Provee acceso directo a terceras partes T3 Se requieren facilidades especiales de entrenamiento a usuarios Peso 2 0.5 0.5 2
Calcular UCP Factores Técnicos Recorrer la tabla y estimar cada factor entre 0 y 5 Un valor de 0 significa que el factor es irrelevante Un valor de 5 significa que el factor es esencial Un valor de 3 significa que el valor es promedio Multiplicar la estimación de cada Factor (TLevel) por su peso Sumar estos productos para obtener el total (TFactor)
Calcular UCP Pesar Factores Técnicos Sistema de Procesamiento de órdenes Factor Técnico Peso TLevel TLevel * Peso Justificación T 2 2 T2 3 3 T3 5 5 T4 T5 0 0 T6 0.5 5 2.5 T7 0.5 5 2.5 T8 2 0 0 T9 3 3 T0 5 5 T 3 3 T2 5 5 T3 0 0 TFactor = (TLevel * Peso) = 32 Sistema cliente-servidor Velocidad limitada por la entrada de datos del operador Necesita ser eficiente Fácil procesamiento Deseable pero más adelante Necesita ser fácil para las personas no técnicas Necesita ser fácil para las personas no técnicas No en este momento Necesario No exactamente, pero es multiusuario Seguridad simple Clientes Muy fácil por lo que no requiere entrenamiento
Calcular UCP Pesar Factores Técnicos Sistema de Procesamiento de órdenes TFactor = (TLevel * Peso) = 32 TCF = 0.6 + (0.0 * TFactor) TCF = 0.6 + (0.0 * 32) = 0.92
Factores Ambientales Calcular UCP E E2 E3 E4 E5 E6 E7 E8 Factor Ambiental Descripción del factor Familiaridad con el modelo de proyecto Experiencia en la aplicación Experiencia en orientación a objetos Capacidad del analista líder Motivación Estabilidad de los requerimientos Personal part-time Dificultad del lenguaje de programación Peso.5 0.5 0.5 2 - -
Calcular UCP Pesar Factores Ambientales Recorrer la tabla y estimar cada factor entre 0 y 5 Factores entre E y E4 Una estimación de 0 significa sin experiencia; 3 significa experiencia promedio; 5 significa amplia experiencia Factor E5 (Motivación) 0 significa sin motivación; 3 motivación media; 5 significa motivación alta Factor E6 (Requerimientos estables) 0 significa requerimientos altamente inestables; 3 estabilidad media; 5 requerimientos estables Factor E7 (Personal Part-Time) 0 significa ningún personal part-time; 5 significa que todo el personal es part-time Factor E8 (Lenguaje de Programación) 0 significa lenguaje de programación fácil de usar; 5 significa lenguaje de programación difícil de utilizar
Calcular UCP Pesar Factores Ambientales Luego multiplicamos la estimación para cada factor (ELevel) por su peso Sumamos estos productos para obtener el total (EFactor)
Calcular UCP Pesar Factores Ambientales Sistema de Procesamiento de órdenes Factor Ambiental E E2 E3 E4 E5 E6 E7 E8 Peso.5 0.5 0.5 2 - - ELevel EFactor = (ELevel * Peso) = 20.5 3 3 5 5 5 0 3 ELevel * Peso.5.5 3 2.5 5 0 0-3 La mayoría del equipo no está familiarizado La mayoría del equipo son programadores Programadores OO El líder es idóneo Justificación El equipo está entusiasmado No se esperan cambios Sin empleados a tiempo parcial Se programará con Java
Calcular UCP Pesar Factores Ambientales Sistema de Procesamiento de órdenes EFactor = (ELevel * Peso) = 20.5 EF =.4 + (-0.03 * EFactor) EF =.4 + (-0.03 * 20.5) = 0.785
Calcular UCP Calcular los Puntos de Caso de Uso UCP = UUCP * TCF * EF UCPsistema de procesamiento de órdenes = 80*0.92*0.785 = 57.77 UCP nos da una idea de la complejidad del sistema ajustado a los factores técnicos y del entorno
Estimación del proyecto Estimar Horas-hombre En general, Karner sugiere usar 20 horas-hombre por UCP Horas-hombre sistema de procesamiento de órdenes = 57.77 * 20 = 55.52 ~ 29 semanas a 40 horas por semana, para una persona Tomando un equipo pequeño de 6 personas trabajando full-time ~ 5 semanas de esfuerzo Agregar algunas semanas para trabajar en cualquier problema del equipo Lo veremos más adelante
Estimación del proyecto Estimar Horas-hombre Schneider & Winter sugieren un refinamiento basado en los Factores Ambientales Factores EF miden el nivel de experiencia del equipo de desarrollo y la estabilidad del proyecto Cualquier problema en este área significa que tendremos que invertir tiempo en el entrenamiento de las personas o solucionando problemas debido a la inestabilidad
Estimación del proyecto Estimar Horas-hombre Schneider & Winter sugieren un refinamiento basado en los Factores Ambientales Se calcula este valor de la siguiente manera: Contar cuántos factores ambientales desde E a E6 son inferiores a 3 (valor de nivel promedio) y cuántos de los factores ambientales E7 y E8 son superiores a 3 Entonces se usan 20 horas-hombre por UCP si el valor es 2 28 horas-hombre por UCP si el valor es 4 36 horas-hombre por UCP si el valor es 5» En este caso considerar modificar el proyecto ya que es muy riesgoso
Calcular UCP Pesar Factores Ambientales Sistema de Procesamiento de órdenes E E2 Es inferior a 3 Factor Ambiental Pes o.5 0.5 ELevel 3 ELevel * Peso.5.5 Justificación La mayoría del equipo no familiarizado La mayoría del equipo son programadores E3 3 3 E4 0.5 5 2.5 E5 5 5 E6 2 5 0 E7-0 0 E8-3 -3 Tenemos un EF inferior al promedio Programadores OO El líder es idóneo El equipo está entusiasmado No se esperan cambios Sin empleados a tiempo parcial Se programará con Java => 20 horas-hombre por UCP
Estimación del proyecto Estimar Horas-hombre El valor de esfuerzo estimado se refiere solamente a las horashombre invertidas en el desarrollo de la funcionalidad especificada en los CUs Un nuevo ajuste consiste en sumar a la estimación de esfuerzo obtenida por UCP, las estimaciones de esfuerzo de las demás actividades relacionadas con el desarrollo del software, distribuidas según la siguiente aproximación: Actividad Análisis Diseño Programación Pruebas Sobrecarga (otras actividades) Porcentaje 0% 20% 40% 5% 5%
Estimación del proyecto Estimar Horas-hombre Sistema Procesamiento de órdenes Horas-hombre sistema de procesamiento de órdenes = 57.77 * 20 = 55.52 Actividad Análisis Diseño Programación Pruebas Sobrecarga (otras actividades) TOTAL Esfuerzo Porcentaje 0% 20% 40% 5% 5% 00% Horas-hombre 288.88 577.76 55.52 433.32 433.32 2888.8 ~ 72 semanas a 40 horas por semana, para una persona Tomando un equipo de 6 personas trabajando full-time ~ 2 semanas de esfuerzo