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