Verbesserung der Architektur der DPP- Software Saros ...

21
Verbesserung der Architektur der DPP- Software Saros (Vortrag 2) Slawa Belousow Institut für Informatik FU Berlin 03.02.2011

Transcript of Verbesserung der Architektur der DPP- Software Saros ...

Page 1: 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

Page 2: Verbesserung der Architektur der DPP- Software Saros ...

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

Page 3: Verbesserung der Architektur der DPP- Software Saros ...

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

Page 4: Verbesserung der Architektur der DPP- Software Saros ...

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»

Page 5: Verbesserung der Architektur der DPP- Software Saros ...

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

Page 6: Verbesserung der Architektur der DPP- Software Saros ...

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)

Page 7: Verbesserung der Architektur der DPP- Software Saros ...

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

Page 8: Verbesserung der Architektur der DPP- Software Saros ...

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/

Page 9: Verbesserung der Architektur der DPP- Software Saros ...

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

Page 10: Verbesserung der Architektur der DPP- Software Saros ...

Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 10

5. Analysewerkzeuge -JDepend

• JDepend Vorführung

Page 11: Verbesserung der Architektur der DPP- Software Saros ...

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

Page 12: Verbesserung der Architektur der DPP- Software Saros ...

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

Page 13: Verbesserung der Architektur der DPP- Software Saros ...

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

Page 14: Verbesserung der Architektur der DPP- Software Saros ...

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;

}}

Page 15: Verbesserung der Architektur der DPP- Software 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;}

}

Page 16: Verbesserung der Architektur der DPP- Software 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

Page 17: Verbesserung der Architektur der DPP- Software Saros ...

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

Page 18: Verbesserung der Architektur der DPP- Software Saros ...

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

Page 19: Verbesserung der Architektur der DPP- Software Saros ...

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

Page 20: Verbesserung der Architektur der DPP- Software 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

Page 21: Verbesserung der Architektur der DPP- Software Saros ...

Verbesserung der Architektur der DPP-Software Saros (Vortrag 2) 21

Vielen Dank!