940 likes | 1.07k Views
Software Engineering. Studiengang Betriebsinformatik Sommersemester 2010. Vorlesung : 4 Veranst. á 2 DS = 16 Unterrichtsstunden Praktikum : 1 Veranst. á 2 DS = 4 Unterrichtsstunden. Inhalt. Einführung: Ziele und Arbeitsmethoden der Softwaretechnologie
E N D
Software Engineering Studiengang Betriebsinformatik Sommersemester 2010 Vorlesung : 4 Veranst. á 2 DS = 16 Unterrichtsstunden Praktikum : 1 Veranst. á 2 DS = 4 Unterrichtsstunden
Inhalt • Einführung: Ziele und Arbeitsmethoden der Softwaretechnologie • Objektorientierte Modellierung Unified Modeling Language (UML 2) • Implementation von UML-Modellen • Systemarchitekturen • Der Software-Entwicklungsprozess • Wiederverwendung
Literatur H. Balzert: Lehrbuch der Objektmodellierung. Analyse und Entwurf mit der UML 2. Spektrum Akademischer Verlag, 2004 M. Fowler, K. Scott: UML konzentriert. Eine Einführung in die Standard- Objektmodellierungssprache. Addison-Wesley, 2. Aufl., 2000 C. Rupp, S. Queins, B. Zengler: UML 2 glasklar, Praxiswissen für die UML-Modellierung Carl Hanser Verlag, 3. Aufl., 2007 W. Pree: Komponentenbasierte Softwareentwicklung mit Frameworks. dpunkt.verlag, 1997 I. Sommerville: Software Engineering. Addison-Wesley, 8. Aufl. 2007 Rational Software Corporation Homepage: http://www-01.ibm.com/software/rational/
Einführung: Ziele und Arbeitsmethoden der Softwaretechnologie • Softwareproduktion • Lebenszyklusmodelle • Methodologie → Objekttechnologie • von Algorithmen zu Domänen
„Große Systeme“: • Entwicklergruppen über längere Zeit • Personen (Nutzer) agieren in Rollen • Entwicklung endet nicht mit der 1. Systemversion: • Erweiterung und Anpassung („Wartung“) • Wiederverwendung beginnt nicht erst mit der • eigenen Entwicklung • Bestimmte Entwicklungsmethoden führen zu • bestimmten Software-Architekturen • Entwicklungsmethoden bedürfen einer • rechentechnischen Unterstützung : CASE • Zweckbindung -> Musterarchitekturen offen für Fragestellungen
Phasen im Softwareentwicklungsprozess: Analyse Anforderungsanalyse (Pflichtenheft) Anwendungsfallanalyse Problembereichsanalyse (Geschäftsklassen) Entwurf Softwareentwurf (Geschäftsklassen + Fachklassen) Algorithmenentwurf Komponenten-/Systementwurf Implementation Programmierung,weitestgehende Generierung Test Unittest, Integrationstest, Systemtest → möglichst entwicklungsbegleitend
Die Unified Modeling Language( G. Booch, J. Rumbough, I. Jacobson ) ► Diagramme visualisieren Ausschnitte aus bzw. Sichten auf Modelle • Diagrammtypen • Modelltypen • Eine grafische Sprache • Metamodellierung
Diagrammtypen: • Use-Case-Diagramm (use case diagram) • Klassenstruktur-Diagramm (static structure diagram) • Sequenz-Diagramm (sequence diagram) • Kommunikations-Diagramm (communication diagram) • Zustands-Diagramm (statechart diagram) • Aktivitäten-Diagramm (activity diagram) • Komponenten-Diagramm (component diagram) • Verteilungs-Diagramm (deployment diagram) Modelltypen: • Use-Case-Modell • Klassenstrukturmodell • Interaktionsmodell (Sequenz- u. Kommunikations-Diagramm) • Zustandsmodell (Zustands- u. Aktivitäten-Diagramm) • Komponentenmodell • Verteilungsmodell
Metamodellierung ► Die UML ist eine grafische formale Sprache => Syntax + Semantik ► Die Definition einer formalen Sprache erfolgt mit den Mitteln einer (formalen) Sprache => Metasprache zur Definition einer Objektsprache Bsp.: EBNF zur Definition der Syntax von Programmiersprachen ► UML zur Modellierung von UML-Konzepten => Metamodelle
ObjektorientierteModellierung • Klassen-Instanzen-Abstraktion • Attribute und Operationen • Sichtbarkeit und Lebensdauer • Assoziationen und Verknüpfungen • Aggregation und Komposition • Generalisierung und Spezialisierung • Vererbung und Delegation • Polymorphie • Abstrakte und konkrete Klassen • Instanzen als Laufzeitobjekte • Statechart-Modelle • Aktivitäten-Diagramme
Klassen-Instanzen-Abstraktion Objekt ist ein (abstrakter) Gegenstand oder ein Konzept mit klarer Abgrenzung und präziser Bedeutung. Beispiele: Kommissar Rex, das Fenster links oben im Haus, Herr Lutze, Mediatec GmbH, ein bestimmter Button auf der GUI des Finanzprogrammes, ... Klasse umfasst eine Menge von Objekten, die ähnliche Struktur und ähnliche Merkmale (Attribute) besitzen, ähnliches Verhalten zeigen (Operationen bzw. „Methoden“), in Relationen zu Objekten anderer Klassen oder der gleichen Klasse stehen. Eine Klasse kann durch Aufzählung der Objekte oder durch die Definition der Eigenschaften der Objekte (Klassendefinition) beschrieben werden. Zu einer Klasse gehörige Objekte werden als Instanzen, Instanzobjekte oder auch Exemplare der Klasse bezeichnet. Klassen werden benannt. Beispiele: Hund, Fenster, Person, Firma, Button, ...
Objekte • sind immer Instanzen einer bestimmten Klasse und • besitzen eine Identität und eine Lebensdauer. • Jedes Objekt kennt die Klasse, zu der es gehört. • Die Identifizierung und Benennung von Objekten hilft, die zu modellierende Welt zu verstehen. Objekte sind Ausgangspunkt für Implementierungen auf Computern. • Eine Klassendefinition umfasst (evtl. implizit) eine Vorschrift zur Erzeugung von Instanzen („Konstruktor“). • Klassenbildung ist Abstraktion • ( bei einer Abstraktion werden unwesentliche Eigenschaften weggelassen; • sprich: es wird von unwesentlichen Eigenschaften abstrahiert ). • Abstraktion ist ein mächtiges Mittel zur Bewältigung von Komplexität. • Art und Weise der Zerlegung eines Problems bzw. einer Domäne in Klassen/Objekte ist subjektiv
Beispiel: Attribute und Operationen Attribut : Merkmal mit einer Ausprägung (Datenwert) Jedes Attribut besitzt einen Wert aus dem Wertebereich für jedes Objekt. Jedes Objekt einer Klasse kann für dasselbe Attribut zum selben Zeitpunkt einen anderen Wert besitzen -> „Instanzvariable“ Operation : Funktion, die auf Objekte einer Klasse angewendet werden kann. Alle Objekte einer Klasse haben die gleichen Operationen. Implementierung der Operation in Programmiersprache -> „Methode“
Die Gesamtheit der Werte (d.h. der Ausprägungen) aller Attribute • eines Instanzobjektes bestimmt den Zustand des Objekts • zu einem bestimmten Zeitpunkt. • In Operationen kann auf Werte von Attributen zugegriffen werden. Das • Verhalten eines Objekts wird durch seinen Zustand mit bestimmt • (im Unterschied zu einer Prozedur). • Die Verhaltensbeschreibung existiert unabhängig von der Anzahl vorhandener • Instanzen je Klasse nur einmal und ist der Klasse zugeordnet.
Klassendiagramme (eigentlich: Klassenstrukturdiagramme) formale grafische Notation für die Modellierung von Objekten, Klassen und Relationen, wird durch Entwicklungswerkzeuge unterstützt. Klassen klassenname [visibility] attributname:datentypname [ =default-wert ] … [visibility]operationsname(argumentliste) :ergebnistypname …
Instanzen[ instanzname ]: klassennameattributname=wert … Instanziierungsrelation klassenname [instanzname] :klassenname Klassen- u. Instanzensymbole können bei manchen Werkzeugen innerhalb eines Klassendiagramms verwendet werden.
Unterscheiden: →Wert einer Instanzvariablen name →Name (Benennung) eines Objekts, z.B. Moritz
Sichtbarkeit und Lebensdauer ►Konstruktoren sind spezielle Operationen zur Erzeugung von Objekten. Objekte existieren solange, solange sie referenzierbar sind bzw. bis sie explizit aus der Objektwelt entfernt werden (durch Destruktoren). ► Durch Benennungen werden Objekten Namen (in einer Umgebung) zugeordnet. ► Objekte besitzen einen zeitlich veränderlichen Zustand -> bestimmt durch die Werte aller Instanzvariablen (Ausprägungen aller Attribute) ► Sichtbarkeit (visibility) für Attribute und Operationen: + public von überall sichtbar # protected nur eigene Klasse und abgeleitete (spezialisierte) Klassen - private nur eigene Klasse ~ (oder keine Angabe) package wide nur Klassen innerhalb eines Packages
Unterscheidung: instance scope -> „Instanzvariablen“, „Methoden“ class scope -> „Klassenvariablen“, „Klassenmethoden“ (Syntax: Name und Typ werden unterstrichen)
Assoziationen und Verknüpfungen Assoziation: abstrakte, nicht näher charakterisierte Beziehung zwischen zwei (binäre A.) oder mehr (ternäre A. bzw. Assoziation höherer Ordnung) Klassen. Notation: binäre Ass.: Linie, die zwei Klassensymbole verbindet. A. höherer Ordn.: Rhombus, der durch Linien mit den Klassensymbolen verbunden ist. Beispiel:
Verknüpfung: Element einer Assoziation. Setzt eine Anzahl von Objekten ( „Link“ ) in Beziehung
Ein Pfad einer Assoziation kann an jedem Ende eine Beschriftung tragen.Arten der Beschriftung (Auswahl): Multiplizitätuntere_grenze .. obere_grenze 0 .. * Ordnung geordnete Elemente werden durch {ordered} spezifiziert Rollenname spezifiziert die Rolle, die die Klasse am Ende des Pfades spielt Aggregationsindikator hohler/ausgefüllter Rhombus
Aggregation und Komposition Aggregation: bezeichnet die „Teil-Ganzes“-Relation („ist Teil von“ bzw. „besteht aus“) Objekte, die die Komponenten einer Sache repräsentieren, sind mit einem Objekt verknüpft, das die Komponentengruppe repräsentiert. Notation: Ein Objekt der Klasse1 repräsentiert die Komponentengruppe, Objekte der Klasse2 repräsentieren die Komponenten
Eigenschaften: • Eine Aggregation ist eine Sonderform der Assoziation mit zusätzlicher Semantik • Einschränkung auf Beziehung zwischen einer Komponentengruppenklasse und • einer Komponentenklasse • (eine Komponentengruppe mit Komponenten verschiedener Typen hat • entsprechend viele Aggregationsrelationen) • Eine Aggregation ist transitiv und antisymmetrisch • einige Eigenschaften der Komponentengruppe pflanzen sich auf die Komponenten fort
Beispiel: Ein Dokument besteht aus mehreren Absätzen, die ihrerseits aus mehreren Sätzen bestehen. Beispiel: In der Programmiersprache C sind ein Name, eine Argumentliste und eine Verbundanweisung Teile einer Funktionsdefinition.
Feststellungen: • Komponentenobjekte können unabhängig vom Komponentengruppenobjekt existieren. • Beispiel: Teile eines Computers • Die Existenz eines Komponentenobjektes kann von der Existenz des Komponentengruppenobjektes abhängen, zu dem es gehört. • Beispiel: Die Leimung ist Teil eines Buches zu dem sie gehört. • Komposition - bezeichnet eine „enge“ Aggregation. • - konstituiert eine Verbindung der Teile mit dem Ganzen auch • hinsichtlich der „Lebenslinie“.
Generalisierung/Spezialisierung und Vererbung Spezialisierung: Beziehung zwischen einer Klasse und einer oder mehrerer verfeinerter (speziellerer) Versionen davon. Gegenrichtung: Generalisierung Bezeichnungen Oberklasse die Klasse, die verfeinert wird (Superklasse) Unterklasse jede Klasse, die eine verfeinerte Version ist (Subklasse) Inklusionsrelation Spezialisierungsbeziehung zwischen Klassen („is a“-Relation) Eigenschaften: transitiv, antisymmetrisch
Vererbung: • „Merkmale“, die der Oberklasse zugeordnet sind, werden an die Unterklassen weitergegeben und von den Unterklassen genutzt, sie gelten auch für die Unterklassen und müssen dort nicht erneut angegeben werden. entlang der Inklusionsrelation werden „Merkmale“ vererbt. • Unterklassen können Merkmale spezialisieren, d.h. • zusätzliche Attribute • zusätzliche Operationen • für geerbte Operationen spezielle Realisierungen vorsehen • Default-Werte für geerbte Attribute neu festlegen • die Begriffe Vorfahre und Nachkomme beschreiben Generalisierung/Spezialisierung (und Vererbung) über mehrere Ebenen hinweg • eine Instanz einer Unterklasse ist gleichzeitig eine Instanz aller ihrer Vorfahrenklassen
Beispiel: • jedes Buch, • jedes Fachbuch, • jedes Informatik-Fachbuch • besitzt einen Autor und eine ISBN • jedes Fachbuch, • jedes Informatik-Fachbuch, • jedes Medizin-Fachbuch • besitzt ein Literaturverzeichnis
Constraints: neben dem Dreieck in geschweiften Klammern notiert. overlapping, falls ein Nachkomme von mehr als einer Subklasse abgeleitet werden kann, andernfalls disjoint complete, falls die Anordnung der Subklassen vollständig ist, andernfalls incomplete
Ein Diskriminator kennzeichnet eine Partitionierung der Subklassen. (es wird nach verschiedenen Gesichtspunkten spezialisiert) -> an die Linie neben dem Dreieck notiert Mehrfachvererbung: Klassenhierarchie: eine Klasse kann mehrere Subklassen, aber nur eine Superklasse besitzen. Klassenheterarchie: eine Klasse kann mehrere Subklassen und mehrere Superklassen besitzen. Besitzt eine Klasse mehrere Superklassen, spricht man von Mehrfachvererbung. Die Klasse erbt Merkmale von allen Superklassen. Ein Merkmal aus der gleichen Vorfahrenklasse, das in mehr als einem Pfad gefunden wird, wird nur einmal geerbt. Es können Mehrdeutigkeiten auftreten.
Vererbung und Delegation Mittels Aggregation + Delegation kann (in der Programmiersprache) fehlende Mehrfachvererbung umgangen werden. Delegation: eine Klasse A hat ein Attribut mit Wertebereich Klasse B. (Instanzen von A besitzen für das Attribut als Wert einen Verweis auf eine Instanz von B) = Implementierungsmechanismus, mittels dessen ein Objekt eine Operation auffängt und an ein Objekt entsprechend der Aggregation sendet. Operationen werden aber nicht automatisch über die Aggregation hinweg vererbt! Beispiel :
Beispiel: Realisierungsmöglichkeiten bei fehlender Mehrfachvererbung
Polymorphie • wörtlich: „Vielgestaltigkeit“. • hier: eine durch Namen und Signaturspezifizierte Operation kann in unterschiedlichen abgeleiteten Klassen durch unterschiedliche Methoden implementiert sein. Signatur: Anzahl und Typen der Parameter einer Operation sowie ggf. Typ des Rückgabewertes statische Polymorphie vs. dynamische Polymorphie gleichnamige Operationen mit unterschiedlichen Parametertypen „späte Bindung“
Rekursive Definition: • Ein Mobile ist • ein Gewicht oder • ein Gestänge mit Mobiles an beiden Enden
Abstrakte und konkrete Klassen Abstrakte Klasse: Klasse, die selbst keine direkten Instanzen besitzt, deren Nachkommen aber direkte Instanzen besitzen. Konkrete Klasse: Klasse, die direkte Instanzen besitzen kann („Instanziierbare Klasse“) Nur konkrete Klassen können Blattklassen im Vererbungsbaum sein! Eine abstrakte Klasse kann sowohl abstrakte Operationen als auch nicht abstrakte Operationen definieren. Abstrakte Operation: Eine Klasse kann nur das Protokoll einer Operation definieren, ohne eine entsprechende Methode zu implementieren.
Kennzeichnung abstrakter Operationen: { abstract } oder Signatur in italics Ist eine Operation nicht als abstract gekannzeichnet, muß die Operation implementiert werden.