Komplexität einer Webanwendung

8

Ich schreibe gerade meine Masterarbeit über die Wartbarkeit einer Webanwendung. Ich fand einige Methoden wie den "Maintainability Index" von Coleman et al. oder der "Software Maintainability Index" von Muthanna et al. Für beide muss man die zyklomatische Komplexität berechnen. Meine Frage lautet also:

Ist es möglich, die zyklomatische Komplexität einer Webanwendung zu messen?

Meiner Meinung nach besteht eine Webanwendung aus drei Teilen:

  1. Servercode (PHP, C #, Python, Perl usw.)
  2. Client-Code (JavaScript)
  3. HTML (Links und Formulare als Operatoren, GET-Parameter und Formularfelder als Operanden!?)

Was denken Sie? Gibt es einen anderen Standpunkt zur Komplexität von Webanwendungen? Habe ich etwas verpasst?

Dominik G.
quelle
1
CSS. JSON oder XML (für die AJAX-Kommunikation zwischen Client und Server)
James McLeod
6
Was ist mit Datenzugriff und Datenbankstruktur und Code (gespeicherte Prozeduren)?
Oded
@ James McLeod Was wären also in CSS Operatoren und was Operanden? JSON und XML sind wahrscheinlich Operanden für Client- und Serverfunktionen, oder was denken Sie?
Dominik G
Ja für CSS, wird JSON / XML nicht dynamisch vom JavaScript generiert? Wie würde das gemessen werden? Würden Sie auch messen, was in der Datenbank gespeichert ist?
StuperUser
Datenbank wäre ein guter Punkt, den ich völlig vergessen habe.
Dominik G

Antworten:

5

Die zyklomatische Komplexität ist eine der vielen Messungen der Codekomplexität. In Visual Studio hängt der Wartbarkeitsindex beispielsweise von folgenden Faktoren ab:

  • Zyklomatische Komplexität,
  • Vererbungstiefe,
  • Klassenkopplung,
  • Zeilen des IL-Codes (IL-Code ist der Quellcode, der in die Intermediary Language kompiliert wurde und dann JIT-kompiliert wird).

Jede dieser Messungen sowie andere Komplexitätsmessungen funktionieren irgendwie, sind jedoch niemals der absolute Hinweis darauf, dass der Quellcode Komplexitätsprobleme aufweist . Einige Messungen, wie LOC, sind als völlig bedeutungslos und irreführend bekannt. andere, wie die zyklomatische Komplexität, sind etwas besser, haben aber immer noch Probleme.

Dies liegt an der Tatsache, dass:

  • Für ein Computerprogramm ist es zu kompliziert zu wissen, wie komplex der Quellcode von einem Entwickler wahrgenommen wird .

    Zum Beispiel bemerkte ich oft einen großen Rückgang des Wartbarkeitsindex, als ich den Code über LINQ von prozeduralem zu funktionalem Stil umgestaltete und einen Block hochgradig unlesbaren Quellcodes in einen einzelnen Verkettungsausdruck umwandelte, der äußerst explizit war.

    Ein weiteres Beispiel wäre die Reflexion von Programmiermustern auf den Metriken. Wenn Sie Programmiermuster in Ihren Code einführen, wird dies für einen Entwickler häufig weniger komplex (vorausgesetzt, dieser Entwickler ist mit diesen Mustern vertraut), aber der Wartbarkeitsindex sinkt.

  • Der Quellcode kann verschiedene Formen haben.

    Das Messen der zyklomatischen Komplexität oder der Tiefe der Vererbung oder der Klassenkopplung ist für eine Webanwendung sehr begrenzt, da, wie Sie sagten, HTML / CSS, JavaScript usw. und, wie in den Kommentaren erwähnt, Datenbankzugriff vorhanden sind.

    Diese Einschränkung besteht nicht nur für Web-Apps. Was ist beispielsweise in Desktop-Anwendungen mit der Komplexität des UI-Layouts (XAML-Code in Windows-Anwendungen)? Was ist mit dem generierten Code? Oder Datenbankzugriff?

Arseni Mourzenko
quelle
Ich weiß, dass kein Modell vollständig ist und keines der Modelle, die ich als falsch empfunden habe, dennoch Hinweise geben kann. Ich bin nur neugierig, wie GUI und separater Client- und Servercode gemessen werden können. Ich benutze auch die AFOTEC-Umfrage, um einige subjektive Werte zu erhalten.
Dominik G