Cuando pueda medir lo que está diciendo y expresarlo con números, ya conoce algo sobre ello; cuando no pueda
medir, cuando no pueda expresar lo que dice con números, su conocimiento es precario y deficiente; puede ser el comienzo del
conocimiento, pero en tus pensamientos apenas estás avanzando hacia el escenario de la ciencia.
Lord Kelvin
Definiciones
- Medida. Proporciona una indicación cuantitativa de extensión, cantidad, dimensiones, capacidad y tamaño de algunos atributos
de un proceso o producto. Pueden ser directas, p.e. número de líneas de código, número de errores encontrados, etc.,
o pueden ser indirectas, p.e. funcionalidad, calidad, complejidad, etc.
- Medición. Acto de determinar una medida.
- Métrica. Es una medida cuantitativa del grado en que un sistema o proceso posee un atributo dado. Por lo general relaciona
una o más medidas, p.e. número de errores encontrados por cada mil líneas de código.
- Indicador. Es una métrica o combinación de métricas que proporcionan una visión del proceso, del proyecto o del software
en sí, y poder hacer ajustes para que las cosas mejoren.
Métricas orientadas al tamaño.Medidas
- Líneas de código (LOC).
- Esfuerzo en hombre-mes.
- Costo en pesos o dólares.
- Número de páginas de documentación.
- Número de errores. Fallas detectadas antes de entregar el software al cliente.
- Número de defectos. Fallas detectadas después de entregar el software al cliente.
- Número de personas en el proyecto.
Métricas
- Errores por KLOC (mil líneas de código).
- Defectos por KLOC.
- Costo por KLOC.
- Páginas de documentación por KLOC.
- Errores por hombre-mes.
- LOC por hombre-mes.
- Costo por página de documentación.
Ventajas
- Son fáciles de calcular.
- Muchos modelos de estimación de software usan LOC o KLOC como datos de entrada.
- Existen un amplio conjunto de datos y literatura basados en LOC.
Desventajas
- Son dependientes del lenguaje de programación.
- Perjudica a los programas cortos pero bien diseñados.
- Su uso en estimación es díficil porque hay que estimar las LOC a producirse mucho antes de que se complete el análisis
y el diseño.
Métricas orientadas a la función.
La medida de punto de función se propuso en 1979 y trata de medir la funcionalidad o utilidad del software.
Cálculo del punto de función
- Hay que completar la siguiente tabla de valores del dominio de la información:
Parámetro
| Cuenta
| Factor de ponderación
| Subtotal |
Simple
| Medio
| Complejo |
Número de entradas de usuario
|
| 3
| 4
| 6
| |
Número de salidas de usuario
|
| 4
| 5
| 7
| |
Número de peticiones de usuario
|
| 3
| 4
| 6
| |
Número de archivos
|
| 7
| 10
| 15
| |
Número de interfaces externas
|
| 5
| 7
| 10
| |
Total
| |
donde:
- Entradas de usuario. Son entradas que proporcionan diferentes datos a la aplicación. No confundirlos con las peticiones
de usuario.
- Salidas de usuario. Son reportes, pantallas o mensajes de error que proporcionan información. Los elementos de un reporte,
no se cuentan de forma separada.
- Peticiones de usuario. Es una entrada interactiva que produce la generación de alguna respuesta del software en forma
de salida interactiva.
- Archivos. Son los archivos que pueden ser parte de una base de datos o independientes.
- Interfaces externas. Son los archivos que se usan para transmitir información a otro sistema.
Indicaciones:
- Contar cada medida por separado.
- Asociar, de alguna manera, un valor de complejidad a cada medida. La siguiente tabla muestra una heurística para decidir
la complejidad de todo el sistema.
Tipos de archivos referenciados
| Tipos de datos elementales |
1-5
| 6-19
| 20+ |
0-1
| bajo
| bajo
| medio |
2-3
| bajo
| medio
| alto |
4+
| medio
| alto
| alto |
- Para cada medida, multiplicar su cuenta por el factor de complejidad elegido y escribirlo en la columna de la extrema
derecha.
- Sumar la columna de la extrema derecha y obtener un total T que indica el valor del dominio de la información.
- Responder a cada una de las siguientes catorce preguntas y asignarles un valor entre 0 y 5, donde 0 es no influencia,
1 es incidental, 2 es moderado, 3 es medio, 4 es significativo y 5 es esencial.
- ¿Requiere el sistema copias de seguridad y de recuperación fiables?
- ¿Requiere comunicación de datos?
- ¿Existen funciones de procesamiento distribuido?
- ¿Es crítico el rendimiento?
- ¿Se ejecutará el sistema en un entorno operativo existente y fuertemente utilizado?
- ¿Requiere entrada de datos interactiva?
- ¿Requiere la entrada de datos interactiva que las transacciones de entrada se lleven a cabo sobre múltiples pantallas
u operaciones?
- ¿Se actualizan los archivos maestros de forma interactiva?
- ¿Son complejas las entradas, las salidas, los archivos o las peticiones?
- ¿Es complejo el procesamiento interno?
- ¿Se ha diseñado el código para ser reutilizable?
- ¿Están incluidas en el diseño la conversión y la instalación?
- ¿Se ha diseñado el sistema para soportar múltiples instalaciones en diferentes organizaciones?
- ¿Se ha diseñado la aplicación para facilitar los cambios y para ser fácilmente utilizada por el usuario?
Sumar los puntos asignados a cada respuesta y obtener un total F que indica un valor de ajuste de complejidad.
- El punto de función FP se calcula con la siguiente ecuación:
PF = T * (0.65 + 0.01 * F).
Métricas
- Errores por PF.
- Defectos por PF.
- Costo por PF.
- Página de documentación por PF.
- PF por hombre-mes.
Métricas ampliadas de punto de función.
Los puntos de función fueron diseñados originalmente para sistemas de información y por eso le da más importancia a los
datos y menos a los aspectos de control y funcionales. Para subsanar esto, se han propuesto los puntos de característica y
los puntos de función 3D.
Puntos de característica.
Se calcula igual que el punto de función y solo agrega la cuenta de algoritmos. En este contexto se define un algoritmo
como un problema de cálculo limitado que se incluye dentro de un programa de computadora específico. Invertir una matriz,
decodificar un string o manejar una interrupción son ejemplos de algoritmos.
Puntos de función 3D.
Los puntos de función 3D se calculan llenando la siguiente tabla:
Elemento de medición
| Pesos de complejidad
| Subtotal |
Bajo
| Medio
| Alto |
Estructuras internas de datos
|
| *
| 7
| +
|
| *
| 10
| +
|
| *
| 15
| =
| |
Datos externos
|
| *
| 5
| +
|
| *
| 7
| +
|
| *
| 10
| =
| |
Número de entradas de usuario
|
| *
| 3
| +
|
| *
| 4
| +
|
| *
| 6
| =
| |
Número de salidas de usuario
|
| *
| 4
| +
|
| *
| 5
| +
|
| *
| 7
| =
| |
Número de peticiones de usuario
|
| *
| 3
| +
|
| *
| 4
| +
|
| *
| 6
| =
| |
Transformaciones
|
| *
| 7
| +
|
| *
| 10
| +
|
| *
| 15
| =
| |
Transiciones
|
|
|
| +
|
|
|
| +
|
|
|
| =
| |
Punto de función 3D
| |
donde:
- Estructuras internas de datos. Son arreglos, listas ligadas, pilas, colas, etc.
- Datos externos. Equivale a la suma de los archivos y las interfaces externas tal y como están definidos para el punto de función.
- Entradas de usuario. Definidas igual que para el punto de función.
- Salidas de usuario. Definidas igual que para el punto de función.
- Peticiones de usuario. Definidas igual que para el punto de función.
- Transformaciones. Son las operaciones internas requeridas para transformar datos de entrada en datos de salida. Multiplicar
dos matrices cuenta como una transformación. Leer datos de un archivo y guardarlos en memoria no.
- Transiciones. Ocurre cuando el software pasa de un estado a otro como resultado de algún suceso. En un sistema de altas,
bajas y cambios, al tomar la opción de altas, pasa del estado "menú principal" al estado "procesa altas" y puede ser que en
ese momento pida datos para dar la alta.
Indicaciones:
- Para cada medida, contar por separado, de acuerdo a algún criterio de asignación de complejidad, las veces que aparezca
con complejidad baja, media y alta.
- Para cada medida, multiplicar cada cuenta por el factor de complejidad correspondiente, sumar las tres cantidades y escribir
el total en la columna de la extrema derecha.
- Sumar la columna de la extrema derecha y obtener el punto de función 3D.
Funcionalidad de los lenguajes de programación
La tabla siguiente proporcional estimaciones informales del número de líneas de código que se necesitan para construir
un punto de función en varios lenguajes de programación:
Lenguaje
| LOC/PF |
Ensamblador
| 320 |
C
| 128 |
Cobol
| 105 |
Fortran
| 105 |
Pascal
| 90 |
Ada
| 70 |
OOL
| 30 |
4GL
| 20 |
Generadores de código
| 15 |
Hojas de cálculo
| 6 |
Lenguajes de íconos
| 4 |
Observando la tabla podemos decir que, en promedio, un programa en ensamblador tendrá 320/128 = 2.5 veces más líneas de
código que un programa en C que haga lo mismo, y casi 11 veces más que un lenguaje orientado a objetos (OOL) con la misma
funcionalidad.
Medidas de calidad de Gilb.
Eficacia de la Eliminación de defectos (EED).
EED = E / (E + D) donde:
E es el número de errores (fallas detectadas antes de entregar el sistema al usuario por primera vez) D
es el número de defectos (fallas detectadas después de entregar el sistema al usuario por primera vez)
|