Fakultät für Informatik

TU München - Fakultät für Informatik
Software- and Systems Engineering Research Group

TUM

Vorlesung | Wintersemester 2010/11
Software Engineering
Prof. Dr. Dr. h.c. Manfred Broy

 

Dozent: Manfred Broy

Bereich: Software Engineering

Art: Pflichtvorlesung, 2V+2Ü Std.

Turnus: Jährlich

Zeit und Ort der Vorlesung:  Dienstag 10:00-11:30, Konrad Zuse FMI 01.11.018

Zeit und Ort der Übung:  Dienstag 12:30-14:00, Konrad Zuse FMI 01.11.018

Beginn: Dienstag, 26. Oktober 2010

Hörerkreis:  Studenten des Elitestudiengangs Software Engineering

ETCS-Credits: 6

Übungsleitung:  Bernd Spanfelner, Christian Leuxner und Maximilian Irlbeck

Scheinkriterium: Präsentation mindestens einer Übungsaufgabe in der Zentralübung und Bestehen der Klausur

Klausur: 15.2.2011

Klausureinsicht: 21.3.2011, 10-11 Uhr, Zimmer 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.



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.1.1  Herausforderungen in der Softwareentwicklung
            1.1.2  Schlüsselstellung Software Engineering
    1.2  Zielsetzung des Software Engineering
    1.3  Zentrale Grundbegriffe
            1.3.1  Sofwaresysteme
            1.3.2  Softwareprojekte
            1.3.3  Legacy Systeme
    1.4  Erfolgsfaktoren im Entwurfsprozess
    1.5  Hauptfehlentwicklungsfehler

2.  Vorgehensmodelle
     2.1  Grundsätzliches zu Vorgehensmodellen
            2.2.1  Gliederung des Vorgehens
            2.2.2  Die Rolle der Vorgehensmodelle der Softwareentwicklung
     2.2  Projektphasen und Systemzergliederung
            2.2.1  Das Produktmodell
            2.2.2  (Phasen der Systementwicklung) Prozessmodell
            2.2.3  Systembeschreibungen
     2.3  Phasenmodelle
            2.3.1  Problem- und Systemanalyse
            2.3.2  Systementwurf und Softwarearchitektur
            2.3.3  Implementierung
            2.3.4  Modifikation, Anpassung, Pflege und Weiterentwicklung
            2.3.5  Allgemeine Bemerkungen zur Organisation der Arbeit in Phasen
     2.4  Gebräuchliche Vorgehensmodelle
            2.4.1  Phasenmodelle, Wasserfallmodell
            2.4.2  Das V-Modell
            2.4.3  Inkrementelle, iterative und evolutionäre Vorgehensmodelle
            2.4.4  Spiralmodell: Der Prototypansatz mit iterativem Vorgehen
            2.4.5  Experimentelles und exploratives Prototyping
            2.4.6  Agiles Vorgehen und Extreme Programming
            2.4.7  Rational Unified Process
            2.4.8  V-Model XT
            2.4.9  Allgemeine Bemerkungen zu Vorgehensmodellen

3.  Beschreibungs- und Modellierungsmittel
     3.1  Strukturierte Sichten auf Software und Systeme der Informationsverarbeitung
     3.2  Modellbildung und Beschreibungsmittel
     3.3  Systemmodelle
            3.3.1  Systemzergliederung in Komponenten
     3.4  Datenmodellierung: Sorten, Werte und Funktionen
            3.4.1  Datenmodellierung durch algebraische Spezifikation
            3.4.2  Datenmodellierung durch Sortendeklaration
            3.4.3  Datenmodellierung durch E/R-Methoden
            3.4.4  Datenmodell und Datenlexikon
     3.5 Programm und Systemkomponenten
            3.5.1  Spezifikation von Funktionen
            3.5.2  Prozedurspezifikation
            3.5.3  Programmdarstellung
            3.5.4  Module
     3.6  Struktur- und Verteilungssicht: Datenflussmodelle
     3.7  Ablauf- und Prozesssicht
     3.8  Spezifikation des Verhaltens von Komponenten
            3.8.1  Zustandsmaschinen mit Ein- und Ausgabe
            3.8.2  Zustandsübergangsdiagramme
            3.8.3  Statecharts
            3.8.4  Kontrollflussdiagramme
            3.8.5  Zustandsübergangstabellen
            3.8.6  Funktionale Sicht/Black-Box Sicht
            3.8.7  Spezifikation interaktiver und reaktiver Komponenten
            3.8.8  Weitere Beschreibungstechniken für Programme
     3.9  Objektorientierte Modellierung
            3.9.1  Objektorientierung
            3.9.2  Objektorientierte Programmierung
            3.9.3  Objektorientierte Datenmodelle
     3.10  Umfassende Beschreibungsmethoden

4.  Systemanalyse - Requirements Engineering
     4.1  Geschäftsziele
     4.2  Systemstudie
     4.3  Erarbeitung der Systemanforderungen
     4.4  Domänenanalyse: Erfassung des Anwendungsgebiets
     4.5  Anforderungsspezifikation
     4.6  Funktionale Anforderungen
            4.6.1  Nutzungsfälle - Use Cases
            4.6.2  Logisches Datenmodell
            4.6.3  Logisches Prozessmodell
            4.6.4  Benutzerschnittstelle und -oberfläche
            4.6.5  Funktionenmodell
            4.6.6  Sicherheitsrisikoanalyse
     4.7  Nichtfunktionale Anforderungen
     4.8  Lastenheft - Pflichtenheft
     4.9  Validierung und Qualitätssicherung
     4.10  Prototypen in der Anforderungsanalyse
     4.11  Requirements Management
     4.12  Weiterführende Themen

5.  Systementwurf: Architektur
     5.1  System- und Softwarearchitekturen
            5.1.1  Allgemeines zum Begriff Architektur
            5.1.2  Architekturmodelle für Software
            5.1.3  Schichtenarchitekturen
            5.1.4  Gesamtarchitekturen von IT-Systemen
     5.2  Aspekte einer Architektur und Architekturmodelle
            5.2.1  Bestandteile einer Software- oder Systemarchitektur
            5.2.2  Parallele Systemmodelle für Architekturen
            5.2.3  Interaktive Systeme
            5.2.4  Sequentielle Systemmodelle
            5.2.5  Statik und Dynamik in Architekturen
            5.2.6  Eigenschaften von Softwarearchitekturen
            5.2.7  Datenmodellierung im Entwurf
     5.3  Komponentenspezifikation und Frameworks
            5.3.1  Black Box Spezifikation
            5.3.2  Verifikation der Architektur
            5.3.3  Wiederverwendung von Komponenten
            5.3.4  Prinzipien im Architektur- und Komponentenentwurf
     5.4  Verfeinerung der Architektur
     5.5  Die Aufgabe und Rolle der Architektur in der System- und Softwareentwicklung
     5.6  Methodische Ratschläge: Entwurfsmuster - Design Patterns
     5.7  Fehlerbehandlung
     5.8  Komponentenfeinentwurf
     5.9  Qualitätssicherung für Architekturen
            5.9.1  Verifikation der Architektur
            5.9.2  Leistungsabschätzung
            5.9.3  Entwurfsreviews
            5.9.4  Prototyping
     5.5.10  Weiterführender Stoff

6.  Implementierung
     6.1  Implementierung des Datenmodells
     6.2  Implementierung der Module
            6.2.1  Modulentwurf
            6.2.2  Modulrealisierung
            6.2.3  Modulbibliotheken und Frameworks
            6.2.4  Einbindung vorgefertigter Codes, Generatoren und Automatisierung der Codeerzeugung
            6.2.5  Moduldokumentation
            6.2.6  Zur Codierdisziplin
     6.3  Realisierung der Benutzerschnittstelle
     6.4  Qualitätssicherung für den Code
     6.5  Weiterführender Stoff

7.  Integration und Qualitätssicherung
     7.1  Integration
            7.1.1  Grundsätzliches Vorgehen in der Integration
            7.1.2  Fehlerbehandlung in der Integration
            7.1.3  Vorgehen bei der Integration
     7.2  Stufenweise Integration
            7.2.1  Integration der Module zu Komponenten
            7.2.2  Softwareintegration
            7.2.3  Systemintegration
     7.3  Qualitätssicherung
     7.4  Codeinspektion und Code-Reviews
     7.5  Testen
            7.5.1  Grundsätzliches zum Testen
            7.5.2  Methodik des Testens 
            7.5.3  Modultest
            7.5.4  Integrationstests
            7.5.5  Top-Down-Test / Bottom-Up-Tests
            7.5.6  Regressionstests
            7.5.7  Abnahmetests
            7.5.8  Rechnergestützte Testdurchführung
     7.6  Verifikation durch Korrektheitsbeweis und Modellchecking
     7.7  Ganzheitliche Qualitätssicherung
            7.7.1  Zur Effektivität der Qualitätssicherungsmaßnahmen
            7.7.2  Durchgängigkeit von QS im Prozess
     7.8  Auslieferung, Installation, Inbetriebsetzung
            7.8.1  Zeitaufwände bis zur Auslieferung
            7.8.2  Übergang in die Wartung
     7.9  Weiterführende Themen

8.  Softwarewartung, -pflege, -evolution
     8.1  Wartung, Pflege und Weiterentwicklung
            8.1.1  Aufgaben der Softwarewartung
            8.1.2  Aufwandsabschätzungen
     8.2  Legacy Software
     8.3  Ausblick: Gestaltung von Softwarelandschaften

9.  Prinzipien im Systementwurf
     9.1  Dokumentation
     9.2  Modularisierung
     9.3  Datenabstraktion und Verkapselung
     9.4  Schnittstellen
     9.5  Entwicklungs- und Programmierstil
     9.6  Wieder- und Mehrfachverwendung
     9.7  Flexibilität, Änderbarkeit
     9.8  Benutzerschnittstellen
     9.9  Robustheit
     9.10  Effizienz und Performanz
     9.11  Datensicherheit und Datenschutz
     9.12  Ausnahmebehandlung
     9.13  Softwarearchitektur


© Software & Systems Engineering Research Group
Sitemap |  Kontakt/Impressum
Letzte Änderung: 2011-02-21 16:02:27