Title: QUASAR
1QUASAR
- Referentin Ceren Alkis
- Betreuer Gerd Beneken
2- AGENDA
- 1. Motivation
- 2. Komponenten und Schnittstellen
- 2.1 Komponenten
- 2.2 Schnittstellen
- 2.3 Konfiguration
- 2.3.1 Konfiguration und Implementierung von
Klassen - 2.3.2 Komponenten Verbinden
- 2.3.3 Kompositionsmanager
- 3. Softwarekategorien
- 3.1 A- und T- Software
- 3.2 Softwarekategorien und Komplexität
- 3.3 Kommunikation zwischen Komponenten
verschiedener - Kategorien
2/22
3Motivation
Quasar-Projekt
- Die Qualitätssoftwarearchitektur der sdm AG
- Begann am 5.Mai 1998 in München und wurde von
Prof. Johannes Siedersleben geleitet. - Pragmatisch -gt Aus Industrie
- Problem Die Qualifikation der Mitarbeiter
- Projekte bei vielen
unterschiedlichen Kunden - Ziel Normierung von Sprache in der Firma
- Die unterschiedliche Architekturideen vieler sdm
Projekte einzusammeln und in wieder verwendbare
Form zu bringen.
3/22
4Merkmale einer Komponente
Komponenten
- Sie importiert andere Schnittstellen.
- Sie exportiert (implementiert) ein oder mehrere
Schnittstellen. - Sie versteckt die Implementierung und kann durch
andere Komponenten ersetzt werden, die dieselbe
Schnittstelle exportieren. - Sie eignet sich als Einheit der Wiederverwendung,
denn sie macht nur minimale Annahmen über die
Umgebung. - Sie kann andere Komponenten enthalten.
- Sie ist neben der Schnittstelle die wesentliche
Einheit des Entwurfs, der Implementierung und der
Planung.
4/22
5Merkmale einer Schnittstelle
Schnittstellen
- Sie verbindet entweder Komponenten untereinander
oder Komponenten - mit dem Benutzer.
- Sie definiert die Funktionalität, die die
Komponente zur Verfügung stellt - und beschreibt wie diese zu benutzen ist.
- Sie gestatten es, die Abhängigkeiten in der
Schnittstelle zu konzentrieren - und jede Abhängigkeit von der Implementierung
zu vermeiden. - Die Trennung der Schnittstelle und
Implementierung unterstützt die - Änderbarkeit des Systems.
5/22
6Konfiguration
Konfiguration
Konfiguration und Implementierung von Klassen
- Die Festlegung der implementierenden Klasse
nennen wir Konfiguration. - Nutzer und Implementierung sind voneinander
unabhängig die - Konfiguration bringt sie zusammen.
6/22
7Austauschbarkeit der Implementierung
Konfiguration
new ArrayList
ArrayList (Exporteur)
ListUser (Importeur)
List
new MyList
alternativ
Konfiguration
ListUser (Importeur)
MyList (Exporteur)
List
7/22
8Konfiguration
Ein Beispiel für die Konfiguration der
Klassen ListUser läuft mit jeder Klasse, die
List implementiert.
public class ListUser private List list
public ListUser (List list) this.list
list public void foo ()
Iterator i list.iterator()
public static void main (String args)
List list new ArrayList () ListUser lu
new ListUser (list) lu.foo()
8/22
9Kompositionsmanager
Konfiguration
- Die Aufgabe des Kompositionsmanagers ist eine
geeignete - Umgebung für die Komponenten herzustellen.
- Jeder Manager verwaltet eine oder mehrere
Komponenten. - Jede Komposition exportiert eine Teilmenge der
Schnittstellen, die die - enthaltenen Komponenten exportieren und sie
importiert genau die - Schnittstellen, die lokal nicht versorgt werden
können.
9/22
10Konfiguration
Komponenten Verbinden
Kompositionsmanager
Cx
Cy
R
U
S
V
Cz
T
T
W
10/22
11Konfiguration
public class CManager private Cx x private
Cy y private Cz z public CManager() x
Cx.getCx() y Cy.getCy() z
Cz.getCz() y.bindV(z) x.bindU(y)
x.bindT(z) public void bindW(W w)
z.bindW(w) public R getR() return x
public S getS() return x public T getT()
return z
11/22
12Konfiguration mit XML
Konfiguration
lt?xml version1.0gt ltconfigurationgt
ltinterface name R"gt ltinterface name S"gt
ltinterface name T"gt ltinterface name U"gt
ltinterface name V"gt ltinterface name W"gt
ltcomponent name Cxgt ltexport interface
R/gt ltexport interface S/gt
ltimport interface U/gt ltimport interface
T/gt lt/componentgt
ltcomponent name Cygt ltexport interface
U/gt ltimport interface
V/gt lt/componentgt ltcomponent name Czgt
ltexport interface T/gt ltexport interface
V/gt ltimport interface W/gt
lt/componentgt
12/22
13Konfiguration
ltcomposition name Cgt ltobject name x
component Cx/gt ltobject name y
component Cy/gt ltobject name z
component Cz/gt ltbinding interace U
importer x exporter y/gt ltbinding
interace T importer x exporter z/gt
ltbinding interace V importer y exporter
z/gt ltexport interface R/gt
ltexport interface S/gt ltexport interface
T/gt ltimport interface W/gt
lt/compositiongt lt/configurationgt
13/22
14Softwarekategorien
Softwarekategorien
- Sie geben an, welches Wissen in der Software
enthalten ist - und wovon die Software abhängt.
- Die Softwareeinheiten sollten möglichst nur zu
einer einzigen - Kategorie gehören. (Prinzip der Trennung der
Zuständigkeiten) - Analysiere zuerst die Softwarekategorien und
zerlege danach - auf dieser Basis das System in Komponenten.
14/22
15A- und T-Software
Softwarekategorien
0
Grundlage jeder Kategorie
A
Software, die sich nur mit der Anwendung befasst
T
Software, die mindestens ein technisches API
kennt
R
Akzeptable AT- Software
A 0 A T 0 T
A T AT
15/22
16Kommunikation zwischen Komponenten verschiedener
Kategorien
Softwarekategorien
Sichtbarkeitsregel Für Software einer hohen
Kategorie ist Software von verfeinerten
Kategorien sichtbar.
Kategorie
Komponente
a
b
H
S
K
c
16/22
17Softwarekategorien und Komplexität
Softwarekategorien
- Jede Kategorie kann eine oder mehrere andere
Kategorien verfeinern. - Die Wurzelkategorie ist die Kategorie 0.
- Eine Softwarekategorie a nennen wir rein, wenn es
im Kategoriegraphen - genau einen Weg von a zur Kategorie 0 gibt.
- Unreine Kategorien vermengen zwei oder mehr
Kategorien.
19/22
18Beispiel Kategorien einer Schafkopf
Implementierung
Softwarekategorien
Schafkopf- strategien
Kartenspiel- GUISwing
Schafkopf
Kartenspiel- GUI
Kartenspiel
Dateisystem
Swing
0
17/22
19Softwarekategorien
Kartenspielinfo Präsentation
realerSpieler Präsentation
Kartenspiel- verwaltung Präsentation
C
B
realerSpieler
Kartenspiel- verwaltung
D
E
Kartenspiel- steuerung
F
virtuellerSpieler
Kartenspielinfo
A
G
H
Komponenten und Schnittstellen des
Schafkopfsystems
Schafkopf- strategie
Schafkopfregeln
18/22
20Softwarekategorien
20/22
21- Zusammenfassung
- Quasar Qualitätssoftwarearchitektur
- Konzepte
- Denken in Komponenten und Schnittstellen
- Kategorien
21/22
22- LITERATUR
- Moderne Softwarearchitektur
- Johannes Siedersleben
- Softwaretechnik
- Peter Brössler, Johannes Siedersleben
- Pattern-orientierte Softwarearchitektur
- Frank Buschmann, Regine Meunier, Hans Rohnert,
- Peter Sommerlad, Michael Stal
22/22
23 Danke für Ihre Aufmerksamkeit