You are here: Home Teaching Summer Term 2022 Softwaretechnik / Software …

Softwaretechnik / Software Engineering (Lecture)

Software engineering is "the application of engineering to software" (IEEE 610.12). Goal of this course is to provide a broad overview of the challenges of software engineering and of the techniques and tools to address these challenges. We will discuss the main activities of software development (i.e., project management, requirements engineering, design, testing, and formal verification) with an emphasis on formal methods. We will study process models, software metrics, approaches to requirements specification and analysis, modeling and analysis techniques, design and architecture patterns, testing, and program verification.
Course type Lecture
Instructors

Prof.  Andreas Podelski 

Dr. Bernd Westphal

Elisabeth Henkel

Lecture

Online Live Sessions (big blue button):

  • Wednesday, 27th April, 14:00–16:00
  • Wednesday, 27th July, 14:00–16:00


Recordings (Ilias Course)

  • "as if" Wednesday, 14:00–16:00
  • "as if" Friday, 12:00–14:00
Exercise Friday, 12:00–14:00 or 14:00 - 16:00 (bi-weekly),
Live Online Tutorial Session (big blue button)
First session Tutorial:  Friday, 6th May
Language of instruction English (and German)
Credits 6
Exam tba.
Course Catalog Softwaretechnik / Software Engineering - Vorlesung
Softwaretechnik / Software Engineering - Übung

 

Quicklinks: News - Online-ing - Formalia - Plan - Links & Literature

 

News

  • 2022-04-27: added bbb-link, and link to ilias course
  • 2022-04-25: ilias course online.
  • 2022-04-04: homepage online.

 

Organization

The organization of the Softwaretechnik / Software Engineering course follows the usual rhythm of lectures, exercises, and tutorials in the same way as if we were having in-class sessions (we call this the "as if" principle).

  • Lectures: We will have a schedule with lecture days and their planned topics. Each time you go to the ILIAS module at a specific lecture day and time (as given by the schedule below), you will find the corresponding recording (and the PDF with the annotated slides).  In fact, we will immediately upload the whole group of (two to four) lectures that corresponds to one exercise sheet (see the dependency illustration below).  It is then up to you to choose the studying schedule that works best for you.  One possible schedule is to keep one lecture per lecture day, just as if we had in-class sessions and you just could not make it to the classroom.
    If you have questions about the lecture, you can put them into the ILIAS forum.
  • Exercise sheets: We will have one exercise sheet for each block of two to four lectures.   Again, it is up to you to choose your own schedule to work on the solutions.  Generally, the first exercise can be done with input from the first lecture, etc. (see dependency illustration below). 
  • Tutorial sessions: We will have live online tutorial sessions in one video meeting per tutorial group (accessible via ILIAS) every second week (modulo public holidays and breaks).
    The tutorial sessions address the fact that Software-Engineering is for a very good part about people interacting with people (like clients with developers, like programmers with designers, like teams of requirements engineers, etc.; cf. [Ludewig, Lichter, 2008]) and so that is exactly what we will practice in the tutorial sessions: the use of professional terminology in order to be able to efficiently and effectively communicate among software engineering professionals about software engineering problems and solutions.
    There will be a fixed, uniform exercise submission deadline for all tutorial groups.
  • Every other week, you will receive the correction of your solution; i.e., your friendly tutor will provide feedback on individual errors, mistakes, or misconceptions that are not covered by the discussions in the tutorial sessions.  The info in the feedback will form a complement of the info conveyed in the tutorial sessions (and not a replacement; i.e., the info in the feedback may be unintelligible without the info conveyed in the tutorial sessions).
  • We will assemble the tutorial groups after the submission of Exercise Sheet 0 (which we will make available on Monday, 25th of April, the latest).  From that point on, we will have fixed tutorial groups
    You make contact your tutor for questions and concerns (during the teaching period and after, until the exam day).
  • Overall, the course covers four, mostly self-contained topic areas. Hence, if, for some reason, you get behind and you don't have the time to catch up immediately, you will be able to skip the remaining lectures or exercises in the current topic area and to "jump on the train" at the beginning of the next topic area (and catch up later).


The following illustration (click to enlarge) shows dependencies between exercise sheets and lectures and may be useful for your schedule planning.  Principally, one would like to see each topic area closed with a corresponding tutorial session, yet the obstacles in form of public holidays does not always allow such clear splits:

Lecture/Exercise Dependencies (Preview)

Your question about online-ing this course unanswered?  Please contact us by mail or via the ILIAS forum.

 

Formalia

Prerequisites for exam admission, form of the final exam will be announced here.

Admission criteria

50% of the total points are sufficient.

Exercise Submission Scheme

The exercise sheets are online early in order to allow you to be aware of the tasks while following the lecture.
Please submit your solutions via ILIAS (log in with RZ account, not TF Pool account).

Exam

There will be a written exam:

  • Date & time: tba.
  • 90 min.
  • Location: tba.
  • Permitted in the exam:
    max. 1 sheet of paper, max. size A4, max. 200g/qm quality, all sides may be used (written/printed/painted/...).
  • It's one exam for all participants (BSc, MSc, ..., all).

Note: The module result (grade/mark, "Note") is completely determined by the exam.
 
Exam review (Klausureinsicht):
tba.

Schedule

Note: the following plan is tentative, that is, the assignment of events and topics to dates may be subject to (if possible: mild) changes.

  • Wed, 27.4.: VL 01 "Introduction" - Exercise Sheets 0 & 1 online
    Definitions of Software Engineering etc.; course content overview; formalia.
  • Fri, 29.4.: VL 02 "Software Metrics"
    Software metrics; properties of useful metrics; kinds of scales; examples: LOC and McCabe
    .
  • Wed, 4.5.: VL 03a "More Metrics & Cost Estimation" - Exercise Sheet 2 online
    Subjective metrics, Goal-Question-Metric approach; Cost and Deadlines, Expert and Algorithmic Cost Estimation.
  • Fri, 6.5.: Live Online Tutorial 1
  • Wed,  11.5.: VL 03b "Software Project Management"
    Development Project; Activities, Roles, Artefacts; From Processes to Procedure and Process Modes.
  • Fri,  13.5.: VL 04 "Procedure and Process Models"
    Waterfall and Spiral; Prototype-based; Evolutionary, Incremental, Iterative; V-Model XT; Agile Processes; process metrics CMM(I) and SPICE.
  • Wed, 18.5.: VL 05 "Requirements Engineering" - Exercise Sheet 3 online
    Requirements Engineering basics: the RE problem, the software peoples' view on requirements; quality criteria for requirements and their (natural language) documentation.
  • Fri, 20.5.: Live Online Tutorial 2
  • Wed,  25.5.: VL 06 "Formal Methods for Requirements Engineering".
  • Fri,  27.5.: VL 07 "Decision Tables"
    One example of a formal notation for requirements and its use: decision tables (DT); formal definitions for completeness, consistency, determinism, etc..
  • Wed, 1.6.: VL 08 "Use Cases and Scenarios, Live Sequence Charts" - Exercise Sheet 4 online
    Scenarios and Anti-Scenarios for requirements analysis; notations User Story, Use Case, Use Case Diagram, first half of Sequence Diagrams (abstract syntax, cuts and firedsets); Second half of the 'Sequence Diagram' story (TBA construction).
  • Fri,  3.6.: Live Online Tutorial 3
  • Wed, 8.6.: pentecost break
  • Fri, 10.6.: pentecost break
  • Wed, 15.6.: VL 09 "Live Sequence Charts Cont'd & RE Wrapup"
    LSCs and software; Requirements Engineering wrap-up.
  • Fri, 17.6.: VL 10 "Structural Software Modelling I"
    Software Architecture; Views and viewpoints; Class Diagrams.
  • Wed, 22.6.: VL 11 "Structural Software Modelling II" - Exercise Sheet 5 online
    Partial vs. Complete Object Diagrams, Proto-OCL.
  • Fri, 24.6.: Live Online Tutorial 4
  • Wed, 29.6.: VL 12 "Behavioural Software Modelling"
    Communicating Finite Automata; Uppaal Demo; Uppaal Query Language.
  • Fri,  1.7.: VL 13 "UML State Machines, MBSE/MDSE, Design Principles"
    CFA "at work"; MBSE/MDSE; Implementing CFA; an outlook on UML Statemachines; Principles of Software Design: Modularisation, information hiding, data encapsulation etc..
  • Wed,  6.7.: VL 14 "Architecture & Design Patterns, Software Quality Assurance" - Exercise Sheet 6 online
    Architectural patterns (layers, pipeline, MVC); Design Patterns; Test Case,  Test suite, Pass/Fail, true/false Positives and Negatives.
  • Fri,  8.7.:  Live Online Tutorial 5
  • Wed, 13.7.: VL 15 "Testing"
    Coverage measures, Model-based Testing.
  • Fri, 15.7.: VL 16 "Software Verification"
    Notions of correctness; Formal verification of software: the Hoare calculus; Software Model-Checking, VCC Demo.
  • Wed, 20.7.: VL 17 "Wrapup & Questions"
    Runtime Verification; Review; Lecture recap and time for questions.
  • Fri, 22.7.: Live Online Tutorial 6
  • Wed, 27.7.: Live Online Session
  • Fri, 29.7.: --

Links & Literature