SOFTWARE ENGINEERING 2

Ähnliche Dokumente
Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

Objektorientierte und Funktionale Programmierung SS 2014

Praxisbuch Objektorientierung

Objektorientierte Programmierung

Einführung in die objektorientierte Programmierung

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Objektorientierte Programmierung (OOP)

Inhalt. 1 Einführungsveranstaltung. 2 Pflichtenheft ANFORDERUNGSSPEZIFIKATION - GROBPLANUNG ANFORDERUNGSSPEZIFIKATION - SOLLKONZEPT

PHP OOP, Design Patterns und UML. Marco Skulschus

3-Tier-Architecture und J2EE

Softwaretechnik 2015/2016

Lehrbuch der Objektmodellierung

Inhalt. TEIL I Grundlagen. Einleitung 15

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

Software- /Systemarchitektur

Design Patterns. 3. Juni 2015

Entwurfsprinzip. Entwurfsprinzip

Software Engineering

Komponentenbasierte Client-Architektur. Bernd Olleck, IT Beratung Olleck Dr. Martin Haft, sd&m AG München,

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

Methoden und Architekturen der Softwaretechnik

UML (Unified Modelling Language) von Christian Bartl

Übungen zu Softwaretechnik

Software- und Systementwicklung

Software Engineering. 5. Architektur

Tutorium Softwaretechnik I

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

7. Zusammenfassung (1)

Objektorientierteund FunktionaleProgrammierung

Entwurfsmuster Martin Fesser 00IN

Alternative Architekturkonzepte

Matthias Geirhos. Entwurfsmuster. Das umfassende Handbuch. Rheinwerk. Computing

Objektorientierte Systementwicklung

Inhaltsverzeichnis.

Praktikum. SEP: Java-Programmierung WS 2018/19. Modularisierung. Thomas Lemberger und Martin Spießl

Dabei sollen die Nutzern nach einer Authentifizierung entsprechend ihren Rechten Begriffe ändern, anlegen und kommentieren können.

Ziele und Tätigkeiten von Architekten

Inhaltsverzeichnis 1. Objektorientierung: Ein Einstieg 2. Objekte, Klassen, Kapselung

Entwurfsmuster. Marc Monecke

Objektorientierte und Funktionale Programmierung

Übung Einführung in die Softwaretechnik

Entwurfsmuster in Java

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Gernot Starke. Effektive Softwarearchitekturen. Ein praktischer Leitfaden ISBN: Weitere Informationen oder Bestellungen unter

Das UML Benutzerhandbuch

Objektorientierte Analyse (OOA) OOA-Pattern

Inhaltsverzeichnis. 1 Einleitung 1. 2 Grundlagen von Softwarearchitekturen 11

Moderne Softwarearchitektur

Model-View-Controller

OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE

Application Engineering Grundlagen für die objektorientierte Softwareentwicklung mit zahlreichen Beispielen, Aufgaben und Lösungen

Harald Störrle UML 2 für Studenten

Kapitel 1 Grundlagen. Skript zur Vorlesung: Datenbanksysteme II Sommersemester Vorlesung: PD Dr. Peer Kröger

Gliederung der Folien

Aus Sicht der funktionalen Anforderungen ist der Entwurf eines Systems beliebig wählbar

Vorlesung Datenstrukturen

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Basisinformationstechnologie I

Objektorientierte Programmierung II

Skriptum Bauinformatik SS 2013 (Vorlesung IV)

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008

Java als erste Programmiersprache

Programmierpraktikum WS 16/17 Entwicklungsprozess

Programmierparadigmen

Effektive Software-Architekturen Ein praktischer Leitfaden

Objektorientierte Programmierung mit Java

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Praktikum Datenbanken und verteilte Systeme SS Einführung August 2008

Einführung in die Informatik II

Vererbung, Polymorphie

MVC Ein wichtiges Konzept der Software-Architektur

Kapitel 5: Das Design

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Programmierparadigmen A01 OOP. Programmierparadigmen

Objektorientierter Entwurf. Grundlagen des Software Engineerings

Inhaltsverzeichnis. Teil I Einführung 13. Teil II Struktur 41. Vorwort 11

Einstieg in die Informatik mit Java

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Einführung: Verteilte Systeme - Remote Method Invocation -

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung. Grundkurs C++

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster

Objektorientierte Analyse

Inhaltsverzeichnis. Effektive Softwarearchitekturen (6. Auflage)

UML - Unified Modeling Language

Vorlesung am Systemkonstruktion. Dr. F. Sarre Wintersemester 2008 / Folie 57

Das UML Benutzerhandbuch

Inhaltsverzeichnis. Teil 1 Grundlagen der Objektorientierung 29

Analyse und Entwurf von Softwaresystemen mit der UML

Objektorientierte Entwurfsmuster

Informatik II Übung 6 Gruppe 7

Inhalte des Moduls Programmieren 1

Konzepte der Programmiersprachen

systems landscape engineering - übung -

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung Reisebeschreibung Zielpublikum Fallbeispiel...

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

OOSE 13 Objektorientierter Entwurf (OOD) (Hörsaalübung)

Repetitorium Informatik (Java)

Transkript:

Fakultät Informatik/Mathematik Lehrstuhl für Softwaretechnologie Vorlesungsmitschrift SOFTWARE ENGINEERING 2 Mitschrift von Falk-Jonatan Strube Vorlesung von Prof. Dr. Anna Sabine Hauptmann 27. März 2018

INHALTSVERZEICHNIS I. Vorlesung 4 1. Entwurf, Architektur, Risiken 6 1.1. Rückblick........................................ 6 1.2. Prozess und Produkt.................................. 6 1.3. Struktur......................................... 6 1.4. Grob- und Feinentwurf................................. 6 1.5. System vs Software-System.............................. 6 1.6. Komplexität....................................... 6 1.7. Risiko beim Software-Entwurf............................. 7 1.8. Fragen bei der Softwarentwicklung.......................... 7 1.9. Zusammenfassung................................... 7 2. Module, Schnittstellen, Entwurf, Architektur 8 2.1. Komponenten und Module............................... 8 2.2. Schnittstellen...................................... 8 2.3. Entwurf: Prinzipien und Perspektiven......................... 8 2.4. Architektur....................................... 8 2.4.1. Drei-Schichten-Architektur versus physische Verteilung.......... 9 2.4.2. Model-View-Control Paradigma........................ 9 3. Entwurfsprinzipien 10 3.1. Systemstruktur..................................... 10 3.2. Struktur im Inneren des Systems........................... 10 3.3. Unterstützung von loser Kopplung / innere Bindung................. 10 3.4. Kopplung und Kohäsion................................ 10 3.4.1. Kopplung.................................... 10 3.4.2. Kohäsion.................................... 10 3.5. Beschreibung einer Programmierschnittstelle.................... 11 3.6. Langlebige Struktur im inneren System....................... 11 3.7. Grundlegende Entwurfsprinzipien........................... 11 4. Muster 12 4.1. Grundlegende Architekturen.............................. 12 4.1.1. Schichten / Layer................................ 12 4.1.2. Datenfluss und Filter / Pipes-and-Filters................... 12 4.1.3. Depot-Architektur................................ 12 4.1.4. Client-Server-Architektur........................... 12 4.1.5. Peer-to-Peer-Architektur............................ 13 4.1.6. Proxy-Pattern (Vermittler/Broker)....................... 13 4.1.7. Säulenarchitektur................................ 13 4.1.7.1. 3-Säulen-Architektur......................... 13 4.1.7.2. 4-Säulen-Architektur......................... 13 4.1.8. Reflection.................................... 13 4.1.9. Quasar..................................... 14 2

5. Entwurfsmuster 16 5.1. Objektorientierte Programmierung.......................... 16 5.1.1. Objekt...................................... 16 5.1.2. Vererbung.................................... 16 5.1.2.1. Substitutionsprinzip......................... 16 5.1.2.2. Chancen und Gefahren der Vererbung.............. 17 5.2. Entwurfsmuster..................................... 17 5.2.1. Erzeugermuster................................ 17 5.2.2. Singleton.................................... 17 5.2.3. Prototyp..................................... 18 5.2.4. Fabrikmethode................................. 18 II. Praktikum 19 1. Einführung MVC 20 2. Notenverwaltung 21 3

Fakultät Informatik/Mathematik Lehrstuhl für Softwaretechnologie TEIL I. VORLESUNG 4

EINFÜHRUNG BELEGARBEIT Folie 3 Im Protokoll (bei Bedarf) nicht vergessen: Teilnehmende (entschuldigt/unentschuldigt) Festsetzungsprotokoll (wer macht was bis wann?) 5

1. ENTWURF, ARCHITEKTUR, RISIKEN 1.1. RÜCKBLICK Vorlesung 21.03.2017 Folie 7 Folie 8 1.2. PROZESS UND PRODUKT Folie 10 1.3. STRUKTUR Folie 11 1.4. GROB- UND FEINENTWURF Folie 12 1.5. SYSTEM VS SOFTWARE-SYSTEM Folie 13 Folie 21 1.6. KOMPLEXITÄT Folie 14 6

1.7. RISIKO BEIM SOFTWARE-ENTWURF Folie 18 1.8. FRAGEN BEI DER SOFTWARENTWICKLUNG Folie 22 1.9. ZUSAMMENFASSUNG Folie 23 7

2. MODULE, SCHNITTSTELLEN, ENTWURF, ARCHITEKTUR Folie 3 Vorlesung 28.03.2017 2.1. KOMPONENTEN UND MODULE Folie 4 Folie 5 2.2. SCHNITTSTELLEN Folie 8 Folie 9 2.3. ENTWURF: PRINZIPIEN UND PERSPEKTIVEN Folie 10 Folie 17 2.4. ARCHITEKTUR Folie 11 8

2.4.1. DREI-SCHICHTEN-ARCHITEKTUR VERSUS PHYSISCHE VERTEILUNG Folie 12 Folie 13 Die Drei-Schichten-Architektur sagt nichts über die physische Verteilung der Schichten aus. 2.4.2. MODEL-VIEW-CONTROL PARADIGMA Folie 14 ENTKOPPLUNG VON VIEW UND MODEL Folie 16 9

3. ENTWURFSPRINZIPIEN 3.1. SYSTEMSTRUKTUR Vorlesung 11.04.2017/1 VO03.pdf Folie 2 3.2. STRUKTUR IM INNEREN DES SYSTEMS VO03.pdf Folie 3 Kopplung: Einfluss von Außen Kohäsion: Einfluss von Innen (untereinander) VO03.pdf Folie 5 3.3. UNTERSTÜTZUNG VON LOSER KOPPLUNG / INNERE BINDUNG Vergleich: Aufteilung in Klassen. VO03.pdf Folie 6 VO03.pdf Folie 10 3.4. KOPPLUNG UND KOHÄSION 3.4.1. KOPPLUNG VO03.pdf Folie 8 3.4.2. KOHÄSION VO03.pdf Folie 9 10

3.5. BESCHREIBUNG EINER PROGRAMMIERSCHNITTSTELLE (bspw. Klassenebene) Jede öffentliche Operation/Funktion braucht: Signatur: Syntax name (...) Wesen: Semantik Was die Operation tut. Vorbedingungen Nachbedingungen Invariante (nicht veränderlich) Protokoll (synchron/asynchron) Kosten (Zeit, Rechenleistung, Dienste[ Geld],... ) Anforderungen (funktional [ Signatur / Wesen], Qualitätsanforderungen [ Vor-/Nachbed. / Invariant / Protokoll], Rahmenbedingungen [ Kosten]) 3.6. LANGLEBIGE STRUKTUR IM INNEREN SYSTEM VO03.pdf Folie 11 Open/Closed Prinzip 3.7. GRUNDLEGENDE ENTWURFSPRINZIPIEN VO03.pdf Folie 12 11

4. MUSTER VO04.pdf Folie 9 Vorlesung 11.04.2017/2 VO04.pdf Folie 5 VO04.pdf Folie 6 Kategorien von Mustern: Architektur-Unabhängig: Architektur-Muster (im Grobentwurf) Entwurfs-Muster (im Feinentwurf, näher an der Implementierung) Für bestimmte Implementierungen (abhängig von der Sprache): Idiom 4.1. GRUNDLEGENDE ARCHITEKTUREN 4.1.1. SCHICHTEN / LAYER VO04.pdf Folie 14 4.1.2. DATENFLUSS UND FILTER / PIPES-AND-FILTERS Daten fließen durch Filter-Komponenten (Beispiele: Compiler, Converter,... ). 4.1.3. DEPOT-ARCHITEKTUR In einem Depot sind Informationen, in Anwendungen/Teilsystemen werden diese dargestellt oder verarbeitet (Vergleich: objectif/case4.0... Klassendiagramm und Sequenzdiagramm greifen auf Objekte zurück [beim Löschen ist bspw. dann die Frage: Soll die Representation oder das Objekt im Depot gelöscht werden]). 4.1.4. CLIENT-SERVER-ARCHITEKTUR Weiterentwicklung der Depot-Architektur: Das Depot verarbeitet nun auch Informationen (bekommt Funktionalität). 12

4.1.5. PEER-TO-PEER-ARCHITEKTUR Spezielle Client-Server-Architektur, wo der Client und Server eine Komponente sind. 4.1.6. PROXY-PATTERN (VERMITTLER/BROKER) Kontext, Problem Netzwerk von Clients und Servern, die Informationen austauschen sollen. Vorlesung 18.04.2017 Lösungsstrategie und Server(n) Eine spezielle Komponente übernimmt die VERMITTLUNG zwischen Clients Konsequenzen Effizienz sinkt Fehleranfälligkeit steigt Fehlertoleranzmaßnahmen (redundant, Prüf-Funktionalitäten) Kommunikationsaufwand steigt Client Proxy Broker Server Proxy Client Server 4.1.7. SÄULENARCHITEKTUR Client (Benutzerschnittstelle) Anwendungslogik Server (Datenbank-Server) 4.1.7.1. 3-SÄULEN-ARCHITEKTUR Client Applikationsserver (Anwendungsserver) DB-Server 4.1.7.2. 4-SÄULEN-ARCHITEKTUR Client Formularerstellung Applikationsserver (Anwendungsserver) DB-Server Client DB-Server Anwendungslogik Client Benutzerschnittstelle Server Datenbank-Server (zentrale Datenhaltung) Applikationsserver (Anwendungsserver) 4.1.8. REFLECTION REFLEXIVES SYSTEM, d.h. dynamische Veränderung von Struktur + Verhal- Kontext, Problem ten 13

Lösungsstrategie Metaebene Informationen über spezielle Systemeigenschaften Basisebene Anwendungslogik Veränderung in der Metaebene beeinflussen die Basisebene 4.1.9. QUASAR Referenzarchitektur Wurde entwickelt bei der Firma sd&m (1982-2001, seit 2001 bei Capgemini ). Vorlesung 25.04.2017 Ziel Trennung von Zuständigkeiten realisieren Programmierung gegen Schnittstellen realisieren Denken in Komponenten fördern Trennung von Zuständigkeiten Definition von SW-KATEGORIEN Ansatz bei Quasar: SW-Komponenten klassifizieren durch SW-Kategorien Trennung von ANWENDUNG und TECHNIK Kategorie A-Software von fachlicher Anwendung bestimmt Kategorie T-Software technische Komponenten, von mindestens einer API bestimmt (DB-anschluss, Technologie der Oberflächenprogrammierung,... ) weitere: Kategorie AT-Software (möglichst vermeiden!) Mischung aus A- und T-Komponenten Kategorie R-Softwaree reserviert für Bausteine, die als Transformator zwischen A- und T-Software liegen Einfache Darstellung: 14

UI1... ) Nachbarsysteme Adapter ) ) Anwendungskern A-Software R-Software ( ( Authorisierung Regelinterpreter ) Persistenzframework T-Software DB Detaillierte Darstellung: VO06Quasar.pdf Folie 1 15

5. ENTWURFSMUSTER 5.1. OBJEKTORIENTIERTE PROGRAMMIERUNG Vorlesung 02.05.2017 Instanz (in der Realität) einer abstrakten Bauanleitung Kapselung Vererbung Schnittstelle wird benutzt ( Kapselung) Zusammenführung von Daten und Methoden. Folie 3 5.1.1. OBJEKT Folie 5 Folie 6 Folie 7 5.1.2. VERERBUNG Folie 8 Polymorphie (mit früher/später Bindung) Folie 9 5.1.2.1. SUBSTITUTIONSPRINZIP Folie 10 16

5.1.2.2. CHANCEN UND GEFAHREN DER VERERBUNG Folie 11 5.2. ENTWURFSMUSTER Folie 12 Folie 14 Folie 15 5.2.1. ERZEUGERMUSTER Folie 16 Problem Komplexe Objekte erstellen. Vorlesung 09.05.2017 Kontext Erzeugung und Darstellung eines Objektes getrennt (Methode der Erzeugung interessiert Client nicht): Konvertierung von Zeichenketten, Erzeugung von Fensteranordnungen [bspw. in Eclipse]. Lösungsstrategie Ein Direktor delegiert das Erbauen an einen Erbauer, der das Produkt dann ausgibt. einfache Erweiterung und gute Kapselung 5.2.2. SINGLETON Problem absichern, dass nur ein Objekt instanziiert wird Kontext Zugriff auf zentrale HW-Ressourcen (z.b. eine Instanz einer Drucker-Warteschlange) Lösungsstrategie Anzahl von Instanzen zählen ( wenn 0, dann instanziieren sonst nicht). Variable, die den Wert aufnimmt Kontrollierte Instanziierung im Standardkonstruktor prüfen 17

1 Standardkonstruktor privat 2 GibInstanz (){ 3 // prüfen 4 // Aufruf des Standardkonstruktors, abh ä ngig vom Pr ü fergebnis 5 } Singleton - instanz: singleton - singleton(); + GibInstanz(): singleton; 5.2.3. PROTOTYP Problem Ein Sachverhalt viele Ausprägungen. Kontext Erzeugung eines neuen Dokuments in Word Dokument wird nach Prototyp (Vorlage) erzeugt Vorlage zur Serienfertigung. Lösung Nur eine Klasse eine Instanz gespeichert beliebig viele Kopien davon können Prototyp erstellt werden. + clone(); 5.2.4. FABRIKMETHODE Problem verschieden Produkte mit ähnlichem Aufbau Lösung (abstrakte) Klasse, die einen Grundaufbau für alle Produkte enthält. 18

Fakultät Informatik/Mathematik Lehrstuhl für Softwaretechnologie TEIL II. PRAKTIKUM 19

1. EINFÜHRUNG MVC INHALTE Wiederholung objectif Persektive: Entwurf technische Sicht Klassendiagramm statische Struktur Darstellung des VERHALTENS (Dynamik, Progress) Sequenzdiagramm Konkretes Beispiel: MVC NOTIZEN Controller und View hängen immer zusammen, da die Art, wie ich kontrolliere abhängig ist von der Art, wie mir zu Kontrollierendes angezeigt wird. Das Klassendiagramm(KD) zeigt mögliche Botschaftswege. Das Sequenzdiagramm(SD) zeigt die zeitliche Reihenfolge konkreter Botschaften (d.h. Methodenaufrufe). Modellelemente: Instanz (Objekt) als Lebenslinie rot: zugeordnete Klasse), schwarz: ohne zugeordnete Klasse verdickt: wenn Instanz an Botschaft beteiligt ist Botschaft Systemgrenze 20

2. NOTENVERWALTUNG 1. Methodik: Modell (objectif) Roundtrip-Verfahren Forward Engineering Reverse Engineering Implementation (MS VisualStudio.NET) 2. Architektur: 3-Schichten-Architektur Präsentation Logik Datenhaltung Im objectif: Schichten sind Pakete Paketdiagramm Im VisualStudio: Schichten sind Projekte Projektmappe Vereinbarung: Verbindung der Schichten zwischen objectif und VisualStudio außer bei der Präsentation Dialog bauen MS Visual Studie.NET KD: DBService objectif Paket Typen (Student, Fachnote) objectif Synchronisation: Modell Implementation objectif MS Visual Studio Vorlesung 13.04.2017 21