Kapitel 4 - Prozess der Analyse
|
Inhalt
|
- Risikoanalyse und Modellierungshilfen
- Spezifikation
|
Wozu gibt es die Risikoanalyse und wie wird sie durchgeführt?
- Gibt es Konkurrenz?
- Welche Technologien verwenden? (web, DMBS, Languages)
- Welche Markteinflüsse beeinflussen das Projekt?
- Anzahl zu erwartender Benutzer
- Zukunftstrends einbeziehen
- Wurde das Problem vom Kunden verstanden?
- Problemdimensionierung (Transactions per time, angenommen Laufzeit für verschiedene Funktionen)
- Welche Altsysteme müssen angebunden werden?
Wie identifiziert man Systemgrenzen und Akteure?
Es gibt interne Systemgrenzen und Externe (nicht unsere Aufgabe, aber evt. Schnittstellen dazu).
Akteure ist all das, was mit dem System interagieren muss.
- Wer benutzt das System (Mensch oder System)?
- Wer wartet es?
- Wer fährt es herunter?
- Wer bekommt Infos aus dem System?
- Wer füttert es mit Daten?
- Was passiert automatisch im System?
Wie identifiziert man Anwendungsfälle? (Use Cases)
Ein Use Case beschreibt was ein Akteur machen möchte. Was passiert, was wird ausgetauscht und welche Ereignisse gibt es dabei?
Modellierungshilfen
Scenarien, UML und Klassendiagramme...
Was ist ein Szenario?
- Ist ein Spezieller Pfad durch die Use-Cases aus sicht des Users
- Primäre (Basic Path) und sekundäre Pfade (anderer nebenläufige Pfade)
- Kombiniert man alle Pfade erhält man einen Kompletten Use Case
Was ist der Umfang eines Projektes und warum ist er so wichtig?
Szenarien sollten vollständig sein, um Fehler schnell erkennen zu können.
Modellierung in UML- grundlegende Fragen
Basiert auf OO
- data-centered Methoden wie ERD, Data-Flow-Diagramme, Statusdiagramme
- strukturelle Methoden
- scenario basierte Methoden (Verhaltensanalyse)
- UML (Objektmodelle aus den Use Cases)
- UMD - Use Case Diagramm zeigt Akteure, Use Cases und die Beziehungen
- Strukurdiagramme für Klassen und Pakete (Gruppen von Klassen)
- Verhaltensdiagramme für dynamisches Verhalten und Systemaktivitäten
- Implementationsdiagramm mit Komponentendiagramm (relationen zwischen Programmeinheiten) und Deploymentdiagramm (Kommunikation zwischen Komponenten)
Fragen
- Wer sind die User des Systems? = Akteure
- Welche sind die Hauptobjekte?
- Welche Objekte werden für welchen Use Case gebraucht?
Was beschreibt man alles in einem Klassendiagramm?
- liefern die Statische Sicht der Software - Problem, da OO-Komplexität von Zusammenspiel der Methoden abhängt
- Domain Class Modellierung
- Business Modell (definiere die wichtigsten Einheiten des Systems und ihre Relationen)
- Statische Semantik (Klassenhierarchie beschreibt technische Struktur der Problemdomäne) kann auf Business Modell basieren
- Ein Klassendiagramm enthält alle Klassen und Beziehungen (Generalisierung, Assoziierung, Aggregation, Komposition) und stellt somit auch die Hierarchie dar
Wie modelliert man ein GUI (Graphical User Interface)?
- Erst wird Handbuch geschrieben, dann der Code
- Dabei werden parallel GUI's entworfen, die bei Use-Cases verwendet werden können
- Window Navigation Diagramme zeigen Relationen zwischen Fenstern
Wozu gibt es die Robustness-Analyse?
Hier werden drei Arten von Objekte eingeführt...
- Boundary Objects (Akteure welche mit System kommunizieren)
- Entity Objects (Objekte des Domänenmodells-Hauptentities)
- Control Objects (Verbinden Boundary und Entity Objekte)
- Das Robustness-Diagramm ist die Schnittstelle zwischen dynamischem und Statischem Teil eines Projektes
- Dabei gehört zum dynamischen Teil die Use Cases und Sequenzdiagramme und zum statischen das Domain Modell und das Klassendiagramm
- Durch das Robustness-Diagramm wird es einfacher den Überblick zu halten
Warum und wie konstruiert man Sequenzdiagramme?
Beschreiben, wie die Objekte zusammenarbeiten und in welchem zeitlichen Ablauf die Methoden aufgerufen werden.
Sequenzdiagramme sind mit den Klassendiagrammen konistent. Sie beziehen sich auf einen konkreten Ablauf (Szenario) eines Use Case!
Eine Alternative zu Sequenzdiagrammen sind Kollaborationsdiagramme. Sie verdeutlichen besser die Struktur des Diagrammes,
dafür ist die zeitliche Abfolge der Methodenaufrufe schlechter erkennbar als in Sequenzdiagrammen.
Was modellieren die Kollaborations- und Zustandsdiagramme?
- Kollaborationsdiagramme zeigen wie einzelnen Teile zusammenarbeiten (Struktur)
- Zustandsdiagramme (Finite State Maschine) beschreiben den Lebenszyklus eines Objektes
- Zustandsdiagramme sind dann sinnvoll, wenn sich Verhalten eines Objektes signifikant ändert
- Dabei gibt es Startzustand, Transition (Übergang) und Zielzustand im Zustandsdiagramm
Aktivitätsdiagramme sind relativ neu in UML und dienen zur Beschreibung von Abläufen und zwar nicht nur am Bsp. eines
Use Cases. Es werden vielmehr die Verhalten von Objekten in mehreren Use Cases aufgezeigt. Dabei ist Synchronistation und
Nebenläufigkeit der Aktivitäten modellierbar.
Spezifikatioen
Softwaretechnik, Software Engineering:
"Bezeichnet das geplante, systematische Vorgehen bei der
Softwareentwicklung unter Anwendung von Methoden, Verfahren
und Softwarewerkzeugen mit dem Ziel, qualitativ hochwertige
Softwareprodukte wirtschaftlich herzustellen und zu nutzen."
Welche Rolle spielen Spezifikationen in der Software-Entwicklung?
- Ist eine Referenz bei der Implementation
- Ein Produkt ist nur gelungen, wenn es sich an der Spezifikation hält
- Oft Art Vertrag zwischen Kunden und Entwickler
Welche Eigenschaften sollte eine Spezifikation haben?
- Enthält eine Beschreibung von dem, was die Implementation enthalten muss
- Spezifikation, Anforderungsspezifikation, Design Spezifikation und Modulspezifikation
- Spezifikation ist Referenzpunkt wärend der Produktwartung
Qualitätsmerkmale einer Spezifikation
- Konsistenz (keine Widersprüche)
- Komplettheit (alle benötigten Anforderungen)
- Klar und deutlich (alle benutzten Wörter erklären und definieren)
- eindeutig und verständlich
Wie unterscheidet sich eine operationelle von einer deskriptiven Spezifikation?
- Operationelle Spezifikationen beschreiben die erwünschten Verhaltensweisen
- Deskriptive Spezifikationen beschreiben die erwünschten Eigenschaften (beschreibt also das Was aber nicht das Wie)
Data Flow Diagramme beschreiben Operationen aber nicht die benutzten Datenstrukturen oder Relationen. Ein Prototyp ist ein operationales Modell
Wie formal werden Spezifikationen formuliert?
Informal (normale Sprache), semiformal (präzise Syntax aber unpräzise Semantik) oder Formal (präzise Syntax und Semantik).
Was ist die Verifikation einer Spezifikation?
- Funktionalität, Komplettheit und Konsistenz einer Spezifikation sind zu prüfen
- Überwachung des dynamischen Verhaltens des spezifizierten Systems
- Analyse der Eigenschaften des Systems
ER-Modell
Entities (Objekttypen), Beziehungen und Attribute (Objekteigenschaften)
Logische Spezifikation
- = FOT (first-order-theory bzw. prädikatenlogische Theorie erster Stufe)
- Beschreiben in Form von Formeln und Logischen Ausdrücken (Logik 1. Ordnung)
- Variablen, Konstanten, Funktionsprädikate,Quantifizierungen u.s.w.
- Immer Boolsches Ergebnis
- Pre- und Postconditions
- Vorteil ist, wenn Logische Spezifikation korrekt sind auch alle Ableitungen davon korrekt
Quelle: Uni Münster
Logisches Prototyping - Methoden, Probleme
- Interpreter für Operationale Spezifikation
- Damit aber nur das Verhalten prüfbar und nicht die Eigenschaften
- Besser logische Sprache wie Prolog umd FOT zu approximieren
Algebraische Spezifikation - wie beschreibt man die Syntax?
Elemente (Char, Nat, Bool) und Operationen (Funktionen der Algebra wie new, append, add, lenght, isEmpty...)
Eine algebraische Spezifikation ist die operationale Modellierung auf der Grundlage einer Algebra.
Bsp: Algebraische Spezifikation eines Stacks
Quelle: Uni Zürich
Algebraische Spezifikation - wie beschreibt man die Semantik?
Axiome der Algebra, welche immer Wahr sein müssen.
Algebraische Spezifikation - Probleme
Unvollständig, Überspezifizierung, Widersprüchlich, Redundanz
|
|
|
|
|
| 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
|
|
|
|
|
|
|