Vortrag - Software and Systems Engineering

Werbung
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
Herunterladen