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

Current postgraduate taught students

COMP61511: Software Engineering Overview (2011-2012)

This is an archived syllabus from 2011-2012

Software Engineering Overview
Level: 6
Credit rating: 15
Pre-requisites: None
Co-requisites: None
Lecturers: John Sargeant, Mark van Harmelen
Course lecturers: John Sargeant

Mark van Harmelen

Additional staff: view all staff
Timetable
SemesterEventLocationDayTimeGroup
Sem 1 P1 Lecture 2.15 Thu 09:00 - 17:00 -
Sem 1 P1 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

Introduction

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? need.
These goals are not easily realisable; most 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: Structure and agile practices.
In the structure part of the course we are concerned with a tool for thinking about, expressing communicating the design of systems considering system structure it is useful to have a notation that can be used at many levels of description, from describing aspects of user interaction, to system architecture, including distributed architectures, to selected aspects of system implementation. The standard diagrammatic notation in use for this is Unified Modeling Language (UML). UML is also used to abstract and describe patterns that re-occur in well-implemented systems, the topic for COMP61532
In the agile 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. In response to these and other constraints, Agile development methods concentrate on producing working code quickly, but in a disciplined way, in order that parts of a working system can be shown to stakeholders early and often. The correspondence between the actual functionality of the software and the customer's requirements can then be continually reassessed.


Software Engineering is inherently a collective activity, with project teams ranging from a handful of software developers to hundreds of professionals with specialised skills. Being able to work effectively in teams is a key skill. A large part of the course is concerned with developing this sill.


A major challenge in Software Engineering is to deal with the fact that requirements change sunstantially and frequently. In response to this, modern Agile development methods concetrate on producing working code quickly, but in a disciplined way, in order that parts of a working system can be shown to stakeholders early and often. The correspondence between the actual functionality of the software and the customer's requirements can then be continually reassessed.

Software engineers use many tools including diagrammatic notations (now standardised in the Unversal Modelling Language, UML) and software tools to facilitate all aspects of software developent.

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 considerable 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 detail.
? Implement systems in an agile test-driven fashion
? Learn teamwork skills
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 agile software development methods to software development.
  • Examination
  • Group coursework
C3Use software tools for the production and automated testing in software projects.
  • Group coursework
  • Examination

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 the main characteristics of agile methods, e.g. continuous stakeholder involvement, iterative and incremental development; behavior and test driven development and machine support for test automation. Introduce Agile management methods.

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.


Explain the concepts of software verification and validation, and ways of performing them.
Outline the use of software tools to aid the process (practical experience of tools will be provided in the labs).
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.

Briefly discuss some of the wider context of Software engineering, for example ethical considerations, standards, and the role of software amd 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


Title: Programming Ruby 1.9: the pragmatic programmers' guide
Author: Thomas, Dave with Chad Fowler and Andy Hunt
ISBN: 9781934356081
Publisher: Pragmatic Bookshelf
Edition:
Year: 2010


Title: RSpec book: behaviour-driven development with RSpec, Cucumber and friends
Author: Chelimsky, Donald et al
ISBN: 9781934356371
Publisher: Pragmatic Bookshelf
Edition:
Year: 2010


Title: Agile Samurai: how Agile masters deliver great software
Author: Rasmussen, Jonathan
ISBN: 9781934356586
Publisher: Pragmatic Bookshelf
Edition:
Year: 2010


Title: Succeeding with Agile: software development using Scrum
Author: Cohn, Mike
ISBN: 9780321579362
Publisher: Addison Wesley
Edition:
Year: 2010


Title: Learning Ruby
Author: Fitzgerald, Michael
ISBN: 9780596529864
Publisher: O'Reilly
Edition:
Year: 2007


Title: Ruby programming language
Author: Flanagan, Donald and Yukihiro Matsumoto
ISBN: 9780596516178
Publisher:
Edition: O'Reilly
Year: 2008


Title: Refactoring in Ruby
Author: Wake, William C. and Kevin Rutherford
ISBN: 9780321545046
Publisher: Addison Wesley
Edition:
Year: 2010