COMPGC22 - Software Engineering
This database contains 2017-18 versions of the syllabuses. For current versions please see here.
|Prerequisites||Completion of MSc Computer Science term 1 modules|
|Taught By||Graham Roberts (100%)|
This module covers a range of Software Engineering (SE) material, following on from that introduced in term 1. 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, requirements analysis, object-oriented concepts, the Unified Modelling Language (UML), and object-oriented design.
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 team management and organisation.
After completing the course attendees will be able to:
Topics covered in lectures during the first half of term:
- Software Engineering Principles
- Overview of the software engineering discipline
- Software lifecycle models
- Agile development
- The Unified Process (UP) Organising development projects
- 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
- Software architecture
- Separation of concerns
- SOLID Principles
- Design patterns
- Object-Oriented design practices
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 basic 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 would look like if fully implemented.
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.
The course has the following assessment components:
- Coursework (100%) comprises
- 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
Reading list available via the UCL Library catalogue.