MSc ACS: Computer Security

Year of entry: 2020

Course unit details:
Pattern-Based Software Development

Unit code COMP62542
Credit rating 15
Unit level FHEQ level 7 – master's degree or fourth year of an integrated master's degree
Teaching period(s) Semester 2
Offered by Department of Computer Science
Available as a free choice unit? Yes

Overview

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.

Pre/co-requisites

Unit title Unit code Requirement type Description
Software Engineering Concepts in Practice COMP61511 Pre-Requisite Compulsory

The students are required to have the knowledge of the following areas:

  1. Software engineering concepts and development process
  2. Java programming language

Aims

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.

Learning outcomes

  • Describe a range of software patterns giving examples of their use

  • Select and apply design patterns to practical software design problems

  • Understand the benefits and pitfalls of the design patterns.

  • Work effectively in a small team to achieve 2 and 3 above

Syllabus

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

 

Teaching and learning methods

  • Lectures (10 hours)
  • Laboratories (20 hours)

Knowledge and understanding

On successful completion of this course unit a student will be able to learn:

  1. What design patterns are for, how they work and why they are needed.
  2. How the design patterns can help solve software design problems.
  3. When and why to use each pattern, and the consequence of using the pattern.
  4. How to use design patterns to design and implement adaptable object-oriented software systems.
  5. How to use design patterns to design software architecture.
  6. The relationship between the design patterns and the fundamental principles of object-oriented program design.

Employability skills

Analytical skills
Group/team working
Leadership
Project management
Problem solving
Research
Written communication

Assessment methods

Method Weight
Written exam 50%
Written assignment (inc essay) 50%

Feedback methods

  • 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

Recommended reading

  • Lecture notes (on Blackboard)
  • Text book: Gamma et. al. 1994. Design patterns: Elements of Reusable Object-Oriented Software. Addison Wesley.

.

Study hours

Independent study hours
Independent study 150

Teaching staff

Staff member Role
Liping Zhao Unit coordinator

Return to course details