Forschungszentrum Informatik, Karlsruhe
Objektorientierte Systeme unter der Lupe
Markus Bauer
Oliver Ciupke
08.05.01Forschungszentrum Informatik, Karlsruhe
2
Objektorientierte Systeme unter der Lupe
Übersicht
• Einführung
• Methode und Werkzeug zur automatische Suche nach Strukturproblemen– Erzeugen einer Design-Datenbank auf Basis des
Quellcodes des Systems– Abstraktion– Suche nach Strukturproblemen mit Hilfe von Heuristiken
• Typische Heuristiken
• Fallstudie
• Zusammenfassung
08.05.01Forschungszentrum Informatik, Karlsruhe
3
Objektorientierte Systeme unter der Lupe
Einführung
• In großen Systemen ist gute Systemstruktur unentbehrlichGrund: Systemstruktur beeinflusst Entwicklungs- und Wartungsaufwand maßgeblich
• Evolution und lange Entwicklungszeiten führen oft zu verwässerten Strukturen Zerwartung
• Abhilfe: Methoden und Werkzeuge zur automatischen Untersuchung von Systemen auf Strukturprobleme auf Basis des Quellcodes
08.05.01Forschungszentrum Informatik, Karlsruhe
4
Objektorientierte Systeme unter der Lupe
Vorgehensweise
• Analyse des Quellcodesund Aufbau einer Design-Datenbank
• Visualisierungen derDesign-Datenbank
• Anfragen an Design-Datenbank zur Suche nach Strukturproblemen
• Manipulation der Design-Datenbank zur Abstraktion von Implementierungsdetails und zur Informationsreduktion
Class
InheritanceDefinition
Method Attribute
Access
Invocation
subclass
superclass
belongsToClass
accessedIn accesses
invokedBy
belongsToClass
Figure 2: The Core Model
candidates
08.05.01Forschungszentrum Informatik, Karlsruhe
5
Objektorientierte Systeme unter der Lupe
Werkzeugunterstützung
Sourcecode
Sourcecode Design
informationDesign
information
Foo
Bar
...
Query language
Query language
% Base classes should not have knowledge about% their descendantsknowsOfDerived (Class, DerivedClass) :-
...
...
Query
Transfor-mationParsing Analysis
Problem structure
Sourcecode
Sourcecode Design
informationDesign
information
Foo
Bar
...
Query language
Query language
% Base classes should not have knowledge about% their descendantsknowsOfDerived (Class, DerivedClass) :-
...
...
Query
Transfor-mationParsing Analysis
Problem structure
Abstraction
Sourcecode
Sourcecode Design
informationDesign
information
Foo
Bar
...
Foo
Bar
...
Query language
Query language
% Base classes should not have knowledge about% their descendantsknowsOfDerived (Class, DerivedClass) :-
...
...
Query
Transfor-mationParsing Analysis
Problem structure
Sourcecode
Sourcecode Design
informationDesign
information
Foo
Bar
...
Foo
Bar
...
Query language
Query language
% Base classes should not have knowledge about% their descendantsknowsOfDerived (Class, DerivedClass) :-
...
...
Query
Transfor-mationParsing Analysis
Problem structure
Abstraction
WerkzeugsammlungGOOSE
08.05.01Forschungszentrum Informatik, Karlsruhe
6
Objektorientierte Systeme unter der Lupe
Anfragen und Heuristiken
% Base classes should not have knowledge about% their descendantsknowsOfDerived (Class, DerivedClass) :-
% Both Class and DerivedClass must be classes class (Class), class (DerivedClass),
% DerivedClass is a direct or transitive % descendant of Class trans (inheritsFrom, DerivedClass, Class),
% The base class knows its heir knows (Class, DerivedClass).
”Derived classes must have knowledge of their base class by definition, but base classes should not know anything about their derived classes.” (Heuristic 5.2 in Riel 1996)
08.05.01Forschungszentrum Informatik, Karlsruhe
7
Objektorientierte Systeme unter der Lupe
Ein CORBA-System...
08.05.01Forschungszentrum Informatik, Karlsruhe
8
Objektorientierte Systeme unter der Lupe
Abstraktion von Implementierungsdetails
• In Komponentenarchitekturen werden viele Abhängigkeiten durch Infrastruktur realisiert
• Gewinnung von Strukturinformationen durch Abstraktion
StubStub SkelSkel
ClientClient Impl.Impl.
ORBORB
ClientClient ServerServerCORBA
call
Am Beispiel CORBA:
08.05.01Forschungszentrum Informatik, Karlsruhe
9
Objektorientierte Systeme unter der Lupe
...nach Abstraktion
08.05.01Forschungszentrum Informatik, Karlsruhe
10
Objektorientierte Systeme unter der Lupe
Typische Heuristiken
• Klassifizierung
– Objekt-orientierte Heuristiken
– Heuristiken für Subsysteme
– Technik- und projektspezifische Heuristiken
• Probleme
– Vielzahl und Widersprüchlichkeit existierender Heuristiken
– Interessante Phänomene oft nicht abgedeckt
• Erfahrung:
– Projekterfahrung bringt neue Heuristiken hervor
– Kritische Stellen werden oft durch mehrere Heuristiken erfasst
08.05.01Forschungszentrum Informatik, Karlsruhe
11
Objektorientierte Systeme unter der Lupe
Objektorientierte Heuristiken
• Klassen sollen nicht von Unterklassen abhängen
• Vererbung soll nur eingesetzt werden, wenn polymorphe Struktur vorliegt
• Vermeide überflüssige Abstraktionen
• Keine Flaschenhalsklassen
• Keine Gottklassen
Bemerkung: Für viele Heuristiken nur abschätzende Berechnung möglich!
08.05.01Forschungszentrum Informatik, Karlsruhe
12
Objektorientierte Systeme unter der Lupe
Heuristiken für Subsysteme
• Schlanke, explizite Schnittstellen
• Keine fragilen Klassen in Schnittstellen
• Klassen in Schnittstellen sollen möglichst wenig von Klassen in anderen Subsystemen abhängen
• Entkopplung von Subsystemen
• Keine zyklische Vererbung zwischen Subsystemen
08.05.01Forschungszentrum Informatik, Karlsruhe
13
Objektorientierte Systeme unter der Lupe
Technologie- und projektspezifische Heuristiken
• EJB-Systeme:
– Klare Trennung von Entitäten und Aktivitäten
– Entitäten dürfen nicht von Aktivitäten abhängen
– Zugriff auf Entitäten nur über Zwischenschicht (Editierer)
• Trennung von Framework- und Anwendungscode
– Abhängigkeiten nur von Anwendung zu Framework erlaubt!
– Einhalten einer geschichteten Architektur
08.05.01Forschungszentrum Informatik, Karlsruhe
14
Objektorientierte Systeme unter der Lupe
Fallstudie
• Modernes EJB-System zum Vertragsmanagement von Versicherungen
• Identifikation von Strukturproblemen, um Ansatzpunkte für Restrukturierungen zu finden
• Ergebnis: Report mit potenziellen Strukturproblemen
70 Subsysteme
600 Geschäftsobjekte
6000 Klassen und EJBs= 1 Mio LOC
...
08.05.01Forschungszentrum Informatik, Karlsruhe
15
Objektorientierte Systeme unter der Lupe
Fallstudie – Ergebnisse
• Methode und Werkzeuge für größere OO-Systeme der industriellen Praxis geeignet
• Abstraktion unverzichtbar
– Informationsreduktion
– Integration infrastrukturspezifischer Abhängigkeiten
• Ergebnisse untermauern Entwickler-Intuition
• Gutes Design: Kompromiss Einfachheit - Flexibilität
• Heuristiken müssen noch erweitert werden
08.05.01Forschungszentrum Informatik, Karlsruhe
16
Objektorientierte Systeme unter der Lupe
Zusammenfassung
• Problemidentifikation: regelmäßige, werkzeuggestützte Untersuchung der Strukturen eines Systems
• Einzig zuverlässige Quelle: QuellcodeAber: Abstraktion zur Aufbereitung der Information erforderlich
• Für moderne Systeme:Allgemeine Heuristiken (OO, Subsysteme) + technologie- und projektspezifische
• Ableiten von Restrukturierungsmaßnahmen
• Abfragetechnik auch für Verbesserung des Systemverständnisses nützlich