Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5:

Ähnliche Präsentationen


Präsentation zum Thema: "Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5:"—  Präsentation transkript:

1 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/1 Simulation komplexer technischer Anlagen Teil II:Elemente zum Bau virtueller Anlagenkomponenten Kapitel 5:Wiederverwendung bei Entwurf und Programmierung Inhalt Von der Analyse zum Entwurf Objektorientierter Entwurf mit Hilfe von Entwurfsmustern Frameworks Antipattern Elemente der objektorientierten Programmierung - Kurse beachten

2 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/2 Das sollten Sie heute lernen Schichtenkonzept der Wiederverwendbarkeit Entwurfs als Modellierungsschritt Entwurfsentscheidungen Entwurfsziele Entwurfsmuster Antipattern Framework OO Programmiersprachen

3 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/3 Ergebnisse der Analyse Analyse bedeutet die Abstraktion eines Problembereichs zu einer isolierten, definierten, allgemeingültigen Beschreibung und zu Anforderungen. Ergebnis der Analyse ist eine Beschreibung eines realen Systems durch: Objekte Beziehungen der Objekte untereinander Eigenschaften und Verhalten der Objekte und durch Angabe der gewünschten Funktionalität des geplanten SW- Systems etwa über Use Cases oder Anwendungsfälle. Um die Funktionalitäten umzusetzen sind eine Vielzahl weiterer Schritte nötig

4 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/4 Objekt & Klasse Systeme Anwendungen Frameworks: Implementierung MikroArchitektur: Entwurfsmuster Kapselung von Daten und Methoden Horizontale & Vertikale Frameworks Metadaten Kapselung von Altlasten GUIs Klassenhierarchien Zusammenarbeit einzelner Klassen Vom Objekt zum System - Aggregationsstufen heute Entwürfe sollten auf allen Stufen stattfinden - Top Down Ansatz

5 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/5 Von der Analyse zum Entwurf: Mikro-Architektur Die in der Analyse gefundenen Objekte sind eine Grundlage des Entwurf s. Weitere, wichtige Grundlagen sind persönliche Erfahrungen und Entwurfsmuster Der Schwerpunkt der Micro-Architektur liegt in kleinen Entwürfen, welche ein begrenztes Problem innerhalb einer Anwendung lösen.Solche kleinen Entwürfe können auch das Ergebnis eines Zwischenschrittes der Top Down Analyse sein Die Anzahl betroffener Objekte ist relativ gering. Entwurfsmuster kombinieren mehrere Objekte so, dass die Anwendung an künftige Änderungen leicht angepasst werden kann.

6 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/6 Ziele des Entwurfs (1) Entwurf ist Abstraktion des Lösungsbereichs im Hinblick auf Implementierung Entwicklung einer Software-Architektur Spezifikation eines Software-Systems, das bestimmte Anforderungen erfüllen muß: Funktion/Korrektheit Erweiterbarkeit/Wartbarkeit/Lesbarkeit Wiederverwendbarkeit Portabilität, Effizienz

7 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/7 Ziele des Entwurfs (2) Die zentralen Fragen lauten nun: Wie können diese Ziele erreicht werden ? Gibt es ein optimales Verfahren, Software zu entwerfen ? Wie sieht der Lösungsraum aus: Daten(-typen), Funktionen, Dateien, Programme... Merke: Softwaresystem ist ebenfalls (wie Realität) komplex und muß geeignet strukturiert werden Architektur Ergebnis: Spezifikation als formale Beschreibung der zu implementierenden Software

8 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/8 Die Schwierigkeit des Entwurfs Das Entwickeln einer Software-Architektur ist ein gestalterischer Prozeß. Ein Standardverfahren, das zum richtigen Entwurf führt, gibt es nicht. Auch einen richtigen oder falschen Entwurf gibt es nicht. Es gibt nur, an den Erfordernissen gemessen, gute oder schlechte Entwürfe, Entwürfe sind Modelle virtueller Systeme. Entwerfen bedeutet immer ein Abwägen mehrerer, konkurrierender Alternativen und ein möglichst gutes Erfüllen der sich widersprechenden Entwurfsziele. Dabei sind pragmatisches Vorgehen und Nutzung von Erfahrungen gefragt. Iterative Verbesserung muß möglich sein.

9 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/9 Schwierige Entwurfstätigkeiten Finden passender SW-Objekte die während der Analyse-Phase gefundenen Objekte reichen oft nicht Festlegen der Objektgranularitäten komplexe Objekte dürfen nicht beliebig groß werden Festlegen der Objekt/Methodenschnittstellen mit den richtigen Schnittstellen steht und fällt ein Entwurf Festlegen der Objektimplementierung der richtige Einsatz von Vererbung kann den Aufwand vermindern Wiederverwendungsmechanismen aktiv und passiv nutzen / vorsehen Vererbung ist bei weitem nicht die einzigste Möglichkeit

10 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/10 Beispiele für Entwurfsentscheidungen Implementierung der Part-Of-Relation? als Objekt, Zeiger, Liste, Array,... Virtuelle Methoden oder parametrisierten Typen? Flexibilität zur Laufzeit oder nur zur Compilezeit weniger oder mehr Effizienz bei der Ausführung des Programms Vererbung oder Delegation? vermeiden von Mehrfachvererbung auf Kosten eines komplexeren Entwurfs Behandlung von mehrdimensionalen Klassifizierungshierarchien? durch Mehrfachvererbung oder mit parametrisierten Typen? Erfahrung und Problemkenntnisse nötig

11 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/11 Prinzipien der objektorientierten Softwareentwicklung Die Erfahrungen, die Mitarbeiter der Abteilung Wissensverarbeitung und Numerik am IKE mit der objektorientierten Softwarentwicklung machten, wurden in zwei papieren zusammengestellt. Sie werden laufend ergänzt und stehen allen Studierenden in aktueller Form im Netz unter richtlinien/entwicklung/oo richtlinien-v10-pdf zur Verfügung.

12 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/12 Entwurfsmethoden Analog zu den vorgestellten Analyse-Methoden gibt es entsprechende Entwurfsmethoden, z.B. nach Booch, Coad/Yourdon, Rumbaugh und dazu Unterstützung durch UML und Case Tools Viel wichtiger jedoch sind prinzipielle Erkenntnisse: wie läßt sich die Wartbarkeit von Code verbessern? wie läßt sich die Wiederverwendbarkeit von Code erhöhen? wie kann möglichst portabler Code geschrieben werden? wie kann ein Entwurf übersichtlich gehalten werden? Außerdem müssen die Möglichkeiten der Programmiersprachen beim Entwurf berücksichtigt werden. Eigene und fremde Erfahrungen lassen sich in Entwurfsmustern weitervermitteln und weiterverwenden

13 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/13 Wartbarkeit Wartung heißt meistens erweitern und anpassen alles, was sich in einem Programm ändern könnte, in abstrakten Klassen kapseln, um flexibel zu sein. Die Merkregel hier lautet: Programmieren mit Schnittstellen, nicht mit Implementierungen Beispiel: Abstrakter Datentypmodul Beispiel: Iteratoren eine Schnittstelle zum Durchlaufen von Datenstrukturen wie Listen, Bäume, Arrays,... Vorteil: Datenstrukturen können (in Grenzen) ohne den die Datenstruktur benutzenden Code ausgetauscht werden

14 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/14 Wiederverwendbarkeit, Portabilität und Übersichtlichkeit Wiederverwendbarkeit: Wiederverwendung heißt den gleichen Code in einer anderen Umgebung für die selbe Funktion einzusetzen. Beim Entwurf andere Einsatzgebiete erkennen und bedenken. Portabilität: Portieren von Software bedeutet das Übertragen eines Programmes in eine andere Betriebssystemumgebung Kapseln aller betriebssystemkritischen API´s und Vorgehensweisen Möglichst keine Abweichungen von Standards Übersichtlichkeit Sinnvolle Namen verwenden An bekannten Konzepten orientieren (Entwurfsmuster)

15 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/15 Begriffsbestimmung: Was sind Entwurfsmuster Zitat: "Ein Entwurfsmuster beschreibt ein Problem, das immer wieder in unserer Umwelt vorkommt, und beschreibt dann den Kern einer Lösung des Problems, so daß die Lösung millionenfach für Probleme dieses Typs verwendet werden kann, ohne zweimal genau dasselbe zu tun." (frei nach C.Alexander, Gamma et.at. S. 2). Entwurfsmuster sind abstrakte Anweisungen, wie Software implementiert werden kann, damit bestimmte Eigenschaften eines Entwurfs erreicht werden, z.B. Änderbarkeit, Wartbarkeit, Wiederverwendbarkeit.... Entwurfsmuster sind programmiersprachenunabhängig

16 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/16 Entwurfsmuster und persönliche Erfahrung Entwurfsmuster: eine Zwischenlösung zwischen Frameworks und persönlicher Erfahrung Persönliche Erfahrung: Schwierigster Weg: nicht dokumentiert, daher schlecht nachvollziehbar von Person zu Person unterschiedlich Wichtigster Weg: Software-Entwurf ist keine mechanische Tätigkeit, sondern ein kreatives Abwägen von Alternativen, daß auf den Menschen angewiesen ist und sich (noch?) nicht automatisieren läßt.

17 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/17 Was sind Entwurfsmuster nicht Rezepte Rezepte können blind angewandt werden. Entwurfsmuster müssen zu ihrer Anwendung verstanden werden, da sie wegen der breiten Anwendbarkeit sehr abstrakt sind. Entwurfs-Regeln Entwurfsmuster sind keine starren Vorgaben, sondern flexible, anpaßbare Vorschläge Frameworks Frameworks sind komplette Speziallösungen Idiome Idiome (Programmierstile) sind sprachspezifische Konstrukte

18 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/18 Bestandteile eines Entwurfsmusters Mustername kurze, prägnante Umschreibung der mit dem Muster realisierten Funktionalität Problembeschreibung Beschreibung dessen, was erreicht werden soll Problemlösung Beschreibung, wie das gewünschte Ziel erreicht wird Konsequenzen der Anwendung Beschreibung der Auswirkungen der Anwendung des Musters auf andere Zielgrößen des Entwurfs, z.B. Effizienz, Speicherbedarf, Erweiterbarkeit, etc. Diskussion von Alternativen

19 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/19 Anwendung von Entwurfmustern Anhand der Beschreibungen der Entwurfsmuster (Konsequenzen!) ein passendes auswählen Übertragen des Entwurfsmusters in den konkreten Anwendungsfall Informationen zum Thema Entwurfsmuster: E. Gamma et.al.: Design Patterns, Addison Wesley, 1994 J. Coplien, D. Schmidt: Pattern Languages of Program Design, Addison Wesley, 1994 Konferenzen, z.B. PLoP, C++World, etc. WWW: Patterns Home Page (http://st-www.cs.uiuc.edu/users/patterns/patterns.html)

20 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/20 Vor- und Nachteile von Entwurfsmustern Vorteile: einheitliche Kommunikationsbasis Dokumentationswerkzeug explizite Erweiterungspunkte eines Systems konstruieren geringere Gefahr der unbeabsichtigten Zerstörung eines Entwurfs in der Wartung Nachteile: manchmal zu kompliziert noch keine umfassenden, praktikablen Kataloge nur für eine bestimmte Ebene des Entwurfs sinnvoll

21 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/21 Beispiel 1: Abstrakte Simulation Name OODS - object oriented distributed simulation Zweck: Definition der Grundstruktur von Objekten zur verteilten Simulation Ziele: Generelle Beschreibung von Bausteinen in Simulationssysteme Kapselung von Funktionalität Konsequenzen: Hohe Komplexität durch rekursive Vererbung Semantik der Daten muß in Schnittstelle verlagert werden Semantik der Anwendung nicht transparent

22 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/22 OODS_SimulationModel OODS_Object Name Type Description CloneModel(...) SimulateModelState(...) OODS_ParameterOODS_Port SimulateModelState(...) GetModelState(...) 1 1 * * 1..* * * 1 * * * * * * 1 OODS_State Time Values OODS_Value Add(...) Subtract(...)... Struktur des Entwurfsmusters Abstrakte Simulation OODS Objekt enthält OODS S.M., Port, State und Para. OODS S.M. verwendet

23 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/23 Objekt & Klasse Systeme Anwendungen Frameworks: Implementierung MikroArchitektur: Entwurfsmuster Kapselung von Daten und Methoden Horizontale & Vertikale Frameworks Metadaten Kapselung von Altlasten GUIs Klassenhierarchien Zusammenarbeit einzelner Klassen Vom Objekt zum System - Aggregationsstufen heute Entwürfe sollten auf allen Stufen stattfinden - Top Down Ansatz

24 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/24 Entwurf und Entwurfsmuster Aufgabe des Entwurfs ist - aufbauend auf dem Ergebnis der Analyse - die Erstellung der Softwarearchitektur und die Spezifikation der Komponenten, d.h. die Festlegung von deren Schnittstellen, Funktions- und Leistungsumfang. Das Ergebnis soll die zu realisierenden Programme auf einem höheren Abstraktionsniveau widerspiegeln. Ein Entwurfsmuster gibt eine bewährte, generische Lösung für ein immer wiederkehrendes Entwurfsproblem an, das in bestimmten Situationen auftritt. Es lassen sich klassen- und objektbasierte Muster unterscheiden. Klassenbasierte Muster werden durch Vererbungen ausgedrückt. Objektbasierte Muster beschreiben in erster Linie Beziehungen zwischen Objekten. Entwurfsmuster beschreiben in abstrakter Form eine bewährte Entwurfslösung und setzen sie in Bezug zur Problemstellung und zur Systemumgebung.

25 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/25 Architektur von Softwaresystemen Architektur meint die logische und die physische Struktur eines Softwaresystems Die Architektur beschreibt die wesentlichen strukturellen Elemente, deren Schnittstellen und Zusammenarbeit Eine Architektur ist eine Menge von Architektur Mustern mit einer Menge von Architektur Operationen,die die Instanzierung von Architektur Exemplaren aus Architektur Mustern ermöglichen. Damit beschreibt die Architektur Struktur und Verhalten eines Systems. Die Wahl der Architektur hat unter Gesichtspunkten wie Nutzung, Funktionalität, Performance, Robustheit, Wiederverwendbarkeit oder Verständlichkeit zu erfolgen. Wirtschaftliche und technische Randbedingungen sind einzuhalten. All dies bedeutet, dass ständig Kompromisse nötig sind und bewährte Lösungen mit bedacht werden sollten.

26 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/26 Beispiel 2: Das Strategy-Pattern Zweck: Definition einer Familie von austauschbaren Algorithmen. Ziele: Kapselung von Algorithmen und ihren Daten flexibles Ändern des Verhaltens eines Objekts vermeiden von Fallunterscheidungen im Code Konsequenzen: Wiederverwendung ohne Vererbung. Das Strategy-Pattern ist ein Beispiel für Delegation. Es entsteht ein gewisser Kommunikationsoverhead (Funktionsaufrufe) Der Entwurf wird wegen der erhöhten Anzahl von Objekten komplexer

27 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/27 Das Strategie-Entwurfsmuster Strategy Pattern Vererbung Abhängigkeit Assoziation Aggregation

28 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/28 Beispiel: Integrationsalgorithmen in Simulationsprogrammen Simulationsmodelle (z.B. für eine Wand) bestehen aus Differentialgleichungen. Zur Lösung dieser Differentialgleichungen (z.B. in der Methode BerechneTemperatur) gibt es viele verschiedene Verfahren, die problemabhängig vom Anwender ausgewählt werden müssen. Gesucht: Entwurf/Implementierung, der eine flexible Auswahl und eine einfache Erweiterbarkeit der Palette ermöglicht.

29 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/29 Konkrete Anwendung: Zeitintegration Vererbung Aggregation

30 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/30 class Wand { public: void BerechneTemperatur (); void SetzeIntegrator (); private: Temperatur _Temperatur; Parameter _Material; Integrator* _Integrator; }; void Wand:: SetzeIntegrator (Integrator * integ) { _Integrator = integ; } void Wand:: BerechneTemperatur (float waerme_strom, float delta_t) { // Berechnen der Wandtemperatur nach einem Zeitschritt aus // // dT // -- = m * c * Q // dt float dT_dt = _Material * waerme_strom; _Integrator->IntegriereZeitschritt(_Temperatur, dT_dt, delta_t); } Implementierung

31 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/31 Makro-Architektur - Frameworks Der Schwerpunkt liegt in der Wiederverwendung sowohl von Entwurf als auch von Software-Code mit dem Ziel, eine spezielle Lösung für ein domänenspezifisches Problem zu finden. Kombination einer oder mehrerer Mikro-Architekturen. Ebene für den Einsatz von Frameworks

32 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/32 Frameworks "Ein Framework ist eine Anzahl wiederverwendbarer Klassen mit einer Systemarchitektur zur Erstellung von Anwendungen. Es stellt den Königsweg dar: ein kompletter und geprüfter Entwurf samt Implementierung von Basisfunktionalität kann wiederverwendet werden. Ein Framework besteht also aus einer Menge von zusammen- arbeitenden Klassen, die einen wiederverwendbaren Entwurf für einen bestimmten Anwendungsbereich implementieren. Es besteht aus konkreten und insbesondere aus abstrakten Klassen, die Schnittstellen definieren. Die abstrakten Klassen enthalten sowohl abstrakte als auch konkrete Operationen. Im allgemeinen wird vom Anwender (=Programmierer) des Frameworks erwartet, daß er Unterklassen definiert, um das Framework zu verwenden und anzupassen.

33 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/33 Beziehung zwischen Komponenten, Pattern und Frameworks Eine Komponente kann in mehreren Patterns und Frameworks implementiert werden und ein Pattern oder ein Framework kann durch mehrere Komponenten implementiert werden. Ein Framework kann mehrere Pattern enthalten und bietet Extension Points an Erweiterungsstellen beschreiben, wo und wie das Framework zu erweitern ist, damit das Framework im Kontext einer konkreten Anwendung eingesetzt werden kann. Assoziation implementiert Besteht aus enthält

34 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/34 Anwendung von Frameworks Wiederverwendung als White-Box Frameworks, Wiederverwendung und Erweiterung durch Vererbung Black-Box Frameworks, Wiederverwendung und Erweiterung durch Aggregation Informationen zum Thema Frameworks Buschmann et al.: Pattern-Oriented Software Architecture: A System of patterns, Wiley, G. Rogers, : Framework-Based Software Development in C++, Prentice Hall, Konferenzen, z.B. PLoP, C++World, etc. WWW: Patterns Home Page (http://st-www.cs.uiuc.edu/users/patterns/patterns.html)

35 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/35 Vorgehensweise bei der Framework-Entwicklung Identifiziere die spezifische(n) Domäne(n), wo das Framework angewandt werden soll. Definiere Use Cases (Anwendungsfälle), welche das Framework erbringen soll. Identifiziere bekannte Akteure, welche mit dem Framework agieren sollen. Identifiziere Patterns oder andere geprüfte Lösungen, welche die Framework-Entwicklung unterstützen sollen. Entwerfe Schnittstellen und spezifiziere Komponenten des Frameworks. Implementiere die Schnittstellen des Frameworks prototypisch. Beschreibe und dokumentiere Erweiterungsstellen. Schreibe Prüfspezifikationen und plane den Entwicklungsprozess.

36 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/36 Was sind Anti-Patterns ? Ein Anti-Pattern beschreibt einen Lösungsvorschlag für ein bestimmtes Problem, welcher für den Software-Entwurf oder den gesamten Entwicklungsprozeß negative Konsequenzen hat. Ein Anti-Pattern tritt auf, wenn die am Software-Projekt Beteiligten keine bessere Lösung für das Problem kennen, nicht genügend Erfahrung in Lösung bestimmter Probleme haben oder ein erprobtes Lösungsmuster in einem falschen Kontext einsetzen. Anti-Patterns gliedern sich in: Entwurf-Antipatterns (Software-Entwickler) Architektur-Antipatterns (Software-Architekt) Management-Antipatterns (Projektleiter)

37 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/37 Bestandteile eines Anti-Patterns Hintergrund Antipattern (Generelle Form) Symptome und Konsequenzen Ursache Ausnahmen Verbesserungsvorschlag Variationen Beispiel Verwandte Antipatterns

38 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/38 Anwendung von Antipatterns Anti-Patterns sind überall. Anti-Pattterns verdeutlichen die Fehler in dem Entwicklungprozess. Informationen zum Thema Anti-Patterns W. Brown et al.: Anti Patterns, Wiley, 1998 WWW: The Portland Pattern Repository(http://c2/com/ppr)

39 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/39 CASE - Computer Aided Software Engineering Durch die Formalisierung wird es möglich eine Vielzahl von Aufgaben bei der Software Entwicklung zu automatisieren. Dadurch kann die Software Produktivität gesteigert und die Softwarequalität verbessert werden. CASE befasst sich mit computergestützten Hilfsmitteln zur Erreichung dieses Zieles. Wir unterscheiden CASE oder Software Entwicklungsumgebungen, CASE Plattformen und CASE Werkzeuge CASE Werkzeuge stellen zur Softwareproduktion benötigte Funktionen oder Dienstleistungen zur Verfügung CASE Plattformen (frameworks) stellen Basisdienstleistungen zur Verfügung, die von CASE Werkzeugen in Anspruch genommen werden können. CASE Umgebung heisst die Summe aus Plattform und Werkzeugen

40 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/40 Basisdienste einer CASE Plattform Reposity Service verwaltet Objekte und ihre Beziehungen Data Integration Service verwaltet und verarbeitet Metadaten (Daten über Daten) vertikale + horizontale Tools Process Management Service unterstützt die Verarbeitung von Workflows und das Rollenmanagement Interface User Service trennt Bedienung und Funktionalität und erlaubt Anpassung der Bedienung an Nutzung Message Service unterstützt Kommunikation (Tool-Tool; Service-Service; Tool-Service)

41 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/41 Definition OO-Programmiersprache Objektbasiert Datenabstraktion Klassen Beispiele: Visual Basic Objektorientiert objektbasiert Vererbung Polymorphismus Beispiele: C++, Java, Smalltalk,...

42 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/42 Problem: Welche Programmiersprache ist die richtige ? Auswahlkriterien sind wichtig ! Problem: Welche Programmiersprache ist die richtige ? Auswahlkriterien sind wichtig ! Überblick OO-Programmiersprachen OO-Programmiersprachen gibt es sehr viele: Simula 67, Smalltalk, Object Pascal, Modula 3, C++, Objective C, CLOS, Ada 95, Eiffel, Beta, Object COBOL, Java, Python, Dylan; Self, Oberon, Occam, Russel, Arjuna, CC++,... (ca. 45 im comp.object FAQ) Falls Sie sich erst einarbeiten müssen, empfehlen wir das JAVA Tutorial von SUN:

43 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/43 Auswahlkriterien anhand von Beispielen (1)

44 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/44 Auswahlkriterien anhand von Beispielen (2)

45 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/45 Auswahlkriterien anhand von Beispielen (3) Literatur zu C++: Deitel/Deitel: The Complete C++ Training Course (Bk/CD-ROM) Student Edition Jg Verlag prentice hall. Ford/Topp: An Introduction to Computing Using C++ and Object Technology Jg Kruse/Ryba: Data Structure and Program Design in C Jg Johnsonbaugh/Kalin: Applications Programming in C Jg Collopy: Introduction to C++ Programming: A Modular Approach Jg Ramteke: Introduction to C and C++ for Technical Students Jg Kashani: Programming in C++: An Applied Approach Jg

46 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/46 FORTRAN als Programmiersprache der Numerik (1) Geschichtliche Entwicklung 1954John Backus von IBM begann, ein automatisches Programmiersystem zu entwickeln, das Programme, die in mathematischer Notation geschrieben wurden, in Maschinenbefehle für den IBM 704-Computer umwandelt. Daraus entstand 1957der erste FORTRAN-Compiler. 1958IBM führt FORTRAN ein; erste Erweiterung: Subroutinen Anfang 60erFORTRAN hat sich seit FORTRAN II ständig weiterentwickelt. Es gab inzwischen viele FORTRAN-Compiler, jeder hatte seine eigenen Zusatzfunktionen, die nicht im Original- Compiler zu finden waren. Die Portabilität der Programme war durch die vielen Dialekte nahezu unmöglich. Zur gleichen Zeit fing die ASA (American Standards Association, heute American National Standards Institute (ANSI) an, viele Aspekte der Datenverarbeitung zu standardisieren, u.a. auch Programmiersprachen. 1966Erste standardisierte FORTRAN-Version FORTRAN Ein neuer Standard wurde vorgestellt: FORTRAN77 Erneuerungen: viele neue Ein- und Ausgabemöglichkeiten, wie z.B. direkter Zugriff auf Dateien; IF-THEN-ELSE-Konstrukte, Character-Datentyp u.a. Sobald FORTRAN77 vollständig war, haben sich ANSI und ISO der neuen FORTRAN-Version gewidmet, die heute FORTRAN90 heißt. Viele Verbesserungsvorschläge an FORTRAN77 wurden in FORTRAN90 übernommen.

47 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/47 FORTRAN als Programmiersprache der Numerik (2) Verbesserungsvorschläge wurden gesammelt Die meisten technischen Veränderungen wurden als detaillierte Vorschläge präsentiert. Anschließend wurden sie diskutiert und das Komitee stimmte über sie ab. Eine große Menge der technischen Arbeit war bereits 1985 beendet. Die folgenden 5 Jahre wurden die Vorschläge noch verfeinert. 1987Vorversion des neuen Standards war fertiggestellt. 1990Erneute Überarbeitung und technische Arbeit vollendet. 1991FORTRAN90 offizieller internationaler Standard (ISO). 1992U.S. nationaler Standard (ANSI). Es gibt viele Gründe dafür, warum ein neuer Standard notwendig ist: Es existieren inzwischen viele Dialekte des FORTRAN77-Standards, die verschiedene Teile des neuen FORTRAN90- Standards, vor allem Syntaxveränderungen, enthalten. Gerade deswegen ist es notwendig, diese Veränderungen und Verbesserungen in einem für alle Hersteller verbindlichen Standards festzuhalten. Computertechnologie und Programmiermethoden entwickeln sich sehr schnell weiter. FORTRAN77 weist einige offenbare Unzulänglichkeiten auf. Die Portabilität wurde durch den neuen Standard verbessert. Die Computer-Hardware, die das Sprachen-Design beeinflußt, hat sich durch die Parallel- und Vektorrechner verändert. Genauso gibt es viele Gründe dafür, nicht auf eine andere moderne Programmiersprache zurückzugreifen. Es bleibt so z.B. die Kompatibilität mit dem alten Standard und dem bereits in großer Menge existierenden Code erhalten. FORTRAN77-Programme müssen also nicht in FORTRAN90 umgeschrieben werden. Außerdem wurden einige Eigenschaften des alten FORTRAN-Standards in FORTRAN90 verbessert, einige davon werden in der nächsten FORTRAN-Version wohl wegfallen.

48 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/48 Äquivalente Konstrukte in C++ und Fortran 90

49 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/49 JAVA als Programmiersprache der Zukunft JAVA ist die Programmiersprache der Zukunft Es ist weitgehend rechnerunabhängig, voll objektorientiert und wesentlich einfacher als C++. Insbesondere unterstützt JAVA voll die Komponententechnik. Informationen zu JAVA Kursen finden Sie auf den Seiten des Informatik Verbundes Stuttgart IVS unter

50 Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5: Entwurf5/50 Diese Fragen sollten Sie jetzt beantworten können Geben Sie mindestens 3 Aggregationsstufen an und beschreiben Sie ihre Funktion bei der Wiederverwendung Was sind Entwurfsmuster und welche Bedeutung haben sie Beschreiben Sie das Strategy Pattern Was sind Frameworks Beschreiben Sie die Beziehung zwischen Entwurfsmustern, Frameworks und Komponenten und veranschaulichen Sie sie durch ein UML Diagramm Wie entwickelt man ein Framework Was ist ein Antipattern Geben Sie 3 Kriterien zur Auswahl einer Programmiersprache an und begründen Sie ihre Bedeutung


Herunterladen ppt "Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Simulation technischer Systeme, WS 01/02Kap. 5:"

Ähnliche Präsentationen


Google-Anzeigen