jueves, 9 de junio de 2016

Metricas de calidad de Software

A continuacion quiero citar, una serie de documentos que he encontrado en la web, los cuales nos hablan sobre la creacion de metricas en el software, estas se realizan para "evaluar su calidad". Realizo este aporte, por la solicitud de algunos compañeros, ya que en si el tema es algo complejo y no se encuentra buen material con facilidad. Sin embargo, he encontrado en la pagina de la  UNAD un resumen que puede ayudar a entender y completar el formato que en mi caso se nos facilito para la actividad.

(Hago las aclaraciones que creo pertinentes en color azul)

Formato: metricas.xml 

Métricas del Proyecto
Las Métricas de proyecto se utilizan:
  • Para minimizar la planificación de desarrollo, ya que se realizan ajuste y se reduce los retrasos
  • Para evaluar la calidad de los productos. A medida que mejora la calidad se minimizan los defectos.
 
Las métricas del proyecto de software sugieren que los proyectos deben medir:
  • Entradas: la dimensión de los recursos que se requieren para realizar el trabajo
  • Salidas: medidas de las entradas o productos creados durante el proceso de ingeniería del software
  • Resultados: medidas que indican la efectividad de las entregas.

Las métricas del software se pueden categorizar en: 

Medidas directas: dentro de estas se pueden incluir:
  • El costo y el esfuerzo aplicado
  • Líneas de código producidas (LCD)
  • Velocidad de ejecución, tamaño de memoria y los defectos informados durante un periodo de tiempo establecido
Medidas Indirectas:
  • La funcionalidad, calidad, complejidad, eficiencia
  • Fiabilidad, facilidad, facilidad de mantenimiento .
El domino de las métricas del software se dividen en métricas de proceso, proyecto y producto.

Métricas orientadas al tamaño

Provienen de la normalización de las medidas de calidad y/o productividad considerando el "tamaño" del software que se haya producido.

Los datos que se deben tener en cuenta, se pueden llevar en la siguiente tabla:
 
Proyecto
LDC
Esfuerzo
Costo $
Páginas de documentación
Errores
Defectos
Personas
IRIS
18.200
24
200.000
945
134
86
4
               
 
Teniendo en cuenta los datos de la tabla, se pueden derivar otras métricas para comparar varios proyectos. Por ejemplo:
  • Errores por KLDC (miles de líneas de código)
  • Defectos por KLDC
  • Páginas de documentación por KLDC
  • Errores por persona-mes
  • LDC por persona-mes
  • Costo ($) por página de documentación
Métricas orientadas a la función
 
Permiten la medida de la funcionalidad de la aplicación.Propuestas por Allan Albrecht de IBM, comenzó a analizar sistemas, a pedido del grupo de usuarios de IBM, buscando identificar los factores críticos que determinan el tamaño del software y por consiguiente, estimar el esfuerzo y el costo de desarrollarlo. Luego de analizar cientos de sistemas, nació la técnica de Análisis de Puntos por función. La técnica mide una aplicación con base en las funciones que éste realiza para/por solicitud del usuario final.
 
Los puntos de función se obtienen utilizando una función empírica basado en medidas cuantitativas del dominio de información del software y valoraciones subjetivas de la complejidad del software.

Los puntos de función se calculan utilizando la siguiente tabla:
 
Parámetros de medición Cuenta

Factor de ponderación






Simple Medio Complejo



Número de entradas de usuario  
X
3
4
6
=
 
Número de salidas de usuario  
X
4
5
7
=
 
Número de peticiones de usuario  
X
3
4
6
=
 
Número de archivos  
X
7
10
15
=
 
Número de interfaces externas  
X
5
7
10
=
 
Cuenta_total
 

Se determinan 5 características del ámbito de la información y los cálculos aparecen en la posición apropiada de la tabla. Los valores del ámbito de información están definidos de la siguiente manera:

1. Número de entradas de usuario: se cuenta cada entrada de usuario que proporcione al software diferentes datos orientados a la aplicación.

2. Número de salidas de usuario: se cuenta cada salida que proporciona al usuario información orientada a la aplicación. En este contexto las salidas se refieren a informes, pantallas, mensajes de error.

3. Número de peticiones de usuario: una petición esta definida como una entrada interactiva que resulta de la generación de algún tipo de respuesta en forma de salida interactiva. Se cuenta cada petición por separado.

4. Número de archivos: se cuenta cada archivo maestro lógico.(principales grupos lógicos de datos de usuarios o de control que están controlados por el programa (una tabla de un SGBDR).

5. Número de interfaces externas: se cuentan todas las interfaces legibles por la maquina por ejemplo: archivos de datos, en cinta o discos que son utilizados para transmitir información a otro sistema.

Procedimiento: primer lugar su cuentan e inscribe el numero de "parametros de medicion" y se les asigna un valor, ejemplo:

Entradas de usuario = 25

Seguidamente, se elije el factor de ponderacion para ese paramentro de medicion (puede ser simple, medio, complejo), en este ejemplo digamos que el factor sera "medio" entonces:

Entradas de usuario 25 * 4 (valor que corresponde la poderacion medio par dicho parametro <ver tabla arriba>).

Finalmente, se escribe el subtotal en la ultima columna de la derecha  de la tabla.  

En mi proyecto y a manera de ejemplo la tabla quedaria de esta manera:

PARAMETROS DE MEDICION
CEUNTA
FACTOR DE PONDERACION
SIMPLE
MEDIO
COMPLEJO
Numero de entradas de usuario
2
3
4
6
8
Numero de salidas de usuario
7
4
5
7
49
Numero de peticiones de usuario
10
3
4
6
30
Numero de archivos
5
7
10
15
50
Numero de interfaces externas
1
5
7
10
5
CUENTA TOTAL
142
 

  
Cuando han sido recogidos los datos anteriores, se asocia el valor de complejidad a cada cuenta. Las organizaciones que utilizan métodos de puntos de función desarrollan criterios para determinar si una entrada es denominada simple, media o compleja. No obstante la determinación de la complejidad es algo subjetivo.
 
Para calcular los puntos de función se utiliza la siguiente relación:
PF = Cuenta_total * [0.65 + 0.01 * (fi)]

De menare que, el primer paso es llenar la tabla, en estos enlaces pueden ver Videos explicativos de la forma de llenar la tabla anterior: 

Video explicativo I
Video explicativo 2

Autor videos: Cat. Carlos Alberto Espinoza.
 

Continuando con la resulucion de la formula, realizamos la segunda tabla para calcular el (fi)
 
PF Punto de función
Cuenta_total Es la suma de todas las entradas obtenidas
fi  
Donde i=1 hasta 14. Son valores de ajuste de la complejidad basados en las respuestas a las cuestiones señaladas de la siguiente tabla:
Evaluar cada factor en escala 0 a 5
0
1
2
3
4
5
No influencia Incidental Moderado Medio Significativo Esencial
Fi :  
1
¿Requiere el sistema copias de seguridad y de recuperación fiables?
2
¿Se requiere comunicación de datos?
3
¿Existen funciones de procesamiento distribuido?
4
¿Es crítico el rendimiento?
5
¿Se ejecutará el sistema en un entorno operativo existente y fuertemente utilizado?
6
¿Requiere el sistema entrada de datos interactiva?
7
¿Requiere la entrada de datos interactiva que las transacciones de entrada se lleven a cabo sobre múltiples pantallas u operaciones?
8
¿Se actualizan los archivos maestros de forma interactiva?
9
¿Son complejas las entradas, las salidas, los archivos o las peticiones?
10
¿Es complejo el procesamiento interno?
11
¿Se ha diseñado el código para ser reutilizable?
12
¿Están incluidas en el diseño la conversión y la instalación?
13
¿Se ha diseñado el sistema para soportar múltiples instalaciones en diferentes organizaciones?
14
¿Se ha diseñado la aplicación para facilitar los cambios y para ser fácilmente utilizada por el usuario?
 
 
Una vez calculado el punto de función se usan de forma analógica a las LDC como medida de la productividad, calidad y otros productos del software.

Productividad = PF / persona-mes
Calidad = Errores / PF
Costo = Dólares / PF
Documentación = Paginas Documentadas / PF

De manera que nuestra tabla quedaria de esta manera:



FACTORES DE INFLUENCIA EN LA DIFICULTAD DEL SISTEMA







INTERROGANTE
RESPUESTA
1
Requiere el sistema de copias de seguridad
3
2
Se requiere comunicación de datos
5
3
Existe funciones de procedimiento distribuido
4
4
Es critico el funcionamiento
3
5
Se ejecutara el sistema en un entorno operativo existente y fuertemente utilizado
3
6
Requiere el sistema entrada de datos interactivos
4
7
Requiere de datos interactivos que la transacción de entrada se lleve a cabo
 sobre múltiples pantallas
4
8
Se actualizaran los archivos maestros de forma interactivo
5
9
Son complejos las E/S los archivos o las peticiones
3
10
Es complejo el procesamiento interno
3
11
Se a diseñado el código para ser reutilizable
4
12
Esta incluido en el diseño la conversión y la instalación
3
13
Se ha diseñado el sistema para soportar múltiples instalaciones en 
diferentes organizaciones
1
14
Se ha diseñado la aplicación para facilitar los cambios y para ser fácilmente
 utilizado por el usuario
5
TOTAL FI
50


El TOTAL FI, es la suma de todas las repuestas.


Calculamos PF
Cuenta_total * [0.65 + 0.01 * (fi)]
Donde:
Cuenta total = la sumatoria de la primera tabla.
(fi)  = A la sumatoria de la segunda tabla
Como ejemplo en mi caso, la cuenta total me dio 142 y el Fi = 50; entonces:
PF = 142*(0,65+0,01*50)

Aclaracion: en el formato que nos dan el Fi, le sacan el promedio a la sumatoria PORQUE EN ESTE SE HAYA EL PF NOMINAL. Sin embargo la formula la aplique tal como aparece: (fi) = sumatoria(fi).

Posteriormente aplique la formula calculando el promedio para hayar el PF Nominal, tal y como esta en el formato  metricas.xml. 

Es asi que, las tablas hasta el momento nos quedarian de esta manera:

CALCULO PF
PF =142*(0,65+0,01*50)
 PF = Cuenta_total * [0.65 + 0.01 * ∑(fi)]
PF=
163,3






CALCULO PF NOMINAL
PF(n)= 142*(0,65+0,01* 3,57)
Pf(nominal) = Cuenta_total*(0,65+0,01*Prom(Fi))
PF(n)=
97,37






CALCULO PF REAL
PF(r)=97,37 - (97,37*45/100)
Donde el Pf(real) se obtiene restando el porcentaje  de 
reutilización que para nuestro proyecto es estaimado 
a 45%
PF(r)=
53,55
 


__________________________________________________________________________________
ANEXOS
Finalmente, comparto un ejemplo para aclarar conceptos sobre las variables de la tabla, recuerden que a cada una de ellas se da un valor de 1 a 5 segun su complejdidad. La siguiente informacion solo es para ver en que situaciones se aplica con mayor frecuencia cada variable.



FACTORES DE INFLUENCIA EN LA DIFICULTAD DEL SISTEMA
Ejemplo

1. Comunicaciones de datos
Una aplicación para el sector bancario, donde se requieren numerosas transacciones monetarias.

2. Procesamiento distribuido
Un motor de búsqueda en Internet, donde el procesamiento está distribuido en decenas de máquinas.

3. Objetivos de rendimiento
Una aplicación para el control del tráfico aéreo, que debe proporcionar continuamente información precisa sobre la posición y rumbo de los aviones.

4. Configuración de uso intensivo
Un sistema para matrículas en una universidad, donde concurren cientos de alumnos al mismo tiempo.

5. Tasas de transacción rápidas
Una aplicación para el sector bancario, donde deben realizarse millones de transacciones durante la noche.

6. Entrada de datos en línea
Un programa en el que los datos de entrada provienen de papeles o formularios impresos.

7. Amigabilidad en

el diseño
Un programa de análisis financiero utilizado por el directivo de una empresa, capaz de orientarle y asesorarle.

8. Actualización de datos en línea
Una aplicación para reserva de billetes, en la que deben bloquearse y modificarse ciertos registros en las BB.DD. para evitar que un mismo asiento sea vendido dos veces.

9. Procesamiento complejo
Un sistema para diagnóstico médico, el cual realiza costosas operaciones de decisión lógica hasta obtener un resultado.

10. Reusabilidad
Un procesador de textos en el que, por ejemplo, su barra de menús puede utilizarse desde una hoja de cálculo, un generador de informes de una base de datos, etc.

11. Facilidad de instalación
Cualquier aplicación de propósito general, de tal forma que cualquier persona pueda realizar la instalación fácilmente.

12. Facilidad operacional
Una aplicación para tratamiento de grandes cantidades de información, donde es muy importante la efectividad de los procesos de backup y recuperación de datos.

13. Adaptabilidad
Una aplicación software para una multinacional con oficinas en varios países.

14. Versatilidad
Un sistema que admite diversas situaciones de uso, tanto para facilitar los cambios como para ser utilizada por el usuario