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:
- Servercode (PHP, C #, Python, Perl usw.)
- Client-Code (JavaScript)
- 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?
Antworten:
Die zyklomatische Komplexität ist eine der vielen Messungen der Codekomplexität. In Visual Studio hängt der Wartbarkeitsindex beispielsweise von folgenden Faktoren ab:
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?
quelle