Complexidade de um aplicativo Web


8

Atualmente, estou escrevendo minha tese de mestrado sobre manutenção de uma aplicação web. Encontrei alguns métodos como o "Índice de Manutenção", de Coleman et.al. ou o "Índice de Manutenção de Software" de Muthanna et.al. Para os dois, é necessário calcular a complexidade ciclomática. Então, minha pergunta é:

É possível medir a complexidade ciclomática de um aplicativo da web?

Na minha opinião, existem três partes em um aplicativo da web:

  1. Código do servidor (PHP, C #, Python, Perl etc.)
  2. Código do cliente (JavaScript)
  3. HTML (links e formulários como operadores, parâmetros GET e campos de formulário como operandos !?)

O que você acha? Existe outro ponto de vista sobre a complexidade do aplicativo da web? Perdi alguma coisa?


1
CSS. JSON ou XML (AJAX para a comunicação entre cliente e servidor)
James McLeod

6
E o acesso a dados, a estrutura e o código do banco de dados (procedimentos armazenados)?
Oded

@ James McLeod Então, em CSS, o que seriam operadores e o que seriam operandos? JSON e XML provavelmente são operandos para funções de cliente e servidor, ou o que você acha?
Dominik L

Sim para CSS, o JSON / XML não é gerado dinamicamente pelo JavaScript? Como isso seria medido? Da mesma forma, você mede o que é armazenado no banco de dados?
StuperUser

Banco de dados seria um bom ponto que eu esqueci totalmente.
Dominik G

Respostas:


5

A complexidade ciclomática é uma das múltiplas medidas da complexidade do código. Por exemplo, no Visual Studio, o índice de manutenção depende de:

  • Complexidade ciclomática,
  • Profundidade de herança,
  • Acoplamento de classe,
  • Linhas do código IL (o código IL é o código fonte compilado na Linguagem Intermediária, que é então compilada por JIT).

Todas essas medidas, bem como outras medidas de complexidade, funcionam de alguma forma, mas nunca são a indicação absoluta de que o código fonte tem problemas de complexidade . Algumas medidas, como LOC, são conhecidas por serem totalmente sem sentido e enganosas; outros, como a complexidade ciclomática, são um pouco melhores, mas ainda têm problemas.

Isso se deve ao fato de que:

  • É muito complicado para um programa de computador saber o quão complexo o código fonte seria percebido pelo desenvolvedor .

    Por exemplo, notei muitas vezes uma enorme queda no índice de manutenção ao refatorar o código do estilo de procedimento para o estilo funcional através do LINQ, transformando um bloco de código-fonte altamente ilegível em uma única expressão de encadeamento que era extremamente explícita.

    Outro exemplo seria a reflexão de padrões de programação nas métricas. Freqüentemente, ao introduzir padrões de programação em seu código, você o torna menos complexo para um desenvolvedor (supondo que ele esteja familiarizado com esses padrões), mas o índice de manutenção diminui.

  • O código fonte pode ter diferentes formas.

    A medição da complexidade ciclomática ou da profundidade da herança ou do acoplamento de classes é muito limitada para um aplicativo Web, porque, como você disse, a existência de HTML / CSS, JavaScript etc. e, como observado nos comentários, a existência de acesso ao banco de dados.

    Essa limitação não existe apenas para aplicativos da web. Em aplicativos de desktop, por exemplo, e a complexidade do layout da interface do usuário (código XAML nos aplicativos Windows)? E o código gerado? Ou acesso ao banco de dados?


Eu sei que nenhum modelo está completo nem nenhum dos modelos que achei errado, mas ainda assim eles podem dar dicas. Estou curioso para saber como é possível medir a GUI e o código separado de cliente e servidor. Também uso a pesquisa AFOTEC para obter alguns valores subjetivos.
Dominik G
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.