4 - Softwaremuster.key - Lehrstuhl für Wirtschaftsinformatik und

Architekturen betrieblicher Anwendungssysteme
Klassische Architekturmuster
Lehrstuhl für Wirtschaftsinformatik
und Electronic Government
Universität Potsdam
Chair of Business Information Systems
and Electronic Government
University of Potsdam
Univ.-Prof. Dr.–Ing. habil. Norbert Gronau
Lehrstuhlinhaber | Chairholder
August-Bebel-Str. 89 | 14482 Potsdam | Germany
Tel
Fax
+49 331 977 3322
+49 331 977 3406
E-Mail [email protected]
Web lswi.de
Architekturmuster
Mustersysteme
Schichtenmuster
Model-View-Controller-Muster
Service orientierte Architektur
Architekturmuster
Mustersysteme
Schichtenmuster
Model-View-Controller-Muster
Service orientierte Architektur
Definition Softwaremuster
Robustheit
Memory
Muster
Problem
Änderbarkeit
Kontext
Performance
Lösung
Lösung
Kosten
Time-to-Market
Muster
Dreiteiliges Regelwerk zur Verdeutlichung von
Beziehungen zwischen Kontext, Problem und Lösung
Quelle: Vogel 2005, S. 173
Einfachheit
Wiederverwendbarkeit
Wartbarkeit
Softwaremuster
Dreiteiliges Regelwerk zur Verdeutlichung von
Beziehungen zwischen Kontext, System an Kräften
und Software-Konfiguration
Architekturstil - Architekturmuster - Entwurfsmuster
Abstraktion
grobe Architekturspezifikation
Makro-Architekturen
Referenzarchitektur
detaillierte
Architektur-spezifikation
Mikro-Architekturen
Architekturmuster
Entwurfsmuster
Mustersprachen
Programmcode
Idiome
System einer
Anwendungsdomäne
System aus allen
Anwendungsdomänen
Scope
Ein Architekturstil stellt das Alphabet für die Mustersprachen zur Verfügung.
Quelle: Reusser 2006, S. 330
Dokumentation eines Musters
Wiederverwendung einer bewährten Lösung für ein Architekturproblem
Dokumentation erfasst folgende Punkte:
Name
Name des Musters
Kontext/Beschreibung
Der Kontext in dem das Problem und die Lösung anwendbar sind
Problem
Das Problem, für welches das Pattern eine Lösung anbietet
Kräfte/Forces
Bedingungen, die in der Lösung berücksichtigt werden sollen und oft nur
Kompromisse zulassen
Lösung
Die Lösung des Problems, oft ein Kompromiss bezüglich der Kräfte
Konsequenzen
Welche neue Situation durch die Anwendung der Beschriebenen Lösung
entsteht und welche Kräfte wie berücksichtig wurden
Quelle: Vogel 2005, S. 173
Weitere Unterpunkte zu Lösung
Struktur
Class-Responsibility-Collaborator-Karten
Komponentendiagramme
Andere Strukturdiagramme
Verhalten
Szenariobasierte Verhaltensbeschreibung
Implementierung
Vorgehensmodell zur Implementierung eines Systems basierend auf dem Muster, inkl. Code-Beispielen
Beispiele
Konkrete Beispiele, bei denen das Muster angewandt wurde
Varianten
Beschreibung der variablen Systembestandteile
Quelle: Buschmann 1996, S. 19ff
Architekturmuster
Mustersysteme
Schichtenmuster
Model-View-Controller-Muster
Service orientierte Architektur
Musterkategorien
Architekturmuster
Templates für konkrete Softwarearchitekturen
Analyse
Systemweite Spezifikation von Eigenschaften einer Anwendung
Beeinflussung der Architektur der Subsysteme
Entwurfsmuster
Schema zur Entwicklung von Subsystemen bzw. Komponenten von
Systemen
Geringere Reichweite und Auswirkungen als Architekturmuster
Entwurf
Design
Unabhängig von Programmiersprachen oder
Programmierparadigmen
Implemen
tierung
Idiome
„Implemtierungsmuster“
Abhängig von Programmiersprachen
Lösen konkrete Probleme in einer konkreten Programmiersprache
Test
Musterkategorien orientieren sich am Entwicklungszyklus von Software
Quelle: Buschmann 1996, S. 12-14
Klassifikation von Mustern
Zweck und Abdeckung
Adressierte Probleme bilden das Klassifikationsschema
Erstellung
(Creation Patterns)
Distributed Systems
Kompositions von Objekten und Klassen
(Structural Patterns)
Interaktive Systeme
Interaktion von Klassen und Objekten
(Behavioral Patterns)
...
Systemdekomposition
Anpassungsfähige Systeme
Das Klassifikationsschema nach Problemen ermöglicht das gezielte Suchen von Softwaremustern
Quelle: Reussner 2006, S. 344; Buschmann 1996, S. 364
Zuordnung von Anwendungsproblemen zu Mustern
Architekturmuster
Vom Untergeordneten zur
Struktur
Schichten
Pipes & Filters
Blackboard
Verteilte Systeme
Broker
Pipes & Filters
Microkernel
Interaktive Systeme
Anpassungsfähige Systeme
Strukturelle Dekomposition
Arbeitsorganisation
Zugriffskontrolle
Management
Kommunikation
Entwurfsmuster
Idiome
MVC
PAC
Microkernel
Reflection
Whole-Part
Master-Slave
Proxy
Command Processor
View Handler
Publisher-Subscriber
Forwarder-Receiver
Client-Dispatcher-Server
Ressource Handling
Counted Pointer
Quelle: Buschmann 1996, S. 366
Pattern-Mining
Wie kommt es zu diesen Mustern?
Muster werden gefunden, nicht erfunden!
Architekturmuster beschreiben einen Lösungsansatz
für ein häufig auftretendes Problem
Reflektion über Lösungsansätze und gezieltes Suchen
nach Mustern
Nicht trivial
Komplexität besteht in dem Herausfinden der
Schlüsselidee, den Rahmenbedingungen und den
Konsequenzen für die Anwendbarkeit
Muster sind Gegenstand kontinuierlicher Evolution
Quelle: Reussner 2006, S. 349f
Architekturmuster
Mustersysteme
Schichtenmuster
Model-View-Controller-Muster
Service orientierte Architektur
Schichtensysteme
Ablaufsteuerung
Nützliche
Systeme
BasisFunktionen
Kernschicht
Stilbeschreibung
Hierarchische Organisation
Zur Verfügungstellung von Services für die
übergeordnete Schicht
Benutzung der Services der darunterliegenden
Schicht
Stilkomponenten = Schicht
Stilkonnektoren = Interaktionsbestimmende
Protokolle zwischen den Schichten
Komposition von
verschiedenen
Elementen
Benutzer
Die Drei-Schichten-Architektur ist insbesondere für betriebliche Anwendungssysteme etabliert
Quelle: Shaw 1996, S. 25
Schichtenmodelle I
Ziele
Benutzer
Separation von logischen und physischen
Bestandteilen
UI Components
Business Entities
Data Access Logic
Components
Service Agents
Data Sources
Services
Operational Management
Business
Components
Communication
Business
Workflows
Security
Server Interfaces
Cross-Cutting
UI Process Components
Getrennte Modellierung, Implementierung, Verteilung
und Betrieb
Stichwort: Separation of Concers
Das Schichten-Muster eignet sich zur Dekomposition der Aufgaben.
Quelle: Fowler 2003, S. 32
Schichtenmodelle II
Zweck und Aufbau
Vorteile
Mittel der Strukturierung
Leicht verständlich
Darstellung verschiedener, aufeinander aufbauender
Abstraktionslevel
Technologietrennung und -integration
Schichten können selbst wieder strukturiert sein
Übliche Modelle
Wohl definierte Zugriffskonzepte durch Beschreibung
der Protokolle
Nachteile
2-Schichten-Modell, z.B. Rich-Client Szenarien
Notwendigkeit von definierten stabilen Schnittstellen
3-Schichten-Modell, z.B. Daten-, Geschäftslogik- und
Präsentationsschicht
Krititsche Performance
Hohe Kosten bei Gesamtsystemveränderung
N-Schichten-Modell, z.B. ISO OSI Referenzmodell für
die Kommunikation offener Systeme
Schichten-Muster werden häufig in betrieblichen Anwendungssystemen eingesetzt.
Quelle: Buschmann 1996, S. 31-51
Dokumentation des Schichten-Architekturmusters
Name
Layers
Vom Untergeordneten zur Struktur
Große Systeme, die eine Dekomposition erfordern
Problem
Wie strukturiert man eine Anwendung, so dass stabile Schnittstellen entstehen und
nachträgliche Änderungen lokal bleiben?
Nachträgliche Code-Änderungen dürfen sich nicht auf das ganze System auswirken
Schnittstellen müssen stabil sein
Teile des Systems müssen austauschbar sein, ohne einen Effekt auf den Rest des Systems zu
haben
Möglichkeit der Wiederverwendung in einem zukünftigen System
Gruppierungen von ähnlichen Verhaltensweisen
Keine Standard-Granularität
Komplexe Komponenten müssen weiter zerlegt werden
Teamarbeit muss ermöglicht werden
Kräfte/Forces
Kontext und Problembeschreibung ermöglicht das Finden von Software-Mustern.
Quelle: Buschmann 1996, S. 31-51
Dokumentation des Schichten-Architekturmusters
Name
Lösung
Layers
Schichtung der Aufgaben bzw. Module
Anordnen der Schichten nach Abstraktionslevel (niedrigster Abstraktionslevel ist Layer 1)
Restriktion der Aufrufbeziehungen
Struktur:
Class
Collaborator
Layer
Schicht J-1
Responsibility
Anbieten von Services, die von der Schicht J+1
genutzt werden
Delegieren von Teilaufgaben an die Schicht J-1
Konsequenzen
Wiederverwendung von Schichten; Voraussetzung ist eine wohldefinierte Abstraktion der
Schicht und wohldefinierte sowie dokumentierte Schnittstellen
Ermöglichung von Standardisierung
Abhängigkeiten bleiben lokal auf einer Schicht
Austauschbarkeit
Geringere Effizienz
Unnötige Arbeitsschritte
Schwierige Granularitätsbestimmung
Lösung enthält ein Vorgehensmodell zur Anwendung des Software-Musters.
Quelle: Buschmann 1996, S. 31-51
Anwendung des Schichten-Musters in betrieblichen Anwendungssystemen
Client-Server-Architekturen
Eigenschaften
Layer 2: Dienstnutzer
Client
Enthält die Anwendungslogik,
häufig umgesetzt als FAT-Client
Layer 1: Dienstanbieter
Server
Trennung von Datenhaltung und Datenverarbeitung
Keine Verantwortung für die Datenspeicherung und
sämtlicher damit verbundener Konzeptionen der
Clienten-Komponente
Clienten-Komponente nutzt die zugesicherten Dienste
der Server-Komponente
Stellt die für die Bearbeitung der
Funktionen dem Clienten die
notwendigen Daten zur Verfügung
Die grundlegendeste Anwendung des Schichten-Musters ist die Client/Server-Architektur.
Quelle: Hasselbring 2006
Anwendung des Schichten-Musters in betrieblichen Anwendungssystemen
Drei-Schichten-Architektur
Eigenschaften
Präsentation
Layer 3
Weitere Dekomposition der Client-Komponente
Dienstnutzer
Client
Dienstanbieter
Geschäftslogik
Dienstnutzer
Datenhaltung
Layer 1
Server
Die Client-Server-Architektur lässt sich weiter unterteilen.
Quelle: Hasselbring 2006
Variante 1: Geschäftslogik ist Teil des Servers
(Thin-Client)
Variante 2: Geschäftslogik ist Teil des Clienten
(FAT-Client)
Layer 2
Dienstanbieter
Businesslogik wird getrennt von der Präsentation
Anwendung des Schichten-Musters in betrieblichen Anwendungssystemen
Web-Informationssystem-Architektur
Eigenschaften
Web-Client
Layer 4
Web-Server
Layer 3
Anwendungslogik
Geschäftslogik
Layer 2
Datenhaltung
Layer 1
Quelle: Hasselbring 2006
Entwicklung eines Schichtenmodells für Portale
Portal
Webbasierte Anwendung
Integration von verschiedenen Informationsquellen und
Anwendungen in einer homogenen Benutzeroberfläche
Vorgehen zur Erstellung einer
Software-Architektur für Portale
Definition von Abstraktionskriterien
Welche funktionalen Abhängigkeiten bestehen?
Welche Abstraktionsniveaus existieren im Umfeld?
Einteilung des Systems in funktionale Ebenen mit strikter
Ordnung
Quelle: Gurzki 2006, S. 58f
Präsentationslayer weiter unterteilt in Web-Server und
Web-Client
Webserver übernimmt Aufbereitung der Daten
Webclient ist ein Webbrowser
Aufbereitung der Daten für die Präsentation im
Webserver = Serverseitige Präsentation
Schichtenmodell im Kontext von Portalsoftware
Verwendung eigenstäniger
Systeme für Portalsystemkomponenten
Portalanwendungskomponente
Portalsystemkomponente
Betriebliche
Informationskomponente
Verwendung von Portalsystemkomponenten im
Application-Server des Portals
Mischform der Szenarien
A und B
Systemgrenze
Application-Server
Systemgrenze
Portalsoftware
Verschiedene PaKs
Verschiedene PAKs
Verschiedene PAKs
Verschiedene PSKs
Verschiedene PSKs
Verschiedene PSKs
Für den Betrieb des Protals
notwendige Funktionen für die
Nutzung durch PAKs
Verschiedene BIKs
Verschiedene BIKs
Verschiedene BIKs
Betriebsrelevante Kernprozesse des
Unternehmens
Für den Benutzer sichtbare
Anwendungen
Je nach Anwendungsszenario der Protalsoftware entstehen unterschiedliche Architekturmodelle.
Quelle: Gurzki 2006, S. 61
Architekturmuster
Mustersysteme
Schichtenmuster
Model-View-Controller-Muster
Service orientierte Architektur
Model-View-Controller (MVC)
Beispiel
Black
43
Red
39
Blue
6
Anwendbar für interaktive Systeme
Aufteilung des Systems in drei
Bereiche:
Green 10
Model: Kernfunktionalität und Daten
Black:
Red:
Blue:
Green:
43%
39%
6%
10%
View: Anzeige der Informationen
}
Benutzerschnittstelle
Controller: Verarbeitung der Nutzereingaben
Quelle: Buschmann 1996, S. 125
Dokumentation des MVC-Architekturmuster
Name
Model-View-Controller (MVC)
Kontext/
Beschreibung
Interaktive Anwendungen mit einer flexiblen Mensch-Computer-Schnittstelle
Problem
Benutzerschnittstellen unterliegen häufigen Änderungsbedarfen. Funktionserweiterungen erfordern Anpassungen der Menüs etc.. Nutzer
verlangen nach verschiedenen Darstellungsmöglichkeiten des selben Inhaltes und möchten das "look and feel" auf ihre Bedürfnisse
anpassen.
Kräfte/Forces
Verschiedene Anzeigeformate für die selben Informationen in verschiedenen Fenstern (z.B. Kreisdiagramm oder Balkendiagramm)
Umgehende Verarbeitung von Datenänderungen
Einfaches und Schnelles Ändern der Benutzerschnittstelle zur Laufzeit
Anbieten verschiedener "look and feel"-Standards
Lösung
Aufteilung in processing, output und input
Erstmalig umgesetzt in der Smalltalk-80 Entwicklungsumgebung
Model kapselt die Kerndaten und -funktionalität, ist unabhängig vom Output,
dem Input und der Repräsentation
View stellt dem Nutzer die Informationen zur Verfügung; holt sich die Daten vom Model;
ein Model kann mehrere Views haben
Controller empfängt Input, i.d.R.
eventgetrieben
Verändert der Benutzer das Model
über einen Controller, zeigen alle
Views die Änderungen unmittelbar an
Vorteile
Konsequenzen
Verschiedene Views auf das selbe Model
Synchroisierte Views
Nachträgliches Hinzufügen von weiteren Views
Wechselbare Oberflächeneinstellungen
Quelle: Buschmann 1996, S. 125
Class
Model
Responsibility
Anbieten der
Kernfunktionalität
Kennt alle Views unf
Controller
Meldet Änderungen an
alle notwendigen
Komponenten
Nachteile
Komplexität
Hohe Updateneigung
Abhängigkeit zwischen Controller und View
Collaborator
View
Controller
Architekturmuster
Mustersysteme
Schichtenmuster
Model-View-Controller-Muster
Service orientierte Architektur
Grundprinzipien einer Service orientierten Architektur
Dienstverzeichnis
1. Veröffentlichen
2. Suchen
3. Verweis auf Dienst
4. Abfrage der Beschreibung
Dienstanbieter
Dienstnutzer
5. Nutzung des Dienstes
Quelle: Dostalu.a.,2005,S.12
Grundlegende Merkmale einer SOA
Lose Kopplung
Dynamisches Finden und Einbinden von Diensten
Bindung zur Laufzeit
Schnittstellen zur Kommunikation
Verwendung von (möglichst) offenen Standards
fördert die Akzeptanz Stichpunkt 2
Maschinenlesbar
Dienstsuchverzeichnis
Wiederverwendung
Ermöglicht das Finden relevanter Dienste
Gekapselte Dienste
Zugriff auf Instanzen des Diensteverzeichnisses
Mehrfach verwendbar in verschiedenen Umgebungen
ohne Aufwand
Wissen über die Kategorie in welcher der Dienst
eingebunden ist
Anmeldung des Dienstes im Verzeichnis
Komponentenorientierung ist durch die Trennung von Schnittstelle und Implementierung gegeben
Quelle: Dostal2005,S.9
Beispiel Servicenutzung im Geschäftsprozess
Web Service basierte SOA und Standards
Simple Object Access Protocol (SOAP)
Beschreibt das XML-basierte Nachrichtenformat der
Kommunikation und dessen Einbettung in ein
Transportprotokoll
Universal Description, Discovery and Integration
protocol (UDDI)
Web Services Description Language (WSDL)
XML-basierte Beschreibungssprache, um Web Services
(Dienste) zu beschreiben
Beschreibt einen Verzeichnisdienst für Web Services,
Spezifiziert eine standardisierte Verzeichnisstruktur für
die Verwaltung von Web Services Metadaten (allg.
Anforderungen, Web Services Eigenschaften,
benötigte Informationen zum Auffinden von Web
Services)
Quelle: Dostal u.a.,2005
Anwendungsszenario: UDDI als branchenspezifischer Marktplatz
Administration
Richtlinien
Richtlinien
Autorisieren
Bindung
Bindung
Veröffentlichen
UDDI-Markplatz
Dienstanbieter
Dienstnutzer
Geschäftsbeziehung
Quelle: Dostal u.a., 2005, S. 104ff.
Suchen
Zusammenfassung
Zusammenfassung
Definition von Mustern
Muster allgemein nach Alexander 1977
Ein Muster ist eine dreiteilige Regel, die die Beziehung
zwischen einem bestimmten Kotext, einem Problem
und einer Lösung ausdrückt.
Quelle: Vogel 2005, S. 173
Software-Muster nach Coplien 2004
Jedes Muster ist eine dreiteilige Regel, die die
Beziehung zwischen einem bestimmten Kontext,
einem bestimmten System an Kräften, die in diesem
Kontex wiederkehrend auftreten, und einer
bestimmten Software-Konfiguration, die diesen
Kräften erlaubt, sich gegenseitig aufzulösen,
ausdrückt.
Zusammenfassung
Musterkategorien
Architekturmuster
Templates für konkrete Softwarearchitekturen
Analyse
Systemweite Spezifikation von Eigenschaften einer Anwendung
Beeinflussung der Architektur der Subsysteme
Entwurfsmuster
Schema zur Entwicklung von Subsystemen bzw. Komponenten von
Systemen
Geringere Reichweite und Auswirkungen als Architekturmuster
Entwurf
Design
Unabhängig von Programmiersprachen oder
Programmierparadigmen
Implemen
tierung
Idiome
„Implemtierungsmuster“
Abhängig von Programmiersprachen
Lösen konkrete Probleme in einer konkreten Programmiersprache
Musterkategorien orientieren sich am Entwicklungszyklus von Software
Quelle: Buschmann 1996, S. 12-14
Zusammenfassung
Musterdokumentation
Muster
Kontext
Beschreibung des Anwendungsgebietes
Problem
Problembeschreibung
Sammlung von Kräften, die im Kontext von Bedeutung sind
Lösung
Konfiguration zum Ausbalancieren der Kräfte
Struktur mit Komponenten und Beziehungen
Laufzeit-Verhalten
Eine Musterdokumentation folgt einem strukturierten und einheitlichen Aufbau.
Test
Zusammenfassung
Schichtenmuster und MVC
Schichtenmuster
Model-View-Controler
Dient der Strukturierung durch Dekomposition
Anwendungsbereich sind interaktive Systeme
Bereitstellung eines Services für die obere Schicht
Aufteilung in
Nutzung von Services der unteren Schicht
Model für Daten und Funktionalität
Schichtenmuster ist etablierter Standard für
betriebliche Anwendungssysteme
View zur Darstellung der Informationen
Controller zum Abfangen und weiterleiten der Benutzereingaben
Wichtig für Web-Architekturen, deren Funktion in der
Interaktion mit dem Benutzer liegt.
Lernfragen
Was ist eine Softwaremuster und woher kommen
diese?
Welche Ziele werden mit dem Softwaremuster
verfolgt?
Wie werden Softwaremuster dokumentiert?
Warum sind Schichtenarchitekturen so erfolgreich?
Welche Bestandteile hat eine Service orientierte
Architektur?
Literatur zur Vorlesung
Andres, T. (2005): Vom Geschäftsprozess zum Anwendungssystem, in: Model-driven develpoment, MDA 2/2005, online unter www.objektspektrum.de
Andresen, A. (2004): Komponentenorientierte Softwareentwicklung, Hansa-Verlag 2004.
Buschmann, F. et al. (1996): Pattern-oriented Software Architecture, West Sussex 1996.
Dostal, W. u.a.: Serviceorientierte Architekturen mit Web Services - Konzepte, Standards, Praxis. München 2005.
Fowler, M. (2003): Patterns für Enterprise Application-Architekturen, Berlin 2003.
Gurzki, T. (2006): Ein Architekturmodell für Portale im technischen Vertrieb, Dissertation, Hildesheim 2006.
Hasselbring, W. (2006): Aktuelles Schlagwort - Software-Architektur, in: Informatik Spektrum (29) 1/2006. Springer Verlag, Heidelberg 2006.
Reussner, R. (2006); Hasselbring, Wilhelm (Hrsg.): Handbuch der Software-Architektur, Heidelberg 2006.
Shaw, M., Garlan, D. (1996): Software architecture : perspectives on an emerging discipline, NJ . Prentice-Hall,1996.
Siedersleben, J. (2004): Moderne Softwarearchitektur, Heidelberg, 2004.
Starke, G. (2005): Effektive Software-Architekturen, München 2005.
Vogel, O. et al. (2005): Software-Architektur, Grundlagen - Konzepte - Praxis, München 2005.