zum Inhalt springen

Lecture: Softwaretechnik / Software Engineering

Overview

The development of good and successful software requires more than just programming knowledge. Software engineering deals with the systematic use of principles, methods, and tools for the division of labor, engineering development, and application of extensive software systems.

Professional software developers, architects, and managers need to be able to answer the following questions:

  • When is a software product good enough to ship?
  • Have we developed what the customer or user really needs?
  • What do we do if tomorrow we have 10 times more users for our software system and 100 times the day after tomorrow?
  • How can we import changes into our software as quickly and safely as possible?
  • Why is it that we are not as good at software development as others?

Successful software projects require more than just technical expertise. Finding out what the customer wants, working together in a team, managing complexity, reducing risks, adhering to time and budget constraints and determining under various restrictions when a product is good enough to be delivered are at least as important topics. They often have a significant human component. The lecture deals with these topics and covers the basics of modern software engineering to a large extent.

We will examine the following topics:

  • Process consideration in software development
    (How can problems be avoided at an early stage? When and how much is to be designed? When and how much is to be tested? When and how are the customers to be involved? Agile methods ...)
  • Requirements elicitation, documentation, and evaluation
    (How do you find out what the customer really wants? Who is interested? How can we measure success objectively? How can we reliably document expectations? ...)
  • Software Design und Software Architektur
    (How can we design a system so that it is scalable for millions of users? How can we build security into a system?)
  • Quality assurance measures including measurement, inspection, static and dynamic analysis
    (Which quality assurance strategy is best suited for a particular system? What can we automate and when should we keep people up to date? How many tests and what type of tests should we run? What properties are important to ensure beyond functional correctness? Can we evaluate usability, scalability, reliability, performance? How can we statically guarantee the absence of certain security problems? ...)
  • Empirical methods in software engineering
    (How can we measure quality characteristics such as performance, security, and reliability? How can we measure how users interact with the system? How can we know whether the difference matters? ...)
  • Time and team management / network plan
    (How do you estimate the duration and costs of a project? How do you monitor progress and risks in order to identify problems at an early stage? How do you coordinate developers in a team? How can you form and develop teams? How do you choose do you motivate team members? How do you deal with team dynamics such as social loafing? ....)
  • Economics of software development
    (business models, outsourcing, open source, ...)

This course has a strong technical focus and includes homework with and without programming. The students gain experience with team management and modern software engineering tools. The course optimally prepares students for management positions in software development projects.

 

Organization

The lecture takes place on Wednesdays and Thursdays from 2:00 pm to 3:30 pm in HS2 in the Physik building (321 Hörsaal II (265/159 Sitzpl.), Zülpicher Str., 77(321), Erdgeschoß).

There are a total of 5 exercise groups to accompany the lecture. The exercise groups start on October 20th.
Group 1: Mondays, 10:00 - 11:30, Weyertal 121, room 5.08, Simon
Group 2: Tuesday, 14:00 - 15:30, Luxemburger Str. 90, room S234, Moritz
Group 3: Tuesday, 16:00 - 17:30, Universitätsstr., 37, room S15, Moritz
Group 4: Thursday, 10:00 - 11:30, Luxemburger Str. 90, room H230, Adrian
Group 5: Thursday, 16:00 - 17:30, Luxemburger Str. 90, room S231, Simon

Schedule

DateTopic of the lectureTopic of exercises
15.10.2025IntroductionNo class
16.10.2025SE Processes / Activities
22.10.2025Requirements IW1: Introduction and Activities
23.10.2025Collaborative SE with git
29.10.2025Requirements IIW2: Git and Requirements
30.10.2025System Modeling
05.11.2025ArchitectureW3: Requirements and Modeling
06.11.2025QA + Testing I
12.11.2025QA + Testing IIW4: Architecture
13.11.2025QA + Testing III
19.11.2025RecapW5: Testing
20.11.2025Class and Sequence Diagrams
26.11.2025OOM, Refactoring, Coding Standards, APIW6: Class and Sequence Diagrams
27.11.2025OOM, Refactoring, Coding Standards, API
03.12.2025Design Patterns IW7: OOM
04.12.2025Design Patterns II
10.12.2025Web Dev IW8: Design Patterns
11.12.2025Web Dev II
17.12.2025Deployment and Operations IW9: Web Dev
18.12.2025Deployment and Operations II
07.01.2026SE Processes / Activities IW10: Deployment and Operations
08.01.2026SE Processes / Activities II
14.01.2026Guest LecturerW11: Process
15.01.2026Recap
21.01.2026SW Process and Product ManagementW12: Recap
22.01.2026Trial Exam
28.01.2026Copy Rights and EthicsW13: Management, Q&A
29.01.2026Outlook, Q&A
04.02.2026No classNo class
05.02.2026No class
Sa,
07.02.2026,
08:30-10:30
First Exam 
Mi,
09.03.2026,
13:30-15:30
Second Exam 

 

Rules and Agreements

The lecture has an ILIAS course for the slides, submission of homework, and supplementary documents;  We'll be using Mattermost for announcements, communication, and group work. See ILIAS for the link to register.

Waiting list: The lecture is not limited in size.

Prerequisites: No formal prerequisites but we recommend that you have completed the programming course I and II .

Textbook: We do not have a single textbook, but rather compile lectures from various sources.
For optional supplementary reading, consider Ian Sommerville, Software Engineering and Ian Sommerville, Engineering Software Products: An Introduction to Modern Software Engineering.

Homework:  Every Monday morning, we publish a homework sheet. Homework sheets must be submitted 1 week after on Monday before 10:00 am.

Bonus: To get a 5% bonus on your exam points, you must present two homework tasks.

Time management: This is a course with 9 ECTS points. We therefore expect that you will spend up to 12 hours per week on the course. Typically 6 hours per week are spent on lectures and exercise groups and 6 hours on homework sheets. 

Group work and AI: You are allowed and encouraged to work on the homeworks in groups and use AI. It is part of your responsibility to organize yourselves and use AI cleverly.