Documente Academic
Documente Profesional
Documente Cultură
Departamento de Informática
Page 1
Negligencias de medición en
Ingeniería de software
• No se establecen objetivos medibles para los productos
– “nuestro producto es amistoso, confiable y mantenible”
Mediciones de Software
• Preguntas básicas
– ¿qué son las mediciones de software?
– ¿cómo hacer mediciones de software?
– ¿por qué hacer mediciones de software?
• Motivación
– ¿cómo asignar recursos de testing?
– ¿cómo mejorar la calidad del software que se produce?
– ¿cómo seleccionar contratistas?
– ¿cómo asignar recursos de mantención?
– ¿cómo decidir cambios metodológicos?
Page 2
¿Qué es una medición de
software?
• Asignación de números o símbolos a atributos de
entidades del mundo real en una forma significativa
– ejemplos:
» persona: talla, edad, peso, color de pelo, color de ojos, número de
zapato, sexo
» salud: presión arterial, temperatura, pulso, nivel de colesterol,
peso
» estudiante: notas, créditos, cursos tomados, especialidad
» matemática: Π, e
» computador: marca, procesador, RAM, capacidad HD, velocidad,
periféricos
» software: líneas de código, errores, número de módulos, velocidad
Page 3
¿Cómo hacer una medición de
software?
• Existen mediciones del proceso, producto
– producto: defectos, LOC, número de módulos, complejidad
– proceso: defectos/KLOC, horas ingeniero/KLOC, defectos encontrados
durante el testing
– preguntas:
» ¿qué mediciones recolectar?
» ¿pueden recolectarse?
» ¿manual o automáticamente?
» ¿recolección disruptiva?
» ¿cuál es el esfuerzo de recolección?
Page 4
¿Por qué hacer mediciones de
software?
• Ingeniería de software: todas las actividades relacionadas
con desarrollo y mantención de software
• Idea principal: aplicar métodos de ingeniería al desarrollo
y mantención de software
Controlar Mejorar
Proyecto Predecir a partir de Procesos y Cambios basados en
baselines y objetivos, hacer productos mediciones y
cambios predicciones
Ingeniería de Software Avanzada Dr. Marcello Visconti Z.
Page 5
Objetivos de la medición en
software
• Implicancias para los gestores: determinar costos de los
procesos, productividad del personal, calidad del código,
satisfacción del usuario, caminos de mejoramiento, entre
otros
Conceptos básicos de
medición
• Escalas de medición
– nominal, ordinal, intervalar, ratio, absoluta
• Diversas formas de ver las mediciones de software
– directa v/s ndirecta
» directa - LOC, tiempo ocupado en testing, número de defectos
» indirecta - densidad de defectos, productividad
– aproximaciones
» calidad - número de defectos/LOC
» confiabilidad - MTBF
» eficiencia algorítmica - O(algoritmo)
» complejidad - número de predicados
Page 6
Conceptos básicos de
medición (continuación)
– Producto v/s proceso
» producto - cualquier entregable que resulta de una actividad del
proceso - atributos: tamaño, defectos, cobertura de pruebas, repidez
» proceso - colecciones de actividades relacionadas con software -
atributos: tiempo, esfuerzo, costo, productividad
• Diferencias en cómo medir un atributo
• Diferentes estándares
• Falta de acuerdo en definiciones
– ¿qué es una línea de código (LOC)?
Valor Costo
Page 7
Ámbito de las métricas de
software
• Recolección de datos
• Modelos y mediciones de calidad
Usabilidad
Operación
del Confiabilidad
producto
Eficiencia
Reusabilidad
Revisión
del Mantenibilidad
Producto
Portabilidad
Testeabilidad
Page 8
Clasificación de mediciones de
software
• 3 clases principales: proceso, producto, recursos
– proceso: colecciones de actividades relacionadas con software - interés:
duración, costo, efectividad, o eficiencia
– producto: entregables que resultan de una actividad del proceso -
interés: tamaño, calidad
– recurso: entidades requeridas por una actividad del proceso - interés:
magnitud, costo, calidad
Clasificación de mediciones de
software
• Dentro de cada clase, atributos internos y externos
– interno: medibles en términos de la entidad misma (separado de su
comportamiento) - número de módulos, tamaño de módulos,
dependencia de módulos, tiempo, costo del personal, precio del
hardware
– externo: medibles solo en términos de cómo la entidad se relaciona con
su ambiente (ejecución o comportamiento es importante) - número de
defectos, costo, productividad, confiabilidad
Page 9
Clasificación de mediciones de
software
• Ejemplo: Diseño de Software
– Mediciones de proceso:
» Internas: tiempo, esfuerzo, número de errores de especificación
encontrados
» Externas: costo, efectividad de las revisiones (ej: número de
errores/esfuerzo)
Clasificación de mediciones de
software
• Ejemplo: Diseño de Software (cont)
– Mediciones de producto:
» Internas: tamaño, modularidad (acoplamiento, cohesión,
interconexión)
» Externas: calidad, complejidad, facilidad de pruebas, facilidad de
mantención (mantenibilidad)
Page 10
Clasificación de mediciones de
software
• Ejemplo: Diseño de Software (cont)
– Mediciones de recurso:
» Internas: número de personas, equipos, herramientas de diseño
utilizadas
» Externas: productividad (ej: output/input), calidad
Page 11
Ejemplo de aplicación de GQM - 1
• Goal: evaluar la efectividad del estandar de codificación
• Questions:
– quién está usando el estandar?
– cuál es la productividad de los codificadores?
– cuál es la calidad del código producido?
• Metrics:
– proporción de codificadores (usando el estandar, un lenguaje)
– experiencia de codificadores (con estandar, con lenguaje, con
ambiente, etc)
– tamaño del código (LOC, PF, etc)
– esfuerzo
– errores
Ingeniería de Software Avanzada Dr. Marcello Visconti Z.
Page 12
Ejemplo de aplicación de GQM - 2
• Questions:
– cómo se hacen las revisiones de diseño actualmente?
– cuánto tiempo toman las revisiones de diseño?
– cuánto cuestan las revisiones de diseño?
– qué métodos de revisiones de diseño se usan?
– qué tan efectivo es el proceso de revisiones de diseño?
• Metrics:
– número de revisiones de diseño por módulo
– tiempo utilizado en revisiones por módulo
– costo de las revisiones
– costo por error encontrado
– % de errores de especificación encontrados
– % de errores de diseño encontrados en test de integración
Page 13
Métricas clásicas de software
• Métricas de tamaño
– líneas de código - LOC
– tokens - n1, n2, N1,N2 (Software Science, Halstead)
Page 14
Métricas orientadas a objeto
• Algunas métricas propuestas
– métodos: complejidad ciclomática, tamaño, porcentaje de comentarios
– clases: métodos ponderados por clase
– mensajes: respuesta para una clase
– cohesión: falta de cohesión de métodos
– acoplamiento: acoplamiento entre clases
– herencia: profundidad del árbol de herencia, número de hijos
Métricas de Calidad
Page 15
Métricas de productividad
• En general, Output/Input
• Output?
– LOC? tokens? FP? OO?
• Input?
– esfuerzo? $?
• Productividad?
– LOC/$, LOC/MM, PF/MM, PF/$?
Page 16