Dozent: Manfred Broy
Bereich: Software Engineering
Art: Pflichtvorlesung, 2V+2Ü Std.
Turnus: Jährlich
Zeit und Ort der Vorlesung: Montag 13:30-15:00,
Konrad Zuse FMI 01.11.018
Beginn: Montag, 15. Oktober 2007
Hörerkreis: Studenten des Elitestudiengangs Software
Engineering
ETCS-Credits: 6
Zeit und Ort der Zentralübung: Montag 15:15-16:45,
Konrad Zuse FMI 01.11.018
Beginn: Montag, 22. Oktober 2007
Übungsleitung: Bernhard Schätz und Stefan Wagner
Scheinkriterium: Präsentation mindestens einer
Übungsaufgabe in der Zentralübung und Bestehen der Klausur
Klausur: Freitag, 15.
Februar 2008, 10:30 - 12:00, Konrad Zuse FMI 01.11.018
Die Aufgabenblätter für
die Zentralübung werden regelmäßig in der Vorlesung
verteilt. Es ist unverzichtbar, sich mit den Aufgaben
auseinanderzusetzen, um sich den Vorlesungsstoff zu erarbeiten.
Für Fragen stehen die Übungsleiter nach der Zentralübung
zur Verfügung. Bei Bedarf werden in der Vorlesung auch Arbeits- und Merkblätter ausgeteilt.
Aktuelle Mitteilungen
Die Folien der ersten Vorlesung sind online, aber mit einem
Passwort geschützt, das in der Vorlesung bekannt gegeben wird. Das
selbe Passwort wird in Zukunft auch für die
Übungsblätter gelten.
Inhalt:
Die Vorlesung vermittelt die grundlegende Technik und Methodik
für die Entwicklung großer Softwaresysteme.
Fragen der Projektorganisation und des Projektmanagements
werden in der Vorlesung "Projektorganisation und Management in der
Softwareentwicklung" behandelt.
1. Grundsätzliches zum Software Engineering
1.1 Software Engineering und seine Bedeutung
1.2 Zielsetzung des Software Engineering
1.3 Grundbegriffe
1.4 Erfolgsfaktoren im Entwurfsprozess
1.5 Hauptfehlentwicklungsfehler
2. Vorgehensmodelle
2.1 Projektphasen und Systemzergliederung
2.1.1 Das Produktmodell
2.1.2 Das Prozessmodell
2.1.3 Systembeschreibungen
2.2 Phasenmodelle
2.2.1 Problem- und Systemanalyse
2.2.2 Systementwurf und Softwarearchitektur
2.2.3 Implementierung
2.2.4 Modifikation, Anpassungen und Weiterentwicklung
2.2.5 Allgemeine Bemerkungen zur Organisation der Arbeit in Phasen
2.2.6 Prototypen
2.3 Gebräuchliche Vorgehensmodelle
2.3.1 Phasenmodelle, Wasserfallmodell
2.3.2 Das V-Modell
2.3.3 Spiralmodell: Der Prototypansatz
2.3.4 Inkrementelles und evolutionäres Vorgehensmodell
2.3.5 Experimentelles und exploratives Prototyping
2.3.6 Extreme Programming
2.3.7 Systemzergliederung in Komponenten
2.3.8 Allgemeine Bemerkungen zu Vorgehensmodellen
3. Beschreibungs- und Modellierungsmittel
3.1 Modellbildung und Beschreibungsmittel
3.2 Systemmodelle
3.3 Datenmodellierung: Sorten, Werte und
Funktionen
3.3.1 Datenmodellierung durch algebraische Spezifikation
3.3.2 Datenmodellierung durch Sortendeklaration
3.3.3 Datenmodellierung durch E/R-Methoden
3.3.4 Datenmodell und Datenlexikon
3.4 Programm und Systemkomponenten
3.4.1 Spezifikation von Funktionen
3.4.2 Prozedurspezifikation
3.4.3 Programmdarstellung
3.4.4 Module
3.5 Struktur- und Verteilungssicht:
Datenflussmodelle
3.6 Ablauf- und Prozesssicht
3.7 Verhalten von Komponenten
3.7.1 Zustandsübergangsdiagramme
3.7.2 Zustandsmaschinen mit Ein- und Ausgabe
3.7.3 Statecharts
3.7.4 Kontrollflussdiagramme
3.7.5 Zustandsübergangstabellen
3.7.6 Erweiterte Zustandsübergangsdiagramme
3.7.7 Funktionale Sicht/Black Box Sicht
3.7.8 Spezifikation interaktiver Komponenten
3.7.9 Weitere Beschreibungstechniken für Programme
3.8 Objektorientierte Modellierung
3.8.1 Objektorientierung
3.8.2 Objektorientierte Datenmodelle
3.9 Umfassende Beschreibungsmethoden
4. Systemanalyse - Requirements Engineering
4.1 Erfassung des Problembereichs
4.2 Systemstudie
4.3 Systemanforderungen
4.3.1 Logisches Datenmodell
4.3.2 Funktionenmodell
4.3.3 Benutzerschnittstelle und -oberfläche
4.3.4 Sicherheitsmodell - Risikoanalyse
4.4 Validierung
4.5 Prototypen in der Systemanalyse
5. Systementwurf
5.1 Datenmodellierung im Entwurf
5.2 System- und Softwarearchitekturen
5.2.1 Bestandteile einer Softwarearchitektur
5.2.2 Parallele Systemmodelle für Architekturen
5.2.3 Interaktive Systeme
5.2.4 Sequentielle Systemmodelle
5.2.5 Eigenschaften von Softwarearchitekturen
5.3 Komponentenspezifikation
5.3.1 Black Box Spezifikation
5.3.2 Validierung
5.3.3 Einbindung von vorgefertigten Komponenten
5.4 Verfeinerung
5.5 Methodische Ratschläge: Entwurfsmuster
5.6 Fehlerbehandlung
5.7 Komponentengrobentwurf
5.8 Qualitätssicherung
5.8.1 Verifikation
5.8.2 Leistungsabschätzung
5.8.3 Entwurfsreviews
5.8.4 Prototyping
6. Implementierung
6.1 Implementierung des Datenmodells
6.2 Implementierung der Komponenten
6.2.1 Komponentenfeinentwurf
6.2.2 Komponenten- und Modulrealisierung
6.2.3 Einbindung vorgefertiter Codes, Generatoren
6.2.4 Komponentendokumentation
6.2.5 Zur Codierdisziplin
6.3 Realisierung der
Benutzerschnittstelle
6.4 Integration
6.5 Qualitätssicherung
6.5.1 Codeinspektion und Code-Reviews
6.5.2 Testen
6.5.3 Verifikation durch Korrektheitsbeweis
6.5.4 Zur Effektivität der Qualitätssicherungsmassnahmen
6.5.5 Prinzipien im Komponentenentwurf
6.6 Auslieferung, Systeminstallation,
Wartung
6.6.1 Phasen bis zur Auslieferung
6.6.2 Aufwandsabschätzungen
6.6.3 Wartung
6.7 Weiterentwicklung, Legacy Systeme
7 Prinzipien im Systementwurf
7.1 Dokumentation
7.2 Modularisierung
7.3 Datenabstraktion und Verkapselung
7.4 Schnittstellen
7.5 Entwicklungs- und Programmierstil
7.6 Wiederverwendung
7.7 Flexibilität, Änderbarkeit
7.8 Benutzerschnittstellen
7.9 Robustheit
7.10 Effizienz
7.11 Zugriffssicherheit und Datenschutz
7.12 Ausnahmebehandlung
7.13 Softwarearchitektur
7.14 Entwicklungsmethoden
7.15 Werkzeuge im Softwareentwurf
7.16 Implementierungsplattform
|