|
Wintersemester 1999/2000 Prof. Dr. Manfred Broy |
Bereich: Informatik I, Vorlesung: 3 Std.
Zeit und Ort der Vorlesung: Mittwoch 12:15-13:00, Hörsaal
N1070, Freitag 10:15-12:00, Hörsaal S1128
Beginn: Mittwoch, 3. November 1999
Sprechstunde: Mittwoch 10:15-11:00 im Büro 2556 (in der Vorlesungszeit)
Hörerkreis: Studenten der Informatik nach dem Vordiplom
Voraussetzungen: Informatik bis zum Vordiplom
Empfehlenswert für: Hauptfach und Nebenfach
Informatik
Zeit und Ort der Zentralübung: Dienstag 16:00-17:30,
Hörsaal 1200, ab 1.2.2000 im Raum N0116
Beginn: Dienstag, 9. November 1999
Übungsleitung: Herbert
Ehler und
Bernhard Schätz
Klausur: Dienstag, 29. Februar 2000, 16:00 - 18: 00 Uhr im Hörsaal
N1179, Anmeldung per email an ehler@in.tum.de bis zum 15.2.2000.
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.
Inhalt:
Die Vorlesung vermittelt die grundlegende Technik und Methodik
für die Entwicklung großer Softwaresysteme.
Fragen der Projektorganisation und des Projektmanagements werden in einer 2std. Vorlesung behandelt, die sich im Sommersemester 2000 anschließt.
1. Einleitung
1.1 Softwaretechnik und ihre Bedeutung
1.2 Zielsetzung und Aufgaben der Softwaretechnik
1.3 Grundbegriffe
1.4 Spezifische Schwierigkeiten und Erfolgsfaktoren
im Entwicklungsprozeß
1.5 Qualitäsmerkmale und Risiken
1.6 Projektorganisation und -management
2. Grundlegende Entwicklungsmethodik
2.1 Projektphasen und Systemzergliederung
2.1.1 Phasen der Systementwicklung
2.1.2 Systembeschreibungen
2.1.3 Systemzergliederung in Komponenten
2.2 Phasen der Softwareentwicklung
2.2.1 Vorstudie
2.2.2 Problem- und Systemanalyse
2.2.3 Anforderungsspezifikation
2.2.4 Systementwurf
2.2.5 Systemimplementierung
2.2.6 Test, Verifikation und Abnahme
2.2.7 Modifikation, Anpassung und Weiterentwicklung
2.2.8 Allgemeine Bemerkungen zur Organisation der Arbeit in Phasen
2.3 Vorgehensmodelle
2.3.1 Phasenmodelle
2.3.1.1 Wasserfallmodell
2.3.1.2 V-Modell
2.3.2 Prototyporientierte Softwareentwicklung
2.3.2.1 Spiralmodell
2.3.2.2 Inkrementelles Vorgehensmodell: Evolutionäres Prototyping
2.3.2.3 Experimentelles Prototyping
2.3.3 Allgemeine Bemerkungen zu Vorgehensmodellen
2.4 Entwicklungsmethoden
2.4.1 Top-Down und Bottom-Up Ansätze
2.4.2 Schrittweise Verfeinerung
2.4.3 Komponentenorientierte Softwareentwicklung
2.4.4 Objektorientierung in der Softwareentwicklung
3. Systeme, Software und ihre Beschreibung
3.1 Systeme
3.1.1 Systemmodelle
3.1.1.1 Sequentielle Systemmodelle
3.1.1.2 Interaktive Systeme
3.1.1.3 Parallele Systemmodelle
3.1.2 Beschreibungsmittel
3.2 Systemsichten, Modelle, Beschreibungstechniken
3.2.1 Datenmodelle
3.2.1.1 Abstrakte Datentypen
3.2.1.2 E/R-Datenmodellierung
3.2.2 Architekturmodelle
3.2.3 Zustandsmodelle
3.2.4 Prozeßmodelle
3.2.5 Schnittstellenmodelle und Komponentendarstellung
3.2.6 Programmdarstellung
3.2.6.1 Pseudocode
3.2.6.2 Sichten auf Programme
3.3 Qualitätsmerkmale und Standards
4. System- und Anforderungsanalyse
4.1 Erfassung des Problembereichs
4.2 Systemstudie - Machbarkeitsstudie
4.3 Anforderungsanalyse: Erfassung der
Systemanforderungen
4.3.1 Nutzungsfälle
4.3.2 Nutzungsschnittstelle
4.4 Anforderungserfassung: Von System- zu
Softwareanforderungen
4.5 Softwarespezifikation
4.6 Qualitätssicherung und Validierung
4.6.1 Nutzerpartizipation
4.6.2 Prototypen in der Systemanalyse
4.7 Objektorientierte Analyse
4.8 Werkzeuge
4.9 Zugriffssicherheit, Zugangskontrolle,
Datenschutz
5. Systementwurf
5.1 System- und Softwarearchitektur
5.1.1 Qualitätsmerkmale für Softwarearchitekturen
5.1.2 Beispiele für Standardarchitekturen
5.1.3 Spezielle Aspekte (Verteilung, Fehlerbehandlung)
5.2 Systemzerlegung
5.3 Komponentenspezifikation - Schnittstellenspezifikation
5.3.1 Spezifikation von Funktionen
5.3.2 Spezifikation von Prozeduren
5.3.3 Spezifikation interaktiver Komponenten
5.4 Entwurf der Nutzerschnittstelle
5.5 Objektorientierter Entwurf
5.6 Qualitätssicherung
5.6.1 Verifikation, Simulation und Test
5.6.2 Leistungsabschätzung
5.6.3. Entwurfsreviews
5.6.4 Entwurfsmuster
5.7 Prinzipien im Komponentenentwurf
6. Implementierung und Programmierung
6.1 Implementierung des Datenmodells
6.2 Implementierung der Komponenten
6.2.1 Komponentenentwurf
6.2.2 Komponentenrealisierung
6.2.3 Komponentendokumentation
6.3 Module und ihre Implementierung
6.4 Objektorientierte Programmierung
6.5 Integration
6.6 Qualitätssicherung
6.6.1 Codeinspektion und Reviews
6.6.1 Testen
6.6.1.1 Methodik des Testens
6.6.1.2 Integrationstests
6.6.1.3 Abnahmetests
6.6.1.4 Top-Down-Test
6.6.1.5 Rechnergestützte Testdurchführung
6.6.1.6 Leistungsnachweis
6.6.2 Verifikation durch Modellchecking und Korrektheitsbeweis
7 Auslieferung, Systeminstallation, Wartung, Pflege
7.1 Abnahme
7.2 Einführung
7.3 Wartung und Fehlerkorrektur
7.4 Pflege und Weiterentwicklung
8. Prinzipien und Erfolgsfaktoren in der Softwareentwicklung
8.1 Techniken
8.1.1 Effizienz und Performanz
8.1.2 Modularisierung
8.1.3 Datenabstraktion und Verkapselung
8.1.4 Schnittstellen
8.1.5 Entwicklungs- und Programmierstil
8.1.6 Benutzerschnittstellen
8.1.7 Robustheit
8.2 Prozeß
8.2.1 Wiederverwendung
8.2.2 Flexibilität - Management of Change
8.2.3 Konfigurationsmanagement
8.2.4 Dokumentation - Design Rationale
8.3 Werkzeuge
8.3.1 Programmiersprachen (Compiler)
8.3.2 CASE
Literatur: (Wird im Lauf des Semesters vervollständigt)