Skip to navigation | Skip to main content | Skip to footer

Current postgraduate taught students

COMP61511: Software Engineering Overview (2012-2013)

This is an archived syllabus from 2012-2013

Software Engineering Overview
Level: 6
Credit rating: 15
Pre-requisites: A reasonable level of programmng skill (as expected of most ACS students)
Co-requisites: None
Course Leader: John Sargeant
Course leader: John Sargeant

Additional staff: view all staff
Sem 1 w1-5 Lecture 2.19 Thu 09:00 - 16:00 -
Sem 1 w1-5 Lab 2.25 (a+c) Thu 09:00 - 17:00 -
Assessment Breakdown
Exam: 50%
Coursework: 50%
Lab: 0%

Themes to which this unit belongs
  • Software Engineering 1


Software Engineering is a discipline concerned with all aspects of software production. The goals of software engineering are to produce software products are maintainable, dependable, efficient and meet their users? needs.

These goals are not easily realisable; many software engineering projects fail in some way. The goal of this course is to provide an introduction to important topics in the field of software that assist in the production of systems. Particularly these can be grouped under two broad banners: software design and teamworking.

The standard diagrammatic notation in use for software design is the Unified Modeling Language (UML). UML is also used to abstract and describe patterns that re-occur in well-implemented systems, the topic for COMP61532. However, only a small subset of UML notation is required in the vast majority of situations, and only this subset will be used in this course.

In the practical part of the course we are essentially concerned with two major challenges in software engineering: dealing with the fact that requirements change substantially and frequently, often during development, and the actual business of producing reliable and maintainable systems in an efficient way. Doing this requires effective teamworking as well as technical skills. We will use some ideas from Agile development to facilitate this; Agile methods will be covered much more deeply in period 4.

Software Engineering is inherently a collective activity, with project teams ranging from a handful of software developers to hundreds of professionals with specialised skills. Ethical and other social issues must frequently be addressed as well as technical ones.


Essentially the course unit aims to introduce students to current best practice in Software Engineering. It is designed to be useful to students who have Software Engineering experience and those who have none (with the expectation that the former will help the latter).

Specifically, the aims are for students to:

? Think about systems at multiple levels of abstraction and from multipe perspectives.
? Implement systems which, due to good design, are easy to change and mantain.
? Learn teamwork skills in a multilingual and multicultural environment.

These topics will stand students in good stead in the entire ACS course and beyond in professional practice.

Programme outcomeUnit learning outcomesAssessment
B2 C1 D1Work in a team to solve a non-trivial software development problem.
  • Group coursework
  • Examination
B3Use Unified Modeling Language (UML) notation to help describe requirements and to construct and evaluate software designs.
  • Examination
  • Group coursework
A2 B2Apply modern software development methods, including aspects of Agile methods to software development.
  • Group coursework
  • Examination
C3Use software tools for software production and testing.
  • Group coursework
  • Examination


Introduce Software Engineering, comparing and contrasting it with other Engineering disciplines. Explain the fundamental problem of requirements change, and the problems this causes for traditional software development processes. Introduce the Agile approach to software development, and some of the main characteristics of agile methods, e.g. continuous stakeholder involvement, iterative and incremental development and Physicality. The Agile UP will be used as an example of a traditonal process applied in an Agile way.

Explain (and advocate!) the Object Oriented approach to software development, particularly Responsibility Driven Design. Introduce a minimal subset of UML notation that covers most practical cases, and illustrate its use in requirements capture and software design.
The GRASP (General Responsibility Assignment Software Patterns) principles will be used as the basis for discussing software design. These are also the underlying principles on which design patterns are based.

Explain the basics of software testing, in particular unit testing with JUnit. In this course a traditional approach to testing will be taken, where tests are typically written after the code to be tested, but by a different person. The alternative, Test-driven development, will be explored in the Agile course.

Discuss some of the wider context of software engineering, for example user and stakeholder considerations, standards, and the role of software, and software engineers, in large organisations.

Reading List

Core Text
Title: Applying UML and patterns: an introduction to Object-Oriented analysis and design and iterative development (3rd edition)
Author: Larman, Craig
ISBN: 0131489062
Publisher: Prentice Hall
Edition: 3rd
Year: 2004
Also useful for COMP61532