Complejidad de una aplicación web

7

Actualmente estoy escribiendo mi tesis de maestría sobre el mantenimiento de una aplicación web. Encontré algunos métodos como el "Índice de mantenimiento" por Coleman et.al. o el "Índice de Mantenimiento de Software" por Muthanna et.al. Para ambos se necesita calcular la complejidad ciclomática. Así que mi pregunta es:

¿Es posible medir la complejidad ciclomática de una aplicación web?

En mi opinión, hay tres partes en una aplicación web:

  1. Código del servidor (PHP, C #, Python, Perl, etc.)
  2. Código de cliente (JavaScript)
  3. HTML (enlaces y formularios como operadores, parámetros GET y campos de formulario como operandos !?)

¿Qué piensas? ¿Hay otro punto de vista sobre la complejidad de la aplicación web? ¿Me perdí algo?

    
pregunta Dominik G 12.09.2012 - 12:32

1 respuesta

5

La complejidad ciclomática es una de las múltiples mediciones de la complejidad del código. Por ejemplo, en Visual Studio, el índice de mantenibilidad depende de:

  • Complejidad ciclomática,
  • Profundidad de la herencia,
  • acoplamiento de clases,
  • Líneas de código IL (el código IL es el código fuente compilado en Intermediary Language, que luego se compila con JIT).

Cada una de esas mediciones, así como otras mediciones de complejidad, funcionan de alguna manera, pero nunca son la indicación absoluta de que el código fuente tiene problemas de complejidad . Se sabe que algunas mediciones, como LOC, son totalmente sin sentido y engañosas; otros, como la complejidad ciclomática, son ligeramente mejores, pero aún tienen problemas.

Esto se debe al hecho de que:

  • Es demasiado complicado para un programa informático saber cuán complejo realmente percibirá el código fuente un desarrollador .

    Por ejemplo, a menudo noté una gran caída en el índice de mantenibilidad al refactorizar el código desde el estilo procedimental al estilo funcional a través de LINQ, transformando un bloque de código fuente altamente ilegible en una expresión de un solo encadenamiento que era extremadamente explícita. p>

    Otro ejemplo sería el reflejo de los patrones de programación en las métricas. A menudo, al introducir patrones de programación en su código, lo hará menos complejo para un desarrollador (suponiendo que este desarrollador esté familiarizado con esos patrones), pero el índice de mantenibilidad disminuirá.

  • El código fuente puede tener diferentes formas.

    La medición de la complejidad ciclomática o la profundidad de la herencia o el acoplamiento de clases es muy limitada para una aplicación web, porque, como usted dijo, la existencia de HTML / CSS, JavaScript, etc., y, como se señaló en los comentarios, la existencia de acceso a la base de datos.

    Esta limitación no existe solo para aplicaciones web. En las aplicaciones de escritorio, por ejemplo, ¿qué pasa con la complejidad del diseño de la interfaz de usuario (código XAML en aplicaciones de Windows)? ¿Qué pasa con el código generado? ¿O acceso a la base de datos?

respondido por el Arseni Mourzenko 12.09.2012 - 13:26

Lea otras preguntas en las etiquetas