3. Übung Softwaretechnik

Ähnliche Dokumente
Objektorientierte und Funktionale Programmierung SS 2014

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Software Engineering. 10. Entwurfsmuster II. Franz-Josef Elmer, Universität Basel, HS 2015

Entwurfsmuster, Klassenbibliotheken und Frameworks unterscheiden können. Wichtige Entwurfsmuster kennen und erklären können, wo sie eingesetzt werden

Software-Architektur Design Patterns

Design Patterns. 5. Juni 2013

Software-Architekturen für das E-Business

Modellarbeit I: Entwurfsgerechte Klassenmodellierung

Vorlesung Programmieren

Lehrplan: Architektur und Design. paluno

Factory Method (Virtual Constructor)

Objektorientiertes Software-Engineering

Design Patterns 2. Model-View-Controller in der Praxis

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

ORACLE Business Components for Java (BC4J) Marco Grawunder

Zusammenfassung Modul 223

14 Design Patterns Einführung 14.2 Composite Pattern

Software-Entwurfsmuster

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Komponentenbasierte Softwareentwicklung

Vorlesung Programmieren. Software Design. Software Design. Entwurfsmuster

Entwicklungswerkzeuge

Application Frameworks

Design Patterns und C#

Analyse und Entwurf objektorientierter Systeme

Theorie zu Übung 8 Implementierung in Java

Software Engineering und Projektmanagement

Software Reuse Sommer Schritt 1: Rechtschreibung, Grammatik, Wortschatz, Semantik Schritt 2: Vertiefung

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language

Guido de Melo Fachvortrag, Uni Ulm UML 2.0. Für den Einsatz in der Praxis

Applikationsentwicklung Architekturübungen

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

Erzeugungsmuster (nach Gang of Four )

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Von UML 1.x nach UML 2.0

Analyse und Modellierung von Informationssystemen

Oracle JDeveloper 10 g

Design im Softwareentwicklungsprozess. Stand der Dinge & Designziel. fachliche & technische Architektur. generelles Vorgehen bei Grob-Design

Design Patterns MVC. Marcus Köhler Markus Merath Axel Reusch. Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 1

Software-Entwurfsmuster

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick

DESIGN'PATTERN'2011. November. Abstract Factory & Factory Method BEARBEITET VON INHALT [1] Christoph Süsens

Programmieren in Java

Software Engineering Entwurfsmuster (update: 11.6.)

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Qualitätsaspekte des Software Designs am Beispiel Traffic Tower

Komponentenbasierter Taschenrechner mit CORBA

Entwurfsmuster. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06

Was ist Software-Architektur?

Ziele und Tätigkeiten von Architekten

Architecture Blueprints

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

UI-Architekturen mit JSF

Model View Controller Pattern

Unified Modeling Language (UML)

Skalierbare Enterprise Architekturen für Universal Windows Platform Apps

Softwaretechnik (Allgemeine Informatik) Überblick: 6. Objektorientiertes Design

UML 2.0 Das umfassende Handbuch

Vgl. Oestereich Kap 2.7 Seiten

Software-Projekt. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG

Überblick. Allgemeines, Geschichtliches. Architektur. Oberfläche. Plugins und deren Einsatz

Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams. Lothar Wendehals. Universität Paderborn

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Model-View-ViewModel (MVVM)

Wahlpflichtfach Design Pattern

Jürgen Schwab, debis Systemhaus

Softwaretechnik (Medieninformatik) Überblick: 6. Objektorientiertes Design

Architecture Blueprints Ein Leitfaden zur Konstruktion von Softwaresystemen mit Java Spring,.NET, ADF, Forms und SOA

Entwurfsmuster (Design Pattern) ETIS SS05

4. Übung zu Software Engineering

Javakurs für Anfänger

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013

Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC

Contexts and Dependency Injection. W3L AG

vii Inhaltsverzeichnis 1 Einleitung 1

Algorithmen und Datenstrukturen

3. Konzepte der objektorientierten Programmierung

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Komponentenbasierte Softwareentwicklung mit PHP. Oliver Schlicht - bitexpert

12.4 Sicherheitsarchitektur

Seminar Software Design Pattern

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Softwaretechnik. Fomuso Ekellem

Visual Studio 2010 Neues für Architekten

Arbeitsblätter zu Teil I des Praktikums

Timo Wagner & Sebastian Kühn Entwurf einer Multi-Tier Anwendung in ASP.NET

Transkript:

3. Übung Softwaretechnik - Entwurf / Design - Wintersemester 2007/2008 Thorsten Berger, Thomas Riechert 1

Organisatorisches Voranmeldung Softwaretechnik-Praktikum im Sommersemester 2008 https://olat.informatik.uni-leipzig.de:9101/olat/auth/repo/go?rid=11403282 Auswertung der bisherigen Teilnahme an den angebotenen Online Übungen Klausurtermin: voraussichtlich 12.2., 9:00 Uhr Lehrveranstaltungsevaluation Zugangsinformationen für Studierende Kennung: kpf-swt-07 Passwort: tjwqc630 URL: https://www.umfragen.uni-bonn.de/leipzig/lehre 2

Agenda 1. Teil, Präsenz: Überblick Software-Architekturen (T. Berger) 2. Teil, Gruppenarbeit: Aufgaben 1 bis 5 3

Software-Architektur eine strukturierte oder hierarchische Anordnung der Systemkomponenten sowie Beschreibung ihrer Beziehungen (Balzert00, S. 716) (funktionale, nichtfunktionale und Qualitäts-) Anforderungen aus Lasten-/Pflichtenheft verbinden mit Architektur-/Design-Mustern und Technologien Architektur-Sichten (Kruchten95): Architektur-Sicht ht Charakteristik tik Logische Sicht beinhaltet funktionale Anforderungen der Plattform (Logical view) Prozess-Sicht beschreibt Verhalten bzw. Abläufe im System zur (Process view) Laufzeit (Prozesse, Threads und dihre Interaktionen) Entwicklungs-Sicht beschreibt Architektur als Komposition von Schichten, (Development view) Subsystemen, Komponenten, Klassen und Schnittstellen Physische h Sicht beschreibt die physische h Verteilung von in den (Physical view) vorherigen Sichten identifizierten Elementen auf Dateien, Verzeichnisse und Ausführungseinheiten (Knoten, Betriebssysteme) 4

Software-Architektur Grobe Architektur: Grobgranulare Sicht auf die Software Zerlegung des Gesamtsystems t in Teilsysteme (Komponenten) hauptsächlich durch nichtfunktionale und Qualitäts-Anforderungen beeinflusst (Entwicklungsfähigkeit, Wartbarkeit, Geschwindigkeit, Sicherheit) Architekturmuster: Verteiltes System: Client/Server, Broker, Vermittler Schichten (Layer) Pipes and Filters Interaktionssystem: Model-View-Controller (MVC), Model-View-Presenter (MVP), Rich-Client Adaptives System: Mikrokernel k Modellierung: UML-Diagramme: z.b. Verteilungsdiagramm, Komponentendiagramm, Paketdiagramm, Interaktionsübersichtsdiagramm Schichten-Diagramm n-tier-modell von SUN Architekturbeschreibungssprachen (ADL) 5

Software-Architektur Detaillierte Architektur: Feingranulare Sicht auf die Software Zerlegung der Teilsysteme in Komponenten stärker von funktionalen Anforderungen beeinflusst Design-Muster (Design Patterns, Gamma95): Factories Singleton Observer Value Object (VO) / Data Transfer Object (DTO) Data Access Object (DAO) Modellierung: UML-Diagramme: z.b. Klassendiagramm, Sequenzdiagramm, Komponentendiagramm, Zustandsdiagramm, Timing-Diagramm Architekturbeschreibungssprachen (z.b. xadl, Mae, ACME, SDL) 6

Software-Architektur Aktivitäten beim Architektur-Entwurf: Abstraktion Modellierung Simulation Prototyping Validierung ld Wichtige Prinzipien Trennung der Zuständigkeiten (Separation of Concerns, SoC) Zerlegung des Systems in Teile mit hoher Kohäsion Lose Kopplung der Teile Problem: bei OOP nur eine Dekomposition möglich (sog. dominante Dekomposition), Überschneidungsproblem Gesetz von Demeter (Law of Demeter, LoD) Objekte kommunizieren nur mit direkt referenzierten Objekten Verringerung g Kopplung und Erhöhung Wartbarkeit Service Abstraction Zugriff auf Implementierung nur über Interfaces Erhöhung Wartbarkeit und Entwicklungsfähigkeit Nutzung von Frameworks 7

Komponenten-Architekturen "Eine Software-Komponente ist ein Software-Element, das konform zu einem Komponentenmodell ist und gemäß einem Composition Standard ohne Änderungen mit anderen Komponenten verknüpft und ausgeführt werden kann. (Councill,Heinemann03) Komponenten-Standards und -Frameworks: Microsoft:.NET, COM, DCOM, OLE OMG: Corba Component Model (CCM) SUN: JavaBeans, J2EE Enterprise Java Beans Spring-Framework Open Services Gateway initiave (OSGi) 8

Agenda 1. Teil, Präsenz: Überblick Software-Architekturen (T. Berger) 2. Teil, Gruppenarbeit: Aufgaben 1 bis 5 9

Aufgabe 1 / Software Ergonomie (20 min) Beurteilen Sie einen von Ihnen benutzen Instant Messenger (z.b. Pidgin oder Skype) nach den Grundsätzen ergonomischer Dialoggestaltung (EN ISO 9241-10 und EN ISO 14915-1). 10

Aufgabe 1 / Software Ergonomie (20 min) Weitere Screenshots: PS - Quellen e der GAIM Bilder: http://screenshots.softonic.com/s2de/50000/50264/0_portable_gaim_03.gif http://pendriveapps.com/images/gaim.gif 11

Aufgabe 2 / Entwurf (45 min) Wählen Sie für folgende Software-Applikationen geeignete Architekturen aus und skizzieren Sie Ihre Lösung und begründen Sie diese. Web-Mailer Mobiles Ticket-System (Bahn) Instant Messenger Quelle Ticketautomat: http://www.vwg.de/tickets.html 12

Aufgabe 3 / Entwurf (20 min) Setzen Sie das nachfolgende OOA- Diagramm aus einer Lehrstuhlverwaltung in Java-Code um. 13

Aufgabe 4 / Datenbanken (20 min) Ein Student hat eine eindeutige Matrikel-Nr., einen Namen und ein Alter. Er muss sich für mehrere Prüfungsfächer anmelden. Zu jedem Prüfungsfach gibt es eine eindeutige Kursbezeichnung und einen Prüfer. Für ein Prüfungsfach melden sich in der Regel mehrere Studenten t an. Für jeden Studenten t wird pro Prüfungsfach f die Anzahl der Versuche und die Note des letzten Versuchs gespeichert. Ein Student kann Mitglied einer Uni-Sportgruppe sein. In einer Sportgruppe sind mehrere Studenten. Für jeden Studenten wird gespeichert, seit wann er Mitglied in der gewählten Sportgruppe ist. Jede Sportgruppe besitzt eine eindeutige Sportart und einen Trainingsplan. Erstellen Sie zunächst eine unnormalisierte i Relation, wobei Sie Matrikel-Nr. als Schlüssel wählen. Geben sie dann die 1., 2., und 3. Normalform an! 14

Aufgabe 5 / Design-Patterns (45 min) Diskutieren Sie folgende Design Patterns: Factories Singleton Observable MVC Beziehen Sie sich dabei auch auf die in Aufgabe 3 bereits diskutierten Applikationen. 15

Arbeitsgruppen I. Frau Bulka II. Herr Frommhold III. Herr Berger IV. Herr Riechert Quelle: http://www.klimatek.de/shop_content.php/coid/9/content/klima%20und%20gesundheit 16

Agenda Anhang 17

Klassifikation von Entwurfmustern Zweck erzeugendes Mus ter strukturelles Mus ter Verhaltensmus ter Gültig- Klasse factory method adapter class interpreter keits- template m ethod bereich Objekt abstract factory adapter (object) chain of responsibility builder bridge command pr ototyp e composite iterator singleton decorator mediator facade memento flyweight observer proxy state strategy visitor Zweck: Gültigkeitsbereich: Erzeugendes Muster (creational pattern): Erzeugen von Objekten Strukturelles Muster (structural pattern): Komposition von Klassen und Objekten Verhaltensmuster (behavioral pattern): Kommunikation und Verantwortlichkeiten tli it zwischen Objekten Klassen (statisch) Vererbung Objekte (dynamisch) Assoziationen, Aggregationen. 18

Das Fabrikmethode-Muster Zweck Klassenbasiertes Erzeugungsmuster Bietet eine Schnittstelle zum Erzeugen eines Objekts an, wobei die Unterklassen entscheiden, von welcher Klasse das zu erzeugende Objekt ist Auch bekannt als»virtueller Konstruktur«(virtual constructor) Motivation Dieses Rahmenwerk eignet sich für das gleichzeitige Anzeigen mehrerer Dokumente Es verwendet die beiden abstrakten docs Klassen Application Document Application und Document und * modelliert eine open() cr eat edocument() Document * doc = Assoziation close() new Document createdocument(); zwischen ihren save() opendocument() docs.add(doc); Objekten. revert() doc >open(); MyDocument «creat es» MyApplication createdocument() return new MyDocument 19

Das Fabrikmethode-Muster Anwendbarkeit Wenn eine Klasse die von ihr zu erzeugenden Objekte nicht im Voraus kennen kann Wenn eine Klasse benötigt wird, deren Unterklassen selber festlegen, welche Objekte sie erzeugen Struktur u Produ ct Creator factor ymethod() an Op eration ()... product = factorymethod()... Interaktionen Der Creator verlässt sich darauf, dass Unterklassen die Fabrikmethode korrekt implementieren Konsequenzen ConcreteProduct «creates» ConcreteCreator factorymethod() return new ConcreteProduct Fabrikmethoden verhindern es, dass anwendungsspezifische Klassen in den Code des Rahmenwerks eingebunden werden müssen. 20

Das Singleton-Muster Zweck Objektbasiertes Erzeugungsmuster Stellt sicher, dass eine Klasse genau ein Objekt besitzt und ermöglicht einen globalen Zugriff Motivation Bei manchen Klassen ist es notwendig, Sing leton dass es genau ein Objekt gibt uniqueinstance singletondata t Auf dieses Objekt muss oft von mehreren anderen Objekten zugegriffen werden instance() Daher muss der Zugriff einfach sein singletonoperat ion() Die Singleton-Klasse muss garantieren, getsingletondata() g dass nur ein Exemplar erzeugt werden kann und einen einfachen Zugriff auf dieses Exemplar ermöglichen. Interaktionen return uniqueinstance Clients holen sich ausschließlich über die Klassenoperation instance() eine Referenz auf das einzige Objekt Konsequenzen Das Singleton-Muster ist eine Verbesserung gegenüber globalen Variablen (die es in Java nicht gibt) Die Singleton-Klasse kann durch Unterklassen spezialisiert werden Werden später mehrere Exemplare benötigt, dann kann diese Änderung leicht durchgeführt werden. 21

Das Singleton-Muster Klasse Singleton definiert die Klassenoperation instance(), die es dem Client ermöglicht, auf das einzige Exemplar zuzugreifen class Singleton { private static Singleton uniqueinstance; //macht den Konstruktor nach aussen unsichtbar protected t Singleton(); public static Singleton instance() {if (uniqueinstance == null) //es existiert noch kein Exemplar { uniqueinstance = new Singleton(); } return uniqueinstance; } } 22

Das Beobachter-Muster Zweck Objektbasiertes Verhaltensmuster Es sorgt dafür, dass bei der Änderung eines Objekts alle davon abhängigen Objekte benachrichtigt und automatisch aktualisiert werden. Motivation Ein Objekt enthält Anwendungsdaten Diese sollen auf verschiedene Arten angezeigt werden, z.b. als Tabelle und als Kreisdiagramm: x y z a b c a = 50% 60 30 10 b = 30% 50 30 20 80 10 10 c=20% a b c Benachrichtigung über Änderung Anfragen, Veränderungen 23

Das Beobachter-Muster Anwendbarkeit Eine Abstraktion besitzt zwei Aspekte, die wechselseitig voneinander abhängen Die Kapselung in zwei Objekte ermöglicht es, sie unabhängig voneinander wiederzuverwenden oder zu modifizieren Die Änderung g eines Objekts j impliziert p die Änderung g anderer Objekte, j und es ist nicht bekannt, wie viele Objekte geändert werden müssen Ein Objekt soll * andere Objekte benachrichtigen, b h i hti und diese Objekte sind nur lose gekoppelt. Subj ect attach(observer) detach(observer) notify() observers for all o in observers o >update() Observer update() Concret e Subject subjectstate subject 1 Concrete Observer observerstate update() observerstate= subject > getstate() getstate() setstate() return subjectstate 24

Das Beobachter-Muster Interaktionen :Concret esubj ect Observer 1 Observer 2 input() p setstate() notify() update() getstate() getstate() update() p Konsequenzen Das Beobachter-Muster ermöglicht es, Subjekte und Beobachter unabhängig voneinander zu modifizieren Beobachter und Subjekte können einzeln wiederverwendet werden Neue Beobachter können ohne Änderung des Subjekts hinzugefügt werden. 25