Vorlesung Software Engineering I

Slides:



Advertisements
Ähnliche Präsentationen
Prüfung objektorientierter Programme -1
Advertisements

Programmieren im Großen von Markus Schmidt und Benno Kröger.
C ommon O bject R equest B roker A rchitecture
Rollenbasierter Entwurf am Beispiel eines benutzeradaptierbaren Hyperbooks Institut für Informatik Rechnergestützte Wissensverarbeitung Universität Hannover.
Frame-Logik Eine Einführung Andreas Glausch.
Designing Software for Ease of Extension and Contraction
Objektorientierte Datenbanken
Basis-Architekturen für Web-Anwendungen
Design Patterns- Entwurfsmuster
WS 04/05 wiss. Übung: Systemanalyse und Softwaredesign
Ruby on Rails im Überblick
Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell
Pascal Busch, WWI00B – Vergleich CORBA vs. Web Services hinsichtlich der Applikationsintegration Web Services vs CORBA Web Services vs CORBA Ein Vergleich.
UML im Überblick – Dipl. Ing. Ulrich Borchert / FH Merseburg 1/22
DOM (Document Object Model)
Komponentenbasierter Taschenrechner mit CORBA
Cassey - Common Answer Set Evaluation sYstem Jean Gressmann Benjamin Kaufmann Robert Lenk.
MVC – ein Architekturmuster
Modellierung komplexer Realität mit Objekten
1 Analyse von Software-statisch- Darmstadt,den Presentation: Sebastian Schikowski Steve Kenfack.
JAVA RMI.
Explizite und editierbare Metainformationen für Software Muster.
Prüfkriterien für objektorientierte Systeme
Strukturänderungen Verteilte Anwendungen Wintersemester 06/07 © Wolfgang Schönfeld.
Access 2000 Datenbanken.
Remote Methode Invocation (RMI)
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Folie 1 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: DECORATOR.
Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl
Wizards & Builders GmbH Schichtenarchitektur Multi-Tier-Applikationen mit Microsoft Visual FoxPro.
UML Begleitdokumentation des Projekts
Unified Modeling Language Einführung zu UML Was ist „UML“?
Visualisierung objektrelationaler Datenbanken
Vorgehensmodelle: Schwergewichtige Modelle
Software Engineering SS 2009
12. Vorlesung: Aktivitätsdiagramme
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 12. Sitzung WS 02/03.
Unified Modeling Language Repetition / Einführung zu UML
OOD – Object Oriented Design I
Prototypentwicklung für ein Testmanagementsystem
UML WS 09/10: Datenbanken vs MarkUp Dozent: Prof. Dr. Manfred Thaller
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Seminar Softwareentwicklung Programmierstil Helmut Schmidauer
Strukturierter Entwurf (und Realisierung)
Welchen Problemen ist man bei heterogener, verteilter Programmierung ausgesetzt? Hardware: nicht einheitliche, inkompatible Systeme, verschiedene Leistungsfähigkeit.
Beschreiben Sie das Szenario wenn ein ORB einen Server aktiviert und eine Objektimplementation aufruft. Activate Server impl_is_ready Activate Object (GetID.
UML-Kurzüberblick Peter Brusten.
Wasserfallmodell und Einzelbegriffe
Paradigmenwechsel in der Unternehmensmodellierung Prof. Dr. Wolfgang Voigt Dipl.-Ing. Päd. Alexander Huwaldt UML Extrakt UML Seminar, Chemnitz
Vorlesung Software Engineering I
Daten- und Ablaufmodellierung
Von UML 1.4 zu UML 2.0 InfoPoint vom Mittwoch
Objektorientierung.
Untersuchungen zur Erstellung eines
Klassen und Klassenstruktur
Software Engineering Grundlagen
Software Engineering Strukturierte Analyse
Software Design Patterns
Vortrag - Diplomarbeiten (HS I)
OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe.
Seminar: Software-Architektur Einführender Vortrag
Informatik in den dualen Studiengängen Prof. Dr. Michael Löwe.
Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Objektorientierte (OO) Programmierung
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
Objektorientierte Programmierung Was ist das eigentlich ?
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Entwurf Dr. Wolfgang Wörndl
1 Lutz Ullrich SOA – serviceorientierte Architektur SOA – Was ist das?
SE: Systementwurf, © Till Hänisch 2003 Systemarchitektur nach Sommerville, Software Engineering, Addison Wesley.
 Präsentation transkript:

Vorlesung Software Engineering I Statische Basiskonzepte 2 (Architektur) http://wwwbruegge.in.tum.de/teaching/ss02/muster/ Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Systemsichten und Modellierung Statik Funktionen Daten Datenstrukturen Architektur Dynamik Kontrollstrukturen Zustände Prozesse Zeitliches Verhalten Logik Abhängigkeiten Entscheidungstabellen Mathematik Regeln Beschreiben die feste Struktur des Systems, die sich während der Laufzeit nicht ändert. Beschreiben das Verhalten und die Veränderungen während der Laufzeit. Beschreiben die Programmfunktion logisch und mathematisch Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Definiton: Software-Architektur Was ist Software-Architektur? • J.Siedersleben: “Es geht um die Frage, wie man Millionen Programmzeilen großer Systeme so strukturiert, dass im Ergebnis die gewünschte Qualität erreicht wird: Wartbarkeit, Flexibitlität, Performance und andere Eigenschaften.„ • H.Balzert: “eine strukturierte oder hierarchische Anordnung der Systemkomponenten sowie Beschreibung ihrer Beziehungen“ • T.Posch: „Softwarearchitektur entstand aus der Notwendigkeit heraus, immer größer und komplexer werdende Software zu beherrschen." Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Definition: Software Architektur Software-Architektur beschreibt die Beziehungen der Fachkomponenten untereinander, mit weiteren Systemkomponenten, sowie der Systemumgebung. Auswahlkriterien: Art der Aufgabenstellung Realisierungsvorgaben nicht-funktionale Systemanforderungen Ziel: klare Struktur eindeutige "Rollen" der Komponenten wenige, klar umrissene Kommunikationsschnittstellen Verkürzt kann man sagen, dass eine Architektur regelt, welche Komponente mit welcher kommuniziert. Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Keinerlei Architektur Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Prinzip Strukturierung Strukturierung = (separation of concerns / Unterteilung in Aspekte) Arten der Unterteilung zeitliche Unterteilung: Anforderungsanalyse / Entwurf / Programmierung / Test qualitative Unterteilung: Effizienz / Robustheit / Korrektheit perspektivische Unterteilung: Statik /Dynamik / Logik (Datenstrukturen / Datenfluss / Kontrollfluss) Dekomposition (Unterteilung in Bestandteile): Komponente 1, Komponente 2 (-> diese Unterteilung ist so wesentlich, dass sie unter dem Prinzip Modularität gesondert betrachtet wird!) Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Prinzip: Strukturierung Dekomposition Komposition Legende Komponente / Modul A A ruft B auf B Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Unterteilung eines komplexen Systems in Komponenten / Module Prinzip: Modularität Unterteilung eines komplexen Systems in Komponenten / Module Anwendungsbeispiele Schreiben eines Berichts (Gliederung) Bau eines Autos (Arbeitsteilung) Modularität als Ergebnis der Dekomposition Modularität als Grundlage der Komponierbarkeit Modularität als Voraussetzung für Wiederverwendung Modularität als Voraussetzung für lokale Änderungen Bestandteile eines Moduls Operationen Objekttypen Beziehungen zwischen Objekttypen DEFINITION 6.7. Geheimnisprinzip (information hiding). Kriterium zur Gliederung eines Gebildes in Komponenten, so dass jede Komponente eine Leistung (oder eine Gruppe logisch eng zusammenhängender Leistungen) vollständig erbringt und zwar so, dass außerhalb der Komponente nur bekannt ist, was die Komponente leistet. Wie sie ihre Leistungen erbringt, wird nach außen verborgen. Parnas hat das Geheimnisprinzip ursprünglich definiert als das Einkapseln von Entwurfsentscheidungen beim Modularisieren von Software mit dem Ziel, die Realisierung der Entwurfsentscheidungen vor den Modulverwendern zu verbergen und die Entwürfe dadurch leichter änderbar zu machen. Die Definition 6.7 wurde bewusst allgemeiner gefasst, um deutlich zu machen, dass es sich hier um ein weit über den Software-Entwurf und die Informatik hinausreichendes, allgemeines und fundamentales Abstraktionsprinzip zur Beherrschung komplexer Systeme handelt. Wir benutzen das Geheimnisprinzip tagtäglich zur Beherrschung der Komplexität unserer Umwelt; etwa indem wir Auto fahren, ohne wissen zu müssen, wie ein Verbrennungsmotor funktioniert oder ein elektrisches Gerät in Betrieb nehmen, ohne wissen zu müssen, wie der Strom in die Steckdose kommt. Im Software-Entwurf sind die Komponenten Module, die Leistungen Teillösungen. Das WAS ist in der Modulschnittstelle beschrieben, das WIE sind die Entwurfsentscheidungen und ihre Realisierung durch Programme. Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Prinzip: Modularität ff. Kohäsion (cohesion). Ein Maß für die Stärke des inneren Zusammenhangs eines Moduls. Je höher die Kohäsion ist, desto besser. Kopplung (coupling). Ein Maß für die Abhängigkeit zwischen zwei Modulen. Die Modularisierung ist umso besser, je geringer die wechselseitige Kopplung zwischen den Modulen ist. Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Prinzip: Modularität ff. Ziel von Modularität: hohe Kohäsion geringe Kopplung Geheimnisprinzip („Information Hiding“) d.h. enger interner Zusammenhalt innerhalb eines Moduls wenig Wechselwirkungen mit anderen Modulen außerhalb des Moduls nur bekannt, was die Komponente leistet. Wie sie ihre Leistungen erbringt, wird nach außen verborgen. Nur dann Wiederverwendung in kleinen Teilen lokale Änderbarkeit Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Prinzip: Modularität ff. hohe Kohäsion / geringe Kopplung geringe Kohäsion / geringe Kohäsion / hohe Kopplung hohe Kopplung Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Trennung von wichtigen und unwichtigen Merkmalen Prinzip: Abstraktion Trennung von wichtigen und unwichtigen Merkmalen „Unterschlagung“ / „Wegabstraktion“ der unwichtigen und Betonung der wichtigen zum Zweck der Konzentration auf das Wesentliche Gängige Abstraktionen die Signatur einer Operation abstrahiert von der Realisierung der Operation die Konstrukte einer Programmiersprache abstrahieren von Prozessorendetails ein Datenflussdiagramm abstrahiert von den Aufrufstrukturen zwischen Komponenten Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Prinzip: Abstraktion ff. wichtig unwichtig für mit dem Auto Reisende für mit dem Zug Reisende Straßen Gleise, Hauptbahnhöfe Radwege Straßen, Radwege Abstraktion Straßenkarte: wichtig unwichtig für den Anwender für den Vorstand für den Entwickler Oberflächen, Funktionalität Rentabilität Schnittstellen zwischen Komponenten Interne Struktur Plattform Schulungsaufwand für neue Software Abstraktion Software: Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Prinzip: Änderungsnotwendigkeit Software ist Gegenstand von Änderungen. Ursachen für Änderungen: (Geplante) Inkrementelle Entwicklung Beseitigung von Fehlern (korrektive Wartung) Verbesserung nichtfunktionaler Eigenschaften (perfektive Wartung) Erweiterung der Funktionalität wegen sich ändernder Rahmenbedingungen (adaptive Wartung) (Ungeplante) Erweiterung der Funktionalität wegen Erkenntnisgewinn während der Entwicklung Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Prinzip: Objektorientierung Die Programmstruktur besteht nicht direkt aus Abläufen, sondern aus Objekten mit Eigenschaften und Methoden (Daten und darauf operierenden Funktionen) Das Programm besteht aus Interaktionen zwischen den Objekten Die Objekte werden stets nur von außen betrachtet und verbergen ihren inneren Aufbau.  Modularität und Abstraktion Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Notationen für Architektur Blockdiagramme UML: Implementierungsdiagramme, auch Klassendiagramm als kleinste modulare Einheit aus Architektursicht. Konfigurationsdiagramm UML: Verteilungsdiagramm Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Blockdiagramme Blockdiagramme sind kein Bestandteil von UML! (Gleichwertige Notation in UML: Implementierungsdiagramm) Blockdiagramme sind ein verbreitetes Hilfsmittel zur Skizzierung der logischen Struktur einer Systemarchitektur. Subsystem umfasst Objekte bestimmter Klassen Schnittstelle ist klar definiert (Aufrufschnittstelle, Kommunikationsprotokoll) Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

UML:Implementierungsdiagramm Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Konfigurationsdiagramme Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

UML: Verteilungsdiagramm Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Architekturmuster und -patterns Allgemeine Definitionen Muster (Patterns) beschreiben häufig auftretende Entwurfsprobleme und dazu universell verwendbare generische Lösungsschemen. Architekturmuster beziehen sich auf die Architektur von Softwaresystemen. Entwurfsmuster (Design Patterns) sind weniger stark abstrahiert und beziehen sich eher auf die Softwarekodierung. Die bekanntesten Design Patterns sind von GoF beschrieben (Gang of Four: Gamma, Helm, Johnson und Vlissides). Arten von Architekturmustern Struktur (Layer, Pipes and Filters, Blackboard) Verteilte Systeme (Broker, P2P, Client-Server) Interaktive Systeme (MVC / Model-View-Controller, Presentation-Abstraction-Control) Adaptierbare Systeme (Microkernel, Reflection) Ereignisverarbeitung (Proactor, Reactor) Synchronisation (Object Synchronizer) Arten von Entwurfsmustern (Design Patterns) Erzeuger-Muster (Prozess der Objekterzeugung: Abstract Factory, Builder, Factory Method, Prototype, Singleton) Struktur-Muster (Zusammenbau von Klassen und Objekten: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy) Verhaltens-Muster (Algorithmen sowie Aufgabenteilung zwischen Klassen: Iterator, Mediator, Observer, State, Strategy, Template Method, Visitor) http://www.torsten-horn.de/techdocs/sw-patterns.htm http://wwwbruegge.in.tum.de/teaching/ss02/muster/ Was ist ein Muster? Muster sind abstrahierte Repr¨asentationen erfolgreich eingesetzten Probleml¨osungswissens 􀀀 abstrahiert: Muster beziehen sich auf wiederkehrende Probleme erfolgreich: die Kenntnis von Mustern erspart es einem, das Rad immer wieder selbst erfinden zu m¨ussen eingesetzt: Muster in der Software-Technik sind damit ”das Zunftbuch für Software–Entwickler“ Probleml¨osungswissen: Muster geben einen Vorschlag f ¨ur effiziente / elegante L¨osungen der Problemstellung Muster, die Probleme von Bestandteilen eines Software-Systems adressieren, werden Software-Muster genannt. Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Architekturmuster Allgemeine Strukturierung – Schichten – Pipes and Filter – Datenhaltung (Blackboard) Strukturierung von Realzeitsystemen – Monitorstruktur Strukturierung verteilter Systeme – Peer-To-Peer – Client-Server – Mehrschichtige Architekturen – Broker Strukturierung Interaktiver Systeme – Model-View-Controller (MVC) – Presentation-Abstraction-Control (PAC) Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Allgemein: Schichtenarchitektur Verboten! Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Allgemein: Pipe and Filter Architektur Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Allgemein: Datenhaltungsarchitektur Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Realzeit: Monitor-Architektur Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Verteilt: Peer-to-Peer-Architektur Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Verteilt: Client-Server-Architektur Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Verteilt: Broker-Architektur Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Entkopple Client und Server durch eine so genannte Broker–Komponente Broker - Architektur Entkopple Client und Server durch eine so genannte Broker–Komponente Server registrieren sich beim Broker Server macht seine Dienste durch eine Schnittstelle bekannt Clients greifen auf die Dienste des Servers durch Aufträge über den Broker zu Broker lokalisiert passenden Server, gibt Auftrag weiter und Ergebnisse/Ausnahmen an den Client zurück Hinzufügen, Entfernen, Austausch und Migration von Komponenten zur Laufzeit Für Entwickler und Benutzer sollte es zwischen zentralisierten Systemen und verteilten Systemen keinen Unterschied geben Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Broker - Architektur: CORBA CORBA – Common Object Request Broker Architecture Standardarchitektur für objekt-orientiertes, verteiltes Rechnen der Object Management Group (OMG) im Rahmen der OMA Interoperabilität zwischen Objekten durch Schnittstellenbeschreibung in Interface Definition Language (IDL) Objektimplementierungen in verschiedenen Implementierungssprachen durch Abbildung des Objekt–Modells auf Elemente der IDL plattformübergreifende Kommunikation durch CORBA–Architektur als Instanz des Broker–Architekturmusters Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Mehrschichten-Architektur Schichten–Architekturen sind konzeptionell unabh¨angig von objektorientierten Ans¨atzen Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Mehrschichtenarchitektur Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Zwei-Schichten-Architektur Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Drei-Schichten-Architektur Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Schichtenmodelle zur Netzwerkkommunikation Als das OSI-Modell entwickelt wurde, sollte es zum bereits existierenden DoD-Modell abwärtskompatibel sein. Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

OSI Schichtenarchitektur Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

Architekturmuster: Model-View-Controller Strukturierung in die drei Einheiten Datenmodell (engl. model), Präsentation (engl. view) und Programmsteuerung (engl. controller). Ziel des Musters ist ein flexibler Programmentwurf, der eine spätere Änderung oder Erweiterung erleichtert und eine Wiederverwendbarkeit der einzelnen Komponenten ermöglicht. http://www.phpbar.de/w/Model-View-Controller Mit Model-View-Controller (kurz MVC) bezeichnet man ein Entwurfsmuster (genauer ein Architekturmuster), das in der Objektorientierten Programmierung Verwendung findet. Es trennt ein Programm auf in seine Teilkomponenten: Daten (Model), Präsentation (View), Programmsteuerung (Controller). Es soll so ein flexibles Programmdesign erzeugt werden, das Erweiterungen vereinfacht und die Wiederverwendbarkeit der einzelnen Komponenten ermöglicht. Durch die einfache, klare Struktur wird die Komplexität gesenkt und Ordnung geschaffen. Weiterer Vorteil: Die Aufgaben der einzelnen Personen können einfach und genau eingeteilt werden. Z.B. kann sich ein Designer auf das Layout des Views konzentrieren. http://www.dpunkt.de/java/Programmieren_mit_Java/Oberflaechenprogrammierung/40.html Das Model-View-Controller-Konzept wird in vielen Bereichen moderner Softwareentwicklung eingesetzt und bedeutet die strikte Aufgabenverteilung bei einer Anwendung. So wird als Model die Datenquelle bezeichnet, die Daten unabhängig vom Erscheinungsbild liefert (also beispielsweise aus einer relationalen Datenbank). Die View zeigt diese Daten dann in passender Art und Weise an (z.B. als Tabelle in einer Java-Applikation) - bestimmt durch den »Look«. Wie diese View die Daten anzeigt wird nicht vom Model beeinflusst http://de.wikipedia.org/wiki/Model_View_Controller Model View Controller (MVC, ‚Modell/Präsentation/Steuerung‘) ist ein Architekturmuster zur Strukturierung von Software-Entwicklung in die drei Einheiten Datenmodell (engl. model), Präsentation (engl. view) und Programmsteuerung (engl. controller). Ziel des Musters ist ein flexibler Programmentwurf, der eine spätere Änderung oder Erweiterung erleichtert und eine Wiederverwendbarkeit der einzelnen Komponenten ermöglicht. Es ist dann zum Beispiel möglich, eine Anwendung zu schreiben, die das gleiche Modell benutzt, aber einerseits eine Windows- oder Linux-Oberfläche realisiert, andererseits aber auch eine Weboberfläche beinhaltet. Beides basiert auf dem gleichen Modell, nur Controller und View müssen dabei jeweils neu konzipiert werden. Das MVC-Konzept wurde 1979 zunächst für Benutzeroberflächen in Smalltalk durch Trygve Reenskaug beschrieben (Seeheim-Modell), der damals an Smalltalk im Xerox PARC arbeitete. Es gilt mittlerweile aber als De-facto-Standard für den Grobentwurf vieler komplexer Softwaresysteme, teils mit Differenzierungen und oftmals mehreren jeweils nach dem MVC-Muster aufgeteilten Modulen. Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017

MVC: Beispiel Software Engineering I VE 09: Statische Basiskonzepte 2 Version 18.04.2017