Verbesserung der Architektur der DPP- Software Saros ...
Transcript of Verbesserung der Architektur der DPP- Software Saros ...
Verbesserung der Architektur der DPP-
Software Saros (Vortrag 2)
Slawa Belousow
Institut für Informatik
FU Berlin
03.02.2011
Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 2
Inhalt der Präsentation
1.Arbeit und Vortrag 12.Aktuelle Saros-Architektur3.Probleme
4.Analyseansätze5.Analysewerkzeuge
6.Virtuelle Modularisierung
7.Neue Architektur8.Meilensteine
9.Zusammenfassung
Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 3
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) 4
1. Vortrag 1
Netbeans
Plug-in
IntelliJ IDEA
Plug-in
jEdit
Plug-in
Saros für jEditSaros für EclipseProdukt:
Entwicklung:
Dokumentation,
Doc-Werkzeuge
Skripte
Ressourcen
Test-
framework 1
Test-
framework 2
Core
Eclipse
Plug-in
Release 1
Ant
«import»
«import»
Release 2
Maven
Test-
framework 3
«import»
«import»
«import»
Release X
«import»
Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 5
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) 6
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) 7
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) 8
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) 9
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) 10
5. Analysewerkzeuge -JDepend
• JDepend Vorführung
Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 11
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) 12
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) 13
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) 14
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) 15
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) 16
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) 17
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) 18
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) 19
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) 20
Diskussion
1.Aktuelle Saros-Architektur2.Probleme
3.Analyseansätze4.Analysewerkzeuge
5.Virtuelle Modularisierung
6.Neue Architektur7.Meilensteine
Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 21
Vielen Dank!