Zusammenfassung Software-Engineering 2010

Zusammenfassung Software-Engineering
Inhalt
Zusammenfassung Software-Engineering ............................................................................................... 1
•
Notizen zu den Abschnitten ........................................................................................................ 3
1 Software-Krise und Software Engineering.................................................................................... 3
1.1 Krisenstimmung .................................................................................................................... 3
1.3 Software Krise....................................................................................................................... 3
1.4 Begriff und Disziplin “Software Engineering”......................................................................... 3
2 Grundlagen des Software Engineering......................................................................................... 4
2.1 Phasen der Software-Entwicklung ........................................................................................ 4
2.2 Grundlegende Prinzipien....................................................................................................... 4
2.3 Prinzip Modularisierung......................................................................................................... 5
2.4 Bereiche des Software Engineering...................................................................................... 5
3 Projektmanagement ..................................................................................................................... 6
3.1 Grundlagen ........................................................................................................................... 6
3.2 Projektaufbau und Rollen...................................................................................................... 6
3.3 Projektplanung und Darstellung ............................................................................................ 6
3.4 Projektkontrolle und –steuerung ........................................................................................... 8
3.5 Brook’sches Gesetz .............................................................................................................. 9
3.6 Aufwandsschätzung............................................................................................................ 10
Vokabeln................................................................................................................................... 10
4 Konfigurationsmanagement........................................................................................................ 11
4.1 Motive und Begriffe ............................................................................................................. 11
4.2 Aufgaben und Verfahren ..................................................................................................... 11
4.3 Konfigurationselemente ...................................................................................................... 11
4.4 Konfigurationsmanagement Plan ........................................................................................ 11
4.5 Projektstruktur..................................................................................................................... 11
4.6 Verwaltung der Konfigurationselemente ............................................................................. 12
4.7 Release-Management......................................................................................................... 13
4.8 Werkzeug zur Versionskontrolle: Subversion...................................................................... 13
4.9 Automatisierung des Build-Prozesses................................................................................. 13
Vokabeln................................................................................................................................... 14
5 Software-Modelle ....................................................................................................................... 14
5.1 Grundlagen und Modelltypen .............................................................................................. 14
5.2 Programmablaufplan........................................................................................................... 15
5.3 Struktogramm ..................................................................................................................... 15
5.4 Funktionsbaum ................................................................................................................... 15
5.5 Strukturierte Analyse (SA)................................................................................................... 16
5.6 EBNF und Syntaxdiagramm................................................................................................ 16
5.7 Entity-Relationship-Modellierung (ERM) ............................................................................. 17
5.8 Objektorientierte Modellierung mit UML .............................................................................. 17
5.9 Geschäftsprozessmodellierung mit ARIS............................................................................ 20
5.10 Formale Modellierung mit Petri-Netzen............................................................................. 21
6 Softwareprozesse und Vorgehensmodelle................................................................................. 22
6.1 Softwareentwicklung in Phasen .......................................................................................... 22
6.2 Unsystematische „Modelle“................................................................................................. 22
1
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
6.3 Lineare / Sequentielle Modelle............................................................................................ 22
6.4 Frühe Prototypen / Rapid Prototyping................................................................................. 23
6.5 Evolutionäre, inkrementelle Modelle ................................................................................... 23
6.6 Objektorientierte Modelle .................................................................................................... 24
6.7 Microsoft Vorgehen............................................................................................................. 25
6.8 Agile Modelle ...................................................................................................................... 25
6.9 Weitere Phasenmodelle ...................................................................................................... 26
6.10 Fokus: Analysephase, Requirements Engineering............................................................ 26
6.11 Fokus: Entwurfsphase....................................................................................................... 27
7 Qualität....................................................................................................................................... 27
7.1 Einordnung und Begriff ....................................................................................................... 27
7.2 Qualitätseigenschaften........................................................................................................ 27
7.3 Wege zur Qualität ............................................................................................................... 28
7.4 Qualität und Softwareentwicklung....................................................................................... 28
Quellennachweis: .......................................................................................................................... 29
2
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
• Notizen zu den Abschnitten
1 Software-Krise und Software Engineering
1.1 Krisenstimmung
Es gab für die Software-Krise vor allem folgende Gründe:
Fehlerhaft
Unzuverlässig
Wartungsunfreundlich
schwer portierbar
Um auf diese Probleme zu reagieren fand 1967/1968 das NATO Science Committee statt.
1.3 Software Krise
Als Folge dieses Treffens fand eine Zäsur in der Softwareherstellung statt mit der resultierenden
Entwicklung von neuen Methoden:
Spezifikationsmethoden, Formalismen,
Spezifikationssprachen, Requirements Engineering
Brookssches Gesetz, Kommunikationsregeln,
Gruppenorganisation, Schnittstellendefinition
Projektmanagement, Organisation, Ermittlung des Projektfortschritts
Validierung nach jedem Schritt statt nur einmal
Schnittstellenbeschreibung, Administration von Komponenten
Falschbedienung vorsehen, Dialoge planen, Handbücher, Tutorials
Versionskontrolle, Release Management, Strukturierung, Dokumentation
1.4 Begriff und Disziplin “Software Engineering”
Oberstes Ziel bei dieser Neuausrichtung war:
Suche nach einem wissenschaftlichen Vorgehen, das eine systematische und
qualitätsorientierte Entwicklung ermöglicht: ingenieurswissenschaftliches Vorgehen
3
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
2 Grundlagen des Software Engineering
2.1 Phasen der Software-Entwicklung
1. Anforderungsphase
(Kosten ca. 3%)
Analyse der Kundenwünsche
Exploration des Anwendungsgebietes (Domäne)
Erarbeitung der Anforderungen
2. Spezifikationsphase
(Kosten ca. 4%)
Präzise Festlegung der Leistungen
Spezifikationsdokument (→ Kontrakt)
3. Planungsphase
(Kosten ca. 2%)
Entwurf der Projektdurchführung
Projektmanagementplan
Zeitdauer, Aufwandsabschätzung
(Kosten ca. 6%)
4. Entwurfsphase
Hardware-/Softwareentwurf
Systemarchitektur (Konzeption im Großen, Zerlegung in Module)
Detailentwurf (Implementierung der Module)
5. Implementierungsphase (Kosten ca. 12%)
Implementierung der Programmkomponenten (arbeitsteilig)
Testen der Komponenten (Modultest)
6. Integrationsphase
(Kosten ca. 6%)
Integration der Komponenten
Test des Gesamtsystems (Integrations- und Systemtest)
Auslieferung an den Kunden
7. Wartungsphase
(Kosten ca. 67%)
Betrieb beim Kunden
Fehlerbeseitigung
Verbesserung (Effizienz)
Erweiterung
Anpassung
8. Rückzugsphase
Einstellung der Nutzung
Datensicherung/-übertragung
2.2 Grundlegende Prinzipien
Abstraktion und Konkretisierung
Zerlegung / Dekomposition – „Divide et Impera“
Perspektivenbildung / Sichtensystem
Wiederholung und Wiederverwendung
Automatisierung
Iteration und Evolution
4
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
2.3 Prinzip Modularisierung
Zerlegung großer System in kleine und übersichtliche Komponenten bzw. Teile.
Geheimnisprinzip:
Kommunikation nur über eine klar definierte Modulschnittstelle
Import-Schnittstelle: welche Konstrukte werden von außen benutzt
Export-Schnittstelle: worauf kann von außen zugegriffen werden
Zusammensetzung der Module kann ohne Kenntnis ihrer Funktionsweise geschehen
Modul ist für sich alleine testbar.
Modul verbirgt Entscheidungen für seinen inneren Entwurf
Design by Contract
Server mit angebotener Leistung (Post Condition) wird von Client mit den korrekten
Eingaben (Pre Condition) verwendet
Bindungstypen (von niedriger bis hoher Bindung) Optimum: hohe Bindung:
zufällig, logisch, temporal, prozedural, kommunikatorisch, sequentiell, funktional
Modulkopplung (von niedriger bis hoher Kopplung) Optimum: niedrige Kopplung:
Keine direkte K., Datenk., Stempelk., Steuerk., ext. K., Common K., Inhaltsk.
2.4 Bereiche des Software Engineering
5
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
3 Projektmanagement
3.1 Grundlagen
Management:
Planung der Arbeit für die ausführenden Mitarbeiter
Magisches SWE Dreieck:
Zeit – Kosten – Qualität haben gemeinsam Einfluss auf die Produktivität
Produktivität:
Leistung * Qualität / Ressourcen
Meilenstein:
Zeitpunkt im Projekt zur Entscheidung über den weiteren Verlauf (Ist-Soll-Abgleich)
Kritischer Pfad:
Wichtige Tätigkeiten, deren Verzögerung die gesamte Projektdauer verlängert
Projektmanagement:
Koordination der Prozesse in einem Projekt (Planung, Kontrolle & Steuerung)
3.2 Projektaufbau und Rollen
Wichtigste Rolle: Menschen (Psychologie)
Entwickler / Spezialisten
Projekt- oder Gruppenleiter
Kunde oder Anwender
Kontrollgremien
Man unterscheidet bei der Organisationsstruktur des Unternehmens zwischen
Primärorganisation (legt Aufgabenverteilungen und Beziehungen der Mitarbeiter fest)
Sekundärorganisation (meistens für temporäre Phasen: Projekte)
Bei der Form der Organisation gibt es mehrere Typen:
Funktionale Organisation (Abteilungsleiter mit Untergebenen)
Reine Projektorganisation (schwache bzw. keine Primärorganisation)
Matrixorganisation (sowohl gewöhnliche Hierarchie als auch projektbezogene Kleingruppen)
Zum Strukturieren der Kleingruppen bzw. Teams unterscheidet man zwischen:
Kleine Teams / Einzelkämpfer
Anarchische Teams (Zusammenarbeit ohne Hierarchie)
Demokratisches Team (wie anarchisches Team mit einem „Motivator“ der Gruppe)
Hierarchisches Team (Projektleiter plant, verteilt und kontrolliert)
Chief-Programmer-Teams (Projektleiter sind auch technisch aktiv, holen sich aber
Unterstützung von Spezialisten und Assistenten)
3.3 Projektplanung und Darstellung
Jedes Softwareprojekt gliedert sich in drei Projektphasen
Startphase
Ernennung des Projektleiters, der den Projektplan erstellt:
Abgrenzung des Liefer- und Leistungsumfangs
Aufgabenplanung und Ressourcenplanung
Terminplanung und Verteilung von Aufgaben an Mitarbeiter
Risikoplanung
Projektdurchführung
Die Durchführung kann sich in mehrere Phasen gliedern, die wiederum innere
Vorgänge enthalten und durch Meilensteine markiert werden.
Abschlussarbeiten
6
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Es gibt verschiedene Arten, Vorgänge während des Projekts darzustellen
Projektstrukturplan PSP zum Darstellen der geplanten Aufgaben
Projekt wird in Teilaufgaben gegliedert, welche jeweils mit einem eindeutigen Kürzel
versehen wird (z.B. „B“)
Unterbäume sind Aufgabensammlungen und die Blätter sind die eigentlichen Aufgaben
Basis für einen Aufwandsplan – Schätzung des Aufwandes pro Paket
Terminplan als Netzplan (PERT-Chart)
Jeder Kasten enthält den Namen der Aufgabe, die geschätzte Dauer der Bearbeitung
und zwei Zeilen mit relativen Zeitangaben zu dem Start und dem Ende der Aufgabe.
Diese Zeitangaben werden in einer Vorwärts- (ausgehend vom Projektstart) und einer
Rückwärtsrechnung (ausgehend vom Endzeitpunkt des Projekts) ermittelt.
Über den Netzplan kann man zusätzlich noch Pufferzeiten erkennen bzw. Abschnitte,
die wegen Planungsfehlern nicht rechtzeitig fertig werden können (negativer Puffer).
Daneben lässt sich auch ein kritischer Pfad aus dem Plan ablesen (über Aufgaben,
deren Zeiten in beiden Rechnungsrichtungen gleich sind).
7
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Vorgangsliste als Alternative zum Netzplan
Gantt-Chart mit Balkendiagramm zur Übersicht über die zeitlichen Projektphasen
Marken und Meilensteine können zusätzlich noch dargestellt werden.
Zusätzlich sollte man die Arbeitstage in einem Projektkalender verwalten (Feiertage, Schulungen,
Ferien)
Allgemeine Folgenbeziehungen:
Normalfolge (A endet B beginnt)
Endfolge (bevor B beginnen kann, muss A beendet werden)
Sprungfolge (A kann nur dann beendet werden, wenn B bereits angefangen hat)
Anfangsfolge (damit A anfangen kann, muss auch B angefangen worden sein)
3.4 Projektkontrolle und –steuerung
Bei der Projektbetreuung gilt als wichtigstes Ziel: Einhaltung der geplanten Projektdauer. Um dies
während des Projekts zu ermöglichen verwendet man die folgenden Hilfsmittel:
Projekttagebuch mit Besprechungsprotokollen
Aufwandserfassung (Time Sheets)
Berichte (intern oder an Kunden)
8
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Meilenstein-Trendanalyse
Mit der Trendanalyse kann man bereits während des Projekts feststellen, ob das
Projekt rechtzeitig fertig werden kann. Verlaufen die Verbindungen zwischen den
gleichen Meilensteinen parallel zur Winkelhalbierenden durch den Ursprung, dann ist
dies ein Signal für gravierende Probleme in der Entwicklung.
3.5 Brook’sches Gesetz
Aufgrund des steigenden Kommunikationsaufwandes bei der Einstellung weiterer Mitarbeiter, gibt es
einen optimalen Punkt, bei dem die Mitarbeiterzahl genau dem Aufwand des Projekts entspricht:
9
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
3.6 Aufwandsschätzung
Die Aufwandsschätzung folgt der Machbarkeitsstudie. Nachdem die Aufwandsschätzung
durchgeführt wurde und sie ein rentables Projekt ergab wird direkt die Auftragsvergabe folgen. Auf
Basis des Pflichtenheftes in der Auftragsvergabe erfolgt die konkrete Projektplanung.
In der Aufwandsschätzung können folgende Punkte geklärt werden:
Entwicklungskosten für die Erstellung eines Angebots (hier gibt es wiederum die Strategien
auch unrentable Projekte anzugehen, um z.B. Know-How aufzubauen oder die Kundenbindung
zu stärken)
Entscheidungsgrundlage zur Eigenentwicklung oder dem Kauf von Teilprodukten, die für das
Projekt notwendig sind
Wirtschaftlichkeitsberechnungen
Zeit-, Kapazitäts-, Ressourcen- und Personalplanung
Zur Abschätzung des Aufwandes existieren in der Praxis meist zwei Methoden:
Expertenbefragung (Delphi-Methode!)
Algorithmische Schätzverfahren
COCOMO, COCOMO II, Function Points, Use Case Points
Vokabeln
Function Points (FP)
Use Case Points (UCP)
Delphi-Methode bei der Expertenbefragung
(Ansatzarten der Aufwandsschätzung)
CoCoMo
KLOC
SLOC
NCSS
10
funktionale Anforderungen an die Software (was
für Funktionen sind enthalten)
Interaktionsmöglichkeiten und -szenarien mit dem
Benutzer
Es werden Experten unabhängig voneinander und
ohne gegenseitiges Bescheidwissen gefragt um
Seiteneffekte zu vermeiden.
Constructive Cost Model – setzt sich aus dem
geschätzten Codezeilen und einem
Aufwandsfaktor zusammen (Nachteil: sehr grob,
Vorteil: leicht zu errechnete Zahlenwerte)
Kilo Lines of Code
Source Lines of Code
Non-Commentary Source Statements
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
4 Konfigurationsmanagement
4.1 Motive und Begriffe
Das Konfigurationsmanagement hilft dabei den Projektfortschritt und die damit verbundene
Informationsverwaltung in den Griff zu kriegen. So kann der Mitarbeiter die Historie jeder Datei und den
Gesamtumfang des Projekts überblicken. Zudem erleichtert es das gemeinsame Arbeiten in dem
gleichen Datenpaket oder an derselben Datei. Somit erhalten wir als Hauptmotive
Qualität verbessern
Produktivität steigern
Änderungen protokollieren
Transparenz verbessern
4.2 Aufgaben und Verfahren
Versionskontrolle
Konfigurationskontrolle
Build-Automatisierung
Änderungskontrolle
Koordination der Teamarbeit
Ableitung und Bereitstellung von Messverfahren / Metriken
4.3 Konfigurationselemente
Dem KM sind alle anfallenden Projektdateien untergeordnet außer der generierten Dateien
(Javadoc, *.class-Dateien) zu den eigentlichen editierten Dateien (z.B. Quellcode).
4.4 Konfigurationsmanagement Plan
4.5 Projektstruktur
Nach der Erstellung des KM-Plans muss die Projektstruktur festgelegt werden. Hierbei muss man
beachten, dass die Projektstruktur einen starken Einfluss auf die Softwarearchitektur haben kann
und diese einschränken könnte (Conway’s Law 1968).
Das Gesamtprojekt kann also in Teilprojekte gegliedert werden und dort noch mal nach
Konfigurationselementen getrennt unterschieden sein.
11
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
4.6 Verwaltung der Konfigurationselemente
Die gesamte KM-Datenbasis wird im Repository untergebracht. An das Repository müssen folgende
Anforderungen gestellt werden:
Verfügbarkeit
Integrität
Zugriffskontrolle (Rechtemanagement)
Änderungsverfolgung und Wiederherstellung (Überblick über die Versionshistorie)
Effizienz bei großen Datenmengen
Der Ablauf bei der Arbeit mit dem Repository ist schematisch wie folgt:
Daten befinden sich im Rep. Check-Out (Kopieren der Daten in die lokale
Arbeitsumgebung) Modifikation der kopierten Daten / Erstellung neuer Dateien Check-In (lokale Daten werden wieder ins Rep. Kopiert)
Bevor die Dateien wieder zurück ins Repository kopiert werden können, müssen alle vorhanden
Konflikte gelöst werden. Diese Konflikte können nur dann auftreten, wenn die Dateien, die vom
Benutzer nach dem Check-Out verändert wurden, parallel auch von anderen Benutzern an der gleichen
Stelle in der Datei verändert worden sind. Dies kann von vornherein durch z.B. einen Lock-UnlockMechanismus verhindert werden, der die Datei bis zum nächsten Check-In für andere Benutzer sperrt.
Daneben wird ein Projekt in der Praxis gerne in Unterabschnitte unterteilt, die ein vorzeitiges Ausliefern
von z.B. einem Prototypen möglich machen sollen. Dazu definiert man Tags und Baselines, auf die
dann das Release folgt. Hier liegt häufig eine Überschneidung mit den Meilensteinen zugrunde.
Die Projektentwicklung kann auch in mehrere Entwicklungslinien aufgespaltet werden. Hierbei gibt es
drei Möglichkeiten der parallelen Entwicklung:
Code-Freeze und Linearisierung (während des Code-Freeze wird nicht weiterentwickelt,
sondern nur die Software für das Release oder die Baseline vorbereitet)
Verzweigte Entwicklungspfade mit Branches
Echte Parallelentwicklung ohne anschließendes Zusammenfügen (sinnvoll bei z.B.
Betriebssystemen)
12
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
4.7 Release-Management
Versionsbezeichnung für das Release: (Hauptrelease).(Wartungsrelease).(Patch)
z.B. 2.1.0
4.8 Werkzeug zur Versionskontrolle: Subversion
Subversion ist eine Weiterentwicklung von CVS und behebt einige Nachteile von CVS:
Verzeichnisse werden auch versioniert
Check-In geschieht ganz oder gar nicht (atomar)
Client-Server-Architektur
4.9 Automatisierung des Build-Prozesses
Durch den Einsatz von Build-Werkzeugen lässt sich die Produktivität, Widerverwendbarkeit und
Reproduzierbarkeit steigern.
Man unterscheidet zwischen verschiedenen Build-Varianten: Entwickler-, Integrations- (alle
Komponenten zusammen) und Produktions-Build (für den Kunden).
Werkzeuge:
Make (Makefiles schreiben)
Ant (allgemeines plattformunabhängiges Verfahren mit XML)
Maven
13
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Vokabeln
Repository
Datenbank mit allen zum Projekt gehörigen
Dateien
Erweiterung oder Weiterentwicklung einer Datei
Alternative Umsetzung eines ähnlichen
Funktionsumfangs einer Datei
Auswahl von Versionen und Varianten als
Zusammenstellung zu einem Gesamtpaket
Art, wie mit Änderungen an Dateien umgegangen
wird
Ursprungsversion liegt als Ganzes vor und die
anschließenden Änderungen werden mitverfolgt
immer liegt die Endversion als Ganzes vor und die
Änderungen zum Vorgänger werden festgehalten
Markierung für eine Forschrittsstufe im Repository
Zum Trunk parallel verlaufende Entwicklungslinie
Stabile lauffähige Konfiguration (auch als
Bezugspunkt für spätere Versionen)
Konfiguration, die ausgeliefert werden kann
Code wird nur noch debugged und es werden
keine zusätzlichen Funktionalitätserweiterungen
daran vorgenommen
Versionierte Metadaten, beschreiben die
Eigenschaften der erfassten Dateien
„Versionsnummer“ von dem Stand des gesamten
Repository
Enthält alle Änderungen an der Datenstruktur in
dem gesamten Repository
Version
Variante
Konfiguration (SWE)
Deltamechanismus
Vorwärtsdelta
Rückwärtsdelta
Tag (engl.)
Branch
Baseline
Release
Code-Freeze
Properties im Repository
Revision
Change Set
5 Software-Modelle
5.1 Grundlagen und Modelltypen
Arten von Modellierungssprachen:
Algorithmenorientierte Modellierung (z.B. PAP)
Regelbasierete Modellierung (Entscheidungen und Regeln)
Zustandsorientierte Modellierung (Automaten mit Zustandsübergängen, Petri-Netz)
Funktionsorientierte Modellierung (Funktionsbaum, -hierarchie)
Datenflussorientierte Modellierung (Structured Analysis)
Datenstrukturorientierte Modellierung (Entity Relationship Model oder Syntaxdiagramm)
Szenariobasierte Modellierung (Interaktionsdiagramme)
Objektorientierte Modellierung (Klassenstrukturen)
Geschäftsprozessorientierte Modellierung (ARIS – Architektur integrierter
Informationssysteme)
Formale Modellierung (alles algebraisch und logisch beschreiben)
Spezielle Modellierungssprachen (z.B. für Echtzeitsysteme oder für Unternehmen)
14
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
5.2 Programmablaufplan
Geeignet zum Darstellen von
Algorithmen in einem Programm
Folge von Operationen zur Lösung einer Aufgabe
Allgemeinen Prozessen
Bestandteile:
Sequenz von Operationen (verbunden durch
Kontrollflusslinien)
Auswahl und Verzweigung
Schleifen (Verzweigung, die zurück leitet)
Unterprogrammaufrufe
Ein- und Ausgaben
Anfang und Ende
Nachteile:
Datenstrukturen werden nicht modelliert
Für große Systeme ungeeignet.
5.3 Struktogramm
Geeignet zum Darstellen von
Kontrollstrukturen ohne
Programmsprünge
Logikdarstellung sprachunspezifisch
Zerlegung eines Gesamtproblems
Bestandteile:
Anweisung
Sequenz / linearer Ablauf
Aufruf eines Unterprogramms
Auswahl und Verzweigung
Fallunterscheidung (select case)
Schleifen (viele Typen)
Nachteile:
Sprünge können nicht dargestellt werden
Manuell aufwendig zu zeichnen und
ändern
5.4 Funktionsbaum
Geeignet zum Darstellen von
Gliederungen von Funktionen in (allgemeine)
Hauptfunktionen und spezifische Teilfunktionen
Zusammenstellungs- und Aufrufbeziehungen (obere
Funktion ruft auf / besteht aus unteren Funktionen)
Bestandteile:
Hierarchie
Nachteile:
Geben nur groben Überblick über den
Funktionsumfang.
15
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
5.5 Strukturierte Analyse (SA)
Geeignet zum Darstellen von
a) Datenflüssen in einem System
b) Datenlexikon mit einer Struktur der Daten
c) Mini-Spezifikation als Leistungsbeschreibung
einzelner Systemteile
Zerlegungen eines Systems in seine Bestandteile
bis man bei selbsterklärenden Komponenten
angekommen ist.
Bestandteile (eines SA-Modells):
a) Prozesse, Terminatoren, Datenspeicher,
Datenflüsse (alle Objekte mit eindeutigem Namen)
b) Zuweisungen (=), Sequenz (+), Iteration ({…}),
Wiederholung von M bis N (M{…}N), Selektion
([…|…|…]), Option ((…)), Kommentar (*…*)
c) Minispecs sind wenig formalisiert, bis auf
Namensmarkierungen (#Name)
allgemein kann jedes Datenflussdiagramm noch
verfeinert werden, so entstehen dann mehrere
Ebenen (einfache und abgeleitete Konsistenz).
MSP Eis verkaufen
Aufgrund des #Kundenwunsch wird eine
#Tüte mit #Eis zusammengestellt.
5.6 EBNF und Syntaxdiagramm
Geeignet zum Darstellen von
Syntax in Programmiersprachen
Datenstrukturen
Das Datenlexikon bei der SA wird
mit der EBNF gebildet.
Bestandteile:
Terminale und Nicht-terminale
Symbole („Z“ oder A)
Sequenzen (A B)
Alternativen (A | B)
Optionen ([A])
Wiederholungen ({A})
Zu definierendes Symbol („A ::=“)
Gruppierung („(…)“)
16
EBNF:
Syntaxdiagramm:
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
5.7 Entity-Relationship-Modellierung (ERM)
Geeignet zum Darstellen von
Beziehungen zwischen Einheiten
(Entitäten)
Attributen von Entitäten
Vor allem Datenbankstrukturen
Kompletten Systemen durch Menge
aller Entitäten, Attributen und
Beziehungen
Bestandteile:
Entitäten (Rechteck)
Attribute (Ovale)
Beziehungen (Rauten)
Kardinalitäten (1 zu 1, 1 zu n,
n zu m)
Nachteile:
Keine Beschreibung von Funktionen
Vor allem statische Sicht
5.8 Objektorientierte Modellierung mit UML
UML ist eine halbformale, von Programmiersprachen unabhängige und graphische
Modellierungssprache. Sie besteht in UML 2.0 aus 13 verschiedenen Diagrammen und ist trotzdem
kein Ersatz für geschriebenen Text.
Überblick:
17
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Klassendiagramm
Objektdiagramm
Sequenzdiagramm
Zustandsdiagramm
18
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Kommunikationsdiagramm
Anwendungsfalldiagramm
Paketdiagramm
Verteilungsdiagramm
Komponentendiagramm
Aktivitätsdiagramm
19
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Gesamtüberblick über die Anwendungsfälle der Diagramme
5.9 Geschäftsprozessmodellierung mit ARIS
Mit ARIS kann ein gesamtes System modelliert werden und anschließend auch überprüft werden, ob
das System den Anforderungen genügt. Dazu beschreibt man das Informationssystem in fünf
verschiedenen Sichten:
Funktionssicht: Vorgänge und Tätigkeiten, die Leistungen transformieren (Funktionsbaum)
Organisationssicht: alle Organisationseinheiten und ihre Beziehungen (Organigramm)
Datensicht: Ereignisse, die Daten generieren (Entity-Relationship-Modell)
Leistungssicht: Dienst-, Sach- und finanziellen Leistungen (Produktbaum)
Steuerungssicht: Verknüpfung der anderen Sichten (EPKs)
Diese Sichten lassen sich durch das ARIS-Haus visualisieren:
20
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Bestandteile von ARIS Modellen:
Beispieldiagramm mit mehreren Sichten:
5.10 Formale Modellierung mit Petri-Netzen
Die Petri-Netze basieren auf einem vollständigen Formalismus und sind somit
mathematisch exakt beschreibbar. Sie lassen sich zur Modellierung von
nebenläufigen Systemen verwenden.
Bestandteile:
Stelle bzw. Platz (als Kreis mit evtl. Markierung)
Übergang bzw. Transition (Rechteck); falls in den vorherigen Stellen
Markierungen sind, kann die Transition geschaltet werden, sodass die
nachfolgenden Stellen eine Markierung dazubekommen
Datenfluss (als Pfeil mit Beschriftung)
21
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
6 Softwareprozesse und Vorgehensmodelle
6.1 Softwareentwicklung in Phasen
Motivation hinter der Entwicklung in Phasen ist vor allem die bessere Planungsmöglichkeit und
Kalkulierbarkeit von Aufwand. Es gibt dabei drei große Schwierigkeiten:
Abgrenzungsproblem (Phasen sind in der Realität nicht scharf trennbar)
Abfolgeproblem (Sequentielle Anordnung der einzelnen Phasen)
Angemessenheitsproblem (ist das Modell dem Projekt angemessen)
Ein Großteil aller Entwicklungsprozesse besteht aus den folgenden 5 Phasen:
Anforderungsanalyse (Requirements Analysis)
Entwurf (Design)
Implementierung (Implementation)
Wartung und Betrieb (Maintainance)
Außerbetriebsetzung (Retirement)
6.2 Unsystematische „Modelle“
Code-and-Fix Modell
Ohne Design und Spezifikation wird losprogrammiert und das Programm soweit an die
Wünsche des Kunden angepasst, bis er zufrieden ist. Diese Vorgehensweise eignet
sich vor allem für kleinere (einmalige) Programmierarbeiten, da man so schnell und
intuitiv zu Resultaten kommt. Allerdings wird ein so programmiertes Produkt ab einem
gewissen Umfang zu einem „Wartungs-Albtraum“.
6.3 Lineare / Sequentielle Modelle
Wasserfallmodell:
Vorteile:
Einzelne Phasen
können vorausschauend
geplant werden.
Nachteile:
Einführung des Systems
auf einen Schlag („Big
Bang“).
Zu starres Konzept bei
unvorhergesehenen
Ereignissen.
Frühe Festlegung auf
Systemeigenschaften
muss perfekt sein, damit
später keine Konflikte
entstehen
22
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
V-Modell:
Vorteile:
Die Tests werden
zusätzlich betont.
Großes Regelwerk
eignet sich vor allem für
Behörden.
Nachteile:
Sprünge zwischen
Phasen nicht
vorgesehen.
Keine Einbeziehung von
Kunden-Feedback.
6.4 Frühe Prototypen / Rapid Prototyping
Vorteile:
Durch den Prototyp
kann früh Erfahrung mit
den gesamten
Anforderungen
gesammelt werden. Die
Entwicklungszeit nimmt
insgesamt ab.
Vertikale Prototypen: Hier wird die gesamte Abstraktionshierarchie (Pfeil
Anwender-Hardware) und der Funktionsumfang (f1 bis fn) stufenweise
implementiert. Daneben existiert noch das Modell der Horizontalen Prototypen.
Nachteile:
Weiterhin keine Sprünge
möglich und Big Bang.
Achtung: Durch den frühen Prototypen kann beim Auftraggeber zusätzlich der Eindruck entstehen,
dass der Aufwand für das ganze Projekt gar nicht so groß ist, wie angenommen.
6.5 Evolutionäre, inkrementelle Modelle
Software wird hierbei in einem Wachstumsprozess erstellt. Dabei durchläuft sie stets die drei
aufeinanderfolgenden Phasen:
Prototyp (einsetzbares kleines Testsystem zum Überprüfen der Benutzeranforderungen).
Erweiterung (füge Funktionalität hinzu und korrigiere Mängel).
Konsolidierung (Entwurfsfehler werden erkannt und beseitigt, neue Abstraktionen eingeführt)
Durch diese Vorgehensweise gibt es keine plötzliche Einführung eines Systems und damit keinen Big
Bang. Insgesamt ist man schneller bei größeren Projekten, als mit dem reinen Wasserfallmodell.
23
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Spiralmodell:
Vorteile:
Der Big Bang Effekt
kann verhindert werden.
Bessere Umsetzung der
Anforderungen.
Durch Iterationen kann
gut gesprungen werden.
Nachteile:
Organisatorischer
Aufwand bei der
Planung der Iteration
steigt.
Gesamte Projektdauer
nicht mehr genau
einschätzbar.
6.6 Objektorientierte Modelle
Baseball Modell
Zwischen den einzelnen Teilgebieten (OOA, OOD und OOP) kann beliebig gewechselt
werden, aber jeder im (kleinen) Spezialistenteam hat eine bestimmte Fachrichtung. In
enger Zusammenarbeit wird das System objektorientiert entwickelt.
Macro Process
Gesamtüberblick:
24
Unterprozesse je Phase:
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Unified (Software Development) Process (UP)
Begriffe: Worker (hat Aufgaben, Verantwortlichkeiten und Fähigkeiten), Aktivität (wird
einem Worker zugewiesen) und Artefakt (explizite Information, die von einem Worker
bei einer Aktivität erstellt wird)
6.7 Microsoft Vorgehen
Microsoft erstellt unter Berücksichtigung der Wünsche eines großen Kundenkreises Software mit sehr
großem Funktionsumfang, der in den seltensten Einsatzfällen tatsächlich komplett benutzt wird.
Kernelemente bei der Entwicklung von Software im Unternehmen Microsoft sind/waren:
Flache Hierarchien (kleine Entwicklerteams stehen gleich großen Gruppen von Testern
gegenüber). Jeder Entwickler trägt eine Gesamtverantwortung.
Mind. 2 Mal pro Woche wird eine lauffähige Version erstellt (Gefühl, dass Projekt vorankommt).
Psychosoziale Schikanen wie das Motivieren der Arbeiter durch Aussondern von Losern.
6.8 Agile Modelle
Weitere Modelle weisen ähnliche Prinzipien vor:
Versuch Kompromiss zwischen steifem Vorgehenskonzept und der wilden DrauflosProgrammierung zu finden.
Die Vorgehensweise muss dem Projektumfang entsprechen (Abwägen zwischen
Vorhersagbarkeit, Anpassbarkeit und schneller Umsetzung).
Entwicklungsstil basiert auf einem Wertegefühl:
Individuen
> Prozesse und Werkzeuge („geht vor“-Beziehung)
Lauffähige Software
> Dokumentation
Kundenzufriedenheit
> Vertragsverhandlung
Auf Änderungen reagieren
> Verfolgen eines Plans
Inkrementelle Arbeitsabläufe und Auslieferung der Systeme
Kurze Iterationen fixer Länge („time-boxed“) mit parallelen Aktivitäten
Zahlreiche Beispiele für konkrete agile Prozesse:
Adaptative Sw. Dev.. (ASD 2000), Feature Driven Dev.. (FDD 1999), Crystal Methoden
(2001), Dynamic Sw. Dev. Method (DSDM), Rapid Appl. Dev. (RAD), Scrum, Xtreme
Programming (XP 1998), Agile Unify Process (AUP), Lean Dev. (LSD 2001)
Agile Prozesse am Beispiel des eXtreme Programming:
Zentrales Prinzip: wir treiben jede praktische Technik bis zum Extremum
Sehr kurze Iterationen (1 bis 4 Wochen)
Es wird vor allem programmiert und technisch herangegangen.
25
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Das meiste wird direkt in Code umgesetzt und nur wenige Artefakte produziert.
Vier Kernwerte: Einfachheit, Mut, Kommunikation und Kundenrückmeldung
15 Prinzipien: z.B. sofortiges Feedback, Veränderung wollen, Qualitätsarbeit, Lernen lehren,
geringe Anfangsinvestitionen, arbeite auf den Sieg hin, gezielte Experimente, offene
Kommunikation, nutze Instinkte des Teams, übernehme Verantwortung, Anpassung an lokale
Umstände, reise mit leichtem Gepäck, Messungen ehrlich durchführen.
13 weitere zu einander in Beziehung stehende Praktiken
Zu Beginn eines Projekts werden die Anforderungen des Kunden („stories“) notiert und
anschließend wird der Aufwand jeder Story geschätzt, ein Plan erstellt, wann und wo die stories
implementiert werden und Testfälle für sie definiert.
6.9 Weitere Phasenmodelle
Da es noch viele weitere Phasenmodelle gibt, wird hier noch aufgeführt, durch welche Kriterien man
sich für ein bestimmtes entscheiden sollte:
Größe und Kultur des Unternehmens
Management
Fähigkeiten der Angestellten
Projekt und die Natur des Produkts
Deswegen wird in der Realität oft eine Mischung („mix-and-match“) oder Beschränkung („Tailoring“)
einzelner Modelle gebraucht.
6.10 Fokus: Analysephase, Requirements Engineering
Das Requirements Engineering beschäftigt sich mit der systematischen, ingenieursmäßigen
Entwicklung einer Anforderungsdefinition, welche die Leistungen eines Systems vollständig und
eindeutig beschreibt.
Als Ergebnis wird (unter Zuhilfenahme des Lastenhefts) ein Pflichtenheft oder eine Produktdefinition
erstellt. Darin werdn neben der genauen Funktionsbeschreibung des Programms noch Anforderungen
an die Dokumentation, Richtlinien und physikalische Betriebsbedingungen festgelegt.
Verfahren: Noun Approach (Extrahieren von Nomen aus einem Beschreibungstext als
Kandidaten für Klassen im System)
Verfahren: textuelle Beschreibung von Use-Cases (Festlegung von: Name des Falls,
Akteure, Beschreibung, Startereignis, Ausnahmen & Fehler)
26
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
6.11 Fokus: Entwurfsphase
Zunächst muss man eine Anforderungsbeschreibung vorliegen haben. Mit dieser kann man dann
schrittweise Entwurfsentscheidungen treffen (design decisions).
Bei dem Entwurf bedient man sich geläufiger Entwurfsmuster (design patterns). Dabei beschreibt ein
Muster:
Ein wiederkehrendes Problem
Kontext des auftretenden Problems
Kern der Lösung des Problems (in vielen Variationen anwendbar)
Die Struktur einer Musterbeschreibung:
Name
Problem: Beispiel, Motivation, Kontext, Anwendungsbereich
Einschränkungen
Lösung: Struktur, Implementierung (Code), Konsequenzen (Vor- und Nachteile)
Varianten
Verwandte Muster
7 Qualität
7.1 Einordnung und Begriff
„Software-Qualität ist die Gesamtheit der Merkmale und Merkmalswerte eines Software-Produkts, die
sich auf dessen Eignung beziehen, festgelegte Erfordernisse zu erfüllen.“
7.2 Qualitätseigenschaften
Mit Metriken versucht man die Qualität zu messen und messbar zu machen.
27
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
7.3 Wege zur Qualität
Qualitätssicherung (QS): Summe der Maßnahmen für die Gewährleistung der Qualität
Qualitätsmanagement (QM): organisatorische Maßnahmen zur Erreichung/Nachweis einer
hohen Qualität
7.4 Qualität und Softwareentwicklung
Erfahrung mit Fehlern bei der Qualitätsbestimmung:
28
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de
Quellennachweis:
Folien zur Vorlesung „Software Engineering“ von Jun. Prof. Dr.-Ing. Elke Pulvermüller an
der Universität Osnabrück
UML Cheat Sheets: Lou Franco, Laurent Grégoire, oose Innovative Informatik GmbH
(www.oose.de)
Wikipedia
29
Zusammengestellt in 2010 - Sharing welcome! – wladislaw.gusew.de