Vorlesung "Praktische Softwaretechnik" Teil 10: Basiskonzepte der Systemanalyse (2) Vortragender: Prof. Dr. Dirk Riehle, FAU Folien: Prof. Dr.Ing. Detlef Kips, develop group
Praktische Softwaretechnik • Informatik • Martensstraße 3 • 91058 Erlangen
Systemanalyse: Überblick der Sichten und Basiskonzepte Funktionsorientierte Sicht Funktionsbäume Datenflussdiagramme
Objektorientierte Sicht • Klassenmodelle (Forts.)
Datenorientierte Sicht • EntityRelationshipModelle • Datenkataloge
Szenariobasierte Sicht • Szenarien und Interaktionen • Interaktionsdiagramme
Zustandsorientierte Sicht • Zustandsautomaten und Statecharts • PetriNetze Kontrollflussorientierte Sicht • Kontrollstrukturen • Ablaufpläne • Aktivitätsdiagramme Regelbasierte Sicht • Entscheidungstabellen / bäume • Regelsysteme
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 2
Generalisierung/Spezialisierung: Einführungsbeispiel (1) Die Klassen Kunde und Dozent weisen gemeinsame Eigenschaften auf: Gemeinsame Attribute, z.B. Name und Adresse Gemeinsame Operationen, z.B. Adresse drucken
Kunde Name Adresse Funktion Umsatz Adresse drucken Umsatz ermitteln
Dozent Name Adresse Biographie Honorar pro Tag Adresse drucken Trage Zuordnung Seminartyp ein Trage Zuordnung Seminarveranstaltung ein
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 3
Generalisierung/Spezialisierung: Einführungsbeispiel (2) Die gemeinsamen Eigenschaften der Klassen Kunde und Dozent werden in einer gemeinsamen Oberklasse Person zusammengefasst („ausgeklammert“). Die Klasse Person ist eine Generalisierung der Klassen Kunde bzw. Dozent. Die Klassen Kunde bzw. Dozent sind Spezialisierungen der Klasse Person. Person Name Adresse Adresse drucken
Kunde Funktion Umsatz Umsatz ermitteln
Dozent Biographie Honorar pro Tag Trage Zuordnung Seminartyp ein Trage Zuordnung Seminarveranstaltung ein
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 4
Generalisierung/Spezialisierung: Grundprinzip Generalisierung und Spezialisierung sind (komplementäre) Abstraktions prinzipien zur hierarchischen Strukturierung der Semantik eines Systemmodells. Eine Generalisierung (bzw. Spezialisierung) ist eine taxonomische Beziehung zwischen einem spezielleren und einem allgemeineren Modellelement (bzw. vice versa). Das speziellere Element verfügt über alle Merkmale des allgemeineren, kann jedoch zusätzliche Merkmale aufweisen. Forderung: Das speziellere Element ist verhaltenskompatibel zum allgemeineren, das allgemeinere kann also durch das speziellere Element semantisch ersetzt werden (Substitutionsprinzip). Spezialisierung = semantische Verfeinerung Generalisierung = semantische Verallgemeinerung
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 5
Generalisierung/Spezialisierung: Beziehung zwischen Oberklasse und Unterklassen Durch eine Generalisierung (bzw. Spezialisierung) wird eine Oberklasse zu einer oder mehreren Unterklassen in Beziehung gesetzt: Unterklassen übernehmen von der Oberklasse sämtliche Eigenschaften (alle Attribute und Beziehungen) das gesamte Verhalten (alle Operationen) Unterklassen können gegenüber der Oberklasse Eigenschaften und Verhalten hinzufügen (d.h. neue Attribute, Beziehungen und Operationen definieren) Eigenschaften und Verhalten redefinieren (d.h. unter Wahrung bestimmter Randbedingungen vorhandene Attribute, Beziehungen und Operationen ändern) Zusicherungen verschärfen Unterklassen können weder Attribute und Beziehungen, noch Operationen der Oberklasse entfernen (Verstoß gegen das Substitutionsprinzip)
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 6
Generalisierung/Spezialisierung: Mengentheoretische Interpretation Mengentheoretisch kann jede Instanz einer Unterklasse auch als Instanz der Oberklasse aufgefasst werden: Definition: Generalisierung/Spezialisierung Seien A, B Klassen mit A, B ⊆ Ω (Objektuniversum) A ist Generalisierung von B :⇔ B ⊆ A
(Mengeninklusion, B "is_a" A) A ist Spezialisierung von B :⇔ A ⊆ B
(inverse Mengeninklusion, A "is_a" B) Eigenschaften: Die Gen/Spez.Beziehung ist reflexiv (trivial) und transitiv: A "is_a" B ∧ B "is_a" C ⇒ A "is_a" C Die irreflexive, transitive Hülle der (direkten) Ober bzw. Unterklassen beziehung heißt Vorgänger bzw. Nachfolgerbeziehung.
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 7
Generalisierung/Spezialisierung: Notation in UML Notation für einfache Gen/SpezBeziehungen: Person
Kunde
Dozent
Zusammenfassung mehrerer semantisch verwandter Gen/Spez Beziehungen: Person
Kunde
Dozent
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 8
Mehrfachgeneralisierung (1) Mehrfachgeneralisierung („Multiple Inheritance“) tritt auf, wenn eine (Unter)Klasse Eigenschaften und Verhalten von mehreren Oberklassen in sich vereinigt. Sie kann dann als Spezialisierung verschiedener Oberklassen aufgefasst werden. Mengentheoretisch ist die Unterklasse als Teil der Schnittmenge ihrer sämtlichen Oberklassen zu interpretieren. Spezialfall: Die Oberklassen sind ihrerseits überlappende Unterklassen einer gemeinsamen Ahnenklasse. In Modellen mit Mehrfachgeneralisierung bilden die Gen/SpezBeziehungen einen gerichteten, azyklischen Graphen ("Klassenheterarchie").
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 9
Mehrfachgeneralisierung (2): Beispiel
Uhr-Anzeige Stunde Minute
DigitalAnzeige 13:45
Analog-Anzeige
Anzeigengröße
Ziffernblatt Stundenzeiger Minutenzeiger
DigitalAnalog-Anzeige DigitalAnordnung
13:45
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 10
Abstrakte Klassen und Operationen (1) Eine abstrakte Klasse ist eine Klasse, zu der es keine Instanzen gibt. Abstrakte Klassen dienen als Strukturierungsmechanismus zum "Ausklammern" gemeinsamer Eigenschaften aus mehreren "ähnlichen" konkreten Unterklassen. Der so entstehende Oberbegriff ist im Regelfall eine verallgemeinerte Abstraktion ohne reale Entsprechung in der Anwendungswelt. Eine abstrakte Operation wird nur durch ihre Signatur spezifiziert und besitzt keine Implementierung. Hat eine Klasse abstrakte Operationen, so ist sie abstrakt. Eine abstrakte Operation muss in allen konkreten Unterklassen implementiert werden. Abstrakte Elemente (Klassen, Operationen) werden in UML durch kursive Schrift oder durch die Eigenschaftsspezifikation {abstract} gekenn zeichnet.
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 11
Abstrakte Klassen und Operationen (2): Beispiel
Icon {abstract} origin : Point display() {abstract} getID() : Integer
Rectangularlcon {abstract} height : Integer width : Integer
Button display()
Arbitrarylcon {abstract} edge : LineCollection isInside(p : Point) : Boolean
MyIcon display()
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 12
Redefinition von Operationen: Beispiel
Operation Buchen der Klasse Konto: Operation Buchen(Betrag : Geld) { Kontostand := Kontostand + Betrag }
redefinierte Operation Buchen der Klasse Sparkonto: Operation Buchen(Betrag : Geld) { KS := self.GetKontostand(); //Lesender Zugriff auf das //geerbte Attribut if KS + Betrag >= 0 then Konto.Buchen(Betrag); // Aufruf der geerbten Operation }
Konto Konto-Nr: int Kontostand: int Buchen (Betrag: Geld) GetKontostand(): Geld
Sparkonto
Buchen (Betrag: Geld)
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 13
Polymorphismus: Begriffsklärung Grundprinzip des Polymorphismus: Hinter dem gleichen Operationsbezeichner können sich unterschiedliche Realisierungen (Methodenimplementierungen) verbergen. Beispiele: OperatorÜberladung ("Overloading") Konstruktoren mit unterschiedlicher Signatur VererbungsPolymorphismus Prinzip des VererbungsPolymorphismus: Voraussetzungen auf seiten der Programmiersprache: Möglichkeit der Redefinition von Operationen in den Unterklassen Dynamisches Binden zur Laufzeit ("late binding") Wird eine redefinierte Operation zur Laufzeit aufgerufen, so gelangen unterschiedliche konkrete Implementierungen der Operation zur Ausführung, je nachdem, zu welcher Klasse (innerhalb der Gen/Spez Hierarchie) das Empfängerobjekt gehört. Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 14
Vererbungspolymorphismus: Beispiel
Spezifikation einer KlientenOperation, die ein Objekt der Klasse Konto aufruft:
void Barein_und_auszahlungen (Konto &object, float Zahlung) {... object.Buchen(Zahlung); ... }
Konto-Nr: int Kontostand: int Buchen (Betrag: Geld) GetKontostand(): Geld
Aufrufe der KlientenOperation:
Barein_und_auszahlungen (einKonto,300.20); Barein_und_auszahlungen (einSparkonto,-500.00);
Konto
Beim Aufruf object.Buchen(Zahlung) kommen unterschiedliche Methoden zur Ausführung, je nachdem, ob object auf ein Konto oder auf ein Sparkonto verweist.
Sparkonto
Buchen (Betrag: Geld)
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 15
Einschränkungen / Zusicherungen: Motivation und Begriffsklärung Motivation Bei der schrittweisen Präzisierung eines Klassenmodells im Rahmen der Systemanalyse und des Grob und Feindesigns stößt man immer wieder auf komplexe Zusammenhänge, die sich einer Spezifikation mit graphischen Ausdrucksmitteln entziehen. Man benötigt deshalb geeignete Möglichkeiten, um das Klassenmodell durch zusätzliche, textuell spezifizierte Einschränkungen zu ergänzen. Definition: Einschränkung (Constraint) Eine Einschränkung ist eine Bedingung bzw. ein abstraktes Prädikat, das die möglichen Inhalte, den Zustandsraum oder die Semantik eines Modellelements näher bestimmt (≅ "einschränkt"). Synonyma und verwandte Begriffe: Zusicherung (Assertion), Integritätsbedingung, Invariante, Restriktion
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 16
Einschränkungen / Zusicherungen: Typische Einsatzmöglichkeiten Einschränkungen (Constraints) werden typischerweise verwendet zur Definition von ... ... Restriktionen für zulässige Werte von Attributen ... Vor oder Nachbedingungen für Operationen ... Invarianten für Klassen, Objektlebenszyklen, .... ... Berechnungsvorschriften für → abgeleitete Elemente ... Ordnungsbeziehungen auf Mengen von Modellelementen ... Überwachungsvorschriften für Nachrichten und Zustandsübergänge ... zeitlichen Reihenfolgebedingungen
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 17
Einschränkungen / Zusicherungen: Notation in UML (1) Zusicherungen werden in UML in geschweifte Klammern gefasst: { constraint_specification } Die UML schreibt keine spezifische Syntax für Einschränkungen bzw. Zusicherungen vor. Es gibt mehrere sinnvolle Möglichkeiten, Constraints zu formulieren: natürlichsprachliche Beschreibung Prädikatenlogik Object Constraint Language (OCL) Pseudocode Die Spezifikation von Einschränkungen / Zusicherungen wird typischer weise im Laufe des Analyse/Designprozesses sukzessive präzisiert: In den frühen Phasen (Anforderungsdefinition, Analyse) kommen eher informelle Notationsformen zum Einsatz (natürl. Sprache, einfache prädikatenlogische Ausdrücke, wenn/dannRegeln) In der Designphase werden dann, soweit erforderlich, komplexere Zusammenhänge formal spezifiziert (Pseudocode, OCL). Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 18
Einschränkungen / Zusicherungen: Notation in UML (2) Einschränkungen bzw. Zusicherungen können in UML an beliebige andere Modellelemente "angehängt" werden. z.B. an Klassen, Attribute, Operationen, Assoziationen, ... Die Verknüpfung von n Modellelementen mit einer Einschränkung bzw. Zusicherung kann graphisch notiert werden ... ... im Spezialfall n = 1 durch direkte Angabe der Einschränkung „in der Nähe“ des betroffenen Modellelements; ... im Spezialfall n = 2 durch eine gestrichelte, evtl. gerichtete Kante zwischen den beiden betroffenen Modellelementen, neben der die Einschränkung notiert wird; ... im allgemeinen Fall n ≥ 1 durch Angabe der Einschränkung in einer „Notiz“ (Note), die mit allen von der Einschränkung betroffenen Modellelementen durch gestrichelte Kanten verbunden ist
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 19
Einschränkungen / Zusicherungen: Beispiele Beispiel 1: Zusicherungen für Attributwertemengen Rechteck a {a > 0} b {b > 0} kantenAendern(pA,pB) anzeigen () entfernen ()
Quadrat {a = b}
Beispiel 2: Ordnungsbeziehungen auf Aggregationen Namensliste
1
1..* enthält {geordnet:nachname}
Kunde nachname vorname
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 20
Einschränkungen / Zusicherungen: Beispiele Beispiel 3: Logische Konsistenzbedingungen für Assoziationen
projektleiter
leitet
1
Mitarbeiter
0..*
Projekt
{subsets} 0..*
1..*
projektmitglieder
hat
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 21
Einschränkungen / Zusicherungen: Beispiele Beispiel 4: Logische Konsistenzbedingungen für Assoziationen
Dozent
1..*
kann fachlich abhalten
Seminarleiter
1..*
{∀ v ∈ Veranstaltung: v.Dozenten ⊆ v.Seminartyp.Dozenten}
* Veranstaltung
1..*
entspricht *
1
Seminartyp
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 22
Einschränkungen / Zusicherungen: Beispiele Beispiel 5: Vor und Nachbedingungen von Operationen Kunde Vorname: Nachname: Funktion: Umsatz:
String String String real
... Umsatz_ermitteln (in Intervall_Beginn: date, Intervall_Ende: date): real ...
{ «precondition» Intervall_Beginn forAll (d | self.Seminartyp.Dozenten -> includes(d)) Beispiel 2: Definition einer Klasseninvariante
Context Projekt self.Projektmitarbeiter -> notEmpty AND self.Projektmitarbeiter -> includes(self.Projektleiter) Beispiel 3: Berechnungsvorschrift für ein abgeleitetes Attribut
Context Seite /self.Basisadresse = = self.Segment.Basisadresse + self.offset * self.Segment.Seitentyp.Länge Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 30
Modularisierung objektorientierter Modelle Die Komplexität großer objektorientierter Klassenmodelle wird schnell schwer beherrschbar. Strukturierung durch Modulbildung und Kapselung erforderlich Verwendung von Paketen (Packages) als Strukturierungshilfsmittel Ein Paket fasst mehrere Modellelemente (z.B. Klassen) zu einer größeren Einheit zusammen. Pakete werden aufgrund logischer und/oder physischer Zusammenhänge gebildet. Besonders geeignet sind sie zur Kapselung von separaten Bibliotheken, Subsystemen oder Schnittstellen zu Fremdsystemen.
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 31
Pakete und Paketelemente Pakete können beliebig viele, verschiedene Modellelemente enthalten. Jedes Modellelement ist einem bestimmten Paket zugeordnet, d.h. ein Modellelement kann nicht zu verschiedenen Paketen gehören. Paketelemente können nach außen sichtbar oder verborgen sein Kennzeichnung durch + (public) oder - (private). Pakete sind selbst Modellelemente, die ihrerseits Bestandteil eines Pakets sein können (⇒ Hierarchiebildung möglich) In UML werden Pakete als Karteikarten mit "Reiter" dargestellt. Paketname wird in der Karteikarte oder auf dem "Reiter" notiert Karteikarte enthält eine graphische Repräsentation der im Paket zusammengefassten Modell elemente (Klassen, Assoziationen, Schnittstellen, Pakete, ...)
Auftragsverwaltung
Auftrags verwaltung Preiskalkulation DBSchnittstelle + Auftragserfassung
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 32
Beziehungen zwischen Paketen Um die logischen und strukturellen Zusammenhänge zwischen den Paketen eines Systemmodells auf einem hohen Abstraktionsniveau zu zeigen, kann man Beziehungen zwischen Paketen spezifizieren: «import» bzw. «access» Abhängigkeit: Paket A hat Zugriff auf alle sichtbaren Modell elemente aus Paket B «use»Abhängigkeit: Paket A benutzt Modellelemente aus Paket B. «merge»Abhängigkeit: Paket B erbt und spezialisiert die Modellelemente aus Paket A (Spezialisierungsmechanismus für Pakete)
Benutzerschnittstelle «import»
«access»
Auftragsbearbeitung «import»
«access»
Preiskalkulation
Datenbank Schnittstelle «merge»
«merge»
ServerDB Schnittstelle
Lokale DB Schnittstelle
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 33
Vorgehensweisen zur Paketbildung TopDownAnsatz Eine grobe Partitionierung des Systemmodells in Pakete erfolgt bereits zu Beginn der Systemanalyse, d.h. vor der Identifikation der einzelnen Klassen. Ausgehend von der dabei gefundenen groben Paketaufteilung wird die Systemanalyse für die einzelnen Pakete separat durchgeführt. BottomUpAnsatz In einem Systemmodell, das eine kritische Größe bzw. Komplexität überschritten hat, wird durch Partitionierung in Pakete eine zusätzliche Abstraktionsebene eingeführt. Modellelemente, die in mehreren Paketen benötigt werden, werden dabei in separaten Paketen „ausgeklammert“ (→ „Faktorisierung“).
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 34
UMLDiagramme zur Klassen und Objektmodellierung Klassendiagramme Klassendiagramme dienen zur Darstellung einer Menge von semantisch zusammengehörigen Klassen sowie von deren Beziehungen untereinander. Ein Klassendiagramm liefert eine strukturelle Beschreibung des statischen Daten bzw. Objektmodells. Instanzdiagramme Ein Instanzdiagramm zeigt eine Menge von semantisch zusammengehörigen Objekten und deren Beziehungen untereinander. Ein Instanzdiagramm liefert einen "Schnappschuss" des dynamischen Systemzustands zu einem bestimmten Zeitpunkt der Systemlaufzeit. Paketdiagramme Ein Paketdiagramm zeigt eine Menge von Paketen, deren Inhalte und ihre Beziehungen zueinander. Ein Paketdiagramm liefert eine Partitionierung des Zielsystems in modulare Subsysteme und verdeutlicht deren Zusammenhänge und Abhängigkeiten. Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 35
UMLKlassendiagramme: Beispiel
Person
Bankverbindung
1..*
1
hat
Zahlungsempfänger
1
1
1..*
0..*
Bankkunde 1..*
verfügt über 1..*
ist Begünstigter
Ziel
Berechtigung
Bankkonto 1..*
0..*
Zahlungsanweisung
Einzelüberweisung 2..*
besteht aus
0..*
1 Quelle
Girokonto
Depot
Sparkonto
Dauerauftrag 1
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 36
UMLInstanzdiagramme: Beispiel eineBankverbindung KtoNr = "4711" BLZ = "76050080"
einGirokonto KtoNr = "880090" BLZ = "76050070" verfügt über
hat ist Begünstigter
einZahlungsempfänger Name = "HansMoser" ...
einBankkunde Name = "TheoLingen" ...
Ziel
Ziel
eineEinzelüberweisung Datum = "01.04.2007" ... eineEinzelüberweisung Datum = "04.05.2007" ...
ist Begünstigter
eineBankverbindung KtoNr = "4712" BLZ = "76150190"
ist Begünstigter
hat eineBerechtigung
verfügt über
Verfügung = "einzeln"
einGirokonto KtoNr = "1355455" BLZ = "76050101" einDauerauftrag
Zweck = "Miete Postweg 7" besteht aus Frequenz = "monatlich" ...
besteht aus
Quelle
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 37
UMLPaketdiagramme: Beispiel
Kontoverwaltung
«access»
Benutzerschnittstelle
GUIManager
«import» «access»
Zahlungsverkehr «import»
«access»
Dauerauftrags verwaltung
Datenbank Schnittstelle «merge»
ServerDB Schnittstelle
«access»
«merge» «access»
Lokale DB Schnittstelle
DBMS
«merge» «merge»
Server DBMS lokales DBMS «access»
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 38
Einsatz objektorientierter Klassenmodelle Objektorientierte Klassenmodelle können durchgängig in sämtlichen Phasen des Entwicklungsprozesses eingesetzt werden. Dabei wird das Klassenmodell im Verlauf des Entwicklungsprozesses typischerweise in mehreren Iterationen sukzessive immer weiter verfeinert. Typische Schritte eines iterativen OOADVorgehensmodells sind u.a.: Identifikation der relevanten Klassen und Objekte Grobe Festlegung ihrer Eigenschaften und Verantwortlichkeiten Spezifikation der semantischen Beziehungen zwischen den Klassen ... durch Assoziationen, Multiplizitäten und Rollen ... durch Generalisierungs/Spezialisierungsbeziehungen Modularisierung des Systemmodells, insbesondere durch Paketbildung Präzisierung des Systemmodells, insbesondere durch Einführung von Einschränkungen und Zusicherungen Ein ausführliches Beispiel für ein OOADVorgehensmodell folgt später! Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 39
Vor und Nachteile objektorientierter Klassenmodelle Vorteile + allgemein anerkannter „State of the Art“ der Systemmodellierung + mächtiges Konzept zur universellen Modellierung komplexer Systeme + integrierte Modellierung struktureller und dynamischer Eigenschaften + schrittweise Verfeinerung der Modellinformation durch sämtliche Phasen des Entwicklungsprozesses + Für OOA/OOD sind ausgereifte Vorgehensmodelle sowie eine allgemein akzeptierte Standardnotation (UML) verfügbar. + sehr gute Integration mit anderen Basiskonzepten (Zustandsautomaten, Aktivitätsdiagrammen, Szenarien, Interaktionsdiagrammen, ... ) + gängige CASETools bieten mächtige Werkzeuge zur objektorientierten Modellierung und Codegenerierung Nachteile
– Mächtigkeit und Komplexität der zugrundeliegenden Modellierungs –
konzepte führt u.U. zu schwer verständlichen, fehlerbehafteten Modellen mangelnde formale Fundierung erschwert Modellvalidierung
Prof. Dr. Detlef Kips • Praktische Softwaretechnik • Informatik • Universität ErlangenNürnberg • 40