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

Softwaretechnik II - Agile Software Development in Large Teams

  • Responsible: Dr. Michael Perscheid
  • Teaching Team:  Christoph Matthies, Dr. Ralf Teusner, Wanda Baltzer, Luc Prestin, Gritta Weisheit
  • ECTS  credits: 6
  • Initial lecture:  Friday, 06.11.2020 09:15
  • Lecture format: virtual, live sessions (via Zoom & Discord)
  • Slot for team meetings: determined by you (in collaboration with tutors)
  • Oral exams: 15th February 2021

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.

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

Due to COVID19, 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 held in the lecture hall. They will be live streamed during regular lecture slots, enabling direct interaction and interactivity with the presenter. We rely on course participants engaging actively.
  • We will be using a Discord instance as a central collaboration and communication platform. We hope you will be able to use it to host and organize your team meetings.
  • Participation of the course is capped at a maximum of 30 participants.
  • Team size is capped at an absolute maximum of 8. We recommend 5-6 or fewer.
  • We provide large meeting spaces, 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 work best for them.

The contents of the lecture include how to apply the Scrum methodology in multi-team settings. Participants will conduct multiple development iterations à 2-3 weeks each in your teams, guided by student tutors. The theory taught in the lectures 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 being developed 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.

Guest Lectures

In the course, we feature guest lectures from industry practitioners on varied software engineering topics, mostly with a focus on development processes.
This year, we are happy to welcome the following speakers and topics:

Lecture Schedule

  • 06.11.2020: Course Introduction & Introduction to Ruby on Rails & Agile and Scrum Starter
  • 13.11.2020: Behavior-driven Development and Introduction to Testing
  • 20.11.2020: Introduction to Testing & Remote Collaboration & Project Envisioning and PO Tools
  • 27.11.2020:  Project kick-off! & Value-based Software Engineering & Git Basics
  • 04.12.2020: Project Infrastructure & Exercise Debriefing & SM/Dev Tools & Scrum Deep Dive
  • 11.12.2020: Scrum Deep Dive (continued) & Code Reviews
  • 18.12.2020: Advanced Testing Concepts & Infrastructure as Code
  • 25.12.2020 & 01.01.2021: Academic Christmas Break
  • 08.01.2021: Guest lecture  by Johannes Nicolai (GitHub) & preparing Intermediate presentation
  • 15.01.2021: Intermediate Presentation! & Kanban and Lean
  • 22.01.2021: Guest lecture  by Paul Möller (eBay Classifieds Group)
  • 29.01.2021: Guest lecture  by Bernhard Höppner (SAP) & Application Deployment and DevOps
  • 05.02.2021: Guest lecture by Fabian Lindenberg (Babbel) & Crowd-sourced Exam Questions
  • 12.02.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

Suggested Sprint Schedule

These are the dates and times we suggest for planning development iterations in your teams:

  • until 27.11.20:  Ruby on Rails Introduction Exercise
  • 27.11.2011.12.20: Sprint 1 (2 weeks)
  • 11.12.2008.01.21: Sprint 2 (2 weeks, Academic Christmas Break: 21.12.20–01.01.21)
  • 08.01.2122.01.21: Sprint 3 (2 weeks)
  • 22.01.2112.02.21: Kanban (3 weeks)

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

Course Activities

Introductory Exercise

(Students in the Product Owner role are exempt from this exercise and should use the time to meet with the customer and create a product vision)

  • Create a GitHub account if you don't already have one. We appreciate it if you set your first name as the display name, so that we may recognize you)
  • Visit the GitHub classroom page: https://classroom.github.com/a/XNx_6gRx
  • Accept the assignment
  • A new repository will be created for you
  • Follow the instructions in the README file

The deadline for the completion of the exercise is November 27th

Jeopardy! Exam Preparation

In the last lecture of the course, we played a round of the game Jeopardy! based on topics in software engineering and Agile development methods.

The categories were Ruby, Ruby, Ruby, Ruby (Ruby & Ruby on Rails), Manna, Manna; Management (project management), Immer im Kreis (Agile softwre development), Weiche Ware (software and its operations), and Gemischtwarenladen (miscellaneous).

You can replay the game here: https://jeopardylabs.com/play/swtii-jeopardy

Crowd-sourced Oral Exam Questions

As part of the preparation for the oral exam, we asked participants to come up with their own exam questions.

We collected and organized these inputs and published the results. The questions we liked best we adapted and added them to our pool of exam questions.

Course Evaluation

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

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

Course evaluation grade on the EvaP system

Grading

The final grading is determined by

  • 30%: oral exam
  • 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

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

The exams are scheduled for 15th February 2021