Vorlesung „Softwaretechnologie“ Wintersemester te se este 2009 009 Kapitel 5 Systementwurf, Komponenten und Architekturen ROOTS Systementwurf Ziel: Überbrücken der Lücke zwischen gewünschtem und existierendem System auf handhabbare Weise Problem Gewünschtes System Existierende Systeme Idee: Anwendung des “Divide and Conquer”-Prinzips Modellierung des neuen Systems als Menge von Subsystemen Folgeproblem: „Crosscutting concerns“ – Übergeordnete Belange die viele Subsysteme betreffen (z (z.B. B Persistenz Persistenz, Nebenläufigkeit Nebenläufigkeit, ...)) Erst wenn diese geklärt sind, kann man die Subsysteme unabhängig voneinander bearbeiten Weg: Zielbestimmung Dekomposition Klärung der übergeordneten Belangen Danach erst Detailentwurf der Subsysteme © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-3 ROOTS Systementwurf Systementwurf 1. Entwurfsziele 8. Grenzfä fälle Definition D fi iti Abwägungen Initialisierung Fehler Ende 2. System Dekomposition 7. Programmsteuerung Ebenen / Partitionen Kohärenz / Kopplung Monolithisch Ereignisbasiert Threads Parallele Prozesse 3. Hardware / Software Zuordnung Kaufen vs. Selbermachen Netzwerktopologie Allokation 6. Globale Ressourcenverwaltung Zugriffskontrolle Sicherheit 4. Pesistente 5. Nebenläufigkeit Identifizierung von Datenverwaltung Dateien Datenbanken Datenstrukturen © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Thread Seite 5-4 ROOTS Nutzung der Ergebnisse der Anforderungsanalyse für den Systementwurf y Nichtfunktionale Anforderungen Aktivität Akti ität 1: 1 Definition D fi iti d der E Entwurfsziele t f i l Use Case Modell, Objektmodell Aktivität Ak i i ä 2: 2 Systemdekomposition S d k i i (A (Auswahl hl von S Subsystemen b nach h funktionalen Anforderungen, Kohärenz und Kopplung) Aktivität 3: Hardware/Software Zuordnung Aktivität 4: Persistentes Datenmanagement Use Case Modell, Dynamisches Modell Aktivität 5: Nebenläufigkeit Aktivität 6: Globale Ressourcenverwaltung Aktivität 7: Programmsteuerung Aktivität 8: Grenzfälle © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-5 ROOTS Kapitel-Überblick Ziele und Dekomposition 1. 1 E Entwurfsziele t f i l 2. Dekomposition in Subsysteme SystemArchitektur Zielgerichteter Entwurf 3. Hardware/Software Zuordnung 4. Management persistenter Daten 5. 5 Nebenläufigkeit 6. Globale Ressourcenverwaltung 7. Programmsteuerung 8. Grenzfälle © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-6 ROOTS Vorlesung „ Softwaretechnologie“ Kapitel ap te 55: Syste Systementwurf e t u ROOTS Ziele und Dekomposition ( Brügge & Dutoit, Kap. 6) Entwurfsziele Dienstidentifikation Subsystemaufteilung 1. Entwurfsziele externe t Qualitäten Q lität Endbenutzer Kunde • • • • • • Funktionalität Niedrige Kosten Erhöhte Produktivität Abwärtskompatibilität Schnelle Entwickelung Flexibilität • Laufzeiteffizienz • • • • Benutzerfreundlichkeit Intuitive Bedienung Erlernbarkeit Robustheit, Fehlertoleranz • Zuverlässigkeit • Portabilität • Gute Dokumentation • • • • • Anpassbarkeit Minimale Fehleranzahl Änderbarkeit, Änderbarkeit Lesbarkeit Wiederverwendbarkeit, Gut definierte Schnittstellen interne Q Qualitäten Entwickler © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-8 ROOTS Interessenskonflikte Abwägungen Funktionalität vs. Benutzbarkeit Je J überladener, üb l d um so schwerer h zu erlernen l Funktionalität vs. schnelle Entwicklung Viel Vi l Funktionalität F ki li ä zu iimplementieren l i b braucht h Z Zeit i Kosten vs. Robustheit Sparen an Qualitätssicherung Kosten vs. Wiederverwendbarkeit Quick and dirty Effizienz vs. Portabilität Effizienz durch Speziallösung für bestimmtes Betriebssystem, DBMS, ... Abwärtskompatibilität vs. Lesbarkeit Viele Sonderfälle für Altversionen erschweren die Lesbarkeit © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-9 ROOTS Bedeutung nichtfunktionaler Anforderungen für den Systementwurf DilemmaZu viele Alternativen Die Di gleiche l i h F Funktionalität kti lität iistt auff verschiedenste hi d t A Arten t realisierbar li i b Nutzen von NFAAuswahlkriterien Nichtfunktionale Anforderungen dienen als Auswahlkriterien Sie fokussieren die Entwurfsaktivitäten auf die relevanten Alternativen Beispiele (NF Anforderung Lösungsmöglichkeiten) „Hoher Hoher Durchsatz“ Durchsatz Parallelität, Parallelität optimistische Vorgehensweise Vorgehensweise, … „Zuverlässigkeit“ Einfache GUIs, Redundanz, … © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-10 ROOTS 2. Subsystem-Dekomposition Erster Schritt: Subsystem-Identifikation Welche W l h Di Dienste t werden d von d dem S Subsystemen b t zur V Verfügung fü gestellt t llt (Subsystem-Interface)? 1. Gruppiere Operationen zu Diensten 2. Gruppiere Typen die einen Dienst realisieren zu Subsystemen Zweiter Schritt: Subsystem-Anordnung Subsystem Anordnung Wie kann die Menge von Subsystemen strukturiert werden? Wie interagieren g sie? Nutzt ein Subsystem einseitig den Dienst eines anderen? Welche der Subsysteme nutzen gegenseitig die Dienste der anderen? 1. 1 Schichten und Partitionen 2. Software Architekturen © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-11 ROOTS Subsystem-Identifikation: Dienste Dienst: Menge von Operationen mit gemeinsamem Zweck Beispiel: B i i l B Benachrichtigungsdienst h i hti di t lookupChannel(), subscribe(), sendNotice(), unsubscribe() Dienste werden während des Systementwurfs identifiziert und spezifiziert Dienstspezifikation: Vollständig typisierte Menge von Operationen In I UML und d JJava würde üd d das einem i 'I'Interface' t f ' entsprechen t h Beispiel: Spezifikation des obigem Dienstes NotificationService NotificationChannel lookupChannel(ChannelCharacteristics) void subscribe(Observer) void sendNotice(Notification) void unsubscribe(Observer) Entscheidung: Suche nach Channel der bestimmte Fähigkeiten hat soll möglich sein. Alternative: Suche anhand von Namen Verwendete Schnittstellen (Observer, ...) müssen natürlich auch spezifiziert werden © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-13 ROOTS Subsystem-Identifikation: Subsysteme Subsystem (UML: Package) Stark St k kohärente k hä t Menge M von Kl Klassen, A Assoziationen, i ti O Operationen, ti E Events t und Nebenbedingungen die einen Dienst realisieren Wenn es gute Gründe gibt kann ein Subsystem mehr als einen Dienst anbieten Frage: Was ist Kohärenz? © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-15 ROOTS Subsystem-Identifikation: Kopplung und Kohärenz Kohärenz = Maß der Abhängigkeiten innerhalb der Kapselungsgrenzen (hier: innerhalb eines Subsystems) Starke Kohärenz: Die Klassen im Subsystem haben ähnliche Aufgaben und sind untereinander verknüpft (durch Assoziationen) Kopplung = Maß der Abhängigkeiten zwischen den Kapselungsgrenzen (hier: zwischen den Subsystemen) Starker Kopplung: Modifikation eines Subsytems hat gravierende Auswirkungen auf die anderen (Wechsel des Modells, breite Neukompilierung, usw.) Ziel: Wartbarkeit Die meisten Abhängigkeiten sollten innerhalb einzelner Subsysteme bestehen, nicht über die Subsystemgrenzen hinweg. Kriterien Subsysteme sollten maximale Kohärenz und minimale Kopplung haben © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-16 ROOTS Beispiel: Kopplung und Kohärenz Gegeben folgende drei Klassen. Die Pfeile zeigen Abhängikgeiten (Feldzugriffe Methodeanaufrufe): (Feldzugriffe, A B C a_1 b_1 c_1 a_2 b_2 c_2 a1(A,B,C) b1(A,B,C) c1(A,B,C) a2(A,B,C) b2(A,B,C) c2(A,B,C) a3(A,B,C) b3(A,B,C) c3(A,B,C) a4(A B C) a4(A,B,C) b4(A B C) b4(A,B,C) c4(A B C) c4(A,B,C) Kaum Kohäsion. b_1,, b_2 ungenutzt g b1 gehört nach A! b2 - b4 gehören nach C! Völlig unkohäsive Klasse. B kümmert kü t sich i h mehr h um C-Elemente als C selbst! Klasse mit 2 unabhängigen Kohäsionseinheiten aufsplitten in 2 Klassen! © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-17 ROOTS Vorlesung „ Softwaretechnologie“ Kapitel ap te 55: Syste Systementwurf e t u ROOTS Das Facade Pattern Facade Pattern Absicht Menge g von Interfaces eines Subsystems y zusammenfassen Abhängigkeiten der Clients von der Struktur des Subsystems reduzieren client classes client classes Facade subsystem classes subsystem classes Subsystem-Schnittstellen-Objekt S b S h i ll Obj k Objekt, das die Schnittstelle eines Subsystems nach außen darstellt Bietet alle Methoden der Subsystem-Schnittstelle Subsystem Schnittstelle Vorteil: Clients müssen nichts über die Interna des Subsystems wissen © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-19 ROOTS Facade Pattern: Beispiel Facade Compiler compiler subsystem classes compile() St Stream BytecodeStream CodeGenerator StackMachineCodeGen StackMachineCodeGen. © 2000-2009 Dr. G. Kniesel S Scanner T k Token Parser Symbol ProgramNodeBuilder StatementNode ProgramNode ExpressionNode VariableNode RISCCodeGenerator Vorlesung „Softwaretechnologie“ Seite 5-20 ROOTS Facade Pattern: Anwendbarkeit Viele Abhängigkeiten zwischen Klassen Reduzieren R d i d durch h Facade-Objekte F d Obj kt Einfaches Interface zu einem komplexen p Subsystem y Einfache Dinge einfach realisierbar (aus Client-Sicht) Anspruchsvolle Clients dürfen auch "hinter die Facade schauen" zB B für fü seltene, lt komplexe k l Anpassungen A des d Standardverhaltens St d d h lt Hierarchische Strukturierung g eines System y Eine Facade als Einstiegspunkt in jede Ebene © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-21 ROOTS Implementierung: Konfigurierbarkeit einer Facade Konfiguration g = Subklasse Konfiguration g = Parameter Compiler Compiler compile() Compiler() compile() Compiler(CodeGenerator) … CodeGenerator RISCCompiler StackMachineCompiler compile() RISCCompiler() compile() StackMachineCompiler() Stac ac eCo p e () RISCCodeGenerator StackMachineCodeGen StackMachineCodeGen. :Compiler :RISCCompiler … … :RISCCodeGenerator © 2000-2009 Dr. G. Kniesel :RISCCodeGenerator Vorlesung „Softwaretechnologie“ Seite 5-23 ROOTS Vorlesung „ Softwaretechnologie“ Kapitel ap te 55: Syste Systementwurf e t u ROOTS Beispiel: Vom Analysemodell zur Systemdekomposition Gruppieren pp Dienste und Subsysteme einführen Ausgangspunkt: Objektmodell der Analyse © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-25 ROOTS Naive System-Dekomposition: Nur Gruppierung in Packages Subsystem 1 Subsystem 5 Subsystem 2 Subsystem 3 Subsystem 4 Subsystem y 6 © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-26 ROOTS System-Dekomposition: Dienste und Komponenten Subsystem 1 Subsystem 5 Subsystem 2 Subsystem 3 Subsystem 4 Subsystem y 6 © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-27 ROOTS System-Dekomposition: DiensteRealisierung mit Facades Subsystem 1 <<Facade>> Subsystem 5 Subsystem 2 Subsystem 3 Subsystem 4 Subsystem y 6 © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-28 ROOTS Namensräume versus Subsysteme Die zwei vorherigen Folien illustrieren, dass Subsysteme viel mehr sind als Packages Packages sind nur Namensräume, keine Kapselungseinheiten Sie verhindern zufällige Namensgleichheit, erlauben aber Zugriff (via import-Mechanismus) Sie haben keine eigene Kapselungsgrenze (keine Schnittstelle) Sie reduzieren somit nicht die Abhängigkeiten (siehe vorvorherige Folien) Subsysteme werden als Komponenten (s. nächster Abschnitt) realisiert Sie haben klar definierte Kapselungsgrenzen (Schnittstellen) Sie Si begrenzen b somit it die di möglichen ö li h Abhä Abhängigkeiten i k it (d (da nur üb über di die Schnittstellen zugegriffen werden kann) © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-29 ROOTS Aufgabe (Diskussion mit Kollegen) Überlegen, Sie ob das vorherige Beispiel eine gute oder schlechte Dekomposition darstellt darstellt. Diskutieren Sie, was für eine Systemdekomposition „gut“ „gut oder „schlecht“ ist. Kategorisieren Sie die Dekomposition aus dem Beispiel als eine der nachfolgend vorgestellten Software-Architekturen. Passt es genau? Brauchen Sie Änderungen damit es passt? © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-30 ROOTS Darstellung von Subsystemen in der UML Lebenszeit von Komponenten Manche M h existieren i ti nur zur E Entwurfszeit t f it Manche existieren nur bis zur Kompilierung Manche existieren zur Bindungsg oder Laufzeit Der Systementwurf muss somit statische und dynamische Strukturen modellieren. d lli E Er verwendet d t Komponentendiagramme für statische Strukturen (zur Entwurfs- oder Kompilierzeit) p ) Verteilungsdiagramme für dynamische Strukturen (zur Installations-, Lade-, und Laufzeit) © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-31 ROOTS Vorlesung „ Softwaretechnologie“ Kapitel ap te 55: Syste Systementwurf e t u Software-Komponenten ROOTS Intuitive Vorstellung Anbieter Entwickler Anbieter Anbieter Anbieter © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-33 ROOTS Ziele Plattformunabhängige Wiederverwendung von Komponenten günstigere, ü ti bessere und schnellere Softwareentwicklung. g Unterstützung für flexibel anpassbare Geschäftsprozesse Einfach existierende Dinge zu einem neuen Verbund zusammensetzen Fokus auf intelligente Anwendung anstatt der wiederholten (Neu-) (Neu ) Entwicklung des gleichen Basisfunktionalitäten Märkte für Komponenten Möglichkeit Komponenten von Drittanbietern zu kaufen Möglichkeit Komponenten an andere zu verkaufen © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-34 ROOTS Komponenten-Definition Clemens Szyperski , WCOP 1996 „Eine Ei S Softwarekomponente ft k t ist i t eine i Kompositionseinheit K iti i h it mit it vertraglich t li h spezifizierten Schnittstellen und nur expliziten Kontextabhängigkeiten." „Eine Softwarekomponente kann unabhängig eingesetzt werden und wird von Dritten zusammengesetzt." Literatur Workshop on Component-Based Programming (WCOP) 1996 Clemens Szyperski: „Component C t Software S ft – Beyond B d Object-Oriented Obj t O i t d Programming“, P i “ Addison Wesley Longman, 1998. Clemens Szyperski, Dominik Gruntz, Stephan Murer: „Component C S f Software – Beyond B d Object-Oriented Obj Oi d Programming“, P i “ Second Edition, Pearson Education, 2002. © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-35 ROOTS Komponenten Kernidee Nur explizit spezifizierte Kontextabhängigkeiten Daher D h auch h „benutzte b t t S Schnittstellen“ h itt t ll “ b beschreiben!. h ib ! Beispiel Die Komponente p „„Bestellung“ g braucht einen „„Person“-Dienst um die eigenen Dienste anbieten zu können. © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-36 ROOTS Komponenten: Beispiel Komposition Die „Order Order“-Komponente -Komponente nutzt den „Person Person“-Dienst -Dienst von „Customer Customer“ Hierarchische Komponenten Die „Store-Komponente besteht ihrerseits aus drei Unterkomponenten © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-37 ROOTS Interaktionsspezifikation durch „Behaviour Behaviour Protocoll Protocoll“ Gegeben Lösung Folgende F l d S Schnittstelle h itt t ll Z Zu jedem j d T Typ wird i d sein i „Verhaltensprotokoll“ mit angegeben DB_Interface open(DB_descr) open(DB descr) : Connection close(Connection) query(Connection,SQL) : ResultSet getNext(ResultSet) g ( ) : Result Es ist ein regulärer Ausdruck der legale Aufrufsequenzen und Wiederholungen spezifiziert Beispiel Problem Wir wissen trotzdem nicht, wie das beabsichtigte Zusammenspiel der einzelnen Methoden ist. Kann man die Methoden in jeder beliebigen Reihenfolge aufrufen? „Erst E Verbindung V bi d zuer Datenbank D b k erstellen, dann beliebig oft anfragen und in jedem Anfrageergebnis beliebig oft Teilergebnisse abfragen, dann Verbindung wieder schließen.“ protocoll DB_Interface_Use = open(DB descr) , open(DB_descr) ( query(Connection,SQL) : ResultSet , ( getNext(ResultSet) : Result )* , )* , close(Connection) © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-38 ROOTS SOFA (Software Appliances) Component Model SOFA Component (http://dsrg.mff.cuni.cz/sofa) 1. 1 provided and required interfaces 2. frame (black-box view) 3. architecture (gray-box view) 4. connectors (abstract ( interaction)) 5. behavior protocols associated with 1., 2. ,3. Behaviour Protocol incomming event (!) outgoing event (?) regular expression describing legal event sequences E Example l !open, [!query, [!getNext]* ]*, !close Behaviour protocols enable verification of composition © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-39 ROOTS Weiterführende Literatur zu „Behaviour Protocolls Protocolls“ „SOFA / DCUP“ Projekt an der Karls-Universität Prag, Prof. Plasil und Mitarbeiter http://dsrg.mff.cuni.cz/projects.phtml?p=sofa&q=0 Hierachische Komponenten mit „angebotenen“ „angebotenen und „benutzten „benutzten“ Schnittstellen Spezifikation von Behaviour Protocols für beide Arten von Schnittstellen Automatische Verifikation der Protokolleinhaltung bei der Komposition von Komponenten p Horizontale Verbindung von „frames“ untereinander Vertikale Verbindung von „frame“ mit seiner „architecture“ Das D ganze sogar b beii d dynamischen i h U Updates d t d der K Komposition iti (d (d.h. h Ersetzung von Komponenten zur Laufzeit) © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-40 ROOTS OM MG Java M Microsoft Übersicht über existierende Komponentenmodelle Modell IDL Schnittstellen Ereignisse Konfiguration Komposition COM/DCOM ja nur provided durch Schnittstellen nein nein COM+ ja nur provided Ereignisdienst Kataloge nein .NET Gemeinsames Typsystem nur provided Nachrichtenserver Einsatzbeschreibung nein JavaRMI nein nur provided durch Schnittstellen nein nein JavaBeans nein nur provided durch Schnittstellen Binärdatei nein EJB nein nur provided durch Schnittstellen Einsatzbeschreibung nein CORBA ja nur provided Ereignisdienst nein nein CCM ja provided und required Quellen und Verbraucher Komponentenbeschreibung Kompositions beschreibung ja provided und required und behaviour protocols Quellen und Verbraucher KomponentenKomponenten und Einsatzbeschreibung Kompositions beschreibung SOFA © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-41 ROOTS Charakteristika Komponentenbasierter Softwareentwicklung Strikte Trennung zwischen Schnittstellen und Implementierung Die Di S Schnittstellenspezifikation h itt t ll ifik ti enthält thält alle ll Informationen I f ti die di ein i potentieller t ti ll Benutzer kennen muss. Es gibt keine anderen Kontextabhängigkeiten. Verfügbarkeit V fü b k it als l Bi Binärcode ä d Komponenten werden in ausführbarer, binärer Form für viele Plattformen geliefert. Quellcode ist nicht erforderlich. Plattformunabhängigkeit Komponenten können auf einer Vielzahl von Rechnerumgebungen / Betriebssystemen eingesetzt werden. Ortstransparenz Komponenten verwenden oft in Verbindung mit Middleware-Systemen eingesetzt, so dass man nicht wissen braucht, wo sich einzelne Komponenten zurr Laufzeit La f eit befinden befinden. © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-42 ROOTS Charakteristika Komponentenbasierter Softwareentwicklung Wohldefinierter Zweck, der mehr als ein einzelnes Objekt umfasst Eine Ei Komponente K t ist i t auff ein i spezifisches ifi h Problem P bl spezialisiert i li i t Wiederverwendbarkeit Als domänenspezifische Abstraktionen erlauben Komponenten Wiederverwendung auf Ebene von (Teil-)Anwendungen Kontextfreiheit Die Integration von Komponenten sollte unabhängig von einschränkenden Randbedingungen sein. Portabilität und Sprachunabhängigkeit p gg Es sollte möglich sein, Komponenten in (fast) jeder Programmiersprache zu entwickeln. © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-43 ROOTS Charakteristika Komponentenbasierter Softwareentwicklung Reflektive Fähigkeiten Komponenten K t sollten llt Reflektion R fl kti unterstützen, t tüt so dass d di die von Ih Ihnen angebotenen und benötigten Dienste durch Introspektion bestimmt werden können. Plug & Play Komponenten sollten leicht einzusetzen sein. Konfiguration Komponenten sollten parametrisierbar sein, damit sie leicht neuen Situationen angepasst werden können. Zuverlässigkeit Komponenten sollten ausgiebig getestet werden. © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-44 ROOTS Charakteristika Komponentenbasierter Softwareentwicklung Eignung für Integration / Komposition Es E sollte llt möglich ö li h sein, i K Komponenten t zu kkomplexeren l K Komponenten t zusammenzusetzen. Komponenten müssen miteinander interagieren können. Unterstützung für visuelle Kompositionswerkzeuge © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-45 ROOTS Vorlesung „ Softwaretechnologie“ Kapitel ap te 55: Syste Systementwurf e t u Komponentendiagramme ROOTS Komponentendiagramm: UML 2.0 Komponentendiagramm zeigt Komponenten und deren Abhängigkeiten Komponenten sind gekapselte Teile eines Systems mit nach außen wohldefinierten Schnittstellen Angebotene A b t Schnittstellen S h itt t ll ((‚provided id d interfaces‘) i t f ‘) Benötigte/benutzte Schnittstellen (‚required interfaces‘) Komponenten kapseln beliebig komplexe Teilstrukturen Klassen, Objekte, Beziehungen oder ganze Verbünde von Teilkomponenten ( hierarchische Komposition) Quellcode, Laufzeitbibliotheken, ausführbare Dateien, … Komponenten bieten ‚Ports‘ Ein Port ist Name für eine Menge zusammengehöriger Schnittstellen Verschiedene Ports (Namen) für mehrfach vorhandene gleiche Schnittstelle ((z.B. mehrere USB-Schnittstellen am g gleichen Gerät)) © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-47 ROOTS Komponentendiagramm: Elemente Komponente ((„component“)) Interface mit Stereotype <<component>> Name <<stereotype>> Name angebotenes Interface benötigtes Interface Port Beziehung © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-48 ROOTS Komponentendiagramm: Beispiel C Camcorder d pal_Signal tv_in mic_Signal mic_in audio_out audio_in Computer Komponenten-Verknüpfung firewire_in_out öffentlicher Port angebotenes Interface © 2000-2009 Dr. G. Kniesel … nicht-öffentlicher Port benötigtes Interface Vorlesung „Softwaretechnologie“ Seite 5-49 ROOTS Komponenten und Rollen (‚Parts‘) Komponenten können in Klassendiagrammen verwendet werden und umgekehrt Rollen (‚Parts (‚Parts‘)) Der gleiche Typ (Interfaces oder Klasse) kann in verschiedenen Komponenten verschiedene Rollen spielen. „Das Das engl engl. Wort „Part Part“ heißt in diesem Kontext „Rolle Rolle“, nicht „Teil Teil“!! Notation Rollen mit Multiplizität Rolleninstanzen © 2000-2009 Dr. G. Kniesel Mutiplizität Rolle:Typ [Multiplizität] Rolle:Typ instanz/Rolle:Typ b1/Benutzer:Typ Vorlesung „Softwaretechnologie“ Seite 5-50 ROOTS Vorlesung „Softwaretechnologie“ Wintersemester te se este 2009 009 ROOTS Subsystem-Anordnung Software-Architekturen Subsystem Entwurf Erster Schritt: Subsystem-Dekomposition Welche W l h Di Dienste t werden d von d dem S Subsystemen b t zur V Verfügung fü gestellt t llt (Subsystem-Interface)? 1. Gruppiere Operationen zu Diensten. 2. Identifiziere Subsysteme als stark kohärente Menge von Klassen, Assoziationen, Operationen, Events und Nebenbedingungen die einen Dienst realisieren Zweiter Schritt: Subsystem-Anordnung Wie kann die Menge von Subsystemen strukturiert werden? Nutzt ein Subsystem einseitig den Dienst eines anderen? Welche der Subsysteme nutzen gegenseitig die Dienste der anderen? 1. Schichten und Partitionen 2. Software Architekturen © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-52 ROOTS Softwarearchitekturen Architektur = Subsysteme + Beziehungen der Subsysteme Architekturen Schichten-Architektur Schichten Architektur Client/Server Architektur N-tier Peer-To-Peer Architektur Repository Architektur Model/View/Controller M d l/Vi /C ll A Architektur hi k Pips and Filter Architektur © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-53 ROOTS Schichten und Partitionen Schicht (=Virtuelle Maschine) Subsysteme, S b t di die Di Dienste t fü für eine i höh höhere Ab Abstraktionsebene t kti b zur V Verfügung fü stellt Eine Schicht darf nur von tieferen Schichten abhängig sein Eine Schicht weiß nichts von den darüber liegenden Schichten Partition Subsysteme, die Dienste auf der selben Abstraktionsebene zur Verfügung stellen. Subsysteme, die sich gegenseitig aufeinander neziehen Architekturanalysewerkzeuge Identifikation von Schichten und Partitionen Warnung vor Abhängigkeiten die der Schichtung entgegenlaufen © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-54 ROOTS Schichten-Architekturen Geschichtete Systeme sind hierarchisch. Das ist wünschenswert, weil Hierarchie die Komplexität reduziert reduziert. Geschlossene Schichten-Architektur Schichten Architektur (Opaque Layering) Jede Schicht kennt nur die nächsttiefere Schicht. Geschlossene Schichten sind leichter zu pflegen. Offene Schichten-Architekturen (Transparent Layering) Jede Schicht darf alle tiefer liegenden Schichten kennen / benutzen benutzen. Offene Schichten sind effizienter. © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-55 ROOTS Geschlossene Schichten-Architektur Beispiel „Verteilte Verteilte Kommunikation Kommunikation“ Application Object Presentation Format Session Connection Transport Message Network Packet DataLink Frame Physical Bit ISO = International Organization g for Standardization OSI = Open System Interconnection Das Referenzmodell definiert Netzwerkprotokolle in 7 übereinander liegenden Schichten sowie strikte Regeln zu Kommunikation zwischen diesen Schichten. © 2000-2009 Dr. G. Kniesel Absstraktionse ebenen ISO’s ISO’ OSI Referenzmodell R f d ll Vorlesung „Softwaretechnologie“ Seite 5-56 ROOTS Geschlossene Schichten-Architektur Beispiel „Verteilte Verteilte Kommunikation Kommunikation“ Verteilte Programmierung Application Object Presentation Format Session Connection Transport Message Network Packet DataLink Frame Physical Bit i mühsam ist üh und d ffehleranfällig: hl fälli Verbindungsherstellung zwischen Prozessen Kommunikation zwischen Packen/Entpacken von Informationen in Nachrichten statt Parameterübergabe g Umcodierung der Informationen wegen heterogener Platformen Berücksichtigung B k i hi technischer h i h Spezifika des Transportsystems © 2000-2009 Dr. G. Kniesel Compu uter- und Netzwerkhardware e Betriebssystem Prozessen statt Objekten Vorlesung „Softwaretechnologie“ Seite 5-57 ROOTS Geschlossene Schichten-Architektur Middleware erlaubt Konzentration auf Anwendungsschicht Garantiert Transparenz der Verteilung Platform Plattform Unterste Hardware- und Softwareschichten Betriebssystem Computer- und Netzwerkhardware © 2000-2009 Dr. G. Kniesel Compu uter- und Netzwerkhardware e Betriebssystem Middleware Middlew ware • Middlewareabhängig • Plattformunabhängig Vorlesung „Softwaretechnologie“ Application Object Presentation Format Session Connection Transport Message Network Packet DataLink Frame Physical Bit Seite 5-58 ROOTS Middleware Definition: Middleware Softwaresystem S ft t auff Basis B i standardisierter t d di i t Schnittstellen S h itt t ll und d Protokolle, P t k ll die Dienste bietet, die zwischen der Plattform (Betriebssystem + Hardware) und den Anwendungen angesiedelt sind und deren Verteilung unterstützen Bekannte Ansätze Remote Procedure Calls Java RMI (Remote Method Invocation) CORBA (Common Object Request Broker Architecture) Wünschenswerte Eigenschaften Gemeinsame Ressourcennutzung Nebenläufigkeit Skalierbarkeit Fehlertoleranz Sicherheit Offenheit Vertiefung: Vorlesung „Verteilte Systeme“ (Dr. Serge Schumilov) Applikationsserver Definition: Applicationsserver Softwaresystem S ft t das d als l Laufzeitumgebung L f it b für fü A Anwendungen d di dientt und d dabei über Middleware-Funktionen hinausgehende Fähigkeiten bietet Transparenz der Datenquellen Objekt-Relationales Mapping Transaktionsverwaltung Lebenszyklusmanagement („Deployment“, Updates, Start) Verwaltung zur Laufzeit (Monitoring, Kalibrierung, Logging, ...) Beispiel-Systeme p y ((kommerziell)) IBM WebSphere Oracle WebLogic Beispiel-Systeme B i i lS t (open ( source)) JBoss Sun Glassfish Apache Tomcat © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-60 ROOTS Schichten-ArchitekturClient/Server Abbildung von Schichten auf Rechner im Netzwerk Server S bi bieten t Di Dienste t fü für Cli Clients t Clients ruft Operation eines Dienstes auf; die wird ausgeführt und gibt ein Ergebnis zurück Client kennt das Interface des Servers (seinen Dienst) Server braucht das Interface des Client nicht zu kennen Nutzer interagieren nur mit dem Client Server Client * * requester © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ provider service1() … service2() ... serviceN() i N() Seite 5-62 ROOTS Schichten-ArchitekturClient/Server Oft bei Datenbanksystemen genutzt Front-End: F tE d N Nutzeranwendung t d (Cli (Client) t) Back-End: Datenbankzugriff und Datenmanipulation (Server) Vom V Cli Clientt ausgeführte füh t F Funktionen kti Maßgeschneiderte Benutzerschnittstelle Front-end-Verarbeitung g der Daten Aufruf serverseitiger RPCs (Remote Procedure Call) Zugang zum Datenbankserver über das Netzwerk Vom Datenbankserver ausgeführte Funktionen Zentrales Datenmanagement Datenintegrität D t i t ität und dD Datenbankkonsistenz t b kk i t Datenbanksicherheit Nebenläufige g Operationen p ((multiple p user access)) Zentrale Verarbeitung (zum Beispiel Archivierung) © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-63 ROOTS Entwurfsziele für Client/Server Systeme Portabilität Server S k kann auff vielen i l unterschiedlichen t hi dli h M Maschinen hi und dB Betriebssystemen ti b t installiert werden und funktioniert in vielen Netzwerkumgebungen Transparenz Der Server könnte selbst verteilt sein (warum?), sollte dem Nutzer aber einen einzigen “logischen” Dienst bieten Performance Client sollte für interaktive, UI-lastig Aufgaben maßgefertigt sein Server sollte CPU-intensive Operationen bieten Skalierbarkeit Server hat genug Kapazität, um eine größere Anzahl Clients zu bedienen Flexibilität Server sollte für viele Front-Ends nutzbar sein g Zuverlässigkeit System sollte individuelle Knoten-/Verbindungsprobleme überleben © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-64 ROOTS Probleme mit Client/Server Architekturen Geschichtete Systeme unterstützen keine gleichberechtigte gegenseitige ((„Peer-to-peer Peer to peer“)) Kommunikation „Peer „Peer-to-peer“ to peer Kommunikation wird oft benötigt Beispiel: Eine Datenbank empfängt Abfragen von einer Anwendung, schickt aber auch Benachrichtigungen an die Anwendung wenn der Datenbestand sich geändert hat hat. © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-65 ROOTS Schichten-ArchitekturVon der einfachen Client/Server- zur N Client/Server N-Tier-Architektur Tier Architektur Entwurfsentscheidungen verteilter Client-Server-Anwendung Wie Wi werden d di die A Aufgaben f b d der A Anwendung d auff Komponenten K t verteilt? t ilt? Typische Aufgabenteilung Präsentation – Schnittstelle zum Anwender Anwendungslogik – Bearbeitung der Anfragen Datenhaltung – Speicherung der Daten in einer Datenbank Wie viele Prozessräume gibt es? Tier N Eine Stufe / Schicht (engl. ‚tier‘) kennzeichnet einen Prozessraum innerhalb einer verteilten Anwendung Das N legt fest, wie viele Prozessräume es gibt Ein Prozessraum kann, muss jedoch nicht(!), physikalischen y Rechner entsprechen p einem p … Tier 2 Wie werden die Komponenten auf Prozessräume verteilt? Die Art der Zuordnung der Aufgaben zu den Tier 1 tiers macht den Unterschied der verschiedenen n-tier Architekturen aus © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-66 ROOTS 2-Tier Architektur Ältestes Verteilungsmodell: Client- und Server-Tier Zuordnung von Aufgaben zu Tiers Präsentation Client Anwendungslogik Beliebig Datenhaltung Server Vorteile Einfach und schnell umzusetzen Performant Probleme Schwer wartbar Schwer skalierbar Software-Update Problem © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-67 ROOTS 2-Tier ArchitekturVarianten Ultra-Thin-Client Architekturen (a): Die Client Client-Tier Tier beschränkt sich auf Anzeige von Dialogen in einem Browser Browser. Thin-Client Architekturen (a,b): Die Client-Tier beschränkt sich auf Anzeige von Dialogen und die Aufbereitung d D der Daten t zur A Anzeige. i Fat-Client Architekturen (c,d,e): Teile der Anwendungslogik liegen zusammen mit der Präsentation auf der Cli Client-Tier. Ti Client machine User interface User interface User interface User interface User interface Application Application Application Database User interface Application Application Application Database Database Database Database Database (b) S Server machine hi (c) (d) (e) (a) © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-68 ROOTS 3–Tier Architekturen Zuordnung von Aufgaben zu 3 Tiers Präsentation Pä t ti Client-Tier Cli t Ti 3-Tier-Architektur Client-Tier Pä Präsentation t ti Middle-Tier Middle Tier Anwendungslogik Server-Tier Datenhaltung Anwendungslogik Middle-Tier Datenhaltung g Server-Tier Standardverteilungsmodell St d d t il d ll fü für einfache i f h W Webanwendungen b d Client-Tier = Browser zur Anzeige Middle-Tier = Webserver mit Servlets / ASP / Anwendung g Server-Tier = Datenbankserver © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-69 ROOTS 3–Tier ArchitekturenBeispiel Webanwendungen Standardverteilungsmodell für einfache Webanwendungen: User-interface level User interface HTML page containing list Keyword expression HTML generator Query generator Database queries Ranked list of page titles Ranking component Web page titles with meta-information © 2000-2009 Dr. G. Kniesel Processing level Vorlesung „Softwaretechnologie“ Seite 5-70 Data level ROOTS 3–Tier ArchitekturenApplicationsServer (EJB) © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-71 ROOTS 4- und Mehr-Tier Architekturen Unterschied zu 3-Schichten-Architekturen Die Di A Anwendungslogik d l ik wird i d auff mehrere h S Schichten hi ht verteilt t ilt (W (Webserver, b Application Server) Motivation Minimierung Minimier ng der Komple Komplexität ität ((„Divide Di ide and Conquer“) Conq er“) Besserer Schutz einzelner Anwendungsteile g für die meisten Applikationen pp im E-Bereich Grundlage E-Business, E-Commerce, E-Government © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-72 ROOTS 4-Tier-Architektur eines Informationssystems Client Tier Web Tier Enterprise IS Tier Application Tier Legacy Anwendungen Application Server Personalization Process Engine Security W b Web Web Server Transactions Web Service Interfaces (WSDL, SOAP) Enterprise D t Data E-Business Komponenten p Directory Encryption Backend Interface © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-73 ROOTS N-Tier-ArchitekturAbwägungen Box = Komponente des Systems Client-Tier Pfeil = Komm Kommunikationsverbindung nikations erbind ng Mehr Boxen mehr Verteilung + Parallelität mehr Kapselung + Wiederverwendung Mehr Boxen mehr Pfeile Verbindungen zu verwalten mehr Koordination + Komplexität Mehr Boxen mehr Vermittlung mehr Datentransformationen schlechte Performanz Entwickler einer Architektur versuchen deswegen immer ein Kompromiss zu finden © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Server-Tier Es gibt kein Designproblem, das man durch Einführung einer zusätzlichen g Vermittlungsschicht nicht lösen kann. Es gibt kein Performanzproblem, das man durch Entfernung einer zusätzlichen Vermittlungsschicht nicht lösen kann kann. Seite 5-74 ROOTS Peer-to-Peer Architektur Generalisierung der Client/Server Architektur Clients Cli t können kö Server S sein i und d umgekehrt k ht Schwieriger wegen möglicher Deadlocks Peer requester * service1() service2() … serviceN() i N() application1:DBUser * provider 1. updateData database:DBMS application2:DBUser 2 changeNotification 2. h ifi i © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-75 ROOTS Pipe-and-Filter-Architecture ausgabe 1 * eingabe L it Leitung (Pipe) (Pi ) Filt Filter * ausgabe eingabe 1 Filter-Subsysteme Filt S b t b b it D bearbeiten Daten t Es sind reine Funktionen Sie sind konzeptionell p und implementierungstechnisch p g unabhängig g g von den Pipes die die Daten zu ihnen bzw. von ihnen Weg leiten den Erzeugern und Verbrauchern der Daten Leitungs-Subsysteme leiten Daten weiter Sie sammeln Daten von einem oder mehreren Filtern Sie leiten Daten an einen oder mehrere Filter weiter Sie dienen der Synchronisation paralleler Filteraktivitäten Sie sind von allen anderen Subsystemen völlig unabhängig (genau wie die Filter) © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-76 ROOTS Pipe-and-Filter-Architektur: Ausschnitt aus möglicher Systemkonfiguration Das Gesamtsystem entsteht einfach durch die Verknüpfung von Pipe- und Filter-Subsystemen Filter Subsystemen … :Filter … :Filter :Filter :Pipe :Filter :Pipe :Filter :Pipe :Filter … :Filter … :Filter … Vorteile Flexibilität: leichter Austausch von Filtern, Leichte Rekonfiguration der Verbindungen über Pipes Effizienz: Hoher Grad an Parallelität (alle Filter können Parallel arbeiten!) Gut geeignet für automatisierte Transformationen auf Datenströmen Beispiel: Sattelitendatenbearbeitung Pipe-and-Filter-Architektur: Ausschnitt aus möglicher Systemkonfiguration Das Gesamtsystem entsteht einfach durch die Verknüpfung von Pipe- und Filter-Subsystemen Filter Subsystemen … :Filter … :Filter :Filter :Pipe :Filter :Pipe :Filter :Pipe :Filter … :Filter … :Filter … Weniger geeignet für Hochinteraktive Aufgaben Benutzerinteraktion macht die potentielle Parallelität zunichte Aufgaben, wo die Daten sich nicht bzw. nur wenig ändern, da sich dann der Aufwand die Daten ständig zu kopieren nicht lohnt In diesem Fall ist eine Repository-Architektur p y vorteilhafter Repository Architektur Subsysteme lesen und schreiben Daten einer einzigen, gemeinsamen Datenstruktur Subsysteme sind lose gekoppelt (Interaktion nur über das Repository) Kontrollfluss wird entweder zentral vom Repository diktiert (Trigger) oder von den Subsystemen bestimmt (locks, synchronization primitives) Repository Subsystem createData() setData() getData() searchData() © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-79 ROOTS Repository Architektur: Beispiel „Eclipse“ Compiler SemanticAnalyzer SyntacticAnalyzer LexicalAnalyzer Optimizer CodeGenerator Repository ParseTree SymbolTable SourceLevelDebugger © 2000-2009 Dr. G. Kniesel Type Info Editor Vorlesung „Softwaretechnologie“ Seite 5-80 ROOTS Model/View/Controller Subsysteme werden in drei verschiedene Typen unterteilt Model M d l Subsystem: S b t Z tä di fü Zuständig für d das Wi Wissen d der A Anwendungsdomäne d d ä und d Benachrichtigung der Views bei Änderungen im Model. View Subsystem: Stellt die Objekte der Anwendungsdomäne für den Nutzer dar Controller Subsystem: Verantwortlich für die Abfolge der Interaktionen mit dem Nutzer. MVC ist eine Verallgemeinerung der Repository Architektur: Das Model Subsystem implementiert die zentrale Datenstruktur Das D C Controller t ll S Subsystem b t schreibt h ibt explizit li it d den K Kontrollfluss t llfl vor initiator Controller * 1 p y repository Model View © 2000-2009 Dr. G. Kniesel subscriber 1 notifier * Vorlesung „Softwaretechnologie“ Seite 5-81 ROOTS Beispiel einer auf der MVC Architektur basierenden Dateiverwaltung © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-82 ROOTS Abfolge von Events 2. User types new filename :Controller :Model :InfoView 5. Updated views :FolderView © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-83 ROOTS Zusammenfassung Systementwurf Verkleinert V kl i t di die Lü Lücke k zwischen i h A Anforderungen f d und dd der IImplementierung l ti Zerteilt das Gesamtsystem in handhabbare Stücke Definition der Entwurfsziele Beschreibt und priorisiert die für das System wichtigen Qualitäten Definiert das Wertesystem anhand dessen Optionen überprüft werden Subsystemdekomposition Führt zu einer Menge lose gekoppelter Teile, die zusammen das System bilden Softwarearchitektur Beschreibt die Beziehungen / Interaktionen der Subsysteme © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-84 ROOTS Vorlesung „Softwaretechnologie“ Wintersemester te se este 2009 009 Zielgerichteter Entwurf ( Brügge & Dutoit, Kap. 7) ROOTS Überblick Dekomposition (vorhergehender Abschnitt) 0. 0 Überblick Üb bli k üb über d das S Systementwurf t t f 1. Entwurfsziele 2. Dekomposition p in Subsysteme y Zielgerichteter Entwurf 3. Nebenläufigkeit 4. Hardware/Software Zuordnung 5. 5 Management persistenter Daten 6. Globale Ressourcenverwaltung und Zugangskontrolle 7. Programmsteuerung 8. Grenzfälle © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-86 ROOTS 3. Nebenläufigkeit Identifizieren nebenläufiger Ausführungsstränge und Behandeln von Fragen zur Nebenläufigkeit. Nebenläufigkeit Entwurfsziel: Reaktionszeit, Performance. Threads („Fäden“, „Stränge“) Ein Thread ist ein Pfad durch eine Menge von Zustanddiagramme, wobei stets genau ein Objekt zur selben Zeit aktiv ist. Ein Thread bleibt in einem Zustandsdiagramm bis ein Objekt einen Event an ein anderes Objekt sendet und auf einen anderen Event wartet Thread (ab-)spaltung: Ein Objekt sendet ein asynchrones Event © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-87 ROOTS Nebenläufigkeit (Fortsetzung) Zwei Objekte heißen inhärent nebenläufig, wenn sie zur gleichen Zeit Events empfangen können ohne zu interagieren Inhärent nebenläufige Objekte sollten verschiedenen Threads zugeordnet werden Objekte Obj kt mit it sich i h wechselseitig h l iti ausschließenden hli ß d Akti Aktivitäten ität sollten llt demselben Thread zugeordnet werden (Warum?) © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-88 ROOTS Fragen zur Nebenläufigkeit Welche Objekte des Objektmodells sind unabhängig? Welche Arten von Threads sind identifizierbar? Bietet das System vielen Nutzern Zugriff? Kann eine einzelne Anfrage an das System in mehrere Teilanfragen zerlegt werden? Können diese Teilanfragen parallel abgearbeitet werden? © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-89 ROOTS 4. Hardware/Software Zuordnung Diese Aktivität befasst sich mit zwei Fragen: Wie sollen wir jjedes einzelne Subsystem y realisieren In Hardware oder in Software? Welche Hard- / Software ist schon verfügbar? Komponenten von Drittanbietern die man nutzen kann Altlasten die man integrieren muss Wie wird das Objektmodell auf die gewählte Hard- und Software abgebildet? b bild t? Objekte in die Realität abbilden auf Prozessor, Speicher, Input/Output Assoziationen in die Realität abbilden auf Bus-/Netzwerktopologie Ein Großteil der Schwierigkeiten beim Entwurf eines Systems ist die Folge von außen auferlegter Einschränkungen bzgl bzgl. Hard Hard- und Software. „Aufgabe X muss von Hard- /Software Y gelöst werden.“ „Wir haben gerade erst X Millionen für System Y ausgegeben…“ © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-90 ROOTS Zuordnung von Objekten Prozessor Ist I t die di geforderte f d t Berechnungsgeschwindigkeit B h h i di k it zu h hoch h fü für einen i einzelnen i l Prozessor? Bringt die Verteilung der Aufgaben auf verschiedene Prozessoren einen Geschwindigkeitsgewinn? Wie viele Prozessoren sind für den dauerhaft stabilen Betrieb unter Dauerlast notwendig? Speicher Ist genug Speicher vorhanden, um Belastungsspitzen abzufangen? I/O: I/O Ist zusätzliche Hardware erforderlich, um die anfallenden Datenmengen zu bewältigen? Reicht die Kommunikationsbandbreite zwischen den Subsystemen oder angeschlossener Hardware, um die gewünschte Reaktionszeit zu garantieren? g © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-91 ROOTS Zuordnung der Assoziationen: Kommunikationstopologie Beschreibe die physikalische Topologie der Hardware Entspricht E t i ht oft ft der d physikalischen h ik li h S Schicht hi ht iin ISO’ ISO’s OSI Referenzmodell R f d ll Welche Assoziationen werden auf physikalische Verbindungen abgebildet? Welche <<benutzt>>-Beziehungen aus dem Analyse-/Entwurfsmodell korrespondieren mit physikalischen Verbindungen? Beschreibe die logische Topologie (Assoziationen zwischen den Subsystemen) Identifiziere Assoziationen, die nicht direkt auf physikalische Verbindungen abzubilden sind: Wie sollen diese Assoziationen implementiert werden? © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-92 ROOTS Netzwerktopologie bei verteilten Systemen Wenn die Architektur verteilt ist, müssen wir auch die Netzwerkarchitektur beschreiben (Kommunikationssubsystem) (Kommunikationssubsystem). Zu stellende Fragen Was ist das Übertragungsmedium? g g ((Ethernet,, Wireless)) Welche “Quality of Service” (QOS) ist vorhanden/erforderlich? Welche Art von Kommunikationsprotokollen können genutzt werden? Sollen Interaktion asynchron asynchron, synchron oder sperrend sein? Welche Anforderungen gibt es an die Bandbreite zwischen den Subsystemen? Stock St k Price P i Change Ch -> Broker B k Icy Road Detector -> ABS System © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-93 ROOTS Typisches Beispiel für physikalische Topologie Application Client Application Client Application Client TCP/IP Ethernet LAN Communication Agent for Application Clients Communication Agent for Application pp Clients Backbone Network TCP/IP Global Data Server Communication Agent for Data Server LAN OODBMS Global Data Server Communication Agent for Data Server RDBMS LAN Local Data Server Global Data Server Fragen zu Hardware/Software Zuordnung Ist bestimmte Funktionalität schon in Hardware verfügbar? Müssen Mü Aufgaben A f b auff bestimmter b ti t Hardware H d ausgeführt füh t werden, d um andere Hardware zu steuern oder nebenläufige Operationen zu erlauben? Das ist für Embedded Systems oft der Fall. Welche Hard-/ Softwaresysteme existieren ... und d kö können oder d müssen ü genutzt t t werden d Welche Vernetzungstopologie besteht zwischen den physikalischen Einheiten? Baum, Stern, Matrix, Ring Was ist das passende Kommunikationsprotokoll zwischen den Subsystemen? Abhängig von Bandbreite, Latenz und gewünschter Sicherheit Generelle Frage g zur Systemperformance: y p Was ist die gewünschte Reaktionszeit? © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-95 ROOTS Vorlesung „ Softwaretechnologie“ Kapitel ap te 55: Syste Systementwurf e t u ROOTS Timing-Diagramme für Realzeitanforderungen 3a. Realzeitanforderungen Realzeitanforderungen bezeichnen Anforderungen an Software in einer bestimmten Zeitspanne zu reagieren oder etwas zu einem bestimmten Zeitpunkt zu tun Meistens geht es um sehr kurze Zeitspannen (Sekunden und alles darunter) Typischerweise bei "Eingebetteten Systemen" (Mischung aus Hard- und Software) Im Fahrzeug- und Maschinenbau, Telekommunikation, Anlagen, … Dilemma Software ist flexibler (leichter austauschbar und wartbar) und kostengünstiger Aussagen über die absolute Zeit Zeit, die ein bestimmter Aufruf dauert sind aber sehr schwer zu treffen Problem "Dynamisches Binden": Was wird denn nun aufgerufen? Problem "Garbage Garbage Collection Collection":: Wann unterbricht sie evtl evtl. einen Aufruf? … © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-97 ROOTS Zeitverlaufsdiagramm (Timing Diagram) Modelliert zeitabhängige Zustandsübergänge der Interaktionspartner Auslöser A lö iistt ffester t Zeitpunkt Z it kt oder d Nachrichtenaustausch N h i ht t h Nützlich bei Interkationen mit zeitkritischem Verhalten ( (Realzeitanforderungen) g ) Stellt exemplarischen Ablauf da (keine Kontrollstrukturen o.ä.) ti i name timing Rolle:Typ at(t=14.00) Z1 Z2 Z3 Zustandswechsel zu festem Zeitpunkt m2 m4 Zustände Rolle:Typ m1 Zustandswechsel durch Nachrichtenempfang p g m3 Z1 Z2 Z3 Zeitachse Objekt-Typ Obj kt T und d -Rolle 01234 17 s Zeiteinheit Zeitdiagramm„Telefongespräch“ timing Telefongesprächsaufbau talking lifting receiver ringing idle t=now exchange {t..t+10} active idle t lki talking ringing caller g connecting dialing lifting idle {0 .. 2} 01234 21 s Sequenz- versus Zeitverlaufsdiagramm Sequenzdiaramm q mit Zeit Timing g Diagramm g Keine Darstellung des Keine Kontrollstrukturen Zusammenhangs von N h i ht und Nachrichten d Zustandsübergängen Gleiche Zeitinformationen darstellbar (Zeitpunkt, relativer und absoluter Zeitraum) sd P timing gP :A :B m1 {0..3s} t=now :A X Y Z :B U V W m2 {0..1 s} m3 {t..t+5s} 0 1 2 3 4 5 6 7 8 9 © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-100 s ROOTS Vorlesung „ Softwaretechnologie“ Kapitel ap te 55: Syste Systementwurf e t u Verteilungsdiagramme (Deployment Diagrams) ROOTS Verteilungsdiagramm (Einsatzdiagramm / Deployment Diagram) Zeigt Ausführungsknoten A füh k t (Rechner (R h und dL Laufzeitumgebungen), f it b ) Kommunikationsbeziehungen zwischen Ausführungsknoten, Manifestation ((=Realisierung) g) von Komponenten p durch Artefakte, Einsatz von Artefakten auf Ausführungsknoten, Konfiguration des Einsatzes, sonstige ti Beziehungen B i h (Abhängigkeits-Pfeile (Abhä i k it Pf il zeigen i von d der abhängigen bhä i Komponente weg) Nutzen: Spezifikation der Hardware/Software Zuordnung Subsystemdekomposition S bs stemdekomposition Verteilung im Netzwerk Einsatz zur Laufzeit © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-102 ROOTS Verteilungsdiagramm Knoten Komponente Logische Einheit mit expliziten Abhängigkeiten Wie im Komponentendiagramm definiert Artefakt Physische Einheit, z.B. Modell, Beschreibung, Quellcode, ausführbarer Code Realisierung einer Komponente Laufzeitumgebung („execution environment“) Softwaresystem in dem Artefakte zum Einsatz kommen Z.B. Java Virtual Machine, Applikationsserver, … Gerät („device“) Physikalisches Gerät auf dem Artefakte zum Einsatz kommen (Rechner) © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ <<component>> CALENDAR <<artifact>> Calendar.java <<execution environment>> :Browser <<device>> calendarClient:PC Seite 5-103 ROOTS Verteilungsdiagramm Kanten <<component>> CALENDAR Manifestation (<<manifest>>) Komponente ist durch Artefakt realisiert <<manifest>> <<artifact>> Einsatzbeziehung (<<deploy>>) Artefakt wird auf Ausführungsumgebung oder Gerät eingesetzt Calendar.java <<deploy>> <<execution environment>> :Browser Kommunikationsbeziehung Physische Verbindung über die Ausführungsumgebungen kommunizieren Art kann als Stereotyp angegeben werden, z.B. <<internet>>, <<ethernet>>, … © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ <<internet>> <<device>> <<device>> calClient: calServer: Seite 5-104 ROOTS Verteilungsdiagramm Beispiel <<device>> <<internet>> <<ethernet>> <<device>> calServer:Host calClient:PC <<execution Environment>> <<device>> dbServer <<execution Environment>> :Browser :J2EE Server <<artifact>> jdbc.jar <<deploy>> <<deploy>> <<artifact>> <<artifact>> <<deployment spec>> CALENDAR.class calServerProgram.jar calServerProgram.xml maxUsers : 50 transactionMode : nested <<manifest>> <<component>> CALENDAR C © 2000-2009 Dr. G. Kniesel CS 1 CS 2 Vorlesung „Softwaretechnologie“ CS 3 Seite 5-105 ROOTS Verteilungsdiagramm Beispiel Textuelle Erläuterung <<device>> <<internet>> <<ethernet>> <<device>> calServer:Host calClient:PC <<execution Environment>> <<device>> dbServer <<execution Environment>> :Browser :J2EE Server <<artifact>> jdbc.jar <<deploy>> <<deploy>> <<artifact>> <<artifact>> <<deployment spec>> CALENDAR.class calServerProgram.jar calServerProgram.xml maxUsers : 50 transactionMode : nested <<manifest>> <<component>> CALENDAR C © 2000-2009 Dr. G. Kniesel CS 1 CS 2 Vorlesung „Softwaretechnologie“ CS 3 Seite 5-106 ROOTS Visual Paradigm Tips I Dies sind die für „Deployment Diagrams“ spezifischen Elemente, die auf den vorherigen Folien erklärt wurden. © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-107 ROOTS Visual Paradigm Tips II Generell ist es wichtig zwischen Namen und Stereotyp einer Beziehung zu unterscheiden unterscheiden. Der Stereotyp gibt die Art einer Beziehung an an. Der Name ist lediglich ein Bezeichner. Das gilt auch für Kommunikationsbeziehungen! Also schreiben Sie bitte nicht z.B. „ethernet“ in den Namen, sondern machen Sie es wie hier: So sollte es richtig sein © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-108 ROOTS Vorlesung „Softwaretechnologie“ Wintersemester te se este 2009 009 ROOTS Datenmanagement Datenmanagement Einige Objekte in den Modellen müssen persistent sein Trenne T sauber b zwischen i h den d Subsystemen, S b t die di Persistenz-Dienste P i t Di t anbieten und denen, die sie nutzen. Definiere klare Schnittstellen. Ein nicht persistentes Objekt kann durch Datenstrukturen realisiert werden Ein persistentes Objekt kann folgendermaßen realisiert werden Dateien Billig, einfach, permanente Speicherung Low level (Lese-/Schreiboperationen) Der Anwendung muss gegebenenfalls Code hinzugefügt werden, um eine angemessene Abstraktion zu realisieren Datenbank Mächtig, leicht zu portieren Unterstützt mehrere Schreiber und Leser © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-110 ROOTS Datei oder Datenbank? Wann sollte man eine Datei benutzen? Sind Si d die di Daten D t groß ß (bitmaps)? (bit )? Hat man viele “raw” Daten (core dump, event trace)? Muß man die Daten nur kurzzeitig g speichern? p Ist die Informationsdichte niedrig (Archivdateien, Logdateien)? Wann sollte man eine Datenbank wählen? Müssen die Daten in verschiedenen Detailstufen f von vielen Nutzern benutzbar sein? Müssen die Daten auf verschiedenen Plattformen zur Verfügung stehen (Heterogene Systeme)? Benutzen viele verschiedene Anwendungen die Daten? Benötigt das Datenmanagement eine komplexe Infrastruktur? © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-111 ROOTS Was muss bei Benutzung einer Datenbank beachtet werden? Speicherplatz Die Di Datenbank D t b k benötigt b öti t in i etwa t di dreifache die d if h Größe G öß der d Daten D t Antwortzeit Datenbanken sind I/O oder kommunikationsabhängig (verteilte Datenbanken). Die Antwortzeit wird auch von der CPU Zeit, Locks und Verzögerungen durch häufige Bildschirmausgaben beeinflußt. Lock Arten Pessimistisches locking: Lock wird vor dem Zugriff auf ein Objekt gesetzt und erst wieder aufgehoben wenn der Zugriff beendet wurde. Optimistisches locking: Häufiger Lese- / Schreibzugriff (hohe Parallelität!) Wenn die Aktivität beendet wurde, prüft die Datenbank ob Konflikte bestehen; wenn ja werden alle Änderungen verworfen. Administration Große Datenbanken benötigen ausgebildete Support Mitarbeiter, um Sicherheits Policies, Datenträgerplatz und Backups zu verwalten, die Sicherheits-Policies, Leistung zu überachen und Einstellungen anzupassen. © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-112 ROOTS Fragen zum Datenmanagement Sollte die Datenbank verteilt sein? Sollte S llt di die D Datenbank t b k erweiterbar it b sein? i ? Wie oft wird auf die Datenbank zugegriffen? Was ist die erwartete Anfragefrequenz? Im schlimmsten Fall (worst case)? Was ist die Größe einer typischen Anfrage und einer im worst case? Müssen die Daten archiviert werden? Zielt der Systementwurf darauf ab, den Ort der Datenbanken zu verstecken (Ortstransparenz)? Wird ein explizites Interface zum Zugriff auf die Daten benötigt? Was ist das Anfrageformat? Sollte die Datenbank relational oder objektorientiert sein? © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-113 ROOTS Abbildung eines Objektmodells auf eine relationale Datenbank UML Objektmodelle können auf relationale Datenbanken abgebildet werden: Etwas Verlust entsteht, weil alle UML-Konstrukte auf ein einziges relationales Datenbankkonstrukt abgebildet werden – die Tabelle. UML Zuordnungen Jede Klasse wird auf eine Tabelle abgebildet Jedes Attribut einer Klasse wird auf eine Spalte abgebildet Eine Instanz einer Klasse repräsentiert eine Zeile in der Tabelle Eine n-zu-m Beziehung wird in eine eigene Tabelle abgebildet Eine 1-zu-n Beziehung wird als verborgener Fremdschlüssel implementiert Methoden werden nicht abgebildet © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-114 ROOTS Von Objektmodellen zu Tabellen I N-zu-M Assoziation: Eigene Tabelle für die Assoziation serves City cityName City Table * Airport * Separate Tabelle airportCode p airportName Serves Table Airport Table cityName cityName airportCode airportCode airportName Houston Houston IAH IAH Intercontinental Albany Houston HOU HOU Hobby Munich Albany ALB ALB Albany County Hamburg Munich MUC MUC Munich Airport Hamburg HAM HAM Hamburg Airport Fremdschlüssel Fremdschlüssel Primärschlüssel Vorlesung „Softwaretechnologie“ Seite 5-115 Primärschlüssel © 2000-2009 Dr. G. Kniesel ROOTS Von Objektmodellen zu Tabellen II 1-zu-n oder n-zu-1 Assoziationen: Verdeckte Fremdschlüssel Transaction * Portfolio transactionID Foreign Key Portfolio Table Transaction Table t transactionID ti ID © 2000-2009 Dr. G. Kniesel portfolioID ... portfolioID tf li ID Vorlesung „Softwaretechnologie“ portfolioID Seite 5-116 .... ROOTS Von Objektmodellen zu Tabellen Werkzeuge Applikationsserver und ähnliche Werkzeuge erledigen die Abbildung eines Objektmodells auf ein relationales Schema ((„object object relational mapping“) automatisch Gängige Systeme / Frameworks Java Data Objects (JDO) – Teil der Java Enterprise APis Hybernate H b t – Teil T il d des A Applikationsservers lik ti JB JBoss ... Google „object relational mapping“ ... © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-117 ROOTS Vorlesung „Softwaretechnologie“ Wintersemester te se este 2009 009 Globale Ressourcenverwaltung ROOTS Globale Ressourcenverwaltung Resourcenverwaltung befasst sich mit Zugriffskontrolle Sie Si beschreibt b h ibt di die Z Zugriffsrechte iff ht fü für verschiedene hi d Akt Akteure Sie beschreibt, wie Objekte sich vor unberechtigtem Zugriff schützen Zugriffskontrollmatrix Zeilen = Akteure Spalten = Objekte Inhalt der Felder = zulässige Operationen Objekttyp1 Actor A Op1.1, Op1.2 Op1 2 Op1.2 Actor B --Actor C Objekttyp 2 Objekttyp 3 --- Op3.1 Op2 2 Op2 Op2.2, Op2.3 3 Op3 2 Op3.2 Op2.1 Op3.3 sp Actor cto C da darf Ope Operation at o Op Op2.1 au auf Objekten Obje te des Typs yps Obje Objekttyp2 ttyp aus ausführen. ü e Bsp: © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-119 ROOTS Globale Ressourcenverwaltung: Realisierung der Zugriffskontrollmatrix Spaltenweise Aufteilung = Jedes Objekt weiss wer, was damit tun darf Access A C t l Lists Control Li t (Beispiel: (B i i l „Unix“) U i “) Zeilenweise Aufteilung g = Jeder Actor besitzt ein „„Ticket“ das besagt, g, welche Operationen er ausführen darf Capabilities (Beispiel: „Amoeba“) Synonyme: „Capability Capability “ / „Ticket Ticket“ / „Ausweis Ausweis“// „Schlüssel Schlüssel“ Objekttyp1 Actor A Op1.1, Op1.2 Op1 2 Op1.2 Actor B --Actor C Objekttyp 2 Objekttyp 3 --- Op3.1 Op2 2 Op2 Op2.2, Op2.3 3 Op3 2 Op3.2 Op2.1 Op3.3 sp Actor cto C da darf Ope Operation at o Op Op2.1 au auf Objekten Obje te des Typs yps Obje Objekttyp2 ttyp aus ausführen. ü e Bsp: © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-120 ROOTS Fragen zu globalen Ressourcen Benötigt das System eine Authentifizierung? Wenn ja, welches Authentifizierungsschema? Nutzername und Passwort? Zugriffskontrollliste (ACL) Tickets? Ti k ? Capability-based C bili b d Welche Benutzerschnittstelle für die Authentifizierung? Wann und wie wird ein Dienst dem Rest des Systems bekannt gemacht? Zur Z Laufzeit? L f it? Beim Kompilieren? Über einen TCP-IP-Port? Durch einen Namen? Benötigt g das System y einen netzweiten „„Name Server“? © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-121 ROOTS Vorlesung „Softwaretechnologie“ Wintersemester te se este 2009 009 ROOTS Bestimmung des Kontrollparadigmas (Programmsteuerung) Bestimmung des Kontrollparadigmas (Programmsteuerung) A. Wähle implizite Kontrolle (deklarative Sprachen) Regelbasierte Systeme Logische Programmierung B. Oder explizite Kontrolle (prozedurale Sprachen) Zentrale Kontrolle 1. Prozedurgesteuerte Kontrolle – Kontrolle befindet sich im Programmcode. g Beispiel: p Hauptprogramm pp g ruft Prozeduren in Subsystemen auf. – Einfach, leicht zu bauen 2. Eventgesteuerte Kontrolle – Kontrolle sitzt in einem Dispatcher, der Funktionen von Subsystemen durch Rückfragen aufruft. – Flexibel, gut für Benutzerschnittstellen Dezentrale Kontrolle Kontrolle befindet sich in verschiedenen unabhängigen Objekten (von manchen Sprachen unterstützt). Geschwindigkeitsgewinn durch Parallelität versus mehr Kommunikation Kommunikation. Beispiel: Nachrichten-basiertes System © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-123 ROOTS Prozedurgesteuerte vs. eventgesteuerte Kontrolle Procedure-Driven Control Event-Based Control, centralized op1() module1 Model has changed module2 :Model :Coordinator op3() Update op2() Update :View module3 E Event t based, b d decentralized d t li d It‘s time to change :Control :Model Model has changed :View :View :View :View Update :View Zentrale vs. dezentrale Kontrolle Welches von beiden soll man benutzen? Zentrale Z t l Kontrolle K t ll Ein Kontrollobjekt oder Subsystem kontrolliert alles (“Spinne im Netz”) Änderungen in der Kontrollstruktur sehr einfach durchzuführen Möglicher Flaschenhals für die Performance Mögliche Vermischung verschiedener Kontrollaufgaben („tangling“) Dezentrale Kontrolle Kontrolle ist verteilt Streut die Verantwortung Passt gut in die objektorientierte Entwicklung Übersicht geht eventuell verloren Koordination schwierig © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-125 ROOTS Vorlesung „Softwaretechnologie“ Wintersemester te se este 2009 009 ROOTS Grenzfälle Grenzfälle Die meiste Zeit beschäftigt man sich beim Systementwurf mit dem Verhalten im Betriebszustand. Betriebszustand Abschliessend muss man sich aber auch mit Grenzfällen befassen. Initialisierung Beschreibt, wie das System aus einem nicht initialisierten Zustand in einen Betriebszustand gebracht wird ("startup ( startup use cases cases”)). Terminierung Beschreibt, welche Ressourcen vor der Beendigung aufgeräumt werden und welche Systeme benachrichtigt werden (“Terminierungs ( Terminierungs-Use Use Cases") Cases ). Fehler Viele mögliche Gründe: Programmierfehler, externe Probleme (St (Stromversorgung). ) Guter Systementwurf sieht fatale Fehler voraus (“Fehler-Use Cases”). © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-127 ROOTS Fragen zu den Grenzfällen Initialisierung Wie Wi startet t t t das d System? S t ? Auf welche Daten muss beim Hochfahren zugegriffen werden? Welche Dienste müssen registriert werden? Was tut die Benutzerschnittstelle beim Startvorgang? Wie präsentiert sie sich dem Nutzer? Terminierung Dürfen einzelne Subsystemen terminieren? Werden andere Subsysteme benachrichtigt, wenn ein einzelnes terminiert? Wie werden lokale Updates der Datenbank mitgeteilt? Fehler Wie verhält sich das System System, wenn ein Knoten oder eine Kommunikationsverbindung ausfällt? Gibt es dafür Backupverbindungen? Wie stellt sich das System nach einem Fehler wieder her? Unterscheidet dieser Vorgang sich von on der Initialisier Initialisierung? ng? © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-128 ROOTS RückblickZielgerichteter Systementwurf Aktivitäten Identifikation Id tifik ti von N Nebenläufigkeit b lä fi k it Hardware/Software Zuordnung Management persistenter Daten Globale Ressourcenverwaltung Wahl des Programmsteuerung g g Grenzfälle Nutzen Jede Aktivität überprüft die gewählte Architektur in Hinsicht auf eine bestimmte Frage Frage. Nach Beendigung dieser Aktivitäten können die Schnittstellen der Subsysteme abschließend definiert werden. Start frei für den Objektentwurf der Subsysteme! © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Seite 5-129 ROOTS RückblickSystementwurf (Gesamt) Systementwurf 1 Entwurfsziele 1. 8. Grenz8 fälle Definition Abwägungen Initialisierung Fehler Ende 2. System Dekomposition 7. Programmsteuerung Ebenen / Partitionen Kohärenz / Kopplung Monolithisch Ereignisbasiert Threads Parallele Prozesse 3. Hardware / Software Zuordnung Kaufen vs. Selbermachen Netzwerktopologie Allokation 6. Globale Ressourcenverwaltung Zugriffskontrolle g Sicherheit 4. Pesistente 5. Nebenläufigkeit Identifizierung von Datenverwaltung Dateien Datenbanken Datenstrukturen © 2000-2009 Dr. G. Kniesel Vorlesung „Softwaretechnologie“ Thread Seite 5-130 ROOTS