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  Mondays and Wednesdays from 4:00 pm to 5:30 pm  as a Zoom Meeting (link will be published in the Ilias-Kurs).

There are a total of 6 exercise groups to accompany the lecture.
Group 2: Mondays, 2 p.m. - 3:30 p.m. (Isabel, in German)
Group 3: Tuesday, 4 p.m. - 5:30 p.m. (Isabel, in German)
(Group 4: Tuesday, 5:45 p.m. - 7 p.m .: 3 p.m.) (will start in November if necessary)
Group 6: Wednesday, 10:00 a.m. - 11:30 a.m. (in October: Mersedeh, in English; from November: Jerome, in German)

Contact Persons

Prof. Dr. Andreas Vogelsang
Main Responsible and Lecturer
Dr. Mersedeh Sadeghi
Groups 1 and 6
Isabel Wittmann
Groups 2 and 3
Jerome Kruse
Group 6

Schedule

Date topic     Submission (always on Monday at 12:00)
Mon, Oct11, 2021 Introduction, organization No submission
Exercise

Class: No exercise class

Task: HW1- Technical setup 1 

-
Wed, Oct 13, 2021 The ingredients of good SE -
Mon, Oct18, 2021

Requirements I

No submission
Exercise

Class: Assessment of HW1- Technical setup 1 

Task: HW2 requirements

-
Wed, Oct 20, 2021 Requirements II -
Mon, Oct 25, 2021 Modeling I HW2 requirements
Exercise

Class: Assessment of HW2 requirements

Task: HW3 behavioral modeling

-
Wed, Oct 27, 2021 Modeling II -
Mon, Nov 01, 2021 Holiday HW3-Behavioral Modeling
Exercise

Class: Assessment of HW3-Behavioral Modeling

Task: HW4-Architecture Modeling

-
Wed, Nov 03, 2021 Architecture  -
Mon, Nov 08, 2021 Design HW4-Architecture Modeling
Exercise

Class: Assessment of HW4-Architecture Modeling

Task: HW5-Design 1

-
Wed, Nov 10, 2021 Implementation -
Mon, Nov 15, 2021 Design Patterns I HW5-Design 1
Exercise

Class: Assessment of HW5-Design 1

Task: HW6-Design 2

-
Wed, Nov 17, 2021 Design Patterns II -
Mon, Nov 22, 2021 QA + Testing HW6-Design 2
Exercise

Class: Assessment of HW6-Design 2

Task: HW7-Implementation and Design Patterns

-
Wed, Nov 24, 2021 QA + Testing II -
Mon, Nov 29, 2021 QA + Testing III HW7-Implementation and Design Patterns
Exercise

Class: Assessment of HW7-Implementation and Design Patterns

Task: HW8-Debugging and Testing  1

-
Wed, Dec 01, 2021 Deployment and Operations -
Mon, Dec 06, 2021 Collaboration in SE HW8 Debugging and Testing 1
Exercise

Class: Assessment of HW8-Debugging and Testing 1

Task: HW9 Debugging and Testing 2

-
Wed, Dec 08, 2021 Process I. -
Mon, Dec 13, 2021 Process II HW9 Debugging and Testing 2
Exercise

Class: Assessment of HW9-Debugging and Testing 2

Task: HW10 deployment 

-
Wed, Dec 15, 2021 Management I -
Mon, Dec 20, 2021 Guest Lecture HW10 deployment 
Exercise

Class: Assessment of HW10 Deployment 

Task: HW11-Git flow 

-
Wed, Dec 22, 2021 Management II -
Mon, Jan 10, 2022 Evolution and Maintenance HW11-Git flow 
Exercise

Class: Assessment of HW11-Git flow 

Task: HW12-SE for Web Applications 1

-
Wed, Jan 12, 2022 Open source -
Mon, Jan 17, 2022 SE for Web Applications HW12-SE for Web Applications 1
Exercise

Class: Assessment of HW12-SE for Web Applications 1

Task: HW13-SE for Web Applications 2

-
Wed, Jan 19, 2022 SE for Web Applications II -
Mon, Jan 24, 2022 SE for Machine Learning HW13-SE for Web Applications 2
Exercise Class: Assessment of HW13-SE for Web Applications 2 -
Wed, Jan 26, 2022 SE for Software Product Lines -
Mon, Jan 31, 2022 SE Ethics No submission
Exercise no exercise classes -
Mon, Feb 07, 2022 Q&A session -
Thu, Feb 10, 2022 First exam date (09:00 - 11:00) -
Wed, Mar 16, 2022 Second exam date (15: 00-17: 00) -

Rules and Agreements

We'll use Zoom for lectures and exercises. The lecture has an ILIAS course for the slides, submission of homework, lecture recordings, and supplementary documents;  We'll be using Slack 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 and Info I (data structures and algorithms).

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 Wednesday evening, we publish a homework sheet. Homework sheets must be submitted by the following Monday 12:00. By submitting a homework sheet, you indicate that you are also able to present it in the exercise classes.

Grading: The grading is based on the results of the exam. You have to submit at least 6/12 homework sheets to take the exam. You need >50% points in the exam to pass. If you have submitted at least 11/12 homework sheets, you get a 5% bonus on your exam points.

Delayed submissions:  Delays are not toelrated and are considered as "not submitted". Exceptions to this rule are only made in exceptional cases, almost always in connection with a family or medical emergency. 

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. 

Academic honesty and collaboration: You are allowed and actually encouraged to prepare the homwork sheets in groups. However, everyone has to submit an own solution that shows that you have actually worked on the sheet yourself and not just copied it from someone else. This implies not taking credit for others' work and not covering for team members that have not contributed.