Software Engineering

Zusammenfassung

 

Softwareengeneering <--- ---> Softwareengeneering Part2

Inhaltsverzeichnis:

1 Software-Engineering...................................................................................................................... 4

1.1  Phasen der SW-Entwicklung...................................................................................................... 4
1.2  OO SW-Entwicklung.................................................................................................................. 4
1.3  Phasen der Booch-Methode........................................................................................................ 4
1.3.1   Anforderungsanalyse:........................................................................................................ 4
1.3.2   Domain-Analyse............................................................................................................... 4
1.3.3   Systementwurf.................................................................................................................. 4
1.3.4   Evaluation........................................................................................................................ 4

2 Anforderungsanalyse (AA)............................................................................................................... 5

2.1  Qualitätsmerkmale einer Anforderungsspezifikation....................................................................... 5
2.2  Musterinhaltsverzeichnis für Anforderungsspezifikation.................................................................. 6
2.3  Qualitätsmerkmale von Software................................................................................................. 6
2.4  Schlüsselmechanismen (use cases)........................................................................................... 6
2.4.1   Use Case Modell.............................................................................................................. 6
2.4.2   Beschreibung eines Use Cases.......................................................................................... 6

3 Domain-Analyse (DA)....................................................................................................................... 7

3.1  Dokumentation der Domain-Analyse............................................................................................ 7
3.2  Objekte und Klassen finden........................................................................................................ 7
3.2.1   Beschreibung von Klassen................................................................................................. 7
3.2.2   Zustandsdiagramm für Klassen.......................................................................................... 7
3.3  Beziehungen finden.................................................................................................................... 8
3.3.1   Assoziation (gleichrangige Beziehung)................................................................................ 8
3.3.2   Aggregation (Ganzes und Teile).......................................................................................... 8
3.4  Methoden definieren – What I do................................................................................................. 8
3.4.1   Implizite Methoden............................................................................................................ 8
3.5  Hinweise für Objektszenarios...................................................................................................... 8
3.6  Attribute definieren - What I Know............................................................................................... 9
3.7  Vererbung definieren.................................................................................................................. 9

4 System Design SD ............................................................................................................ 9

4.1  Prinzipien ........................................................................................................................... 9
4.2  Qualitätskriterien der Modularisierung........................................................................................ 10
4.2.1   Kopplung .................................................................................................................... 10
4.2.2   Kohäsion ........................................................................................................ 10
4.3  Gliederung des Entwurfs .......................................................................................... 10
4.3.1   Architekturentwurf ......................................................................................... 10
4.3.2   Subsystementwurf ......................................................................................... 11
4.3.3   Detailentwurf ................................................................................................. 11
4.4  Entwurfsdokumentation .......................................................................................... 11
4.5  Releaseplan .......................................................................................................... 12

5 Evolution ........................................................................................................................ 12

5.1  Dokumentation der Implemetation.............................................................................................. 13
5.2  Test und Integration ................................................................................................. 13
5.2.1   Testkategorien ................................................................................................ 13
5.2.2   Testebenen .................................................................................................... 14
5.2.3   Testmethoden ................................................................................................. 14

6 Projektmanagment und Qualitätssicherung .................................................................. 15

6.1  Projektmanagement PM ......................................................................................... 15
6.2  Qualitätssicherung QS ............................................................................................ 16
6.2.1   Was ist Softwarequalität.................................................................................................. 16
6.3  Konfigurationsmanagement KM ............................................................................. 16

7 Phasen- und Prozessmodelle der SW-Entwicklung........................................................................ 16

7.1  Das Wasserfallmodell ............................................................................................. 17
7.2  Das V-Modell ......................................................................................................... 17
7.3  Generell über Vorgehensmodelle ............................................................................. 17


1     Software-Engineering

Software-Engineering ist die Anwendung eines systematischen, disziplinierten und messbaren Verahrens in der Entwicklung, dem Betrieb und der Wartung von Software, d.h. Software-Engineering ist die Anwendung von Engineering auf Software.

Gründe für ein Modell:                    - Modelle sind Kommunikationsmittel!
- Ein Modell hilft, Fehler und Lücken in den Anforderungen zu finden! Je später im Entwicklungsprozess ein Fehler gefunden wird, desto teurer.
Eigenschaften von Modellen:       - Ein Bild sagt mehr als tausend Worte. Grafiken vermitteln schnell  Übersicht.
- Modelle erlauben, ein System in Teile zu gliedern (Überblick)

- Modelle verwenden Regeln. (Syntaxregeln, Semantische Regeln)

1.1     Phasen der SW-Entwicklung

-   Analyse à Anforderungsspezifikation, Projektplan
-   Systementwurf à Systementwurfsbeschreibung
-   Detailentwurf à Detailentwurfsbeschreibung
-   Implementation à Ausgetestete und dokumentierte Komponenten bzw. Subsysteme
-   Integration, Systemtest à Verifiziertes und validiertes Softwareprodukt
-   Wartung à Betriebsfähiges Softwareprodukt

1.2     OO SW-Entwicklung

OO SW-Entwicklung: es gibt nur ein Modell. Entwicklungsvorgehen nicht sequentiell, sondern iterativ.
Das iterative Vorgehen ermöglicht, folgende Aspekte früh zu beurteilen:
- Eignung des Entwurfs.                                                    - Identifikation von Risikobereichen.
- Akzeptanz beim Kunden                                                 - Gültigkeit von Aufwandabschätzungen und Terminen

1.3     Phasen der Booch-Methode

1.3.1     Anforderungsanalyse:

Die AA legt die Anforderungen an das System so fest, dass sie als Vereinbarung zwischen Auftraggeber und SW-Ersteller dienen können.

1.3.2     Domain-Analyse

Die DA modelliert den Problembereich entsprechend den in der Anforderungsspezifikation enthaltenen funktionalen Anforderungen in einem formalen, grafischen OO-Modell. Das Domainmodell enthält die essentielle, logische Struktur des Systems.

1.3.3     Systementwurf

Der Systementwurf legt die Architektur fest und wie das realisiert wird.

1.3.4     Evaluation

In der Evaluation wird das System in Schritten (evolutionäre Prototypen) vollständig implementiert.

2     Anforderungsanalyse (AA)

Die AA ist zweiteilig:                   1. Sich mit dem Problembereich vertraut machen. (PA)
                                                        2. Anforderungen spezifizieren. (AS)
Ziel:                                                siehe 1.3.1
Ergebnisse:                                   - Anforderungsspezifikation (AS) mit Schlüsselmechanismen
- (vorläufiger) Projektplan
Eigenschaften der AS:                Anforderungen sollen nur festlegen, was für Eigenschaften das Produkt haben soll und nicht, wie diese Eigenschaften realisiert werden. Um das Was auszudrücken sind Black-Box-Beschreibungen geeignet. Bei komplexen Zusammenhängen ist eine White-Box sinnvoll.

2.1     Qualitätsmerkmale einer Anforderungsspezifikation

Korrektheit

·       Jede Anforderung ist eine Anforderung die mit der Software erfüllt wird.

Eindeutigkeit

·       Jede Anforderung hat nur eine Interpretation (Problem mit natürlicher Sprache)
·       Begriffsdefinitionen, Glossar wichtig

Vollständigkeit

·       Nicht nur funktionale Anforderungen
·       Verhalten in allen möglichen Situationen (z.B. unzulässige Eingabedaten)
·       Struktur nach Norm mit durchgehender Numerierung (auch Figuren, etc.)

Konsistenz

·         Nicht verschiedene Begriffe für gleiche Objekte, Sachverhalte
·         Keine widersprechende Anforderungen

Mit Gewichtung versehen, bez. Wichtigkeit/Stabilität

·         Wichtigkeit: Muss- / Soll- / Wunschanforderungen
·         Stabilität: Erwartete Änderungen

Überprüfbarkeit

·         Jede Anforderung überprüfbar (z.B. nicht einfach "benutzerfreundlich")
·         Keine schwammigen Formulierungen (wie z.B. "normalerweise")
·         Keine Anforderungen wie "fehlerfrei" (lässt sich nicht nachprüfen)

Änderbarkeit

·         Struktur, Inhaltsverzeichnis, Glossar, Querverweise
·         Vorsicht mit Redundanz (Querverweis).
·         Leistungsfähiges Dokumentationswerkzeug und Verfahren.

Verfolgbarkeit

·         Jede Anforderung muss eindeutig referenzierbar sein
·         Rückverfolgbarkeit auf Quelle jeder Anf.
·         Vorwärts-Verfolgbarkeit zur Realisierung jeder Anforderung

2.2     Musterinhaltsverzeichnis für Anforderungsspezifikation


1.         Einführung
1.1.    Zweck des Dokumentes
1.2.     Gültigkeitsbereich
1.3.     Definitionen, Akronyme, Abkürzungen
1.4.     Referenzen
1.5.     Übersicht des Dokumentes

2.         Allgemeine Beschreibung
3.         Anforderungen im Einzelnen
3.1.     Funktionale Anforderungen
3.1.1.         Funktionale Anforderungen 1
3.1.1.1.          Einführung
3.1.1.2.          Eingaben
3.1.1.3.          Verarbeitung
3.1.1.4.          Ausgaben
3.1.2.         Funktionale Anforderungen 2
...
3.2.     Anforderungen an externe Schnittstellen
3.2.1.         Benutzerschnittstelle
3.2.2.         Hardware Schnittstellen

3.2.3.         Software Schnittstellen
3.2.4.         Kommunikationsschnittstellen
3.3.     Leistungsanforderungen
3.4.     Mengenanforderungen
3.5.     Randbedingungen für den Entwurf
3.5.1.         Übereinstimmung mit Normen
3.5.2.         Einschränkungen bez. HW
...
3.6.     Merkmale
3.6.1.         Sicherheit
3.6.2.         Wartbarkeit
...
3.7.     Andere Anforderungen
3.7.1.         Datenbank
3.7.2.         Betrieb
3.7.3.         Anpassungen an lokale Installationen
...
Anhänge
Index

2.3     Qualitätsmerkmale von Software

·       Funktionalität:            Angemessenheit, Richtigkeit, Interoperabilität, Ordnungsmässigkeit, Sicherheit

·       Zuverlässigkeit:         Reife, Fehlertoleranz, Wiederherstellbarkeit

·       Benutzbarkeit:            Verständlichkeit, Erlernbarkeit, Bedinbarkeit

·       Effizienz:                      Zeitverhalten, Verbrauchsverhalten

·       Änderbarkeit:             Analysierbarkeit, Modifizierbarkeit, Stabilität, Prüfbarkeit

·       Übertragbarkeit:         Anpassbarkeit, Installierbarkeit, Konformität, Austauschbarkeit

2.4     Schlüsselmechanismen (use cases)

Eine verhaltensmässig zusammenhängende Folge von Transaktionen (transaction), die von einem System angeboten werden und einem Aktor (actor) einen messbaren Nutzen bringen.

Aktor:                   Eine Rolle (oder eine Menge von Rollen), die jemand oder etwas in der Umgebung des Systems in Zusammenhang mit dem System spielt. Ein Aktor liegt ausserhalb des zu beschreibenden Systems.

Transaktion:       Eine Folge von Aktionen, die entweder als Ganzes oder gar nicht durchgeführt werden. Eine Transaktion wird durch ein Ereignis gestartet. Ein Ereignis wird durch einen Aktor oder durch das Erreichen eines Zeitpunktes ausgelöst.

2.4.1     Use Case Modell

Das Use Case Modell besteht aus: Aktor, Use Case, Zusammenhang zwischen Aktor und Use Case, Beschreibung des Use Case. Das Use Case Modell ist ein externes Modell, es beschreibt nur das was von aussen aus dem Blickwinkel der Aktoren sichtbar ist.

2.4.2     Beschreibung eines Use Cases

·Auslösender Aktor und auslösendes Ereignis
·Grundlegender Ablauf
Ø     Aktion 1
Ø     Aktion 2
Ø     ...
Ø     Aktion n
·Alternative Abläufe für Spezialfälle, Fehlerbedingungen
·Vorbedingungen und Nachbedingungen

3     Domain-Analyse (DA)

Ziel:                                                siehe 1.3.2
Ergebnisse:                                   Klassendiagramme (statische Sicht des Problembereichs), Klassenspezifikationen
(evtl. mit Zustandsdiagramm), Objekt-Szenario-Diagramme bzw. Interaktionsdia-gramme (dynamische Sicht der Systemfunktionalität).

Schritte der DA:                         

·         Objekte und Klassen finden, welche die Schlüsselabstraktionen des Problembereichs bilden.
·         Beziehungen zwischen den Klassen finden, d.h. Assoziationen und Aggregationen.
·         Methoden definieren.
·         Attribute festlegen.
·         Generalisierungen und Spezialisierungen finden: Vererbung festlegen.

3.1     Dokumentation der Domain-Analyse

1.1.1.1.1      Aggregation ag
1.1.1.2 Benutzt Beziehung
1.1.1.2.1      Benutzt Beziehung b1
1.2   Assoziationen
1.2.1   Assoziation as1

2.       Das dynamische Modell – die Schlüsselmechanismen (use cases)
2.1   Das Use Case Modell
2.2   Zusammenhang der Use Cases
2.3   Beschreibung der Use Cases
2.3.1   Use Case 1
2.3.1.1 Allgemeine Beschreibung
2.3.1.2 Normalfall
·    Interaktionsdiagramm
·    Ablaufbeschreibung (Skript)

3.3.2.3 Alternative 1
3.3.2.4 Fehlerfall 1

3.     Einführung
3.1   Zweck des Dokumentes
3.2   Gültigkeitsbereich
3.3   Definitionen und Abkürzungen
3.4   Referenzen

4.      Das statische Modell – die Klassenstruktur
4.1   Klassendiagramm
·   Klassendiagramm
·   2-3 Zeilen Kurzbeschreibung pro Klasse
4.2   Klassenspezifikation
4.2.1   Klasse K1
4.2.1.1 Beschreibung von K1
4.2.1.2 Methoden von K1
4.2.1.2.1      Methode m1()
4.2.1.3 Attribute von K1
4.2.1.3.1      Attribut a1
4.2.1.4 Teile

 

3.2     Objekte und Klassen finden

·         Suchen nach Strukturen

·         Andere Systeme mit denen das System zusammenarbeitet

·         Geräte: Mit welchen externen Geräten tauscht das System Informationen aus?

·         Ereignisse: Welche Dinge oder Ereignisse müssen erinnert werden?

·         Rollen: über welche Personen bzw. Rollen von Personen verwaltet das System Informationen? (in der Regel keine Aktoren, ausser das System muss etwas über sie erinnern.)

·         Orte: Muss das System Orte kennen, z.B. Standorte von Geräten, seinen eigenen Standort?
·         Organisatorische Einheiten: Zu welchen Organisationen gehören die Personen?

3.2.1     Beschreibung von Klassen

Die Beschreibung von Klassen enthält den Namen der Klasse, die Definition, die Randbedingungen, Attribute, Methoden, eventuell Zustandsdiagramm der Klasse und die Datentypen der Attribute.

3.2.2     Zustandsdiagramm für Klassen

Zeigen Objekte ein zustandsabhängiges Verhalten wird dies in einem Zustandsdiagramm modelliert:

Zustandsabhängiges Verhalten heisst:

·         Dass ein Methodenaufruf je nach Zustand eine andere Wirkung zeigt oder
·         Dass ein Methodenaufruf nur in bestimmten Zuständen zulässig ist.

3.3     Beziehungen finden

3.3.1     Assoziation (gleichrangige Beziehung)

·         Welche anderen Objekte muss ein Objekt einer Klasse kennen?
·         Von welchen andern Objekten benötigt das Objekt Dienstleistungen, bzw. von welchen anderen Objekten benutzt es Methoden?

3.3.2     Aggregation (Ganzes und Teile)

·         Teile die zu einem Ganzen zusammengesetzt sind. (Assembly-Part Pattern)
·         Teile die sich in einem Ganzen (in einem Container) befinden. (Container-Content Pattern)
·         Mitglieder einer Ansammlung von Dingen. (Group-Member Pattern)

by value:         Teile existieren nur mit seinem Ganzen.
by referenz:    Teile können auch ohne Ganzes existieren.

3.4     Methoden definieren – What I do

Um Methoden zu finden sind die Schlüsselmechanismen auszuführen, dabei werden die erf. Methoden ersichtlich.

-   "Do iIt Myself" Strategie: Was mit realen Objekten getan wird, tun Software-Objekte selbst. Z.B. Einzahlen auf ein Bankkonto-Objekt. Ausnahme Simulationssoftware.
-   "Put Services With The Attributes They Work On" Strategy.
-   "Placing Services" Strategy: Collection-Objekte bearbeiten ihre eigenen Attribute. Collection-Objekte verlangen in der Regel einen Service und nicht nur Datenwerte von ihren Worker-Objekten.
-   "Service in The Smallest Applicable Container" Strategy.

3.4.1     Implizite Methoden

Implizite Methoden werden erst im Entwurf untersucht.

·         Erzeugen und initialisieren von Objekten       

·         Verbinden von Objekten

·         Zugriff auf Attribute
·         Löschen von Objekten

3.5     Hinweise für Objektszenarios

-   "Don’t Ask What Kind?" Strategy: Man soll nicht ein Objekt fragen, was für eine Art von Objekt es ist und abhängig von der Antwort von ihm einen entsprechenden Service verlangen. Statt dessen sollten entsprechende Spezialisierungen des Objektes geschaffen werde, so dass das Objekt selbst weiss, was zu tun ist.

-   "Search Then Interact" Strategy: Wenn auf ein Objekt über mehrere Objektverbindungen zugegriffen werden muss: Zuerst das Objekt suchen, dann direkt von ihm den gewünschten Service verlangen. So werden die dazwischenliegenden Objekte einfacher.

-   "Act, Rather than Poll" Strategy.

-   "Get Values Only When You Need Them" Strategy: Übergebe nicht einzelne Werte (Attribute) als Parameter, sondern das ganze Objekt. Hole die Werte erst aus dem Objekt, wenn sie gebraucht werden.


3.6     Attribute definieren - What I Know

Um Attribute zu identifizieren, kann man folgende Fragen stellen:

·       Was muss ein Objekt einer Klasse wissen?
·       Aus der Sicht eines Objektes fragt man:
Ø     Wie werde ich im Kontext der Verantworung des Systems beschrieben?
Ø     Was muss ich wissen?
Ø     Welche Zustandsinformation muss ich erinnern?
Ø     In welchen Zuständen kann ich sein?
·       Man wähle natürliche Attribute: einzelne Daten (z.B. AHV-Nummer) oder eng zusammengehörige Daten (z.B. Adresse).

3.7     Vererbung definieren

·       Jede Klasse betrachte man als Verallgemeinerung und suche potentielle Spezialisierungen.
·       Jede Klasse betrachte man als Spezialisierung und suche potentielle Verallgemeinerungen.
·       Klassen mit mehreren gleichen Attributen können Spezialisierungen der gleichen Verallgemeinerung sein.
·       Klassen mit mehreren gleichen Operationen können Spezialisierungen der gleichen Verallgemeinerung sein.
·       Treten alle Attribute und Operationen einer Klasse auch in einer anderen auf, kann diese eine Spez. der ersten sein.

4     System Design SD

Das SD definiert, wie das Domainmodell und die Schlüsselmechanismen implementiert werden. Ausserdem legt es die Architektur des Softwaresystems fest.

è Klassenkategorien–Diagramm

è Architekturbeschreibung

è Entwurfs–Klassendiagramme

è Vollständige–Klassenspezifikationen

è Entwurfs–Objektszenario–Diagramme

4.1     Prinzipien

1

Architektur mit loser Kopplung und hoher Kohäsion der Strukturelemente.

Lose Kopplung erreicht man z.B. mit einer Schichtenarchitektur. Die Schichten selbst können auch in Subsysteme unterteilt werden, welche lose gekoppelt sind, aber eine hohe Kohäsion aufweisen. Subsysteme können auch durch Klassenkategorien modelliert werden. Die grösste Kohäsion weisen Systemteile auf, die nur einer einzigen Funktion dienen.

2

Domainmodell und implementationstechnische Aspekte trennen.

Implementationstechnische Systemteile, wie z.B. Benutzerschnittstelle, Datenverwaltung und Betriebssystemaufrufe, sollten vom Domainmodell getrennt werden. è bessere Verständlichkeit und Wartbarkeit.

3

Jede Entwurftsentscheidung in einer Klassenkategorie kapseln.

Sind die einzelnen Implementationstechnologien in verschiedenen Klassenkategorien isoliert, so können sie ausgetauscht werden, ohne dass der Rest des Systems beeinflusst wird.

4

Iterative Entwicklung (Entwurf und Implementierung) einer Folge von Prototypen oder Releases.

Es ist schneller eine lauffähige Version verfügbar. Es können zuerst die mit grossen Unsicherheiten behafteten Teile realisiert werden, so kann das Risiko mit jedem Release reduziert werden. Der Benutzer kann rasch ein Feedback geben.

5

Entwurf für Wiederverwendbarkeit.

Wiederverwendbarkeit ist ein wichtiges Qualitätsmerkmal von Software.

4.2     Qualitätskriterien der Modularisierung 

Eine gute Struktur zeichnet sich aus durch gute Wartbarkeit und hohe Wiederverwendbarkeit.

4.2.1     Kopplung

Kopplung ist der Grad der Abhängigkeit zwischen Modulen.

4.2.2     Kohäsion

Kohäsion ist der Grad der funktionellen Zusammengehörigkeit der Elemente eines Moduls. Die Kohäsion eines Moduls soll möglichst hoch sein. Folgende Tabelle zeigt verschiedene Stufen mit abnehmender Kohäsion.

4.3     Gliederung des Entwurfs

4.3.1     Architekturentwurf

Im Architekturentwurf geht es darum, über die einzusetzende Technologie (SW–Bausteine) zu entscheiden, das heisst, das System in einzelne Subsysteme zu unterteilen und die Schnittstellen zwischen den Subsystemen (Exportklassen) zu definieren.

Das Festlegen einer Architektur beinhaltet:

1.        Eine Reihe von strategischen Entscheidungen bezüglich der eingesetzten Technologie (HW, SW–Bausteine,...).
2.        Das Unterteilen des Systems in eine Reihe von Subsystemen (Klassenkategorien) die unabhängig entwickelt werden können.

Folgende Architekturbausteine sind zu evaluieren:

·         Betriebsystem
·         Benutzerschnittstelle (GUI)
·         Datenbank – System

·         Gerätetreiber für Peripherie
·         Kommunikaionssoftware

Der Architekturentwurf besteht aus folgenden Schritten:

1.        Auswahl geeigneter Subsysteme (Klassenkategorien).
2.        Schnittstellen der Klassenkategorien spezifizieren.

4.3.2     Subsystementwurf

Im Subsystementwurf wird die innere Struktur der Klassenkategorien erarbeitet und in einem Klassendiagramm dargestellt.
Folgende Tätigkeiten sind inbegriffen:
·         Bestimmen von Assoziationen
·         Bestimmen von Aggregationen  (By Value / By Reference)
·         Festlegen von Container (Stack, Listen, Baumstrukturen...)
·         Festlegen der Zugriffsebenen (implementation ,private, protected, public)
·         Festlegen der Synchronisation (simple: keine Spezifikation der Synchronisation; synchronous: Sender muss warten, bis Empfänger Botschaft übernommen hat; asynchronous: Meldung wird abgeschickt. Sender kann weiterfahren. Empfänger kann irgend einmal lesen; timeout: Sender wartet nur gewisse Zeit; balking: Ist Empfänger nicht bereit, abbrechen)

4.3.3     Detailentwurf

Im Detailentwurf wird die innere Struktur der Klassen, das heisst im wesentlichen die Methoden, erarbeitet und beschrieben.
Für einfache Methoden genügt die Beschreibung in der DA. Komplexere (umfangreiche Algorithmen, interagierende Methoden) Methoden müssen im Detail entworfen werden.
·         Interagierende Methoden werden am besten mit Interaktionsdiagrammen und zugehörigem Skript (Pseudocode, N–S–Diagramm oder Zustands–Diagramm) beschrieben. Man stellt sich folgende Fragen:
1.   Gehört jedes angesprochene Objekt einer definierten Klasse an?
2.   Besitzt diese Klasse die erforderlichen Methoden, welche das gewünschte Resultat liefern?
3.   Gibt es einen Weg  (Navigationspfad), durch welchen die Methode das angesprochene Objekt lokalisieren kann?
·         Algorithmen werden am besten mit N–S–Diagrammen oder Zustands–Diagrammen beschrieben.

4.4     Entwurfsdokumentation

Nur wenn man in der Lage ist, eine Software–Architektur verständlich zu beschreiben, besteht eine Gewisse Gewähr, dass man sie auch realisieren kann.


Inhaltsverzeichnis:

1.        Einführung
1.1.       Zweck
1.2.       Gültigkeitsbereich
1.3.       Definitionen und Abkürzungen
1.4.       Referenzen

2.        Software – Systemarchitektur
2.1.       Struktur der Klassenkategorien
·          Diagramm mit Klassenkategorien und Benutzt – Beziehungen zwischen den Klassenkategorien
·          Eventuell Kurzbeschreibung der einzelnen Klassenkategorien

2.2.       Beschreibung der Klassenkategorien
·          Blackboxbeschreibung der einzelnen Klassenkategorien.
·          Eventuell Kurzbeschreibung wesentlicher Klassen.
·          Einzelne Klassenkategorien sind gewählte Technologiekomponenten wie GUI – Library.

2.3.       Schnittstellen der Klassenkategorien
·          Exportklassen der Klassenkategorien mit allen public – Methoden.
·          Die Zusammenarbeit der einzelnen Klassenkategorien wird spezifiziert.
·          Architektur der Interaktion (z.B. zwischen Domain und Userinterface: MVC – Architektur)

·          Eventuell Illustration mit Interaktionsdiagramm 

2.4.       Architekturkonzepte
·          Generell angewandte Lösungsmuster, die nicht einem Strukturteil zugeordnet werden können.
·          Einsatz von Multitasking und Multithreading
·          Errorhandling
·          Speicherverwaltung
·          Und andere

3.        Beschreibung der Klassenkategorie 1

3.1.       Klassendiagramm
·          Mit Desinginformation
·          Containerklassen
·          Zugriffsebenen
·          Navigationspfaden
·          Conainment (By Value oder By Reference)

3.2.       Klassenspezifikationen
·          Vollständige Klassenspezifikationen mit allen Attributen und Methoden.
·          Datentypen für Attribute
·          Parameter und Rückgabewerte mit Datentypen für Methoden
·          Gegebenenfalls Zustandsdiagramm für Klassen

3.3.       Architekturkonzepte für Klassenkategorie
·          Umsetzung der generellen Architekturkonzepte innerhalb der Klassenkategorie
·          Spezifische Architekturkonzepte für Klassenkategorien

4.        Modulstruktur
·          Welche Klassen in welchen Header- und Implementationsdateien?

5.        Prototypen
5.1.       Prototyp 1
5.1.1.            Zweck des Prototyps
5.1.2.            Übersicht
·          Diagramm mit Use – Case Model
·          Eventuell Diagramm mit Zusammenhängen der Use – Cases (extends, uses)
5.1.3.            Schlüsselmechanismen
5.1.3.1.     Schlüsselmechanismus 1
·          Beschreibung des Schlüsselmechanismus 1
·          Interaktionsdiagramm bzw. Interaktionsdiagramme
5.1.4.            ....
·          Weitere Beschreibungselemente nach Bedarf
·          Hilfscode, der in späteren Prototypen nicht mehr gebraucht wird.

4.5     Releaseplan

Mit jedem Release wird ein bestimmtes Ziel anvisiert. Ein Release ist ein lauffähiges System.
Als Leitlinie sollte gelten, das Entwicklungsrisiko für das Gesamtsystem zu minimieren, das heisst kritische Teile möglichst frühzeitig zu implementieren.
Ein Releaseplan sollte folgende Punkte enthalten:
·         Eine Übersicht über die geplanten Prototypen und deren Abhängigkeiten
·         Für jeden Prototyp:
·         Ziel, das mit dem Release erreicht werden soll.
·         Identifikation der Klassen, die für den Release implementiert werden.
·         Aufzählung der Schlüsselmechanismen, die implementiert werden.
·         Notwendige Ein- und Ausgabedaten.
·         Gegebenenfalls Angaben über notwendigen Hilfscode.

5     Evolution

Die Evolution besteht hauptsächlich aus Implementierung, Test und Integration. Das SD wird laufend ergänzt. Allenfalls müssen noch Änderungen an AS, DA und SD gemacht werden.
Gemäss SD wird Prototyp für Prototyp erstellt und Dokumentiert.

5.1     Dokumentation der Implemetation

·         Welche Klasse in welchem File
·         Welche Subsysteme gibt es, welche Klassenkategorien importiert sie
·         Sourcecode strukturiert nach Subsystemen, alphabetisch
·         Codegenerierung ist nicht zu empfehlen.

5.2     Test und Integration

Ein Fehler ist das Nichterfüllen einer Anforderung
Error :              verursacht durch menschliche Fehlkonstruktion.
Fault:                               Error kann zu Fault in Programmausführung führen.
Failure:            Mission nicht erfüllt aufgrund von Faults.

J    Ein Test ist reproduzierbar
·       Testablauf festgelegt
·       Testfälle spezifiziert
·       Vor allem wichtig für Regressionstests (Wiederholung eines früheren Tests, um festzustellen, ob nachträgliche Änderungen nicht zu neuen Fehlern geführt haben) wichtig.

K    Die Zielumgebung wird mitgeprüft.
K    Der Test zeigt die Fehlerursache nicht.
L    Die Ergebnisse des Tests werden überschätzt.
Es können keine Tests für alle Eingabewerte durchgeführt werden
Ein Test besteht aus Testvorbereitung, Testausführung und Testauswertung. All dies wird im Testbericht zusammengefasst.

5.2.1     Testkategorien

Funktionale Tests (Black-Box-Test)
·         Prüfen der funktionalen Anforderungen.
·         Die Auswahl der Testfälle richtet sich nach den Eingaben, Ausgaben und ihrer funktionellen Verknüpfung

Äquivalenzklassenmethode:

Ein Wertebereich einer Eingabegrösse, für welche der Prüfling voraussichtlich das gleiche Verhalten zeigt, wird als Äquivalenzklasse bezeichnet. Um die Anzahl der Tests in Grenzen zu halten, wird man oft für jede Äquivalenzklasse nur einen Testfall auswählen.

Grenzwertanalyse

Fehler treten erfahrungsgemäss oft an Grenzen zulässiger Wertebereiche von Eingabegrössen auf. Darum werden hier die Testfälle an den Grenzen gewählt.

Zustandsbasiertes Testen

Für jeden Zustand wird ein Testfall definiert.

Leistungstests (Black-Box-Test)
Leistungstest prüfen das Erreichen der Leistungsanforderungen.

Stresstests (Black-Box-Test)
Mit Stresstests versucht man die Software zum Abstürzen zu bringen, das heisst das Qualitätsmerkmal Robustheit zu prüfen.

5.2.2     Testebenen

Modultest
Der Modultest testet eine einzelne, isolierte Programmeinheit. Ein Modultest kann Black- oder White–Box–Test sein.

Integrationstest
Der Integrationstest testet mehrere zusammenhängende Module oder Subsysteme. Integrationstests sind eigentlich White-Box-Tests bezüglich der Modulstruktur, aber Black-Box gegenüber den einzelnen Modulen.

Bottom-up Test

Man beginnt mit den Modulen auf der untersten Ebene der Aufrufhierarchie. Bei diesem Vorgehen braucht man keine Teststummel, jedoch Testtreiber.

Bottom-down Test

Man beginnt mit den Modulen auf der obersten Ebene der Aufrufhierarchie. Bei diesem Vorgehen braucht man keine Testtreiber, jedoch Teststummel.

Systemtest
Der Systemtest testet das Gesamtsystem. Ist in der Regel ein Black-Box-Test.

5.2.3     Testmethoden

Überblick über Testmethoden:


White-Box-Test (Strukturtest)
Die Auswahl der Testfälle richtet sich nach den Ablaufmöglichkeiten des Programms.

Kontrollflussorienterter Test

·         Anweisungsabdeckung (min 100%)
·         Zweigabdeckung (100%)
·         Pfadabdeckung (< 100 %)
·         Bedingungsabdeckung (100%)

Integrationstest

·         Programmeinheiten Abdeckung
·         Aufrufabdeckung
·         Programmpfad Abdeckung

Datenflussorientierter  Test

·         Defs/Uses – Verfahren (jeder Variabel-Zugriff wird kategorisiert (defs: Wertzuweisung; c-use: lesen zum Berechnen eines Ausdrucks; p-use: lesen in Bedingung)

Black – Box – Test
Die Auswahl der Testkriterien richtet sich nicht nach der Implementation, sondern nach den gegen aussen Spezifizierten Randbedingungen (Use-Case)

6     Projektmanagment und Qualitätssicherung

Ein Softwareprojekt ist grundsätzlich in 4 Teile Gegliedert. (Die Softwareerstellung wurde in den vorderen Kapiteln behandelt)

Grundsätzliche Probleme der Softwareentwicklung.
·         Strukturierung des Entwicklungsablaufes
·         Aufwandabschätzung bzw. Planung
·         Bewerten des Erreichten, der Qualität
·         Einsatz von analytischen Qualitätssicherungsmassnahmen (z.B. Reviews, Tests)
·         Verständnis für die Kosten im Zusammenhang mit Fehlern
·         Änderungen der Anforderungen
·         Umgang mit Fehlern

Wie die meisten Systemmodelle beinhaltet ein umfassendes Modell der Softwareentwicklung eine statische (funktionale) und eine dynamische Sicht. Ist ein solches Modell so detailliert, dass es die einzelnen Tätigkeiten mit Ein- und Ausgabedaten zeigt, so sprechen wir von einem Prozessmodell. Wird der Ablauf einer Softwareentwicklung in einzelne Phasen unterteilt, so sprechen wir von einem Phasenmodell.

6.1     Projektmanagement PM

Das Projektmanagement hat das Ziel, das Projekt erfolgreich abzuschliessen.
·         mit den vorgesehenen Mitteln (Personal, Kosten, Ressourcen)
·         innerhalb der Termine
·         mit Resultaten der geforderten Qualität.

Die Wichtigsten Aufgaben des PM sind:
·         Planung und Kommunikation
·         Schaffen und Wahren geeigneter Rahmenbedingungen
·         Motivation und Kontrolle der Mitarbeiter
·         Schutz des Projektes vor der Umgebung
·         Frühes Erkennen und Neutralisieren unerwarteter Schwierigkeiten

6.2     Qualitätssicherung QS

Software-Qualitätssicherung: Alle geplanten und systematischen Tätigkeiten, die notwendig sind, um ein hinreichendes Vertrauen zu schaffen, dass das Produkt die festgelegten Qualitätsanforderungen erfüllen wird.

Konstruktive Massnahmen

·         Präventiv Qualitäsmängeln entegenwirken
·         Gliederung des Entwicklungsprozesses durch einen SW-Entwicklungsstandard.
·         Unterstützen des Entwicklungsprozesses durch Methoden und Werkzeuge

Analytische Massnahmen

·         Prüfung und Bewertung der Qualität

6.2.1     Was ist Softwarequalität

Gesamtheit von Merkmalen einer Einheit bezüglich ihrer Eignung, festgelegte und vorausgesetzte Erfordernisse zu erfüllen.

6.3     Konfigurationsmanagement KM

Software-Konfigurationsmanagement unterstützt alle Tätigkeiten der SW-Entwicklung indem KM sich der anfallenden Arbeitsresultate (Dateien) annimmt und dafür sorgt, dass jederzeit klar ist WER, WAS, WANN und WIE geändert hat.

Das KM ist ein Satz von Verfahren technischer Natur und organisatorischer Natur, mit denen gewisse Objekte zu bestimmten Zeitpunkten eindeutig identifizierbar sind (Konfigurationsverwaltung) und mit denen die Änderungen dieser Objekte, ein nachvollziebarer Vorgang ist (Änderungswesen).

Die Verfahren für KM hängen stark von der Grösse des Projektes ab.

7     Phasen- und Prozessmodelle der SW-Entwicklung

Unterteilung des Projektablaufes in zeitlich und funktional abgegrenzte Teile mit dem Ziel sie planbar, überschaubar und kontrollierbar zu machen und eine bessere Qualität des SW-Produktes zu erreichen.

Die Verwendung von Vorgehensmodellen hat folgende Vorteile:
·         Fördert die Kommunikation im Projekt.
·         Verbessert die Führbarkeit eines Projektes.
·         Erleichtert die Zuordnung von Ressourcen.
·         Erleichtert Kostenkontrolle.
·         Erhöht die Qualität des entstehenden SW-Produktes.
·         Erst planen, dann ausführen ergibt bessere Systemstruktur.
·         Erzwingt Dokumentation

7.1     Das Wasserfallmodell

Einzelne Phasen (AS, DA, SD, Imp...) laufen zeitlich sequentiell ab. Für die praktische Anw. liegt hier das Probelm:
·         Anforderungen ändern während der Entwicklung
·         Bei völlig neuen Produkten lassen sich Anforderungen oft nicht vollständig definieren.
·         Aufwandabschätzung zu Projektbeginn schwierig.
·         Fehler erfordern Rückgriffe in frühere Phasen.
·         Es dauert bei grossen Projekten zu lange bis ein Produkt praktisch erprobt werden kann.

7.2     Das V-Modell

Merkmale des V – Modells:

J       Verbesserte Kommunikation der Projektbeteiligten
J       Einheitliches Vorgehen
J       Höhere Produktqualität
J       Bessere Kalkulation
J       Geringer Abhängigkeit von Personen und Firmen
J       Verringerung des Wartungsaufwandes
J       Ist ausgereift
J       Liefert konkrete Hilfestellung
J       Ist ausgewogen/nicht herstellerspezifisch
J       Unterstützt bei Ausschreibungen
J       Öffentlich kontrollierte Fortschreibung

L       Die Vorgehenskonzepte, die für grosse eingebettete Systeme sinnvoll sind, werden unkritisch auf andere Anwendungstypen übertragen.

L       Ohne geeignetes CASE-Tool ist das V-Modell nicht  handhabbar.

L       Für kleine und mittlere Softwareentwicklungen führt das V-Modell zu einer unnötigen Software-Bürokratie.

L       Es fehlen in der Dokumentation vollständige Beispiele.

7.3     Generell über Vorgehensmodelle

Es gibt kein Vorgehensmodell, das sich für alle Software-Projekte geeignet wäre. Die Wahl hängt von verschiedenen Faktoren ab:
·         Anwendungsbranche: z.B. Bankwesen, Industrie
·         Art der Anwendung (EDV, Informationssystem, Echtzeitsystem...)
·         Architektur der zu entwickelnden Anwendung
·         Grösse und Komplexität der Anwendung
·         Organisation Firma
·         Marksituation
·         Vertragsentwicklung für Auftraggeber
·         Produktentwicklung für Markt
·         Tenchologie (Prozedurale- / OO-Programmiersprachen, 4GL, Wiederverwendung von Komponenten)

 

Softwareengeneering <--- ---> Softwareengeneering Part2