/software-engineering

Vorlesungswebseite fuer den Kurs Software Engineering der Universitaet Basel

License: CC BY 4.0 Gitter

10915-01: Software Engineering

Departement Mathematik und Informatik, Universität Basel

Dozent: Marcel Lüthi (marcel.luethi@unibas.ch)

Kursbeschreibung

Die Vorlesung gibt einen erste Einführung in das Software engineering. Das Hauptziel der Vorlesung ist die Studierenden mit den Grundprinzipien der Softwaretechnik sowie zu einem gewissen Grad auch mit der Geschichte des Feldes vertraut zu machen. Aktuelle Methoden und Tools werden im Rahmen eines vorlesungsbegleitenden Projekts eingeführt.

Projekt

Das Open Source Projekt Ganttprojekt (Fork des Github Repositories) dient als Grundlage für die praktischen Übungen. Die Studierenden implementieren in Gruppen kleine Änderungen am Projekt, studieren den Source Code und implementieren eigene Erweiterungen.

(Vorläufiges) Programm

Die Druckversion der Vorlesungsfolien ist für Chrome und Chromium optimiert. Druckfertige pdf Versionen gibt es auf Adam

Woche Thema Bemerkung
1 Einführung / Administratives (html) (Druckversion)
Warum brauchen wir Software engineering (html) (Druckversion)
Was ist Software engineering (html) (Druckversion)
Wie lese ich ein wissenschaftliches Paper (html) (Druckversion)
2 Kurze Geschichte des Software engineerings (html) (Druckversion) geändert 26.9
Eigenschaften von Software (html) (Druckversion)
Software Qualitätsmerkmale (html) (Druckversion)
3 Prinzipien des Software engineerings (html) (Druckversion) geändert 3.10
Software design - Übersicht und Einführung (html) (Druckversion)
4 Modulstruktur / Softwarearchitektur (html) (Druckversion)
Moduldesign (html) (Druckversion)
5 Modul Beschreibung (html) (Druckversion)
Kategorien von Modulen (html) (Druckversion)
OO Design (html) (Druckversion)
UML (statische Diagramme) (html) (Druckversion)
6 OO Design Prinzipien (SOLID) (html) (Druckversion)
OO Design Heuristiken (html) (Druckversion)
7 Requirement Engineering (html) (Druckversion) Auszug aus Lehrbuch von Balzert (pdf auf Adam)
Requirements (html) (Druckversion)
8 Softwarespezifikation (Übersicht) (html) (Druckversion)
Konstruktive Softwarespezifikation (html) (Druckversion)
9 Deskriptive Softwarespezifikation (html) (Druckversion)
10 Verifikation (Überblick) (html) (Druckversion) (aktualisiert 21.11)
Testen (Grundlagen) (html) (Druckversion)
Testen im Kleinen - Whitebox testing (html) (Druckversion)
11 Testen im Kleinen - Blackbox testing (html) (Druckversion)
Testen im Grossen (html) (Druckversion)
Software prozesse (html) (Druckversion)
12 Paperbesprechung: A rational design process (html) (Druckversion)
Agile Softwareentwicklung (html) (Druckversion)
Scrum (pdf)
13 Entwurfsmuster (html) (Druckversion)
14 Zusammenfassung / Prüfungshinweise (html) (Druckversion)

Übungen

Woche Thema Deadline Kommentar
1 Ganttproject: Projekt Setup (html) 26. September 2017
Theorie: Übungsblatt 1: No Silver bullet (html) 26. September 2017
2 Theorie: Übungsblatt 2: Software Aging (html) 03. Oktober 2017
2-3 Ganttproject: Übung 2: Erste Änderungen (html) 10. Oktober 2017
3-4 Ganttproject: Übung 3: Travis & Codereading (html) 17. Oktober 2017
4-5 Theorie: Übungsblatt 3: Module und Abstrakte Datentypen (html) 24. Oktober 2017
5-6 Ganttproject: Übung 4: Interne Datenstrukturen und Bugfix (html) 31. Oktober 2017
6-7 Theorie: Übungsblatt 4: UML Klassendiagramme (html) verlängert bis 14. November 2017 Freiwillig
12 Theorie: Lesen des Papers A rational design process 6. Dezember 2017 Freiwillig (keine Punkte)

Projekt

Woche Thema Kommentar
5 Slides mit Projektideen (html)
7 Projektplan (html)
7 Beispiele Lastenheft / Pflichtenheft
7 Templates: Lastenheft, Pflichtenheft, Glossar
11 Template: Testplan
13 Template: Technische Dokumentation

Slides zu Übungswerkzeugen

Woche Thema
1 Git (pdf)
Gradle (pdf)

Literatur / Weiterführende Links

Empfohlenes Lehrbuch

Weiterführende Links und Literaturempfehlungen für besonders Interessierte

  • The mythical man month, Fred Brooks: (pdf)
    • Das Klassische Software Engineering Buch. Einfach und unterhaltsam zu lesen aber voller wertvoller Informationen.
  • The Good, the Hype and the Ugly, Bertrand Mejer (Amazon)
    • Sehr gute Einführung in Agile Methoden, die Agile Methoden auch in Kontext mit traditionellen Software Engineering Ansätzen setzt.
  • Seminal papers in Software Engineering, The Carnegie Mellon Canonical Collection (pdf)
    • Annotierter Katalog von klassischen Software Engineering Paper
  • Liskov's reading list (html)