Articulo de referencia

Métrica de software ABC

La métrica de software ABC fue introducida por Jerry Fitzpatrick en 1997 para superar las desventajas de LOC . [ 1 ] La métrica define una puntuación ABC como una terna de valor...

La métrica de software ABC fue introducida por Jerry Fitzpatrick en 1997 para superar las desventajas de LOC . [ 1 ] La métrica define una puntuación ABC como una terna de valores que representan el tamaño de un conjunto de instrucciones de código fuente. Una puntuación ABC se calcula contando el número de asignaciones (A), el número de bifurcaciones (B) y el número de condicionales (C) en un programa. La puntuación ABC se puede aplicar a métodos , funciones , clases , módulos o archivos individuales dentro de un programa.

La puntuación ABC se representa mediante un vector tridimensional < Asignaciones (A), Ramas (B), Condicionales (C) >. También puede representarse como un valor escalar , que es la magnitud del vector < Asignaciones (A), Ramas (B), Condicionales (C) >, y se calcula de la siguiente manera:

|<ABdovmidotor>|=A2+B2+do2{\displaystyle |<\mathrm {ABCvector} >|={\sqrt {A^{2}+B^{2}+C^{2}}}}

Por convención, un valor de magnitud ABC se redondea a la décima más cercana.

Historia

El concepto de medir el tamaño del software fue introducido por primera vez por Maurice Halstead [ 2 ] de la Universidad de Purdue en 1975. Sugirió que todo programa informático se compone principalmente de tokens : operadores y operandos . Concluyó que contar el número de operadores y operandos únicos nos da una medida del tamaño del programa. Sin embargo, esto no se adoptó como medida del tamaño de un programa.

Las líneas de código (LOC) eran otra medida popular del tamaño de un programa. Sin embargo, no se consideraban una medida precisa del tamaño del programa, ya que incluso un programa con funcionalidad idéntica puede tener un número diferente de líneas dependiendo del estilo de codificación. [ 3 ]

Se introdujo otra métrica, denominada Punto de Función (PF), para calcular el número de transacciones de entrada y salida del usuario. Los cálculos de puntos de función no proporcionaban información ni sobre la funcionalidad del programa ni sobre las rutinas que lo componían. [ 4 ]

La métrica ABC busca superar las limitaciones de los recuentos de LOC, FP y tokens (operaciones y operandos). Sin embargo, también se puede utilizar una puntuación FP para complementar una puntuación ABC.

Aunque el autor sostiene que la métrica ABC mide el tamaño, algunos creen que mide la complejidad. [ 5 ] La capacidad de la métrica ABC para medir la complejidad depende de cómo se defina la complejidad.

Definición

Los tres componentes de la puntuación ABC se definen de la siguiente manera:

  • Tarea: almacenamiento o transferencia de datos a una variable .
  • Ramas: una rama de programa explícita hacia adelante está fuera del alcance .
  • Condicionales: Prueba booleana o lógica.

Dado que los lenguajes básicos como C, C++, Java, etc., solo tienen operaciones como asignaciones de variables, llamadas a funciones y condiciones de prueba, la puntuación ABC tiene estos tres componentes. [ 1 ]

Si el vector ABC se denota como 5,11,9 para una subrutina , significa que la subrutina tiene 5 asignaciones, 11 bifurcaciones y 9 condicionales. Para fines de estandarización, los recuentos deben ir entre corchetes angulares y escribirse en el mismo orden según la notación A, B, C .

A menudo resulta más conveniente comparar el tamaño del código fuente mediante un valor escalar. Los recuentos individuales de ABC son distintos, por lo que, según Jerry Fitzpatrick, consideramos que los tres componentes son ortogonales , lo que permite calcular una magnitud escalar de ABC como se muestra arriba.

Las puntuaciones ABC escalares pierden algunas de las ventajas de las vectoriales. En lugar de calcular la magnitud de un vector, la suma ponderada de los vectores puede ofrecer una comparación de tamaños más precisa. Las puntuaciones ABC escalares no deben presentarse sin los vectores ABC correspondientes, ya que los valores escalares no representan completamente el tamaño.

Teoría

Las reglas específicas para contar los valores del vector ABC deben interpretarse de manera diferente para cada idioma debido a las diferencias semánticas entre ellos.

Por lo tanto, las reglas para calcular el vector ABC difieren ligeramente según el lenguaje. A continuación, definimos las reglas de cálculo de la métrica ABC para C, C++ y Java. Con base en estas reglas, se pueden interpretar las reglas para otros lenguajes imperativos. [ 1 ]

Reglas ABC para C

Las siguientes reglas proporcionan el recuento de asignaciones, ramificaciones y condicionales en la métrica ABC para C :

  1. Se añade uno al recuento de asignaciones cuando:
  2. Se añade uno al recuento de ramas cuando:
  3. Agregue uno al recuento de condiciones cuando:

Reglas ABC para C++

Las siguientes reglas proporcionan el recuento de asignaciones, bifurcaciones y condicionales en la métrica ABC para C++ :

  1. Se añade uno al recuento de asignaciones cuando:
  2. Se añade uno al recuento de ramas cuando:
    • Ocurrencia de una llamada a una función o a un método de clase.
    • Ocurrencia de cualquier instrucción goto que tenga un destino en un nivel de anidamiento más profundo que el nivel al que apunta la instrucción goto.
    • Ocurrencia de los operadores 'new' o 'delete'.
  3. Agregue uno al recuento de condiciones cuando:
    • Ocurrencia de un operador condicional ( <, >, <=, >=, ==,  != ).
    • Ocurrencia de las siguientes palabras clave (' else ', ' case ', ' default ', ' ? ', ' try ', ' catch ').
    • Ocurrencia de un operador condicional unario.

Reglas ABC para Java

Las siguientes reglas proporcionan el recuento de asignaciones, ramificaciones y condicionales en la métrica ABC para Java :

  1. Se añade uno al recuento de asignaciones cuando:
    • Ocurrencia de un operador de asignación (excluir declaraciones de constantes y asignaciones de parámetros predeterminados) ( =, *=, /=,  %=, +=, -=, <<=, >>=, &=,  !=, ^=, >>>= ).
    • Ocurrencia de un operador de incremento o decremento (prefijo o sufijo) ( ++, -- ).
  2. Agregue uno al recuento de ramas cuando
    • Ocurrencia de una llamada a una función o a un método de clase.
    • Aparición de un operador 'nuevo'.
  3. Agregue uno al recuento de condiciones cuando:
    • Ocurrencia de un operador condicional ( <, >, <=, >=, ==,  != ).
    • Ocurrencia de las siguientes palabras clave (' else ', ' case ', ' default ', ' ? ', ' try ', ' catch ').
    • Ocurrencia de un operador condicional unario.

Aplicaciones

[ 1 ]

Independiente del estilo de codificación

Dado que la métrica de puntuación ABC se basa en la idea de que tareas como el almacenamiento de datos, la ramificación y las pruebas condicionales , esta métrica es independiente del estilo de codificación del usuario.

Estimación del tiempo del proyecto

El cálculo de la puntuación ABC ayuda a estimar el tiempo necesario para completar un proyecto. Esto se puede lograr estimando de forma aproximada la puntuación ABC del proyecto y calculando la puntuación ABC del programa en un día determinado. El tiempo necesario para completar el proyecto se obtiene dividiendo la puntuación ABC del proyecto entre la puntuación ABC obtenida en un día.

Cálculo de la tasa de errores

La tasa de errores se calculaba originalmente como Número de errores / LOC . Sin embargo, LOC no es una medida fiable del tamaño del programa porque depende del estilo de codificación. Una forma más precisa de medir la tasa de errores es calcular - Número de errores / Puntuación ABC .

Comparación de programas

Los programas escritos en diferentes lenguajes se pueden comparar con la ayuda de las puntuaciones ABC, ya que la mayoría de los lenguajes utilizan asignaciones, bifurcaciones y sentencias condicionales.

La información sobre el recuento de parámetros individuales (número de asignaciones, bifurcaciones y condiciones) puede ayudar a clasificar el programa como de "alta capacidad de datos", "alta capacidad de funciones" o "alta capacidad de lógica". La representación vectorial de una puntuación ABC puede ofrecer información sobre los principios fundamentales de la aplicación , mientras que los detalles se pierden en la representación escalar de la puntuación.

Métrica lineal

Las puntuaciones ABC son lineales , por lo que se puede puntuar cualquier archivo, módulo, clase, función o método. Por ejemplo, la puntuación ABC (vectorial) de un módulo es la suma de las puntuaciones de sus submódulos. Sin embargo, las puntuaciones ABC escalares no son lineales.

Véase también

Referencias

  1. 1 2 3 4 Fitzpatrick, Jerry (1997). "Aplicación de la métrica ABC a C, C++ y Java" (PDF) . Informe de C++ .
  2. Halstead, Maurice (1977). Elementos de la ciencia del software . North Holland: Elsevier.
  3. Fenton, Norman E. (1991). "Métricas de software: éxitos, fracasos y nuevas direcciones" (PDF) . Chapman & Hall .
  4. Kitchenham, Barbara (diciembre de 1995). "Hacia un marco para la validación de la medición de software". IEEE Transactions on Software Engineering . 21 (12): 929– 944. doi : 10.1109/32.489070 . S2CID 8608582 . 
  5. Fitzpatrick, Jerry (2017). «Apéndice A». Leyes atemporales del desarrollo de software . Software Renovation Corporation. ISBN 978-0999335604.
  • Aplicación de la métrica ABC a C, C++ y Java.
  • Métrica ABC archivada el 28/03/2018 en Wayback Machine .
  • Reglas de tamaño y complejidad
  • Descifrando las métricas del código Ruby
  • La métrica ABC
Obtenido de " https://en.wikipedia.org/w/index.php?title=ABC_Software_Metric&oldid=1341197301 "