Back to top

Advanced Topics of Software Engineering

Last modified Oct 11, 2023

In Winter Semester 2023/2024, the course will be offered by the chair of Software and System Engineering (I4)  Please contact them for any inquiries

 

Retake Exam:

  • Registration via TUMonline
  • Registration for retake can be done between 13.03.2023 and 24.03.2023
  • Deregistration from the exam can be done until 27.03.2023.

Registration

  • Registration in TUMonline
  • If you are officially matriculated at TUM ie you can enroll in this course using TUM online. The registration period for the course: 09/26/2022 - 10/20/2022.
  • If you cannot register for this course in time (e.g. due to missing enrollment), please contact the course organizers.
  • For questions related to course registration or application, please contact the course organizer. 

Lecture

  1. The lectures are conducted fully online via Zoom. The Zoom link is posted in Moodle
  2. There are two weekly lectures on Monday 12:15 - 13:45 and Friday 08:30 - 10:00.
  3. The recording of each lecture is uploaded to the TUM Moodle

Assessment Method

  1. Exam100%. The course has a retake exam.
  2. Project (Optional): additional bonus to the final grade, maximum by +1.0. For example, if you achieve 2.3 in the exam, and obtain a project bonus of 1.0, then the final grade is 1.3. The maximum final grade with a bonus is 1.0.

Exam

The final and retake exams are expected to be conducted on-site in Garching. We will inform you if there is any change to the exam format in the future.

  1. Students must register for the exam in TUM Online
  2. Language of examination – English only
  3. Closed-book exam
    • English dictionary is allowed

Project

  • Students form teams (3-5 members) to develop a logistic system comprising back-end microservices, front-end web applications, and an embedded system.
  • The course offers practical exercises to teach necessary technical skills for the project developmentYou will learn and apply the following technical knowledge during the development:
    a. Back-end: Spring, MongoDB, Java. Knowing Spring Security & Spring Data MongoDB is an advantage.
    b. Front-end: React, Javascript. Knowing Redux / React Hooks is an advantage.
    c. Embedded System: Python (basic), Hardware Programming experience with Raspberry Pi is an advantage.
    d. Deployment: Docker
  • To achieve the maximum bonus (+1.0) on the final grade, students have to develop all the required features of the project.
  • All the necessary hardware for developing the embedded system will be provided to you.
  • The project development is optional. If you do not submit the project, no point is deducted from the final grade.

 

Central Exercise

  1. Throughout the course, students will work on weekly exercises containing theoretical questions and programming tutorials. The theoretical questions let students practice the knowledge learned from the lecture, while the programming tutorials are essential for developing the course project.
  2. The weekly central exercise is conducted via Zoom. The room link is posted in Moodle.
  3. NO Submission of your exercise work is required.
  4. In each central exercise session, the tutor will present solutions to the theoretical and programming questions in the exercises.
  5. The solution to each exercise is NOT recorded
  6. Attending the central exercises is optional, but it is beneficial for your exam and project.

Project Consulting Hours

  1. We offer five consulting sessions to answer questions related to the project development.
  2. Participation in the project consulting hour is not mandatory. The consulting hours are intended only for answering project-related questions.
  3. Consulting hours sessions will be held onsite and online. Please check Moodle for additional information.

Schedule

Week Lecture Exercise

Date

Topic

 
1

Mo

17.10.

No Lecture

Read and familiarize yourself
with Git, Gitlab, particularly
Gitlab CI/CD

Form Groups

Fr

21.10.

Chapter 1: The context of software engineering

Sections 1.1 - 1.2

Introduction and overview & 
Characteristics of software systems

2

Mo

24.10.

Guest Lecture
Lecturer: Dr. Rupert Stützle

Section 1.4 Introduction to Embedded Systems

Release all Exercises

Fr

28.10.

Section 1.3

Factors affecting the design of a software system

3

Mo

31.10

Chapter 2: From requirements to system design

Section 2.1.1

Software modules and software components

 

Fr

04.11

Section 2.1.1

Software modules and software components

4

Mo

07.11

Section 2.1.2

Dependency structure matrix

 

Section 2.1.3

Guidelines for modular design

Discuss Solutions of Exercise 1

 

Fr

11.11

Section 2.1.3

Guidelines for modular design

Section 2.1.4

Architecture and external quality

5

Mo

14.11

Section 2.2

Antipatterns in Software Engineering 

 

Section 2.3

Reuse in Software Engineering 

Discuss Solutions of Exercise 2

 



 

Fr

18.11

Section 2.3

Reuse in Software Engineering 

 

 

6

Mo

21.11

Section 2.4

Testability in Software Engineering

 

Section 2.5

Safety in Software Engineering

Discuss Solutions of Exercise 3



Fr

25.11

Section 2.5

Safety in Software Engineering

 

7

Mo

28.11

Section 2.5

Safety in Software Engineering

Section 2.6

Information Security

Discuss Solutions of Exercise 4

 



 

Fr

02.12

Section 2.6

Information Security

 

8

Mo

05.12

Guest Lecture
Speaker: Thanos Theo

Section 2.7

Introduction to Parallel Computing &
Parallel Programming Models

Discuss Solutions of Exercise 5

 



 

Fr

09.12

Section 2.6

Information Security

 

9

Mo

12.12

Chapter 3: Software architectures and their trade-offs

Section 3.1 & Section 3.2 

 

Discuss Solutions of Exercise 6

 



 

Fr

16.12

Section 3.1 & Section 3.2 

 

10

Mo

19.12

Sections 3.3 - 3.6

 

Discuss Solutions of Exercise 7

 



 

Fr

23.12

Sections 3.3 - 3.6

 

Christmas Break
12

Mo

02.01

Christmas Break - No Lecture

 

 

 

Fr

06.01

Christmas Break - No Lecture

13

Mo

09.01

Sections 3.3 - 3.6

 

Discuss Solutions of Exercise 8 & 9

 



 

Fr

13.01

Sections 3.3 - 3.6

14

Mo

16.01

Sections 3.3 - 3.6

 

Discuss Solutions of Exercise 10



Fr

20.01

Section 3.7

Blockchain-based architectures 

 

15

Mo

23.01

Chapter 4 Software Deployment Alternatives

Discuss Solutions of Exercise 11



Fr

27.01

Chapter 4 Software Deployment Alternatives

 

16

 

Mo

30.01

Guest Lecture
Speaker: Michael Aeberhard

Section 4.7

Developing an Autonomous Vehicle: A Use-Case in Software Engineering

Discuss Solutions of Exercise 12



Fr. 

03.02

Q&A Session regarding Exam (optional)

17

Mo

06.02

TBA


 

Fr

10.02

TBA

 

Content

  1. The context of software engineering
    1. Introduction and overview
    2. Factors affecting the design of a software system
    3. Characteristics of software systems in different domains
    4. Case studies from two domains (Two guest lectures!)
  2. From requirements to system design
    1. Software architecture
    2. Software libraries and frameworks
    3. Antipatterns in software engineering
    4. Model-driven software engineering
    5. Software product line engineering
    6. Safety
    7. Information security
    8. Testability
  3. Software architectures and their trade-offs
    1. Introduction to distributed systems and middleware 
    2. Database-centric architectures
    3. Message-oriented architectures
    4. Object-oriented architectures
    5. Component-based architectures
    6. Service-oriented architectures
  4. From source code to physical deployment
    1. Introduction and historical perspective
    2. Version control
    3. Continuous integration
    4. Continuous deployment
    5. Virtual machines and containers
    6. Software architectures for the cloud
Module noECTSScope of the exam

IN2309

8

All lecture material

Prerequisites

  •  Introduction to Software Engineering (IN0006)

Intended Learning Outcomes

  • Appreciate software engineering:
    • Build complex software systems in the context of frequent change
  • Understand
    • how quality attributes affect the software architecture and conversely, how architectures influence these attributes in different domains
    • why there is  a need to make quality trade-offs while considering different software architectures including component-based and service-oriented architectures
    • how to efficiently deliver the developed software system to the stakeholders
  • Be able to apply
    • modeling techniques
    • system analysis and design by considering quality trade-offs
    • patterns, guidelines, and best practices in software engineering
    • tools for system configuration, integration, and deployment

References

Title

Authors

Design rules: The power of modularity Baldwin, C.Y. and Clark, K.B. (2000).
The Pragmatic Programmer: From Journeyman to Master Hunt A. and Thomas D. (2000).
Patterns of enterprise application architecture Fowler M. (2002).
Pattern-oriented software architecture volume 1: a system of patterns Schmidt, D., Meunier R., Stal, M., Rohnert, H., and Buschmann, F. (1996).
What is enterprise ontology? Dietz J. LG. (2006).
Object-oriented design with applications Grady B. (1991).
Continuous integration Fowler M. (2006).
The deployment production line Jez H., Read C., and North D. (2006).
Softwaretechnik: Praxiswissenfür Software-Ingenieure Johannes S. (2003).
Getting Started - About Version Control  
Software Product Line Engineering. Pohl, K., Böckle G. and Linden F. (2005).
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. The Upstart Gang of Four (1998).