Verbesserung der Architektur der DPP
Transcrição
Verbesserung der Architektur der DPP
Verbesserung der Architektur der DPPSoftware Saros (Vortrag 2) Slawa Belousow Institut für Informatik FU Berlin 03.02.2011 Inhalt der Präsentation 1.Arbeit und Vortrag 1 2.Aktuelle Saros-Architektur 3.Probleme 4.Analyseansätze 5.Analysewerkzeuge 6.Virtuelle Modularisierung 7.Neue Architektur 8.Meilensteine 9.Zusammenfassung Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 2 1. Arbeit und Vortrag 1 • Verbesserung der Architektur • Vortrag 1 (13.01.2011) • Aufteilung des Saros Projektes in mehrere Teilprojekte • über abstrakte Schnittstellen verbinden • zwei parallele Entwicklungsgleise • automatisches Refactoring Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 3 1. Vortrag 1 Entwicklung: Core Dokumentation, Test- «import» Doc-Werkzeuge framework 1 Skripte Test- Ressourcen «import» «import» framework 2 «import» Testframework 3 Produkt: Eclipse Netbeans IntelliJ IDEA jEdit Plug-in Plug-in Plug-in Plug-in «import» «import» Release 1 Release 2 Ant Maven Saros für Eclipse Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) Release X Saros für jEdit 4 2. Aktuelle Saros-Architektur • Logische Einheiten • ein Konzept • direkte Integration in die reale Umwelt • Abhängigkeit • starke direkte Verknüpfung zwischen Konzepten • Direktzugriff auf konkrete Klassen • doppelter Code • PicoContainer als Assembler (nicht Dependency Injection) Big Ball of Mud Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 5 3. Probleme • • • • • • Vermischung von Technologien große Klassen schwer zu überblicken schwer zu warten Änderungen erzeugen Seiteneffekte virale Designprobleme (Copy & Paste) Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 6 4. Analyseansätze • erster Ansatz • physische Aufteilung in logische Module • nach ein paar Tagen verworfen • zweiter Ansatz • • • • virtuelle Module Analyse der Abhängigkeiten Definition von Schnittstellen Erstellung eines Refactoring-Plan für ein Modul Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 7 5. Analysewerkzeuge • JDepend • BSD, Mike Clark • http://www.clarkware.com/software/JDepend.html • JDepend4Eclipse • http://andrei.gmxhome.de/jdepend4eclipse/ • XRadar • http://xradar.sourceforge.net/ Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 8 5. Analysewerkzeuge JDepend • prüft Abhängigkeit zwischen Klassen und Paketen • • • • • • Afferent Couplings (Ca) - wird verwendet von Efferent Couplings (Ce) – hängt ab von Abstractness (A) Instability (I) - I = Ce / (Ce + Ca) Distance from the Main Sequence (D) Package Dependency Cycles • JDepend analysiert einzelne Pakete und Klassen Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 9 5. Analysewerkzeuge JDepend • JDepend Vorführung Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 10 6. Virtuelle Modularisierung • virtuelles Modul • Liste von Paketen und/oder Klassen • Schnittstelle • keine Abhängigkeit zwischen v. Modulen außerhalb der Schnittstelle • mögliche Module • • • • @Component(module = "...") Base, Project, Whiteboard, Chat, VoIP, Utils feinere Aufteilung konzeptbasiert Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 11 6. Virtuelle Modularisierung • Erstellung eines Werkzeug für ... • virtuelle Moduldefinition • Auflistung der Abhängigkeiten zwischen Modulen • Refactoring-Plan bzw. TODOs um das Modul physisch abzugrenzen • optional – automatisches Refactoring • Überwachung des virtuellen Moduls • Automatisierung • Eclipse JDT Core • Java Document Model • Analogie zu XML und XPath • OSGi Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 12 7. Neue Architektur • MVC global • aufwendig • Inkrementelle Modularisierung • Teile von Saros werden nacheinander in virtuelle Module verwandelt • Ziel: nur v. Module und passive Utility-Klassen • Weiterentwicklung • Abstraktion / Schnittstellen • Pattern Oriented Design Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 13 7. Neue Architektur this.container.addComponent(Saros.class, this); this.container.addComponent(Klasse1.class); this.container.addComponent(Klasse2.class); // ... class Klasse1 { protected Saros saros; protected Klasse1(Saros saros) { this.saros = saros; } } Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 14 7. Neue Architektur this.container. registerComponentImplementation(ISaros.class, SarosImpl.class); this.container. registerComponentImplementation(IModul1.class, Modul1Impl.class); // ... class Modul1Impl implements IModul1 { protected ISaros saros; protected Modul1Impl(ISaros saros) { this.saros = saros; } } Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 15 7. Neue Architektur • Pattern Oriented Design • Prinzipien • • • • Interface Segregation Principle Dependency-Inversion Principle Single-Responsibility Principle Open-Closed Principle • Patterns • • • • • Abstract Factory Value Object Null Object Adapter Observer Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 16 8. Meilensteine I • Februar 2011 • • • • Abgrenzung eines virtuellen Moduls Refactoring-Plan Durchführung des Refactorings Erfahrung sammeln • März 2011 • weitere Module in Saros abgrenzen • verschiedene Szenarien simulieren • Aufwandsabschätzung erstellen Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 17 5. Meilensteine II • April 2011 • Refactoring des Testframeworks (Abschätzung) • Refactoring weiterer v. Module • Mai 2011 • • • • Refactoring weiterer v. Module Dokumentation der eigenen Werkzeuge Tests Schreiben • Juni 2011 • Tests • Schreiben Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 18 9. Zusammenfassung • virtuelle Module • Werkzeug um diese Module zu verwalten und zu überwachen • Inkrementelle Modularisierung von Saros Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 19 Diskussion 1.Aktuelle Saros-Architektur 2.Probleme 3.Analyseansätze 4.Analysewerkzeuge 5.Virtuelle Modularisierung 6.Neue Architektur 7.Meilensteine Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 20 Vielen Dank! Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 21