cultivate B-IT/IPEC XP Praktikum Winter School 2005
Roadmap Detektoren/Metriken Descriptions/Results Hierarchie Dynamische Beschreibung und Kontext Ausgewählte Arbeiten
Detektoren/Metriken Detektoren - alarmieren - reagieren bei An-/Abwesenheit konkreter Muster - Beispiel: Bad Smell Erkennung (For Testers Only) Metriken - Ergebniswerte - unterschiedliche interpretiert von Messwerten - Beispiel: R. C. Martin Suite Keine direkte Klassenrepräsentation im Cultivatesystem, lediglich auf Prologbasis
Implementiert soweit... DependencyDetector (InheritanceTree) Misnamed Testclass Sideeffects in Getters For Testers only Depth of InheritanceTree Diverse Counter (NORM, NO(a)Ch/Cl, NOD, DIT, NOI) Specialization Index Static Testcase Coverage LCOM2 R.C. Martin (Abstractness, Instability, Distance, afferent und efferent Couplings)
Model: Description/Result Jeder Detektor und jede Metrik verfügen jeweils über eine Beschreibung (Description) und evtl. eine Vielzahl von Ergebnissen (Result) DescriptionRepository und ResultRepository sind Aggregationsklassen
Description Name Hilfstext (helpText) Variante Beschreibung (dynamicDescription) Range (bei Metriken) Threshold (bei Metriken) Valuetype (bei Metriken)
Description
Detektordeklaration/Prolog :- multifile detector_/2. :- multifile detector_description/3. detector_description(Name, 'Hilfetext', [dynamische Beschreibung]). detector_(Name, [dynamischer Kontext]) :-....
Metrikdeklaration/Prolog :- multifile metric_/3. :- multifile metric_description/6. metric_description(Name, Ergebnistyp, range(von,bis), defaultthreshold(von,bis), 'Langer Hilfetext, 'Kurzer Hilfetext, [dynamische Beschreibung]). metric_(Name, Ergebnis, [dynamischer Kontext]) :-....
Dynamische Beschreibung (dynamicDescription) Am Beispiel von dependencyDetector detector_description(dependencyDetector, 'Produces a package level dependency graph., [ [packageId,packageName], [dependentId,dependeeId,sccNumber,dependencyDegree] ] ).
Result Zeiger auf die eigene Beschreibung Varianter Kontext (dynamicContext) get() Value (bei Metriken) boolean outOfThreshold() (bei Metriken)
Result
Backend/PrologInterface
Backend/Controller
Frontend/Viewer Eclipse GUI Komponenten