Sunteți pe pagina 1din 16

Universidad Técnica Federico Santa María

Departamento de Informática

Ingeniería de Software Avanzada

Dr. Marcello Visconti Z.

Rol de las Mediciones de Software

Mediciones en Ingeniería de Software


Ámbito de Métricas de Software
Clasificación de Mediciones
Paradigma Goal Question Metric (GQM)
Métricas Clásicas, Puntos de Función,
Orientadas a Objeto, Calidad, Productividad

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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”

• 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 basándonos en evidencia
anecdótica
– “nuestra técnica garantiza 100% confiabilidad”

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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?

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

¿Qué es una medición de


software?
• Notas:
– uso de números y símbolos
– algunos son físicos, otros abstractos
– preguntas dificíles:
» capturan estas mediciones adecuadamente las propiedades del
atributo?
» son significativas?
» tienen sentido?
» concuerdan con nuestras percepciones?

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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?

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

¿Cómo usar las mediciones de


software?
• Importante: antes de hacer ninguna medición, definir el
propósito y uso de la medición
• Ejemplo:
– recolectar número de defectos
» clasificación: informados interna o externamente, niveles de
severidad, dificultad de reparación, dónde se introdujeron
» uso: medida de calidad, decisiones de liberación de productos,
mediciones de productividad, base para un cambio de proceso

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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

La medición juega un rol central en ingeniería de software

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

Objetivos de la medición en software


Comprender
Qué sucede durante el Hacer proceso y producto visible
desarrollo y la mantención Evaluar estado actual, comparar con
baselines

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

• 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á

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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)?

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

Ámbito de las métricas de


software
• Estimación 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 Tamaño Tiempo Hardware Restricciones ambientales


Defectos Funcionalidad Dinero Software Dificultad del problema

Ejemplo de posibles componentes que ayudan a la productividad

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

Page 7
Ámbito de las métricas de
software
• Recolección de datos
• Modelos y mediciones de calidad

USO FACTOR CRITERIO

Usabilidad
Operación
del Confiabilidad
producto
Eficiencia

Reusabilidad
Revisión
del Mantenibilidad
Producto
Portabilidad

Testeabilidad

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

Ámbito de las métricas de


software
• Modelos de confiabilidad
• Modelos y evaluación de rendimientos
• Métricas estructurales y de complejidad
• Evaluación de madurez y capacidades
• Gestión basada en métricas
• Evaluación de métodos y herramientas

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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

• Atributos externos son más difíciles de medir

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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)

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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)

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

Determinando qué medir .... GQM

• Paradigma Goal-Question-Metric: enfoque para


seleccionar e implementar métricas, 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

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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.

Ejemplo de aplicación de GQM - 2

• Goal: mejorar el proceso de revisiones de diseño

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?

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

Ejemplo de aplicación de GQM - 2

• 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

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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)

• Métricas de estructura de datos


– cantidad de variables
– uso de variables

• Métricas de estructura lógica


– complejidad ciclomática - V(G) (McCabe)

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

Métricas funcionales (Puntos de función


función,, FP)

• Origen : A.J. Albrecht, IBM


• Suma ponderada de parámetros básicos para
dimensionar funcionalmente una aplicación
• Considera características 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
específicos

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

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

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

Métricas de Calidad

Visión del productor Visión del usuario

Defectos Confiabilidad (mtbf)


Rework Usabilidad (instalación,
aprendizaje, uso)

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

Page 15
Métricas de productividad

• En general, Output/Input
• Output?
– LOC? tokens? FP? OO?
• Input?
– esfuerzo? $?
• Productividad?
– LOC/$, LOC/MM, PF/MM, PF/$?

Ingeniería de Software Avanzada Dr. Marcello Visconti Z.

Page 16

S-ar putea să vă placă și