Pattern-Based Software Development
|Unit level:||Level 6|
|Teaching period(s):||Semester 2|
|Offered by||School of Computer Science|
|Available as a free choice unit?:||Y
The students are required to have the knowledge of the following areas:
- Software engineering concepts and development process
- Java programming language
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.
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.
Teaching and learning methods
- Lectures (10 hours)
- Laboratories (20 hours)
Learning outcomes are detailed on the COMP62542 course unit syllabus page on the School of Computer Science's website for current students.
Knowledge and understanding
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
- Written exam - 50%
- Written assignment (inc essay) - 50%
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
- Lecture notes (on Blackboard)
- Text book: Gamma et. al. 1994. Design patterns: Elements of Reusable Object-Oriented Software. Addison Wesley.
- 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
- Independent study hours - 150 hours