240 likes | 462 Views
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
E N D
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 Konfiguration new ArrayList ArrayList (Exporteur) ListUser (Importeur) List new MyList alternativ: Konfiguration ListUser (Importeur) MyList (Exporteur) List 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 Cy U S V Cz T T W 10/22
Konfiguration 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
Konfiguration Konfiguration mit XML <?xml version=„1.0“> <configuration> <interface name = „R"> <interface name = „S"> <interface name = „T"> <interface name = „U"> <interface name = „V"> <interface name = „W"> <component name = „Cx“> <export interface = „R“/> <export interface = „S“/> <import interface = „U“/> <import interface = „T“/> </component> <component name = „Cy“> <export interface = „U“/> <import interface = „V“/> </component> <component name = „Cz“> <export interface = „T“/> <export interface = „V“/> <import interface = „W“/> </component> 12/22
Konfiguration <composition name = „C“> <object name = „x“ component = „Cx“/> <object name = „y“ component = „Cy“/> <object name = „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 interface = „R“/> <export interface = „S“/> <export interface = „T“/> <import interface = „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
AT Gemischte Form der Anwendung und Technik 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 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 Komponente a b H S K 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
Beispiel: Kategorien einer Schafkopf Implementierung Softwarekategorien Schafkopf- strategien Kartenspiel- GUISwing Kartenspiel- GUI Schafkopf Dateisystem Swing Kartenspiel 0 17/22
Softwarekategorien Kartenspielinfo Präsentation Kartenspiel- verwaltung Präsentation realerSpieler Präsentation C B realerSpieler Kartenspiel- verwaltung D E Kartenspiel- steuerung F Kartenspielinfo virtuellerSpieler A G H Komponenten und Schnittstellen des Schafkopfsystems Schafkopfregeln Schafkopf- strategie 18/22
Softwarekategorien 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