Object-Oriented Design
This course teaches standard techniques for the specification of software. The course is based around a carefully-chosen subset of UML (Unified Modelling Language). It places the techniques in a formal software engineering context.
Frequency
This subject has been discontinued; no further courses are planned.
Objectives
At the end of the course, students will understand the concepts of object orientation and the relevance of these to reuse, replacement and component-based development. They will be able to use UML to describe the models they develop. They will be able to apply important design techniques and patterns where it helps to improve designs.
Contents
- Concepts and motivation:
- identifying objects and classes, state, identity and behaviour; relationships between classes - association, generalization, aggregation, composition.
- Use cases in development:
- recording stakeholders and functional requirements; using use cases throughout the development; using activity diagrams to record workflow.
- Dynamics:
- using CRC cards to decide on interactions between objects, and interaction diagrams to record them; using state diagrams to show the effects of interactions on objects.
- Verification and validation of models:
- checking consistency of UML models; moving from models to code.
- Architecture-centric component-based development:
- definition and motivation; architectural and development views; component and deployment diagrams.
- Semantics:
- the need for a formal semantics for UML; the Object Constraint Language.
Requirements
Some familiarity with basic concepts of object orientation (such as classes, inheritance, and polymorphism), including a little Java, will be assumed.