Dienstag, 8. Juli 2014

Zyklische Abhängigkeiten - Einfluss auf Qualitätsmerkale

Dieser Artikel ist Teil der folgenden Serie über zyklische Abhängigkeiten. Zahlreiche Grundbegriffe, Konzepte und empirische Befunde wurden im Rahmen dieser Serie detailliert dargestellt. Im vorliegenden Artikel werde ich den Einfluss zyklischer Abhängigkeiten auf diverse Qualitätsmerkmale besprechen.

Die Serie

Einführung
Terminologie
Werkzeugunterstützung für Java
Wo liegt eigentlich das Problem?
Einfluss auf Qualitätsmerkmale (dieser Artikel)
Die Praxis
Verschiedene Erscheinungsformen
Zusammenhang mit der Pakethierarchie
Zusammenhang mit der Domäne
Einige Metriken
Durchbrechung von Zyklen
Das Prinzip

Im vorigen Artikel haben einige grundlegende Strukturbetrachtungen gezeigt, dass zyklische Abhängigkeiten zu zwei Gruppen negativer Effekte führen können, die ich als Infizierbarkeit und Schwergewichtigkeit bezeichnet habe:
  • Als Infizierbarkeit habe ich Sachverhalt bezeichnet, dass mit der Menge und Größe von Zyklen die Wahrscheinlichkeit wächst, dass einzelne problematische Elemente negativen Einfluss auf andere Teile des Systems ausüben. 
  • Schwergewichtigkeit bezeichnet das Problem, dass mit der Menge und Größe von Zyklen auch die jeweiligen Arbeitspakete der am System arbeitenden Menschen dazu tendieren, größer und komplexer zu werden. 
Beide Problemgruppen haben Einfluss auf eine Reihe von Qualitätsmerkmalen, die wir im vorliegenden Artikel etwas genauer betrachten wollen. Die folgende Tabelle gibt eine Übersicht. Die ausgewählten Qualitätsmerkmale wurden dabei in solche unterteilt, die dem Software-Qualitätsmodell ISO 9126 entnommen sind, und einige weitere, die in unserem Kontext von besonderem Interesse sind. Ein Pfeil nach unten (↓) zeigt an, dass das jeweilige Qualitätsmerkal durch Zyklen negativ beeinflusst wird. Die Kürzel S und I kennzeichnen, ob dieser negative Effekt primär durch Schwergewichtigkeit oder durch Infizierbarkeit eintritt.
Die Übersicht zeigt, dass die durch Zyklen induzierte Schwergewichtigkeit alle betrachteten Qualitätsmerkmale negativ beeinflusst. Zusätzlich werden die Merkmale "Modifizierbarkeit" und "Korrektheit" durch die erhöhte Infizierbarkeit beeinflusst. Der Einfluss auf die Korrektheit mag dabei am wenigsten offensichtlich sein und wird daher im folgenden Abschnitt näher beleuchtet.

Erläuterung zur Korrektheit

In der Studie "Transition and Defect Patterns of Components in Dependency Cycles during Software Evolution" (siehe [Oyetoyan2014]) wird der Einfluss von Klassen-Zyklen auf die Fehleranfälligkeit von Software-Systemen untersucht. Zu diesem Zweck wurde für die Klassen mehrerer Software-Systeme ermittelt, ob sie an einem Zyklus beteiligt sind oder nicht. Für alle untersuchten Systeme lagen zudem Daten aus einem Defect Tracking System vor, die es erlaubten, die Fehleranfälligkeit der einzelnen Klassen in der Historie des Systems nachzuvollziehen. Eines der wesentlichen Ergebnisse der Studie ist, dass die Fehleranfälligkeit von Klassen, die an einem Zyklus beteiligt sind, signifikant höher ist als diejenige von Klassen, die nicht an einem Zyklus beteiligt sind.

Eine mögliche Erklärung dieses Sachverhalts sehen die Autoren der Studie darin, dass für die betroffenen innerzyklischen Klassen über die Zeit auch ein durchweg ansteigener CRSS-Wert sowie zusätzlich ein Anstieg ihrer Größenmaße ermittelt werden konnte. Dies konnte für außerzyklische Klassen nicht im selben Ausmaß beobachtet werden. Die mit den CRSS-Werten ansteigende Schwergewichtigkeit, welche die zu ändernden Systemteile umfangreicher und komplexer werden lässt, könnte beispielsweise die Fehlerquote der am System arbeitenden Entwickler erhöhen und die Testbarkeit der geänderten Teile reduzieren. Hinzu kommt, dass eventuelle Fehler infektiöser auf andere Systemteile wirken, was auch die Wahrscheinlichkeit eines tatsächlichen Auftretens und Entdeckens der ins System eingebrachten Fehler erhöht.

Quellen

[Oyetoyan2014] - Transition and Defect Patterns of Components in Dependency Cycles during Software Evolution, Oyetoyan, T.D., Cruzes, D.S., Conradi, R. (2014), siehe Preprint unter https://www.idi.ntnu.no/~tosindo/publications/CSMR-WCRE14_pre_print.pdf