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

This is an archived syllabus from 2013-2014

COMP61511 Software Engineering Overview syllabus 2013-2014

COMP61511 Software Engineering Overview

Level 6
Credits: 15
Enrolled students: 28

Course leader: John Sargeant


Additional staff: view all staff

Assessment methods

  • 50% Written exam
  • 50% Coursework
Timetable
SemesterEventLocationDayTimeGroup
Sem 1 P1 Lecture 2.19 Thu 09:00 - 09:00 -
Sem 1 P1 Lab 2.25 (a+c) Thu 09:00 - 09:00 -
Themes to which this unit belongs
  • Software Engineering 1

Overview

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.

Aims

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.

Syllabus

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.

Feedback methods

The lab involves a team project, and the teams get frequent feedback from postgraduate demonstrors and the course leader, not just for the formal assessments but throught the project.

Study hours

Employability skills

  • Analytical skills
  • Group/team working
  • Innovation/creativity
  • Leadership
  • Project management
  • Oral communication
  • Problem solving
  • Written communication

Learning outcomes

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

Reading list

TitleAuthorISBNPublisherYearCore
Applying UML and patterns: an introduction to Object-Oriented analysis and design and iterative development (3rd edition)Larman, Craig0131489062Prentice Hall2004

Additional notes

Course unit materials

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