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 I: Softwaretechnik
Prof. Dr. Dr. h.c. Manfred Broy

 

Bereich:  Informatik I, Vorlesung: 3 Std.

Zeit der Vorlesung:  Dienstag 16:00-17:30, Freitag 9:15-10:00
Ort:  Hörsaal 00.04.011, MI Hörsaal 2

Hörerkreis: 

  • Bachelorstudierende nach der alten Ordnung als Vertiefungsvorlesung im Schwerpunkt Software Engineering
  • Bachelorstudierende nach der neuen Ordnung als Wahlvorlesung
  • Diplomstudierende als vertiefende Vorlesung in der Praktischen Informatik
  • Masterstudierende als Wahlfach im Fachgebiet Software Engineering

ECTS-Credits: 6

Zeit und Ort der Zentralübung:  Freitag 12:15-13:30, Hörsaal 00.04.011, MI Hörsaal 2
Übungsleitung:  Dr. David Trachtenherz, Christian M. Neumann, Thomas Kofler, Markus Herrmannsdörfer

Die Aufgabenblätter für die Zentralübung werden regelmäßig hier veröffentlicht. 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 hier auch Arbeits- und Merkblätter veröffentlicht.

Klausur: Die Klausur findet am Fr., 11. Februar 2011, 16:30-18:00, in den Räumen 00.02.001, MI Hörsaal 1 und 00.04.011, MI Hörsaal 2 statt (s. a. Prüfungstermin in TUMonline). Die Bearbeitungszeit ist 90 Minuten. Bücher und eigene Skripten dürfen verwendet werden (Open-Book-Klausur), aber keine elektronischen Hilfsmittel wie Taschenrechner, Mobiltelefone, Smartphones, elektronische Wörterbücher, u. a.
Bitte melden Sie sich für die Klausur in TUMonline bis spätestens 15. Januar 2011 an. Bei Problemen mit TUMonline kann man sich, ebenfalls bis spätestens 15. Januar 2011, über den Infopoint Informatik anmelden.

Wiederholungsklausur: Die Wiederholungsklausur findet am Fr., 29. April 2011, 8:30-10:00, im Raum 00.02.001, MI Hörsaal 1 statt (s. a. Prüfungstermin in TUMonline). Die Anmeldung erfolgt über TUMonline und ist bis zum 3. April möglich (s. a. Termine zur Prüfungsanmeldung). Die Rahmenbedingungen sind die gleichen wie bei der ersten Klausur: Die Bearbeitungszeit ist 90 Minuten; Bücher und eigene Skripten dürfen verwendet werden (Open-Book-Klausur), aber keine elektronischen Hilfsmittel wie Taschenrechner, Mobiltelefone, Smartphones, elektronische Wörterbücher, u. a.


Aktuelle Mitteilungen

  • Die Musterlösung zur Wiederholungsklausur ist online.
  • Die Einsicht für die Wiederholungsklausur findet an folgenden Terminen statt:
    • Di, 17.05., 9:00 - 9:30 Uhr, Raum 00.09.055 (Turing)
    • Di, 17.05., 15:00 - 15:30 Uhr, Raum 00.09.055 (Turing)
    Eine Anmeldung ist aber unbedingt erforderlich. Bitte schreiben Sie dazu bis spätestens Fr, 13.05. eine Email an Markus Herrmannsdörfer mit dem Termin, an dem Sie teilnehmen wollen.
  • Die anonyme Notenverteilung der Wiederholungsklausur kann hier eingesehen werden.
  • Die Wiederholungsklausur findet am Fr., 29. April 2011, 8:30-10:00 statt. Weitere Informationen sind oben angegeben.
  • Die Musterlösung zur Klausur ist online.

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-05-03 17:14:33