COMPGC22 - Software Engineering

This database contains the 2016-17 versions of syllabuses. Syllabuses from the 2015-16 session are available here.

Note: Whilst every effort is made to keep the syllabus and assessment records correct, the precise details must be checked with the lecturer(s).

CodeCOMPGC22
YearMScCS and FC
PrerequisitesSuccessful completion of COMPGC02
Term2
Taught ByGraham Roberts (100%)
Aims

This module covers a range of Software Engineering (SE) material, following on from that introduced in COMPGC02. The emphasis is on the knowledge needed to be able to model, design, implement and evaluate larger software systems effectively.

The content starts with development lifecycle models, such as agile development, and then continues to cover requirements specification, the Unified Modelling Language (UML), software architecture, object-oriented analysis and design, design patterns and testing.

Software engineering is an inherently practical subject and applying the concepts being taught is a vital component of developing expertise in this area. Consequently students undertake a substantial group project, working through a number of stages of the development of a larger software application. Students will be supervised, but will be expected to largely organize themselves and their work, learning key transferrable skills in management and organisation.

Learning Outcomes

After completing the course attendees will be able to:   

  • Appreciate the wider engineering issues that form the background to developing complex and evolving software-intensive systems.
  • Plan and deliver an effective software engineering process, based on knowledge of widely used development lifecycle models.
  • Employ group working skills including general organization, planning and time management and inter-group negotiation.
  • Capture, document and analyse requirements.
  • Translate a requirements specification into an implementable design, following a structured and organised process.
  • Make effective use of UML, along with design strategies such as defining a software architecture, separation of concerns and design patterns.
  • Formulate a testing strategy for a software system, employing techniques such as unit testing, test driven development and functional testing.
  • Evaluate the quality of the requirements, analysis and design work done during the module. 

Content:

Topics covered in lectures during the first half of term:

Course Introduction

Software Engineering Principles
Overview of the software engineering discipline
Software lifecycle models
Agile development
The Unified Process (UP)Organising development projects

Requirements Engineering
Documenting requirements, user stories, use cases and scenarios

Introduction to UML
Review of object-oriented principles
UML use case, class, sequence, activity, state, component and deployment diagrams.
UML models

The Analysis and Design Process
User story realisation
Object-oriented modelling
Incremental refinement

Design Principles
Software architecture
Separation of concerns
Design patterns
Object-Oriented design practices
Refactoring

Testing
Unit Testing
Test-Driven Development
Functional Testing

Project Work
Project groups are formed during the first week of term, with the early stages of the project running concurrently with the lectures given during the first half of term. The second half of the term is then dedicated to the group project work.

Group formation: Students are split into project groups with around 4-7 members, each group having a supervisor who acts as the client and also provides support and guidance. Project groups are selected by the module organiser, and each group is allocated a project specification to work with. Each project specification gives an outline of an application with a graphical user interface (GUI) to be developed. Project groups are responsible for organising themselves, meeting their supervisor regularly to receive advice and feedback. A group diary should be kept to record the progress of the group, including the minutes of meetings held.

Group deliverables: A group report documents the results of the project, focusing on requirements, design, and UML modelling. The group additionally creates a video, lasting around 10 minutes, explaining what their project was about, what were the challenges and giving an overview of the design created. A mock-up of the application user interface is also created to illustrate what the application look likes when being used. 

Individual deliverable: Each student is required to submit an individual report giving a) an assessment of the structure, organisation and progress of the project group, b) an assessment of the project results and the effectiveness of the group as a whole, c) an evaluation of each group member, d) an evaluation of their own role, including a summary of what they contributed.

Method of Instruction:

Lecture presentations and online material. Group project tutorials and group working. 

Assessment

The course has the following assessment components:

  • Coursework- 100% (Group Project Report (50%), Group Video (10%),Individual Report (40%).

To pass this module, a student must: 

  • Obtain an overall pass mark of 50% for all sections combined

Resources:

The recommended text is:

UML and the Unified Process - Jim Arlow, Ila Neustadt. Addison Wesley. 2nd Edition, 2005

A UCL Library reading list and further material can be found on Moodle.