Departamento de Informtica Ingeniera de Software Avanzada Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Rol de Rol de las Mediciones las Mediciones de Software de Software Mediciones en Ingeniera de Software mbito de Mtricas de Software Clasificacin de Mediciones Paradigma Goal Question Metric (GQM) Mtricas Clsicas, Puntos de Funcin, Orientadas a Objeto, Calidad, Productividad Page 2 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Negligencias Negligencias de de medicin medicin en en Ingeniera Ingeniera de software de software No se establecen objetivos medibles para los productos nuestro producto es amistoso, confiable y mantenible No se comprenden y cuantifican los costos componentes de los proyectos de software No se cuantifica o predice la calidad de los productos Nos autoconvencemos basndonos en evidencia anecdtica nuestra tcnica garantiza 100% confiabilidad Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Mediciones Mediciones de Software de Software Preguntas bsicas qu son las mediciones de software? cmo hacer mediciones de software? por qu hacer mediciones de software? Motivacin cmo asignar recursos de testing? cmo mejorar la calidad del software que se produce? cmo seleccionar contratistas? cmo asignar recursos de mantencin? cmo decidir cambios metodolgicos? Page 3 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Qu es una medicin Qu es una medicin de de software? software? Asignacin de nmeros o smbolos a atributos de entidades del mundo real en una forma significativa ejemplos: persona: talla, edad, peso, color de pelo, color de ojos, nmero de zapato, sexo salud: presin arterial, temperatura, pulso, nivel de colesterol, peso estudiante: notas, crditos, cursos tomados, especialidad matemtica: , e computador: marca, procesador, RAM, capacidad HD, velocidad, perifricos software: lneas de cdigo, errores, nmero de mdulos, velocidad Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Qu es una medicin Qu es una medicin de de software? software? Notas: uso de nmeros y smbolos algunos son fsicos, otros abstractos preguntas dificles: capturan estas mediciones adecuadamente las propiedades del atributo? son significativas? tienen sentido? concuerdan con nuestras percepciones? Page 4 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Cmo hacer una medicin Cmo hacer una medicin de de software? software? Existen mediciones del proceso, producto producto: defectos, LOC, nmero de mdulos, complejidad proceso: defectos/KLOC, horas ingeniero/KLOC, defectos encontrados durante el testing preguntas: qu mediciones recolectar? pueden recolectarse? manual o automticamente? recoleccin disruptiva? cul es el esfuerzo de recoleccin? Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Cmo usar las mediciones Cmo usar las mediciones de de software? software? Importante: antes de hacer ninguna medicin, definir el propsito y uso de la medicin Ejemplo: recolectar nmero de defectos clasificacin: informados interna o externamente, niveles de severidad, dificultad de reparacin, dnde se introdujeron uso: medida de calidad, decisiones de liberacin de productos, mediciones de productividad, base para un cambio de proceso Page 5 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Por qu hacer mediciones Por qu hacer mediciones de de software? software? Ingeniera de software: todas las actividades relacionadas con desarrollo y mantencin de software Idea principal: aplicar mtodos de ingeniera al desarrollo y mantencin de software La medicin juega un rol central en ingeniera de software Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Objetivos Objetivos de la de la medicin medicin en software en software Comprender Controlar Mejorar Qu sucede durante el desarrollo y la mantencin Proyecto Procesos y productos Hacer proceso y producto visible Evaluar estado actual, comparar con baselines Predecir a partir de baselines y objetivos, hacer cambios Cambios basados en mediciones y predicciones Page 6 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Objetivos Objetivos de la de la medicin medicin en en software software Implicancias para los gestores: determinar costos de los procesos, productividad del personal, calidad del cdigo, satisfaccin del usuario, caminos de mejoramiento, entre otros Implicancias para los ingenieros: determinar testabilidad de los requerimientos, si se han detectado todas las fallas, si se han satisfecho obejtivos de productos y procesos, qu ocurrir Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Conceptos bsicos Conceptos bsicos de de medicin medicin Escalas de medicin nominal, ordinal, intervalar, ratio, absoluta Diversas formas de ver las mediciones de software directa v/s ndirecta directa - LOC, tiempo ocupado en testing, nmero de defectos indirecta - densidad de defectos, productividad aproximaciones calidad - nmero de defectos/LOC confiabilidad - MTBF eficiencia algortmica - O(algoritmo) complejidad - nmero de predicados Page 7 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Conceptos bsicos Conceptos bsicos de de medicin medicin ( (continuacin continuacin) ) Producto v/s proceso producto - cualquier entregable que resulta de una actividad del proceso - atributos: tamao, defectos, cobertura de pruebas, repidez proceso - colecciones de actividades relacionadas con software - atributos: tiempo, esfuerzo, costo, productividad Diferencias en cmo medir un atributo Diferentes estndares Falta de acuerdo en definiciones qu es una lnea de cdigo (LOC)? Ingeniera de Software Avanzada Dr. Marcello Visconti Z. mbito mbito de de las mtricas las mtricas de de software software Estimacin de esfuerzo y costo Administradores deben ser capaces de predecir costos de proyecto en fases tempranas del ciclo de vida Modelos y mediciones de productividad Productividad Valor Costo Calidad Cantidad Personal Recursos Complejidad Confiabilidad Defectos Tamao Funcionalidad Tiempo Dinero Hardware Software Restricciones ambientales Dificultad del problema Ejemplo de posibles componentes que ayudan a la productividad Page 8 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Recoleccin de datos Modelos y mediciones de calidad mbito mbito de de las mtricas las mtricas de de software software USO FACTOR CRITERIO Operacin del producto Revisin del Producto Usabilidad Confiabilidad Eficiencia Reusabilidad Mantenibilidad Portabilidad Testeabilidad Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Modelos de confiabilidad Modelos y evaluacin de rendimientos Mtricas estructurales y de complejidad Evaluacin de madurez y capacidades Gestin basada en mtricas Evaluacin de mtodos y herramientas mbito mbito de de las mtricas las mtricas de de software software Page 9 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Clasificacin Clasificacin de de mediciones mediciones de de software software 3 clases principales: proceso, producto, recursos proceso: colecciones de actividades relacionadas con software - inters: duracin, costo, efectividad, o eficiencia producto: entregables que resultan de una actividad del proceso - inters: tamao, calidad recurso: entidades requeridas por una actividad del proceso - inters: magnitud, costo, calidad Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Clasificacin Clasificacin de de mediciones mediciones de de software software Dentro de cada clase, atributos internos y externos interno: medibles en trminos de la entidad misma (separado de su comportamiento) - nmero de mdulos, tamao de mdulos, dependencia de mdulos, tiempo, costo del personal, precio del hardware externo: medibles solo en trminos de cmo la entidad se relaciona con su ambiente (ejecucin o comportamiento es importante) - nmero de defectos, costo, productividad, confiabilidad Atributos externos son ms difciles de medir Page 10 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Clasificacin Clasificacin de de mediciones mediciones de de software software Ejemplo: Diseo de Software Mediciones de proceso: Internas: tiempo, esfuerzo, nmero de errores de especificacin encontrados Externas: costo, efectividad de las revisiones (ej: nmero de errores/esfuerzo) Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Clasificacin Clasificacin de de mediciones mediciones de de software software Ejemplo: Diseo de Software (cont) Mediciones de producto: Internas: tamao, modularidad (acoplamiento, cohesin, interconexin) Externas: calidad, complejidad, facilidad de pruebas, facilidad de mantencin (mantenibilidad) Page 11 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Clasificacin Clasificacin de de mediciones mediciones de de software software Ejemplo: Diseo de Software (cont) Mediciones de recurso: Internas: nmero de personas, equipos, herramientas de diseo utilizadas Externas: productividad (ej: output/input), calidad Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Determinando qu medir Determinando qu medir .... GQM .... GQM Paradigma Goal-Question-Metric: enfoque para seleccionar e implementar mtricas, que involucra tres pasos: listar los objetivos principales derivar de cada objetivo las preguntas que deben responderse para determinar si los objetivos se satisfacen decidir qu medir para ser capaz de responder las preguntas de manera adecuada Page 12 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Ejemplo Ejemplo de de aplicacin aplicacin de GQM - 1 de GQM - 1 Goal: evaluar la efectividad del estandar de codificacin Questions: quin est usando el estandar? cul es la productividad de los codificadores? cul es la calidad del cdigo producido? Metrics: proporcin de codificadores (usando el estandar, un lenguaje) experiencia de codificadores (con estandar, con lenguaje, con ambiente, etc) tamao del cdigo (LOC, PF, etc) esfuerzo errores Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Ejemplo Ejemplo de de aplicacin aplicacin de GQM - 2 de GQM - 2 Goal: mejorar el proceso de revisiones de diseo Page 13 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Ejemplo Ejemplo de de aplicacin aplicacin de GQM - 2 de GQM - 2 Questions: cmo se hacen las revisiones de diseo actualmente? cunto tiempo toman las revisiones de diseo? cunto cuestan las revisiones de diseo? qu mtodos de revisiones de diseo se usan? qu tan efectivo es el proceso de revisiones de diseo? Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Ejemplo Ejemplo de de aplicacin aplicacin de GQM - 2 de GQM - 2 Metrics: nmero de revisiones de diseo por mdulo tiempo utilizado en revisiones por mdulo costo de las revisiones costo por error encontrado % de errores de especificacin encontrados % de errores de diseo encontrados en test de integracin Page 14 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Mtricas clsicas Mtricas clsicas de software de software Mtricas de tamao lneas de cdigo - LOC tokens - n 1 , n 2 , N 1 ,N 2 (Software Science, Halstead) Mtricas de estructura de datos cantidad de variables uso de variables Mtricas de estructura lgica complejidad ciclomtica - V(G) (McCabe) Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Mtricas funcionales Mtricas funcionales ( (Puntos Puntos de de funcin funcin, FP) , FP) Origen : A.J. Albrecht, IBM Suma ponderada de parmetros bsicos para dimensionar funcionalmente una aplicacin Considera caractersticas externas relevantes para los usuarios Pueden ser determinados en etapas tempranas del desarrollo Son independientes de lenguajes, y a la vez convertibles a LOC (promedio) para lenguajes especficos Page 15 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Mtricas orientadas Mtricas orientadas a a objeto objeto Algunas mtricas propuestas mtodos: complejidad ciclomtica, tamao, porcentaje de comentarios clases: mtodos ponderados por clase mensajes: respuesta para una clase cohesin: falta de cohesin de mtodos acoplamiento: acoplamiento entre clases herencia: profundidad del rbol de herencia, nmero de hijos Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Mtricas de Calidad Mtricas de Calidad Visin del productor Defectos Rework Confiabilidad (mtbf) Usabilidad (instalacin, aprendizaje, uso) Visin del usuario Page 16 Ingeniera de Software Avanzada Dr. Marcello Visconti Z. Mtricas Mtricas de de productividad productividad En general, Output/Input Output? LOC? tokens? FP? OO? Input? esfuerzo? $? Productividad? LOC/$, LOC/MM, PF/MM, PF/$?