MEng Software Engineering

Year of entry: 2020

Course unit details:
Agile Software Engineering

Unit code COMP33711
Credit rating 10
Unit level Level 3
Teaching period(s) Semester 1
Offered by Department of Computer Science
Available as a free choice unit? No

Overview

Traditional approaches to the engineering of software systems have too often turned out to be costly ways of building software that no one wants. In this course unit, we look at an alternative "agile" approach that aims to ensure that the project team focusses on building software that provides genuine value for the customer, even when the customer's needs change radically in the middle of the project. We look at how to plan and manage such projects, as well as techniques for keeping code quality high enough to support rapid change of direction in the middle of development.

Pre/co-requisites

Unit title Unit code Requirement type Description
Software Engineering 1 COMP23311 Pre-Requisite Compulsory
Software Engineering 2 COMP23412 Pre-Requisite Compulsory
Software Engineering COMP23420 Pre-Requisite Compulsory
Students who are not from the School of Computer Science must have permission from both Computer Science and their home School to enrol.

Aims

The aim of this course unit is to introduce you to the basic values and principles behind agile software engineering, and to give you an understanding of how the key agile practices work together to deliver real value to customers in a predictable and controllable way. We'll look at some of the problems with the conventional "plan-based" approach to software development, and examine how agile methods attempt to do better.

Rather than being lectured at, you'll take part in industry-standard coaching games, plus team-based exercises, group discussions and hands-on demonstrations that let you experience the agile approach at work and make up your own mind about the strengths and limitations of the ideas being presented.

Learning outcomes

  • Compare and contrast the pros and cons of conventional Big Up-Front approaches to software development with those of the new iterative/agile approaches.

  • Explain the meaning of the 4 agile values and 12 agile principles, and use them to diagnose and correct problems in a variety of software engineering scenarios.

  • Write user stories to capture user requirements and associated business values, and refine stories to varying levels of granularity for use in project planning.

  • Create and implement release and iteration plans given a collection of user stories, by applying a range of agile project planning and tracking practices.

  • Explain the role and purpose of task boards in managing self-organising agile teams, and design task board structures suitable for use in particular contexts.

  • Use specification-by-example practices to create living documentation for a software system, and use it to guide the design and implementation of the system using Acceptance Test Driven Design (ATDD) and Unit Test Driven Design (TDD) practices.

  • Explain the role of feedback in the management of agile projects and apply feedback oriented practices, such as retrospectives, to identify and correct problems in team processes.

  • Explain how formal contracts and funding models for agile projects differ from contracts/funding models used on more traditional projects.

Syllabus

  • Week 1: The Agile Lego Game - an Introduction to Agile Software Engineering
  • Week 2: The Trouble with Big Up-Front Requirements Gathering
  • Week 3: How Do We Know What to Build?
  • Week 4: What Can We Promise to Deliver (and When)?
  • Week 5: How Do We Know What to Build Next?
  • Week 7: How Do We Know When We're Done?
  • Week 8: How Do We Build the Right Product?
  • Week 9: How Do We Know When We're (Done) Done? (sic)
  • Week 10: How Do We Build The Product Right?
  • Week 11: Software Design Without A Crystal Ball?
  • Week 12: Agile in a Nutshell

For a detailed description of each weeks' activities please see COMP33711's weekly lesson plan.

Teaching and learning methods

Lectures

One two-hour session per week

Employability skills

Group/team working
Project management
Oral communication
Problem solving
Written communication

Assessment methods

Method Weight
Written exam 100%

Feedback methods

During lectures, many team and whole group activities are undertaken, with feedback being given face-to-face during the activities and in the whole-group debrief sessions afterwards.

A series of self-tests are available for students to try after lectures, with detailed feedback being provided by the automatic marking system.

Feedback can be obtained on interim versions of coursework at any of the (optional) clinic sessions. Written comments will be provided on returned marked coursework, with pointers towards aspects of the work that the student did well and suggestions for areas where further study might be required.

Recommended reading

COMP33711 reading list can be found on the School of Computer Science website for current students.

Study hours

Scheduled activity hours
Assessment written exam 2
Lectures 22
Practical classes & workshops 22
Independent study hours
Independent study 54

Teaching staff

Staff member Role
Suzanne Embury Unit coordinator

Additional notes

Course unit materials

Links to course unit teaching materials can be found on the School of Computer Science website for current students.

Return to course details