Transcript QUASAR Referentin: Ceren Alkis Betreuer: Gerd Beneken
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 2.3.2
Konfiguration und Implementierung von Klassen Komponenten Verbinden 2.3.3
Kompositionsmanager 3. Softwarekategorien 3.1
3.2
A- und T- Software 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 ListUser (Importeur) List ArrayList (Exporteur) new ArrayList alternativ: Konfiguration ListUser (Importeur) List MyList (Exporteur) new MyList 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
T R S
Konfiguration
Komponenten Verbinden Kompositionsmanager Cx U T Cy V Cz 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
Konfiguration