Software Engineering Group Projects


This course is about the development of software products. It covers state-of-the-art techniques used in industrial software development to ensure that teams produce software co-operatively, reliably and on schedule. The course covers technical practices as well as project management techniques.

1. Agile Methods

Agile methods the prevalent software development techniques used in industry today. Here we give a general introduction, and then more detail on three specific methods. We recommend that you choose and follow one of these methods for your group project.

Agile at Scale

We often talk about agile techniques in terms of a single team - and this is what you will experience in your group projects. What happens when a company adopts this more widely, across many teams? How do they co-ordinate? Here is a case study from Spotify on how they have approached this problem, and their general engineering processes and culture.


2. Development Process and Technical Practices

There are a number of technical practices that often underpin the use of agile methods for software development (particularly Extreme Programming). These allow us to have confidence that our software is working and of good quality, throughout development. We do not want to test it once at the end of the project and find all the problems then.

Continuous Delivery

Continuous Delivery is a term made popular recently, particularly by the book Continuous Delivery by Jez Humble and Dave Farley. The idea behind continuous delivery is that every change to the software results in a potentially releasable version of the application - so it is always in a working state.


3. Product Management and Working with Customers

Product management involves eliciting and managing requirements for our products. In this section we think about different types of customers, how to prioritise and decide what to build, and some ways to test whether or not what we have done was the right thing.