Hasso-Plattner-Institut
Prof. Dr. h.c. Hasso Plattner
  
 

Softwaretechnik II - Agile Software Development in Large Teams

The course Software Engineering II is focused on the techniques and concepts required to manage a long-term software development project with a large number of developers. We want to prepare you for a situation where you are in a leading position and responsible for a complex software product. You will learn methods, concepts, and technologies which can help to successfully deliver software products developed by multiple collaborating teams.

While still not on par with large enterprise projects, SWT2 is the only lecture in the curriculum that allows you to gain experience in a software development setting larger than the bachelor's project.


COVID-related Course Adaptations

In order to minimize the risk of infection, the following course adaptations have been made for the winter term 20/21. These are subject to change as the situation evolves.
  • Lectures will not be happening in the lecture hall. They will be live streamed during regular lecture slots, enabling direct interaction and interactivity.
  • We will be using a Discord instance as a central collaboration and communication platform.
  • Participation is capped at a maximum of 30 participants.
  • Team size is capped at a maximum of 8.
  • Large meeting spaces (at Campus III) will be provided, which allow team meetings with adequate distances. Attendance sheets will be used.
  • It will be possible to attend team meetings virtually as well.

Learning experience

Participants form development teams of 5-8 people. All teams work collaboratively on the same software product, handling all tasks from requirements engineering, to design, implementation and organization of their teams. All Scrum roles, including Product Owner (who interacts to the customer) and Scrum Master (responsible for supporting the team) are performed by student team members. Teams are expected to self-organize and to explore ways of collaboration and communication that best work for them.

The contents of the lecture will include how to apply the Scrum methodology in a multi-team setting. Over the course of the semester, you will conduct 4 sprints à 2-3 weeks each in your development teams, guided by student tutors. The theory taught in the lecture can be applied directly in the accompanying project. This course focuses on modern Agile software development methods and concepts as well as their practical application.

The software developed in the winter semester 2019/20 installment of the course will be hosted on GitHub and is available under an open-source license.

If the number of participants is low (i.e., < 10 people), only a single development team will be formed and focus will shift towards scalability of the developed application.

Draft Lecture Schedule

Subject to change

  • 06.11.2020: Course Introduction & Introduction to Scrum
  • 13.11.2020: Ruby on Rails & Introductory Exercise & Testing Concepts
  • 20.11.2020: Advanced Testing Concepts
  • 27.11.2020: Exercise Evaluation & Scrum Exercise? & Guest Lecture/Project work
  • 04.12.2020: Project Infrastructure & Git Basics & Scrum Tips
  • 11.12.2020: Code Reviews & Guest Lecture/Project work
  • 18.12.2020: Deployment & Guest Lecture/Project work
  • 25.12.2020 & 01.01.2021: Academic Christmas Break
  • 08.01.2021: Intermediate Presentation! & Kanban and Lean
  • 15.01.2021: Guest Lecture/Project work
  • 22.01.2021: Guest Lecture/Project work
  • 29.01.2021: Final Project Presentation! & Summary & Exam Preparation

Vorlesungszeitraum WiSe 20/21: 02.11.2020 – 12.02.2021
Akademische Weihnachtsferien: 21.12.2020 – 01.01.2021

Learning Objectives

After this course, all students should have

  1.  Practical experience with the Agile method "Scrum" and all of its artifacts, roles and meetings
  2.  Learned how to scale Scrum over multiple collaborating teams
  3.  The ability to use Agile development practices, such as BDD and TDD,where appropriate
  4.  Confidence in using the full feature set of a source code management (SCM) and related systems
  5.  Experienced the value of rapid release cycles and continuous integration (CI)
  6.  Learned to critically self-assess their role in a team and work towards collaborative improvement

Grading

The final grading is determined by

  • 30%: oral exam (date tbd)
  • 45%: usage of methods and practices presented in the lecture: involvement in the development process, teamwork participation, Scrum meetings, BDD, TDD, SCM
  • 25%: software development results (team mark)

Completion of the introductory exercise is mandatory for passing the course.

Course Evaluation

The previous course iteration was evaluated by participants using HPI's EvaP system.

The overall course was rated a 1.5, i.e. "very good" in the German academic grading scheme from 1.0 (excellent) to 6.0 (insufficient).