Software Engineering I

Ähnliche Dokumente
UML (Unified Modelling Language) von Christian Bartl

Einführung in die objektorientierte Programmierung

NACHRICHTENTECHNISCHER SYSTEME

Vorlesung Programmieren

Objektorientierte Softwareentwicklung

Unified Modeling Language 2

INSPIRE - Modellierung

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

Vorlesung Programmieren

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

TEIL I Strukturdiagramme 1 Einführung Klassendiagramm Objektdiagramm Kompositionsstrukturdiagramm...

Inhaltsverzeichnis.

Rückblick: Entity-Relationship-Modell

Jason T. Roff UML. IT Tutorial. Übersetzung aus dem Amerikanischen von Reinhard Engel

Analyse und Design mit U ML 2.3

Übungen Softwaretechnik I

Analyse und Modellierung von Informationssystemen

Software Engineering I. Architektur

Christoph Kecher, Alexander Salvanos UML 2.5. Das umfassende Handbuch. Rheinwerk. Computing

Klassendiagramm. (class diagram)

UML 2.0 Das umfassende Handbuch

UML Crashkurs v0.1. UML für Fachinformatiker. von Hanjo Müller

Das umfassende Handbuch

Entwurfsprinzip. Entwurfsprinzip

Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl

Software Engineering in der Praxis

Methoden des Software Engineering

CARL HANSER VERLAG. Mario Jeckle, Chris Rupp, Jürgen Hahn, Barbara Zengler, Stefan Queins. UML 2 glasklar

Christoph Kecher UML2. Das umfassende Handbuch. Galileo Press

Objektorientiertes Design

Unified Modeling Language

Übung Einführung in die Softwaretechnik

UML -Klassendiagramme

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

Datenbankanwendungen werden oft über einen sehr langen Zeitraum (z.b. Jahrzehnte) eingesetzt

Softwaretechnik 2015/2016

Objektdiagramm Komponentendiagramm Paketdiagramm. 6. Weitere Strukturdiagramme

Geoinformation I Datenmodellierung

Unified Modeling Language (UML )

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

Objektorientierte Systementwicklung

Vgl. Oestereich Kap 2.4 Seiten

Vorlesung "Software-Engineering"

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

Analyse und Modellierung von Informationssystemen

Datenbanksysteme: Entwurf

Software Engineering in der Praxis

Objektorientierte Analyse (OOA) OOA-Pattern

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

Einführung in die Programmierung

Entwurfsmuster (Design Patterns)

Objektorientierte Modellierung (1)

UML 2 glasklar Praxiswissen für die UML-Modellierung

Kurzeinführung in UML

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

Einführung in die Datenorganisation. Informationssysteme

Inhalt. Einleitung Liebe Leserin, lieber Leser, Wer dieses Buch aus welchem Grund lesen sollte Ihre Meinung ist uns sehr wichtig.

Datenbankmodelle 1. Das Entity-Relationship-Modell. Prof. Dr. Bernhard Schiefer 2-1

Von UML 1.x nach UML 2.0

Teil II: OOP und JAVA (Vorlesung 9)

Übungen Softwaretechnik I

So#waretechnologie für Fortgeschri4ene Teil Eide. Stunde IV: UML. Köln 26. Januar 2017

Grundlagen der Programmentwurfstechnik Fundamentals of Software Engineering 1

Design Patterns. 3. Juni 2015

Die Unified Modeling Language UML

Software Engineering I

Systemanalyse. - Folien zur Vorlesung für AI3 im Sommersemester Teil 5 -

3. Entwurfsmuster zur Entkopplung von Modulen

Software Engineering, SoSe 07, WSI, D. Huson, May 7,

Techniken der Projektentwicklungen

Lehrbuch der Softwaretechnik: Basiskonzepte und Requirements Engineering

Java Einführung Objektorientierte Grundkonzepte

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Design Richtlinien

Oracle JDeveloper 10 g

Requirements Engineering I

Modellarbeit I: Entwurfsgerechte Klassenmodellierung

Tutorium Softwaretechnik I

Comelio GmbH - Goethestr Berlin. Course Catalog

Objektorientierte Analyse (OOA) Inhaltsübersicht

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

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

Datenbankentwurf. Kapitel 3. Datenbankentwurf 76 / 508

SWE4 Slide 1. Software-Engineering. Vorlesung 4 vom Sebastian Iwanowski FH Wedel

Einführung in Datenbanken

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

Unified Modeling Language (UML)

Software- und Systementwicklung

Analyse und Modellierung von Informationssystemen

Software Engineering in der Praxis

Modellbasierter Test mit der UML. Vortragender: Lars Westmeier Seminar: Spezifikationsbasierter Softwaretest

10. Programmierungs-Phase: Objektorientierung Software Engineering

Objektorientierte Softwareentwicklung

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

class Mitarbeiter {...} class AussendienstMitarbeiter extends Mitarbeiter {...} class InnendienstMitarbeiter extends Mitarbeiter {...

Kapitel 2 - Die Definitionsphase

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

Objektorientierte und Funktionale Programmierung SS 2014

Inhaltsverzeichnis. Teil I UML als Entwurfssprache

Teil VIII. Objektorientierte Programmierung

Transkript:

Skript zur Vorlesung

Agenda Allgemeine Einführung Funktionsbäume Klassendiagramme Daten Dictionary ERD-Modelle

Basiskonzepte Statik Dynamik Logik Funktionen Daten Datenstrukturen Architektur Kontrollstrukturen Zustände Prozesse Zeitliches Verhalten 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

UML 2.0 (separate VL) 7 Strukturdiagramme: das Klassendiagramm das Kompositionsstrukturdiagramm (auch: Montagediagramm) das Komponentendiagramm das Verteilungsdiagramm das Objektdiagramm das Paketdiagramm und das Profildiagramm 7 Verhaltensdiagramme: das Aktivitätsdiagramm das Anwendungsfalldiagramm (auch: Use-Case o. Nutzfalldiagramm genannt) das Interaktionsübersichtsdiagramm das Kommunikationsdiagramm das Sequenzdiagramm das Zeitverlaufsdiagramm und das Zustandsdiagramm Grenzen und Übergänge zwischen den Diagrammtypen sind fließend.

Methoden und Darstellung textuell grafisch Text informal semiformal formal Nummerierte Anforderungen Struktogramm Funktionsbaum Kollaborationsdiagramm Sequenzdiagramm Entscheidungstabellen Pseudocode Regeln DFDs Klassendiagramm Data Dictionary ERD Zustandsautomat Petri- Netze Entscheidungsbäume Petri-Netz (textuell)

Kopplung von Daten und Funktionen Funktion 1 Funktion 2 Daten Funktion 3 Funktion n Klasse 2 Klasse 1 Funktion n Funktion 2 Funktion n Funktion 1 Funktion 2 Funktion 1 Daten Daten Funktionsorientierung Objektorientierung

Funktionen und Bäume Funktionsbaum Ein Funktionsbaum ist die Darstellung einer funktionalen Hierarchie durch Gliederung nach Teilfunktionen. Funktionsbäume werden in Analyse und Design als Hilfsmittel eingesetzt. Funktion Sie beschreibt eine Tätigkeit oder eine klar umrissene Aufgabe innerhalb eines größeren Zusammenhangs. Funktionale Bindung Sie liegt vor, wenn alle Elemente an der Verwirklichung einer einzigen abgeschlossenen Funktion beteiligt sind. Funktionale Dekomposition

Funktionsbaum: Schema Besteht-aus-Hierarchie (Analysephase): A besteht aus B und C Ruft-auf-Hierarchie (Entwurfsphase): A ruft B und C auf. B A C Erstellungsregeln: Unter einer gemeinsamen Vaterfunktion sollen nur Funktionen angeordnet sein, die fachlich eng zusammengehörende Tätigkeiten beschreiben. Auf einer Hierarchieebene sollen Funktionen angeordnet sein, die sich auf gleichem Abstraktionsniveau befinden.

Funktionale Dekomposition Funktionale Dekompositionist ein Modellierungsansatz, um Probleme, die unüberschaubar groß sind, in kleinere Teilprobleme (Funktionen) zu zerlegen. Sind die Teilprobleme gelöst, so ist das Gesamtproblem ebenfalls gelöst. divide et impera = teile und herrsche = divide and conquer Top-Down-Strategie (im Gegensatz zur Bottom-Up-Strategie)

Funktionsbaum: Methoden bottom-up top-down

Funktionsbaum: Beispiel

Funktionale Modellierung Bei der Funktionsmodellierung (auch geläufig unter dem Begriff Funktionale Dekomposition) werden die Ein-und Ausgabevorgänge eines Software-Systems untersucht und dargestellt. Die Funktionsmodellierung liefert einen Überblick über die Struktur des Systems. Die Darstellung dieser Struktur erfolgt über ein Baumdiagramm. In dem Baumdiagramm werden die einzelnen Funktionen Schritt für Schritt aufgeschlüsselt und verfeinert. Untersucht die externen Schnittstellen eines Systems liefert Überblick über die Struktur des Systems Funktionen werden in einem Baumdiagramm nach dem Top-Down-Prinzip dargestellt und zerlegt. In der Designphase ist auch das Bottom-Up-Prinzip anwendbar. Nachteil: Datenflüsse werden nur wenig berücksichtigt

Übung Funktionsbaum Funktionsbaum Eine Seminarverwaltung verfügt unter anderem über folgende Funktionen: /F10/ Informieren: Von Anfrage bis Auskunft /F20/ Buchen: Von Anmeldung bis Buchung /F21/ Abmelden: Von Abmeldung bis Gutschrift /F22/ Stornieren: Von Absage bis Stornomitteilung /F23/ Firmenbuchung: Von Anmeldung bis Buchung einer firmeninternen Veranstaltung /F30/ Veranstaltung durchführen: Von Teilnahme bis Beurteilung /F40/ Seminarentwicklung: Von Idee zu neuem Seminar /F50/ Dozentenakquirierung: Von Auswahl bis Verpflichtung /F60/ Veranstaltungsplanung: Von Terminierung bis Reservierung /F70/ Teilnehmerliste pro Veranstaltung /F80/ Teilnehmerurkunde für jeden Veranstaltungsteilnehmer Gliedern Sie die Funktionen der Seminarverwaltung hierarchisch in Form eines Funktionsbaumes.

Klassen (Java Vorlesung) Klassen Klassen Menge von Objekten (Dingen) mit denselben Eigenschaften (Attributen) demselben Verhalten (Methoden, Operationen) Bestehen aus Name, Attributen und Methoden Konzepte Vererbung, Mehrfachvererbung Polymorphie Klassen, Interfaces, Pakete, Komponenten Assoziation, Komposition, Aggregation Kapselung und Geheimnisprinzip, Generalisierung Objektorientierter Ansatz (C++, Java )

OO wichtige Begriffe Objekt: Ein Objekt fasst Daten und Funktionen zusammen. Dargestellt wird ein Objekt in einem UML-Diagramm durch ein Rechteck. Zu beachten ist, dass Objekte immer eine eigene Identität haben, auch wenn sie sich beispielsweise in ihrer Funktion und in ihrer Struktur ähneln. Attribut: Ein Attribut (Beschreibungsmerkmal) findet auch unter dem Begriff Eigenschaft Einsatz in der objektorientierten Programmierung. Unter anderem werden auch Attribute auf Klassen vererbt. Ein Mensch hat verschiedene Attribute (Eigenschaften) wie z.b. Größe, Gewicht, Haarfarbe, Augenfarbe usw. Operation/ Methode: Die einer Klasse von Objekten zugeordneten Algorithmen bezeichnet man auch als Methoden. Polymorphie: Durch Polymorphie (griechisch = Vielgestaltigkeit) können einem Wert oder einem Namen (z.b. Variable) mehrere Datentypen zugeordnet werden. Object Constraint Language: ObjectConstraintLanguage ist ein Bestandteil des UML-Standards. OCL begreift sich als eine Erweiterung zu UML. Es dient zur Darstellung von zusätzlichen Bedingungen, die mit UML nur schwer darzustellen wären.

OO wichtige Begriffe Aggregation Die Aggregation ist eine besondere Assoziation zwischen Objekten. So könnte man sagen, dass eine Aggregation eine schwache Beziehung zwischen den Objekten beschreibt. Ein Objekt kann auch ohne das andere Objekt bestehen, obwohl es ein Teil davon ist. Beispiel: Man hat ein Haus und ein Garten. Verkauft man nun den Garten hat man immer noch das Haus. Das Gesamtobjekt Grundstück ist aber immer noch existent Darstellung: Leere Raute. Komposition: Wie auch die Aggregation ist die Komposition eine spezielle Assoziation. Im Gegensatz zur Aggregation darf bei der Komposition das Teilobjekt nicht ohne das Ganzobjekt auskommen. Beispiel: Dreieck besteht aus 3 Punkten und 3 Kanten nimmt man ein Objekt weg ist auch das Dreieck nicht mehr existent. Darstellung: Ausgefüllte Raute. Kohäsion: Kohäsion beschreibt die Anzahl der Aufgaben, für die einzelne Einheiten zuständig sind. So strebt man meist in der objektorientierten Programmierung eine hohe Kohäsion an, d.h. die Einheit übernimmt genau eine Aufgabe. Daraus ergibt sich, dass es bei einer hohen Kohäsion z.b. viel einfacher ist, eine Klasse bzw. Methode zu verstehen.

Data Dictionary (DD) Das Data Dictionary(DD, Datenlexikon) ist ein Verzeichnis, das Informationen über die Struktur von Daten, ihre Eigenschaften und ihre Verwendung enthält. Es beschreibt alle persistenten Daten eines Systems. Aufgrund der Data Dictionary-Daten können Bildschirmmasken automatisch generiert werden. Datenaustausch: Die Struktur einer Datenbanktabelle kann von einem Programm ausgelesen werden. Entkopplung von Datendefinition und -modellierung von der Programmentwicklung. Formal kommt die BNF (Backus-Naur-Form) zum Einsatz.

Anwendungsbeispiele Auswahl A= [ B C D ] A = B Wiederholung A= { B } A = *nichts* Option A= B + (C) A = B A = C A = B A = B + C A = D A = BB A = BBB.

Anwendungsbeispiele Wiederholung von M bis N A = 1{B}10 A= 5{B}5 A= 2{B} A = {B}3 A = B A = BBBBB A = BB A = *nichts* A = B... A = BBB A = B A = BBBBBBBBBB A = BBBB. A = BB A = BBB

DD Symbole Symbol Bedeutung Beispiel = Ist äquivalent zu A=B + Sequenz(ungeordnet) A=B+C [ ] Auswahl (entweder oder) A= [B C] {} Wiederholung A={B} M{}N Wiederholung von M bis N A=1{B}10 () Option A=B+(D) D ist optional ** Kommentar * Ich bin ein Kommentar *

Erstellungsregeln DD Definitionrichtung der Daten: top-down Ende der Verfeinerung: Wenn Datenelemente sinnvoll beschrieben Wiederholungs-und Optionsklammern möglichst weit oben in der Hierarchie Beispiel: A = B + (C) ist besser als A = B + C C = (D) + (E) ist besser als C = (D + E) Zirkuläre Definitionen sind nicht erlaubt Beispiel: A = B + C C = D + A Substituiert ergibt sich: A = B + D + A A ist zirkulär (rekursiv) definiert

Erstellungsregeln DD Alias-Namen sind erlaubt (für Sonderfälle) Beispiel: Auftrag = Artikel-Nr. + Menge + Datum = Bestellung Bestellung = Auftrag. Problembezogene Namen wählen Beispiel: Kundenname anstelle von Name Bereits definierte Datenstrukturen wiederverwenden Beispiel: Kundenname = Name, wenn Name bereits definiert ist Auswahl besteht aus mind. 2 Alternativen Beispiel: A = [ B C ]. Kontinuierliche Datenelemente Beispiel: Kunden-Nr. = 1000.. 9999 Diskrete Datenelemente Beispiel: Familienstand = [ ledig verheiratet geschieden verwitwet]

DD: Beispiele Artikeldaten = Artikel_id + Erstellungsdatum + Titel + Text Benachrichtigungsschreiben = [Account angelegt Account gelöscht Nachricht von anderem Nutzer] Artikelanfrage = User_id + 1{ Artikel_id}20 Kunde = Kunden_id+ Name + Adresse Buch = Buch_id+ Autor + Titel + Preis Buchliste = {Buch} Einkauf = {Bestellung + Gesamtbetrag} Kundenstatus = [ reich arm ] Zimmerart = [ Einzelzimmer Doppelzimmer ] * Ein Kommentar ist immer wichtig. *

Bewertung DD Vorteile Aufbau und Verfeinerung von Datenstrukturen lassen sich formal und kompakt beschreiben Ähnlich wie in modernen Programmiersprachen Nachteile Kein graphische Darstellung Lesbarkeit eingeschränkt

Übung DD Was bedeuten: A = (B) A = 0 {B}1 A = [B] AB = [A B A+B] A=({B}) A={B} A=1{B} A={B}1 Welche der folgenden Ausdrücke sind in der Definition A = B + [C D+E F] enthalten? A=B A=B+C+F A=B+D+E A=B+C A=B+F

Übung DD Auszug aus einem DD -leider fehlt die letzte Seite. Spezifizieren Sie die Elemente möglichst genau. Kundendatei = {Kundeneintrag} Kundeneintrag = Personal-Nr. + Name + Adresse + (Geburtsdatum) + (Funktion) + Umsatz Name = Anrede + (Titel) + Vorname + Nachname Adresse = [Strasse + Haus-Nr. Postfachnummer] + (Länderkennzeichen) + PLZ + Ort + (Telefon) + (Fax)

Entity-Relationship Modellierung (ERD) Ziel ist die Beschreibung von Gegenständen (Entities, Objekte) Beziehungen (Relationships) Eigenschaften (Attribute) ER-Modell wird aufgebaut, um Anwendungsdaten zu strukturieren und zu analysieren Oft werden daraus Datenbanktabellen aufgebaut Modellierung erfolgt über ER-Diagramme Entität Beziehung Attribut

Grundlegende Begriffe Entität Element der Realität Franz Mayer Entitätstyp Gruppe gleich-artiger Mitarbeiter Entitäten Attribut Entitätseigenschaft Personalnummer, Name, Anschrift... Schlüsselkandidat Wertebereich Identifikationsattribut #PersNr (minimal) Zulässige Attributwerte #PersNr String(10) Kardinalität/ Komplexität Mandatorische / Optionale Bez. Quantifizierung von Beziehungen Muss-/Kann Beziehungen Jede Abteilung hat mehrere Mitarbeiter Ein Mitarbeiter kann einen Chef haben

Entity-Relationship Diagramm (ERD) A (0,n) R (1,1) B 0 bis n Jedes A hat 0 bis n Genau 1 Beziehungen zu einem B! (n,m) legt das Minimum und Maximum der Anzahl Beziehungen des angegebenen Typs fest, die ein Objekt haben kann. Möglich und üblich sind: (0,1) höchstens 1 (1,1) genau eins (n,m) zwischen n und m mit n,m >= 0 (* für unbekannte Obergrenze)

ERD: Beispiel Kunden (0,*) (1,1) bekommt Rechnung Name (0,*) (1,*) Adresse #KdNr interessiert an enthält Preis Artikel (0,*) (0,*) kommt vor in (1,1) (1,1) Rechnungspositionen Menge #PosNr Größe Farbe #ArtNr

Bewertung ERD Vorteile Graphisch schnell erfassbar, Beziehungen sofort sichtbar Autogenerierung von Tabellen Nachteile Wird sehr großflächig (unübersichtlich) Meist keine exakte Beschreibung der Daten

Zusammenfassung Statik ist die feste Struktur eines Systems aus Funktions- und Datensicht Wichtige Stichworte: Funktionen, Klassen, Datenlexikon Darstellung erfolgt mit Hilfe von Diagrammen und Beschreibungen.

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 GoFbeschrieben (Gang offour: 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)