fbpx
Wikipedia

Métrica de Software ABC

La métrica del software ABC fue introducida por Jerry Fitzpatrick en 1997 para superar los inconvenientes de las LOC (Lines Of Code - Líneas de Código). [1]​ La métrica define un resultado ABC como un valor triple que representa el tamaño de un conjunto de declaraciones de código fuente. Un resultado ABC se calcula contando el número de asignaciones (A), número de ramas (B) y número de condicionales (C) en un programa. La resultante ABC se puede aplicar a métodos, funciones, clases, módulos o archivos individuales dentro de un programa.

Un resultado ABC está representado por un vector tridimensional <Asignaciones (A), Ramas (B), Condicionales (C)>. También este, puede ser representado como un valor escalar, que es la magnitud del vector <Asignaciones (A), Ramas (B), Condicionales (C)>, y es calculado de la siguiente manera:

Para mantener una 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 se introdujo primero por Maurice Halstead [2]​ de la Universidad de Purdue en 1975. El sugirió que cada programa de computadora consiste principalmente en tokens : operadores y operandos. Habiendo concluido que haciendo un conteo de la cantidad de operadores y operandos únicos ofrece una medida del tamaño del programa. Sin embargo, este no fue adoptado como una medida del tamaño de un programa.

Las líneas de código (LOC - Lines Of Code) fueron otra medida popular del tamaño de un programa. Las LOC no se han considerado como una medida exacta del tamaño del programa porque incluso un programa con una funcionalidad idéntica puede tener diferentes números de líneas dependiendo del estilo de codificación. [3]

Se introdujo también otra métrica llamada punto de función (FP - Function Point) para el cálculo del número de transacciones de entrada y salida del usuario. Los cálculos del punto de función no proporcionaron información sobre la funcionalidad del programa y sobre las rutinas que fueron involucradas en el programa. [4]

La métrica ABC tiene el propósito de superar los inconvenientes de los conteos que se realizan en las LOC, FP y token (operador y operando). Sin embargo, una medida FP también se puede utilizar para complementar una puntuación ABC.

Aunque el autor sostiene que la métrica ABC mide el tamaño del software, algunos creen que mide la complejidad. [5]​ La habilidad de la métrica ABC de medir la complejidad del software, depende de cómo se define la complejidad.

Definición

Los tres componentes de la métrica ABC son definidos de la siguiente manera:

  • Asignación: almacenamiento o transferencia de datos en una variable .
  • Ramas: una rama de programa directo explícito fuera de alcance .
  • Condicionales: prueba booleana o lógica.

Ya que lenguajes básicos como C, C ++, Java, etc. tienen operaciones como asignaciones de variables, llamadas a función y condicionales de prueba únicamente, la puntuación ABC tiene esos tres componentes. [1]

Si el vector ABC es denotado como <5,11,9> para una subrutina, eso significa que esa subrutina tiene 5 asignaciones, 11 ramas y 9 condicionales. Para fines de estandarización, los conteos deben encerrarse entre paréntesis angulares y deberán ser escritos en el mismo orden según la notación <A, B, C>.

Con mayor frecuencia es más conveniente comparar los tamaños de código fuente usando un valor escalar. Los conteos individuales de ABC resultan ser distintos, por lo que, de acuerdo a Jerry Fitzpatrick, consideramos los tres componentes como ortogonales, por lo que permite calcular una magnitud escalar ABC como se muestra arriba.

La puntuación escalar ABC pierde algunos de los beneficios del vector. En vez de calcular la magnitud de un vector, la suma ponderada de los vectores puede admitir una comparación de tamaño más exacta. Las puntuaciones escalares ABC no deben ser presentadas sin los vectores ABC que las acompañan, ya que esos valores escalares no son la representación completa de su tamaño.

Teoría

Las especificación de las reglas para contar los valores del vector ABC, deben ser interpretados de manera diferente para diferentes lenguajes debido a las diferencias semánticas que existe entre ellos.

Por lo tanto, las reglas para calcular el vector ABC difieren ligeramente según la base del lenguaje usado. Definimos las reglas de cálculo métrico ABC para C, C ++ y Java a continuación. Basado en a estas reglas, se pueden interpretar las reglas para otros órdenes de lenguajes. [1]

Reglas ABC para C

Las reglas presentadas a continuación dan el conteo de Asignaciones, Ramas, Condicionales en la métrica ABC para C :

  1. Agregue uno al recuento de tareas cuando:
  2. Agregue uno al recuento de ramas cuando:
    • Ocurrencia de una llamada a función .
    • Ocurrencia de cualquier declaración goto que tenga un objetivo en un nivel de anidamiento más profundo que el nivel del goto.
  3. Agregue uno al conteo de condiciones cuando:
    • Ocurrencia de un operador condicional ( <,>, <=,> =, ==,! = ).
    • Ocurrencia de las siguientes palabras clave (' else ', ' case ', ' default ', ' ? ' )
    • Ocurrencia de un operador condicional unario .

Reglas ABC para C ++

Las reglas presentadas más adelante, dan el conteo de asignaciones, ramas, condicionales en la métrica ABC para C ++ :

  1. Agregue uno al recuento de tareas cuando:
    • Ocurrencia de un operador de asignación (excluye declaraciones constantes y asignaciones de parámetros por defecto) ( =, *=, /=,%=, +=, <<=, >>=, &=, !=, ^= ).
    • Ocurrencia de un operador de incremento o decremento (prefijo o postfix) (++, -- ).
    • Inicialización de una variable o un miembro de clase no constante.
  2. Agregue uno al recuento de sucursales cuando:
    • Ocurrencia de una llamada a función o una llamada a método de clase.
    • Ocurrencia de cualquier declaración de goto que tenga un objetivo en un nivel de anidación más profundo que el nivel del goto.
    • Ocurrencia de operadores 'nuevos' o 'borrar'.
  3. Agregue uno al conteo 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 reglas que se presentan a continuación, dan el recuento de Asignaciones, Ramas, Condicionales en la métrica ABC para Java :

  1. Agregue uno al recuento de tareas cuando:
    • Ocurrencia de un operador de asignación (excluye declaraciones constantes y asignaciones de parámetros por defecto) (=, *=, /=,%=, +=, <<=, >>=, &=,!=, ^=, >>> = ).
    • Ocurrencia de un operador de incremento o decremento (prefijo o postfix) ( ++, -- ).
  2. Agregue uno al recuento de sucursales cuando
    • Ocurrencia de una llamada a función o una llamada a método de clase.
    • Ocurrencia de un 'nuevo' operador.
  3. Agregue uno al conteo 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 ABC esta construida sobre idea que tareas como el asignación o almacenamiento de datos, ramificación y pruebas condicionales pueden ser diferentes en cada proyecto, esta métrica es independiente del estilo de codificación del usuario.

Estimación del tiempo del proyecto.

El cálculo del resultado ABC ayuda a estimar la cantidad de tiempo requerido para completar un proyecto. Esto puede hacerse por una estimación áspera y aproximada de la métrica ABC para el proyecto y calculando el resultado ABC del programa en un día en particular. La cantidad de tiempo tomado para completar el proyecto puede obtenerse dividiendo el resultado ABC del proyecto por el resultado ABC alcanzado en un día.

Cálculo de tasa de error

La tasa de error fue calculada originalmente como Número de errores / LOC . Sin embargo, las LOC (Lines Of Code - Líneas de Código) no es una medida confiable del tamaño del programa porque depende del estilo de codificación. Una forma más precisa de medir la tasa de errores es contar el número de errores / cálculo ABC .

Comparación de programa

Aquellos programas escritos en diferentes lenguajes de programación, pueden ser comparados con la ayuda de los cálculos ABC porque la mayoría de los lenguajes usan asignaciones, ramas y declaraciones condicionales.

La información sobre conteo de los parámetros individuales (número de asignaciones, ramas y condiciones) puede ayudar a clasificar el programa como 'fuerza de datos' o 'fuerza de función' o 'fuerza de lógica'. La forma vectorial de una cálculo ABC puede proveer una percepción de los principios básicos detrás de la aplicación, mientras que los detalles se pierden en la forma escalar del cálculo.

Métrica lineal

Los cálculos ABC son lineales, por lo que se puede calcular cualquier archivo, módulo, clase, función o método. Por ejemplo, el cálculo (vector) ABC para un módulo es la suma de los cálculos de sus submódulos. Los cálculos escalares ABC, sin embargo, no son lineales.

Ver también

Referencias

  1. Fitzpatrick, Jerry (1997). «Applying the ABC metric to C, C++ and Java». C++ Report. 
  2. Halstead, Maurice (1977). Elements of Software Science. North Holland: Elsevier. 
  3. Fenton, Norman E. (1991). «Software Metrics: Successes, Failures and New Directions». Chapman & Hall. 
  4. Kitchenham, Barbara (December 1995). «Towards a Framework for Software Measurement Validation». IEEE Transactions on Software Engineering 21 (12): 929-944. doi:10.1109/32.489070. 
  5. Fitzpatrick, Jerry (2017). «Appendix A». Timeless Laws of Software Development. Software Renovation Corporation. ISBN 978-0999335604. 

Enlaces externos

  • Applying the ABC Metric to C, C++, and Java
  • Deciphering Ruby Code Metrics
  • The ABC metric
  •   Datos: Q28134618

métrica, software, métrica, software, introducida, jerry, fitzpatrick, 1997, para, superar, inconvenientes, lines, code, líneas, código, métrica, define, resultado, como, valor, triple, representa, tamaño, conjunto, declaraciones, código, fuente, resultado, ca. La metrica del software ABC fue introducida por Jerry Fitzpatrick en 1997 para superar los inconvenientes de las LOC Lines Of Code Lineas de Codigo 1 La metrica define un resultado ABC como un valor triple que representa el tamano de un conjunto de declaraciones de codigo fuente Un resultado ABC se calcula contando el numero de asignaciones A numero de ramas B y numero de condicionales C en un programa La resultante ABC se puede aplicar a metodos funciones clases modulos o archivos individuales dentro de un programa Un resultado ABC esta representado por un vector tridimensional lt Asignaciones A Ramas B Condicionales C gt Tambien este puede ser representado como un valor escalar que es la magnitud del vector lt Asignaciones A Ramas B Condicionales C gt y es calculado de la siguiente manera lt v e c t o r A B C gt A 2 B 2 C 2 displaystyle lt vectorABC gt surd A 2 B 2 C 2 dd Para mantener una convencion un valor de magnitud ABC se redondea a la decima mas cercana Indice 1 Historia 2 Definicion 3 Teoria 3 1 Reglas ABC para C 3 2 Reglas ABC para C 3 3 Reglas ABC para Java 4 Aplicaciones 1 4 1 Independiente del estilo de codificacion 4 2 Estimacion del tiempo del proyecto 4 3 Calculo de tasa de error 4 4 Comparacion de programa 4 5 Metrica lineal 5 Ver tambien 6 Referencias 7 Enlaces externosHistoria EditarEl concepto de medir el tamano del software se introdujo primero por Maurice Halstead 2 de la Universidad de Purdue en 1975 El sugirio que cada programa de computadora consiste principalmente en tokens operadores y operandos Habiendo concluido que haciendo un conteo de la cantidad de operadores y operandos unicos ofrece una medida del tamano del programa Sin embargo este no fue adoptado como una medida del tamano de un programa Las lineas de codigo LOC Lines Of Code fueron otra medida popular del tamano de un programa Las LOC no se han considerado como una medida exacta del tamano del programa porque incluso un programa con una funcionalidad identica puede tener diferentes numeros de lineas dependiendo del estilo de codificacion 3 Se introdujo tambien otra metrica llamada punto de funcion FP Function Point para el calculo del numero de transacciones de entrada y salida del usuario Los calculos del punto de funcion no proporcionaron informacion sobre la funcionalidad del programa y sobre las rutinas que fueron involucradas en el programa 4 La metrica ABC tiene el proposito de superar los inconvenientes de los conteos que se realizan en las LOC FP y token operador y operando Sin embargo una medida FP tambien se puede utilizar para complementar una puntuacion ABC Aunque el autor sostiene que la metrica ABC mide el tamano del software algunos creen que mide la complejidad 5 La habilidad de la metrica ABC de medir la complejidad del software depende de como se define la complejidad Definicion EditarLos tres componentes de la metrica ABC son definidos de la siguiente manera Asignacion almacenamiento o transferencia de datos en una variable Ramas una rama de programa directo explicito fuera de alcance Condicionales prueba booleana o logica Ya que lenguajes basicos como C C Java etc tienen operaciones como asignaciones de variables llamadas a funcion y condicionales de prueba unicamente la puntuacion ABC tiene esos tres componentes 1 Si el vector ABC es denotado como lt 5 11 9 gt para una subrutina eso significa que esa subrutina tiene 5 asignaciones 11 ramas y 9 condicionales Para fines de estandarizacion los conteos deben encerrarse entre parentesis angulares y deberan ser escritos en el mismo orden segun la notacion lt A B C gt Con mayor frecuencia es mas conveniente comparar los tamanos de codigo fuente usando un valor escalar Los conteos individuales de ABC resultan ser distintos por lo que de acuerdo a Jerry Fitzpatrick consideramos los tres componentes como ortogonales por lo que permite calcular una magnitud escalar ABC como se muestra arriba La puntuacion escalar ABC pierde algunos de los beneficios del vector En vez de calcular la magnitud de un vector la suma ponderada de los vectores puede admitir una comparacion de tamano mas exacta Las puntuaciones escalares ABC no deben ser presentadas sin los vectores ABC que las acompanan ya que esos valores escalares no son la representacion completa de su tamano Teoria EditarLas especificacion de las reglas para contar los valores del vector ABC deben ser interpretados de manera diferente para diferentes lenguajes debido a las diferencias semanticas que existe entre ellos Por lo tanto las reglas para calcular el vector ABC difieren ligeramente segun la base del lenguaje usado Definimos las reglas de calculo metrico ABC para C C y Java a continuacion Basado en a estas reglas se pueden interpretar las reglas para otros ordenes de lenguajes 1 Reglas ABC para C Editar Las reglas presentadas a continuacion dan el conteo de Asignaciones Ramas Condicionales en la metrica ABC para C Agregue uno al recuento de tareas cuando Ocurrencia de un operador de asignacion lt lt gt gt amp Ocurrencia de un operador de incremento o decremento Agregue uno al recuento de ramas cuando Ocurrencia de una llamada a funcion Ocurrencia de cualquier declaracion goto que tenga un objetivo en un nivel de anidamiento mas profundo que el nivel del goto Agregue uno al conteo de condiciones cuando Ocurrencia de un operador condicional lt gt lt gt Ocurrencia de las siguientes palabras clave else case default Ocurrencia de un operador condicional unario Reglas ABC para C Editar Las reglas presentadas mas adelante dan el conteo de asignaciones ramas condicionales en la metrica ABC para C Agregue uno al recuento de tareas cuando Ocurrencia de un operador de asignacion excluye declaraciones constantes y asignaciones de parametros por defecto lt lt gt gt amp Ocurrencia de un operador de incremento o decremento prefijo o postfix Inicializacion de una variable o un miembro de clase no constante Agregue uno al recuento de sucursales cuando Ocurrencia de una llamada a funcion o una llamada a metodo de clase Ocurrencia de cualquier declaracion de goto que tenga un objetivo en un nivel de anidacion mas profundo que el nivel del goto Ocurrencia de operadores nuevos o borrar Agregue uno al conteo de condiciones cuando Ocurrencia de un operador condicional lt gt lt gt Ocurrencia de las siguientes palabras clave else case default Try catch Ocurrencia de un operador condicional unario Reglas ABC para Java Editar Las reglas que se presentan a continuacion dan el recuento de Asignaciones Ramas Condicionales en la metrica ABC para Java Agregue uno al recuento de tareas cuando Ocurrencia de un operador de asignacion excluye declaraciones constantes y asignaciones de parametros por defecto lt lt gt gt amp gt gt gt Ocurrencia de un operador de incremento o decremento prefijo o postfix Agregue uno al recuento de sucursales cuando Ocurrencia de una llamada a funcion o una llamada a metodo de clase Ocurrencia de un nuevo operador Agregue uno al conteo de condiciones cuando Ocurrencia de un operador condicional lt gt lt gt Ocurrencia de las siguientes palabras clave else case default Try catch Ocurrencia de un operador condicional unario Aplicaciones 1 EditarIndependiente del estilo de codificacion Editar Dado que la metrica ABC esta construida sobre idea que tareas como el asignacion o almacenamiento de datos ramificacion y pruebas condicionales pueden ser diferentes en cada proyecto esta metrica es independiente del estilo de codificacion del usuario Estimacion del tiempo del proyecto Editar El calculo del resultado ABC ayuda a estimar la cantidad de tiempo requerido para completar un proyecto Esto puede hacerse por una estimacion aspera y aproximada de la metrica ABC para el proyecto y calculando el resultado ABC del programa en un dia en particular La cantidad de tiempo tomado para completar el proyecto puede obtenerse dividiendo el resultado ABC del proyecto por el resultado ABC alcanzado en un dia Calculo de tasa de error Editar La tasa de error fue calculada originalmente como Numero de errores LOC Sin embargo las LOC Lines Of Code Lineas de Codigo no es una medida confiable del tamano del programa porque depende del estilo de codificacion Una forma mas precisa de medir la tasa de errores es contar el numero de errores calculo ABC Comparacion de programa Editar Aquellos programas escritos en diferentes lenguajes de programacion pueden ser comparados con la ayuda de los calculos ABC porque la mayoria de los lenguajes usan asignaciones ramas y declaraciones condicionales La informacion sobre conteo de los parametros individuales numero de asignaciones ramas y condiciones puede ayudar a clasificar el programa como fuerza de datos o fuerza de funcion o fuerza de logica La forma vectorial de una calculo ABC puede proveer una percepcion de los principios basicos detras de la aplicacion mientras que los detalles se pierden en la forma escalar del calculo Metrica lineal Editar Los calculos ABC son lineales por lo que se puede calcular cualquier archivo modulo clase funcion o metodo Por ejemplo el calculo vector ABC para un modulo es la suma de los calculos de sus submodulos Los calculos escalares ABC sin embargo no son lineales Ver tambien EditarComplejidad de software Programacion de computadoras Medidas de complejidad de Halstead Complejidad ciclomatica Complejidad de sincronizacion Pruebas de software Metrica de softwareReferencias Editar a b c d Fitzpatrick Jerry 1997 Applying the ABC metric to C C and Java C Report Halstead Maurice 1977 Elements of Software Science North Holland Elsevier Fenton Norman E 1991 Software Metrics Successes Failures and New Directions Chapman amp Hall Kitchenham Barbara December 1995 Towards a Framework for Software Measurement Validation IEEE Transactions on Software Engineering 21 12 929 944 doi 10 1109 32 489070 Fitzpatrick Jerry 2017 Appendix A Timeless Laws of Software Development Software Renovation Corporation ISBN 978 0999335604 Enlaces externos EditarApplying the ABC Metric to C C and Java ABC Metric Size and Complexity Rules Deciphering Ruby Code Metrics The ABC metric Datos Q28134618 Obtenido de https es wikipedia org w index php title Metrica de Software ABC amp oldid 128145325, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos