Module Overview

Software Design Patterns

This module introduces the notion of pattern languages as they apply to software development. A pattern arises when a recurring problem has been considered by many people and a consensus has emerged as to the broad outline of an appropriate solution and what the consequences of applying the pattern are in terms of results and trade-offs.

Module Code

INFS4001

ECTS Credits

10

*Curricular information is subject to change

What is a design pattern?

Intent. Motivation. Applicability. Structure. Participants. Collaborations. Consequences. Implementation. Sample Code. Known Uses. Related Patterns.

Coupling and Cohesion

Concept of coupling between classes and difference between loose and tight coupling. Cohesion of classes and methods. Importance of programming to interfaces rather than concrete classes to maximise flexibility and reusability of code.

Creational design patterns

Factory patterns. Software patterns that parameterise a system by the classes of objects it creates. Language techniques for intercession in object creation.

Structural design patterns

Class-transformational software patterns. Object composition for object patterns. Patterns for extensible, maintainable software architectures. Patterns for separating interface hierarchies from class hierarchies. Refactoring designs.
    
Behavioural design patterns

Refactoring responsibilities. Patterns for abstracting out changeable aspects of a software design and encapsulating those aspects for reuse. Decoupling patterns that encapsulating inter-object communication. Patterns for distributing inter-object communication.

Relationships between patterns

The families of related patterns. Patterns that are commonly used together. Common examples.

Refactoring

Idea of refactoring and its applications. Catalog of common refactoring techniques and their advantages and disadvantages.

Applications of patterns

Looking at issues with the use of patterns in both standard object-oriented programming languages and dynamic programming languages with examples.

 

What is a design pattern?

Intent. Motivation. Applicability. Structure. Participants. Collaborations. Consequences. Implementation. Sample Code. Known Uses. Related Patterns.

Coupling and Cohesion.

Concept of coupling between classes and difference between loose and tight coupling. Cohesion of classes and methods. Importance of programming to interfaces rather than concrete classes to maximise flexibility and reusability of code.

Creational design patterns

Factory patterns. Software patterns that parameterise a system by the classes of objects it creates. Language techniques for intercession in object creation.

Structural design patterns

Class-transformational software patterns. Object composition for object patterns. Patterns for extensible, maintainable software architectures. Patterns for separating interface hierarchies from class hierarchies. Refactoring designs.

Behavioural design patterns

Refactoring responsibilities. Patterns for abstracting out changeable aspects of a software design and encapsulating those aspects for reuse. Decoupling patterns that encapsulating inter-object communication. Patterns for distributing inter-object communication.

Relationships between patterns

The families of related patterns. Patterns that are commonly used together. Common examples.

Refactoring

Idea of refactoring and its applications. Catalog of common refactoring techniques and their advantages and disadvantages.

Applications of patterns

Looking at issues with the use of patterns in both standard object-oriented programming languages and dynamic programming languages with examples.

The delivery of this module will consist of two hours of lectures per week, supplemented by one hour per week in a computer laboratory. Live assessments will take place in the computer laboratory. The presentation of completed long-format coursework will take place online.

Module Content & Assessment
Assessment Breakdown %
Other Assessment(s)100