COMP62542 Pattern-Based Software Development syllabus 2017-2018
Design patterns are reusable design solutions to recurring design problems in some design contexts. Each design pattern has a specific motivation or purpose (WHY, WHY NOT), addresses a specific problem (WHAT), offers a specific design solution (HOW), and works in a specific design context (WHEN).
In addition to being a design aid, software design patterns also serve as a common vocabulary for software developers to communicate, document and explore design alternatives, and a learning tool, to help you, the student, to learn best practice in programming and a disciplined way to design programs.
Software patterns first became widely known through the famous 1992 “Gang of Four” (GoF) book, called Design Patterns, although the notion of patterns in this sense originated with the architect Christopher Alexander in the 1970s. Since the GoF book, many other design patterns have been identified, but few are as significant as the GoF design patterns.
Patterns can be applied from design to all other aspects of software development, such as coding, testing, requirements capture, software architecture, and so on. The focus of this course unit is on the software design patterns.
This course unit will introduce 19 software design patterns from the GoF book and one software architectural pattern to the students. Students will learn how to use these patterns to the design and implementation of complex object-oriented software systems in the following ways:
- At the design level, students will learn how to use patterns to design better software and how to use the Unified Modelling Language (UML) to represent patterns.
- At the implementation, students will learn how to implement patterns using Java programming language.
- Students will be required to put their learning into practice by undertaking a group project in which they will be asked to design and implement a complex object-oriented software system.
The course will cover the following topics:
- Motivation, principles and concepts behind design patterns
- Description of design patterns by using a standard template
- Representation of design patterns by using UML Class Diagram
- Detailed explanation and illustration of patterns, from design to implementation, with examples
- Software architecture
- Relationships between the fundamental principles of object-oriented program design and design patterns
- Lectures (10 hours)
- Laboratories (20 hours)
- Formative feedback is available every week during the lab session.
- Summative feedback to the coursework will be provided in written at the end of coursework assessment
On successful completion of this course unit a student will be able to learn:
- What design patterns are for, how they work and why they are needed.
- How the design patterns can help solve software design problems.
- When and why to use each pattern, and the consequence of using the pattern.
- How to use design patterns to design and implement adaptable object-oriented software systems.
- How to use design patterns to design software architecture.
- The relationship between the design patterns and the fundamental principles of object-oriented program design.
- Analytical skills
- Group/team working
- Project management
- Problem solving
- Written communication
|Programme outcome||Unit learning outcomes||Assessment|
|A1||Describe a range of software patterns giving examples of their use|
|B2 B3 C1||Select and apply design patterns to practical software design problems|
|B2 B3 C1||Understand the benefits and pitfalls of the design patterns.|
|D1||Work effectively in a small team to achieve 2 and 3 above|
|Design patterns: elements of reusable Object-Oriented software||Gamma, E. et al||0201633612||Addison Wesley||1994||✔|