Kapitel 3 - Analyse und Spezifikation
- Strukturierte Analyse
- Prozessspezifikation
- Prozesspezifikation und Petri-Netze
- OO Analyse
|
SE als Ingenieurarbeit (ingenieurgemäßes Herangehen):
- Definiere klar das Problem, das es zu lösen gilt.
- Entwickle Standardwerkzeuge, -technologien und -methodologien, um das
Problem lösen zu können
-
Funktionsmodellierung: Datenflussdiagramme, Data
Dictionary,Prozessspezifikationen
-
Datenmodellierung: ER-Modell
-
Ereignismodellierung: Endliche Automaten, Petri-Netze
Ziele, Struktur und Prozess der Analyse
- Ziel ist es herauszufinden, was das eigentliche Problem ist
- möglich ist eine strukturierte (top-down Analyse eines
Prozesses) oder OO-Analyse (buttom-up Analyse eines Objektes)
- Anforderungsanalyse (Machbar?, Kosten, Aufwand etc.)
Folgende Punkte gehören zur Analyse:
- Spezifikation der Hauptziele
- Informationsquellen beschaffen
- Anforderungsanalyse
- Abgrenzung des Problembereiches
- Festlegung der Beteiligten
- Inhaltsbeschreibung
- Use Cases erstellen
- Prioritäten festlegen
- alternative Lösungen suchen
- Empfehlungen vergeben
Erfassung der Anforderungen
- Anforderungen werden in natürlicher Sprache festgehalten
- User Manuals gehen aus Spezifikation hervor
- System Testpläne sollten von Spezifikation abgeleitet werden
- Blue Box Tests (Test auf Spezifikationen, da noch kein Code)
Kategorien von Anfroderungen
-
funktionale: Was soll das neue System leisten?
-
qualitative: Qualitätsfaktoren, die durch zu erfüllen sind
-
operationelle: zu erwartende Bedingungen beim praktischen
Einsatz
Phasen der Analyse
1. Ist-Analyse:
- Finden der Anforderungen
- Kenntnisse des existierenden Systems sammeln
- Kundenwünsche präzisieren
2. Soll-Konzept:
- Analysieren der Anforderungen
- Kenntnisse analysieren
2 Verfahren: Strukturierte und Objektorientierte Analyse
Strukturierte Analyse
- Strukturierung durch wiederholtes Zerlegen in Bestandteile geringerer
Komplexität, bis elementare Bestandteile gefunden wurden, welche eindeutig und
vollständig beschrieben werden können (Top-Down Analyse)
- Startet mit Verhaltensanalyse der Prozesse
- Dabei werden Funktionen in Gruppen aufgeteilt
- Resultat ist Hierarchie von Funktionen
- Datenflussdiagramme, Data Dictionary, Prozessbeschreibung
modifizierte strukturierte Analyse:
-
Funktionsmodellierung: statische Eigenschaften des
Systemverhaltens (Datenflussdiagrammen, Data Dictionary,
Prozessspezifikationen)
-
Datenmodellierung: Eigenschaften der Daten und ihre
semantischen Beziehungen
-
Ereignismodellierung: dynamische Eigenschaften des
Systemverhaltens
Datenflussdiagramm - Konstruktion, Vorteile, Nachteile
- Zeigt wie Daten sich im System bewegen und wo sie Änderungen hervorrufen
- Top-Down Modell (iterative Dekomposition)
- ist Modell der Systemfunktionalität als gerichteter Graph
- Steuerung des Ablaufs nicht ersichtlich
Konsistenz eines Datenflussdiagramms
-
Prozessbeschreibung (jede Funktion ist beschrieben)
-
Data Dictonary (alle Datentypen und Datenflüsse sind
definiert)
-
Balanciertes DFD (I/O Datenflüsse des Vaterprozesses sind dem
Kind-DFD bekannt)
Was steht alles in einem Datenkatalog?
- Zentraler Ort, wo alle Informationen über Datentypen und ihre
Transformationengespeichert sind
- Case Tools prüfen ob diese identisch sind
- Alle Eigenschaften der Daten sind im DD aufgelistet
- Data Elements sind gruppiert in Data Flow Records (Name, Record,
Source,Destination, Description)
- Enthält Infos über Prozesse, externe Entities und alle Records
Termine = Datum + Anfang + Ende + Status + Zweck
Anfang = Zeit
Zeit = Stunde + Minute
Datum = Tag + Monat + Jahr
Adresse = PLZ + Ort + Strasse
Gruppendaten = Gruppenname
Optionen = {Farbe + Terminart}
Minute = Ziffer + Ziffer
Mitarbeiter_ID = Ziffer + Ziffer
Nutzername = {Zeichen}
Passwort = {Zeichen}
Nachricht = {Zeichen}
PLZ = {Ziffer}
Prozessspezifikation
Wie beschreibt man Prozesse in der strukturierten Analyse? Für alle
elementaren Prozesse werden Prozessspezifikationen angefertigt.
elementarer Prozess:
Prozess auf der untersten Ebene der Prozesshierarchie, welcher nicht mehr weiter
verfeinert wird (Blatt des Hierarchiebaums)
vier Möglichkeiten der Beschreibung
- strukturierte Sprache (Pseudo-Code)
- Entscheidungstabellen
- endliche Automaten
- logische Spezifikation
Was ist eine Entscheidungstabelle?
- Falls Condition wahr dann mache dies (quadratische Möglichkeit der Belegung)
- kompakte und übersichtliche Darstellung von vorzunehmenden Aktionen oder
Handlungen, die von der Erfüllung oder Nichterfüllung mehrerer Bedingungen
abhängen
vier Komponenten:
-
Bedingungen: logische Ausdrücke
-
Aktionen: semantische Einheiten, werden später durch
entsprechende Programmabschnitte implementiert
-
Regeln: Eine Regel bezeichnet eine Kombination von Bedingungen
-
Aktionsanzeiger: Ein Aktionsanzeiger repräsentiert eine
Zuordnung zwischen einer Regel und einer Auswahl von Aktionen, die bei
Gültigkeit der Regel durchgeführt werden
Was modelliert man mit einem endlichen Automaten, wie und warum?
-
Kontrollaspekte, bei denen ein System verschiedene Zustände
aufweist
- für Modellierung eines Kontrollflusses geeignete hypothetische Maschine, die
Reaktionen (Aktionen) eines Prozesses auf eintretende Ereignisse beschreibt
Darstellungsmöglichkeiten
- Zustandsdiagramm
- Zustandstabelle
- Zustandsmatrix
Endliche Automaten - Grenzen des Einsatzes, Vorteile, Nachteile
- Wird schnell zu komplex wenn zu viele Zustände
- Bei 20 Zuständen schon 1 Million verschiedene Belegungen möglich
- Manchmal hängt eine Aktion von mehreren Zuständen ab und nicht nur von einem
- Synchronisation nur schwer möglich (z.B. Erzeuger-Verbraucher Problem)
Petri Netze
Ist ein für Modellierung eines Systems konkurrierender/kooperierender
Prozesse geeignetes Werkzeug.
Problem der Synchronisation und Petri-Netze
Marken repräsentieren den Kontrollfluss, sind jedoch anonym und deshalb ist
der Inhalt der Marke unbekannt.
Bsp.:
Eine Marke in einem Puffer beschreibt das Vorhandensein einer Nachricht, aber
nicht, ob diese wohl formuliert ist oder nicht. So kann eine Auswahl auf Basis des
Inhalts der Marke nicht durch das Petri-Netz beschrieben werden, wenn mehrere
Transitionen geschalten werden können.
Desweiteren ist keine Beschreibung von Prioritäten oder auch Zeitbeschränkungen
möglich.
Bsp.: Wenn länger als eine Sekunde gewartet wird, soll eine Meldung generiert
werden
Konstruktion eines Modells mit einem Petri-Netz
- Input Place -> Übergang (Transition) -> Output Place
- Marken werden zur Synchronisation verwendet
Darstellungselemente:
-
Stelle: Zustand eines Prozesses; repräsentiert eine Bedingung
-
Transition: gesteuerter Zustandsübergang; modelliert ein
Ereignis, welches durch das Schalten ("Feuern") der Transition ausgelöst wird
-
Pfeil: zwischen Stelle und Transition und umgekehrt
-
Marke: ihre Anwesenheit in allen vor einer Transition
liegenden Stellen ist die notwendige Bedingung, dass die Transition schalten
(feuern) kann
Mutual Exclusion ist mit Petri Netzen einfach umsetzbar, dafür sind aber
Deadlocks möglich...
Warum und wie werden Petri-Netzen erweitert?
- Marken werden durch Werte repräsentiert
- Transitionen sind Prädikate zugeordnet, die sich auf die Werte der Marken der
Eingabestellen beziehen und den Übergang mitbestimmen (Transitionen können nur
noch beim Vorliegen bestimmter Marken schalten)
- Transitionen sind Funktionen zugeordnet, die aus den Werten der Marken der
Eingabestellen die Werte der Marken der Ausgabestellen berechnen
- Spezifikation von Prioritäten, wenn mehrere Transitionen geschalten werden
können
OO Analyse
"Im Mittelpunkt stehen Objekte, welche Abbilder von Real-Welt- Objekten des zu
analysierenden Problembereichs darstellen. Jedes Objekt besitzt eine eindeutige
Identität (Objektidentität), bestimmte Eigenschaften (Attribute) sowie ein
bestimmtes Verhalten (Methoden). Die Objekte kommunizieren miteinander durch das
Senden von Botschaften. Wie ein Objekt auf erhaltene Botschaften reagiert, wird
jeweils durch die in ihm vorhandenen Methoden definiert. Weitere wichtige
Konzepte der OOA sind u.a.: Klasse, Datenkapselung, Vererbung und Polymorphismus
(überladen)."
Objektorientierte Analyse
- Startet mit der Analyse der Objektstruktur
- Funktionalitäten wird in Klassen gruppiert und gekapselt
-
Buttom-Up Analyse
- Objekt-Orientiertes Design benutzt ein konkretes HW und SW System,
Architektur,Sprache und OO Lib
Konzepte der objektorientierten Programmierung
- Kapselung, Klassen, Nachrichten, Methoden, Vererbung, Überschreiben,Überladen
von Funktionen
- Assoziation modelliert Beziehungen zwischen Objekten einer oder mehrerer
Klassen
- Aggregation ist Sonderform der Assoziation, bei der die Objekte der
beteiligten Klassen keine gleichwertige Beziehung führen, sondern eine
Ganzes-Teile- Hierarchie darstellen (beschreibt, wie sich etwas Ganzes aus seinen
Teilen zusammensetzt = part_of)
- Klassen können abgeleitet werden und daraus Objekte erstellt werden
- Statisches Binden (Code verbunden über Zeiger, Adressen von Methoden zur
compilierzeit festgelegt) oder dynamisches Binden (Adressen der Methoden erst zur
Laufzeit ermittelt - virtual Ausdruck notwendig, um Compiler zu zeigen, welches
Objekt gemeint ist wenn mehrere polymorphe vorhanden, da erst zur Laufzeit über
Zeiger verbunden wird)
Schritte der objektorientierten Analyse
- Initial problem statement (Ziele, Interface, Technische Aspekte, Features)
- Objektidentifikation, Klassenidentifikation mit Attributen,
Beziehungsmodellierung
- Klassenhierarchie (Aggregationen und Assoziationen) definieren und
Beschränkungen (constraints) festlegen
- Methoden und Dienste definieren, Funktionalität und OO-Schema definieren
Grammatische Inspektion
- Die Dokumente der Spezifikation werden grammatikalisch geparst
- Substantive werden Objekte, also Klassen (Objekte mit gemeinsamen
Eigenschaften)
- Verben stellen später Methoden der Klassen dar oder auch Beziehnungen
- Und Adjektive sind Attribute von Objekten
Modellierung von Beziehungen
- Stellen semantische Relationen zwischen Objekten dar
-
Aggregation (Is Teil von) um Hierachien zu erzeugen
-
Spezialisierung/Generalisierung (Is-A Beziehung,d.h.
Vererbung)
- Message-Flow-Structur (Sender und Empfänger für Nachrichten)
Modellierung von Restriktionen (Constraints)
Einschränkungen die zu den Klassen definiert werden (Max-Werte oder
Min-Werte...)
|
|
|
|
|
|
Kapitel 1
|
Einleitung
|
|
Einführung, Geschichte...
|
|
Kapitel 2
|
Eigenschaften
|
|
Filtern und Trennen, Modularisierung...
|
|
Kapitel 3
|
Strukturierte Analyse
|
|
Strukturierte und OO-Analyse, Petri-Netze
|
|
Kapitel 4
|
Spezifikation
|
|
Risikoanalyse, Modellierungshilfen, Spezifikationen
|
|
Kapitel 5
|
Entwurfsprozess
|
|
Entwurf, DFD, Tests, UI...
|
|
Kapitel 6
|
Prozessmodelle
|
|
Softwarekrise, Lebenszyklusmodelle...
|
|
Kapitel 7
|
CASE und PM
|
|
CASE, Projektmanagement...
|
|
Kapitel 8
|
Software-Metriken
|
|
Softwarequalität, Entwurfsmetriken...
|
|
Kapitel 9
|
Programmierungskonzepte
|
|
Legacy Systeme, Reengineering...
|
|
|
|
|
|
|
Quellen:
|
Petr Kroha
Softwaretechnologie
|
Prof. Kroha
Vorlesungsskript
|
L. Rosenhainer
Vorlesungsskript
|
Word Wide Web
Verschiedenste Seiten
|
|
|
|
|