Die technischen Möglichkeiten zur Identifikation von strukturellen Mustern wurden bereits unter Struktursuche beleuchtet. Dort wurden sie hauptsächlich verwendet, um Vorkommen bekannter Strukturen im System auszuweisen und so das Programmverstehen zu unterstützen. Die Verfahren können aber gleichermaßen zur Problemidentifikation genutzt werden, indem als Parameter nicht wünschenswerte Strukturen eingebracht werden, sondern solche, die eher mit schlechter Qualität in Verbindung gebracht werden.
Für die Verwendung im Rahmen der Qualitätsanalyse besteht die Herausforderung darin, die typischen Entwurfsfehler zu kennen, um daraus „schlagkräftige“ Analysen abzuleiten. Verschiedenste Quellen können für solche Analysen herangezogen werden:
Die Verfahren besitzen für die Qualitätssicherung folgenden Wert:
Sie können den Aufwand für manuelle aber gründlichere Reviews massiv mindern, indem sie die Reviewer nur auf potenzielle Fehlerstellen aufmerksam machen. Alle anderen Teile müssen nicht manuell überprüft werden.
Wissen über potenzielle Schwachstellen wird in die Analysewerkzeuge implementiert, so dass für die Durchführung keine Experten notwendig sind.
Die automatische Analyse findet alle spezifizierten Verdachtsmomente, während bei manuellen Reviews einzelne Fälle übersehen werden oder komplizierte Strukturen gar nicht erkannt werden.
Dem stehen folgende Nachteile gegenüber:
Solche Analysen können lediglich Übereinstimmungen zwischen Quellcode und endlich vielen potenziellen Fehlerquellen feststellen. Sie bieten wie das Testen keine Sicherheit über die Abwesenheit von Defekten, sondern können lediglich einige Defekte aufdecken.
Bad Smells, Anti-Patterns und auch Entwurfsheuristiken sind subjektiv, verschiedene Personen haben unterschiedliche Auffassungen darüber, ob eine Struktur wirklich kritisch ist oder nicht.
Die Anzahl falsch positiver Alarme kann für spezielle Probleme sicherlich vermindert aber nie generell eliminiert werden. Die Verminderung geht allgemein mit einer Spezialisierung und damit Verschmälerung der Einsatzbreite der Werkzeuge einher.