03SMMINF4569 - Fundamentals of Software Systems (FSS)

Instructor(s):

Prof. Dr. Alberto Bacchelli (Module coordinator)
Prof. Dr. Burkhard Stiller
Prof. Dr. Christoph Lofi
Prof. Dr. Harald Gall
Dr. Marco D'Ambros

Assistants:

Alexander LillDr. Bruno Rodrigues

Scope: Lecture with exercises, MSc 
ECTS 6.0
Classes: Tuesdays, 08.15 - 09.45 
Exercises: Tuesdays, 12.15 - 13.45
Exam:

Type: written exam.
Date: 21.12.2021. 
Time: 12.00 - 14.00.
Location: online

Additional Links: OLAT
- GitHub:
Room:

BIN-2.A.01 (Seminarraum) for classes and exercises. Further information, please check: Times/Rooms/Instructors

This module takes place on-site and online (podcast).

- Students will be informed in case of further changes.

Description

Students will deepen their knowledge on advanced topics about the development and evolution of software systems, particularly distributed, data-intensive systems, during this course. The Fundamentals of Software System (FSS) is organized into three modules (distributed systems, database systems, and software evolution), in which different aspects and their relation are analyzed in a distributed data-intensive application. At first, Distributed and database systems allow for the understanding of basic concepts of distributed systems’ encoding demands toward reliable communications on top of unreliable networks (distributed concurrency control), and especially consensus approaches (distributed reliability).
In the second part, this discussion is continued focusing on distributed databases, and especially web-scale databases. This covers the theoretical foundations of such systems  (CAP theorem, ACID vs BASE, etc.), general methodologies with respect to consistency and scalability, but also discussion of example systems like Dynamo, Bigtable, or Spanner.
Software evolution comprises an overview of technical and socio-technical aspects. While technical aspects require distinguishing software concerning its architecture (e.g., even-driven or service-oriented) and its technical evolution, the social aspects cover metrics concerning software ownership, code contribution, sustainability, and others. Combining these concepts allows students to understand basic concepts of distributed application design and identify different aspects regarding their development and use.

Content
The students will acquire and be able to apply knowledge on:

  • Encoding and Distributed Systems
  • Unreliable Communication Systems
  • Consistency and Consensus in Distributed Systems
  • Distributed Concurrency Control
  • Distributed Reliability
  • Foundations of Distributed Data Management
  • Trade-Offs in Distributed Data Management
  • The Technical Evolution of Software
  • Software Architecture
  • Social Aspects of software development
  • Open Source, Sustainability, and Inclusion

This will enable students to develop and analyze on their own, at a later stage, maintainable, efficient, performing, and reliable distributed software systems.

Requirements

Knowledge of bachelor-level topics of distributed systems, databases, and software engineering is necessary for both the lab assignments and following the lectures. 

Important

The examination of the FSS module is carried out online. Online examination supervision (proctoring) is possible and is agreed upon
booking the module.

There will be mandatory exercises and a mandatory written exam. They both cover theoretical and practical aspects of the course.

Concerning the exercises, six assignments will be handed out throughout the course. Students are expected to carefully work on these assignments and hand them in by the required deadlines. Three assignments pertain to the 'distributed systems' submodule, one to the 'database systems' submodule, and two to the 'software evolution' submodule.

Students who hand in ...
(a) ... at least four valid assignments receive a +10% bonus over the final exam's points, but not exceeding the maximum 6.0 grade;
(b) ... less than one valid assignment per submodule receive neither a bonus nor a malus; or
(c) ... less than two valid assignments receive a -10% malus over the final exam's points, but not falling short of the 4.0 grade.

Note that the overall number of valid assignments for the course submitted needs to see at least one valid assignment from each submodule. Additionally, valid assignments are counted as "valid", if they clearly show that a measurable amount of work and effort had been spent.

The final FSS course grade is based on the written exam, including the bonus/malus as described.

Course Material

Mandatory literature will be announced in the first lecture. Lecture slides and additional material can be found here, too. Details on the exercises can be found here as well.

Hint

The information contained on this page complements the official page at the Vorlesungsverzeichnis (VVZ). In case of doubt, the official information from the VVZ is always considered valid.