QUASAR
Referentin: Ceren Alkis
Betreuer: Gerd Beneken
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
Motivation
Quasar-Projekt
Die Qualitätssoftwarearchitektur der sd&m AG
Begann am 5.Mai 1998 in München und wurde von Prof.
Johannes Siedersleben geleitet.
Pragmatisch -> Aus Industrie
Problem: Die Qualifikation der Mitarbeiter
Projekte bei vielen unterschiedlichen Kunden
Ziel: Normierung von Sprache in der Firma
Die unterschiedliche Architekturideen vieler sd&m Projekte
einzusammeln und in wieder verwendbare Form zu bringen.
3/22
Komponenten
Merkmale einer Komponente
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
Schnittstellen
Merkmale einer Schnittstelle
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
Konfiguration
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
Austauschbarkeit der Implementierung
new ArrayList
Konfiguration
ListUser
(Importeur)
List
ArrayList
(Exporteur)
new MyList
alternativ:
Konfiguration
ListUser
(Importeur)
List
MyList
(Exporteur)
7/22
Konfiguration
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
Konfiguration
Kompositionsmanager
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
Konfiguration
Komponenten Verbinden
Kompositionsmanager
R
Cx
U
Cy
S
V
T
T
Cz
W
10/22
Konfiguration
public class
private Cx
private Cy
private Cz
CManager {
x;
y;
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
Konfiguration
Konfiguration mit XML
<?xml version=„1.0“>
<configuration>
<interface
<interface
<interface
<interface
<interface
<interface
name
name
name
name
name
name
=
=
=
=
=
=
<component name = „Cy“>
<export interface = „U“/>
<import interface = „V“/>
</component>
„R">
„S">
„T">
„U">
„V">
„W">
<component name = „Cx“>
<export interface =
<export interface =
<import interface =
<import interface =
</component>
<component name = „Cz“>
<export interface = „T“/>
<export interface = „V“/>
<import interface = „W“/>
</component>
„R“/>
„S“/>
„U“/>
„T“/>
12/22
Konfiguration
<composition name
<object name =
<object name =
<object name =
= „C“>
„x“ component = „Cx“/>
„y“ component = „Cy“/>
„z“ component = „Cz“/>
<binding interace = “U“ importer = „x“ exporter = „y“/>
<binding interace = “T“ importer = „x“ exporter = „z“/>
<binding interace = “V“ importer = „y“ exporter = „z“/>
<export
<export
<export
<import
interface
interface
interface
interface
=
=
=
=
„R“/>
„S“/>
„T“/>
„W“/>
</composition>
</configuration>
13/22
Softwarekategorien
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
Softwarekategorien
A- und T-Software
0
Grundlage jeder Kategorie
A
Software, die sich nur mit der Anwendung befasst
T
Software, die mindestens ein technisches API kennt
AT
Gemischte Form der Anwendung und Technik
R
Akzeptable AT- Software
A+0=A
T+0=T
A + T = AT
15/22
Softwarekategorien
Kommunikation zwischen Komponenten verschiedener
Kategorien
Sichtbarkeitsregel:
Für Software einer hohen Kategorie ist Software von verfeinerten Kategorien
sichtbar.
Kategorie
a
Komponente
b
K
S
H
c
16/22
Softwarekategorien
Softwarekategorien und Komplexität
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
Softwarekategorien
Beispiel: Kategorien einer Schafkopf Implementierung
KartenspielGUISwing
KartenspielGUI
Swing
Schafkopfstrategien
Schafkopf
Kartenspiel
Dateisystem
0
17/22
Softwarekategorien
Kartenspielinfo
Präsentation
Kartenspielverwaltung
Präsentation
realerSpieler
Präsentation
B
C
Kartenspielverwaltung
realerSpieler
D
Kartenspielsteuerung
E
F
A
Komponenten
und Schnittstellen
des Schafkopfsystems
Kartenspielinfo
virtuellerSpieler
G
H
Schafkopfregeln
Schafkopfstrategie
18/22
Softwarekategorien
interfaces submitted to
third parties
my system
Batch
Downstream
System A
GUI
Adapter
A
Authorization
Application Kernel
Downstream
System B
Rule
manager
Adapter
B
Persistence
0-Software
A-Software
T-Software
R-Software
AT-Software
Database
20/22
Zusammenfassung:
Quasar: Qualitätssoftwarearchitektur
Konzepte:
Denken in Komponenten und Schnittstellen
Kategorien
21/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
Danke für Ihre Aufmerksamkeit