Complessità di un'applicazione web

7

Attualmente sto scrivendo la mia tesi di laurea sulla manutenibilità di un'applicazione web. Ho trovato alcuni metodi come il "Maintainability Index" di Coleman et.al. o il "Software Maintainability Index" di Muthanna et.al. Per entrambi è necessario calcolare la complessità ciclomatica. Quindi la mia domanda è:

È possibile misurare la complessità ciclomatica di un'applicazione web?

Secondo me ci sono tre parti per un'applicazione web:

  1. Codice server (PHP, C #, Python, Perl, ecc.)
  2. Codice cliente (JavaScript)
  3. HTML (collegamenti e moduli come operatori, parametri GET e campi modulo come operandi!?)

Che ne pensi? C'è un altro punto di vista sulla complessità dell'applicazione web? Mi sono perso qualcosa?

    
posta Dominik G 12.09.2012 - 12:32
fonte

1 risposta

5

La complessità ciclomatica è una delle molteplici misurazioni della complessità del codice. Ad esempio, in Visual Studio, l'indice di gestibilità dipende da:

  • Complessità ciclomatica,
  • Profondità dell'ereditarietà,
  • Accoppiamento di classe,
  • Linee del codice IL (il codice IL è il codice sorgente compilato in lingua intermedia e viene quindi compilato con JIT).

Ognuna di queste misurazioni, così come altre misure di complessità, funzionano in qualche modo, ma sono mai l'indicazione assoluta che il codice sorgente ha problemi di complessità . Alcune misurazioni, come LOC, sono note per essere totalmente prive di significato e fuorvianti; altri, come la complessità ciclomatica, sono leggermente migliori, ma hanno ancora problemi.

Questo è dovuto al fatto che:

  • È troppo complicato per un programma per computer sapere quanto sia complesso il codice sorgente che verrà percepito da uno sviluppatore .

    Ad esempio, ho notato spesso un enorme calo di indice di manutenibilità durante il refactoring del codice dallo stile procedurale allo stile funzionale attraverso LINQ, trasformando un blocco di codice sorgente altamente illeggibile in una singola espressione concatenata che era estremamente esplicita.

    Un altro esempio potrebbe essere il riflesso dei modelli di programmazione sulle metriche. Spesso, introducendo schemi di programmazione nel codice, lo renderai meno complesso per uno sviluppatore (supponendo che lo sviluppatore abbia familiarità con questi modelli), ma l'indice di manutenibilità diminuirà.

  • Il codice sorgente può avere forme diverse.

    La misurazione della complessità ciclomatica o della profondità dell'ereditarietà o dell'accoppiamento di classe è molto limitata per un'applicazione web, perché, come hai detto, l'esistenza di HTML / CSS, JavaScript, ecc. e, come notato nei commenti, l'esistenza di accesso al database.

    Questa limitazione non esiste solo per le app Web. Ad esempio, nelle applicazioni desktop, per quanto riguarda la complessità del layout dell'interfaccia utente (codice XAML nelle applicazioni Windows)? E il codice generato? O accesso al database?

risposta data 12.09.2012 - 13:26
fonte