Description
Aims:
This module focusses on designing and building software systems, which these days are often large, complex and long-lived. They are worked on by teams of engineers and changed constantly over their lifetimes. We will look at principles and patterns of software design, where to apply them, and how they may inform our design choices. We will also look at techniques for ensuring that systems you build behave correctly. We show how the application of these makes it possible to evolve systems effectively in a rigorous way.
Intended learning outcomes:
On successful completion of the module, a student will be able to:
- Appreciate the wider engineering context that forms the background to developing complex, evolving software-intensive systems.
- Apply a range of design patterns and principles to solve particular design problems.
- Apply a range of refactoring techniques to improve code quality.
- Use a range of tools and techniques for automated software testing, including test-driven development.
- Manage risk in making changes to an existing software system through rigorous engineering practices.
- Reflect on the appropriateness of different software engineering techniques in different circumstances, and on the quality of the design of an application.
Intended learning outcomes:
On successful completion of the module, a student will be able to:
- Object Oriented Design Principles.
- Design Patterns.
- Software Architecture.
- Testing.
- Tools and Processes.
Requisites:
To be eligible to select this module as optional or elective, a student must: ​(1) be registered on a programme and year of study for which it is a formally available; and (2) have taken a module or course in Java programming.
Module deliveries for 2024/25 academic year
Last updated
This module description was last updated on 19th August 2024.
Ìý