Software Design Patterns Code:  22.617    :  6
View general information   Description   The subject within the syllabus as a whole   Prior knowledge   Information prior to enrolment   Learning objectives and results   Content   View the UOC learning resources used in the subject   Additional information on support tools and learning resources   Guidelines on assessment at the UOC   View the assessment model  
This is the course plan for the first semester of the academic year 2024/2025. To check whether the course is being run this semester, go to the Virtual Campus section More UOC / The University / Programmes of study section on Campus. Once teaching starts, you'll be able to find it in the classroom. The course plan may be subject to change.
This course focuses on the study of patterns and their application during the analysis and design of the different layers (presentation, domain and technical services) of a software system. All the contents follow the Object Orientation methodology - currently the most accepted - and use the UML notation.
Patterns (for software analysis, design, and architecture, among others), are one of the innovations that have had the greatest impact on object-oriented development in recent years together with the introduction of UML. Their main advantages are that they save time and improve the quality of the system by applying solutions (called patterns), which have already been widely tested by other designers.

For this reason, the use of patterns is considered a basic skill that any object-oriented software designer must acquire today. However, the development of this skill requires practice, where the detailed information found in books about patterns - which are already increasing in number - is usually used. This way of working is recommended to students for their future professional work.

This course provides brief descriptions of many of the most well-known and accepted patterns today, as well as some general concepts about patterns and their use.


This course is strongly linked to the knowledge acquired in the Software Engineering course. It is also related to the Object Oriented Programming course, which deepens in the practical aspects of the behaviour of OO designs; and the Software Architecture course, which covers complementary aspects related to the engineering of distributed systems.


Solving a practical activity with UML and patterns requires students to have prior knowledge about the UML modeling techniques, object-oriented (OO) methodology, object-oriented programming (OOP), and relational databases.

In order to unify the prior knowledge of all students, and given that the object-oriented software development method will be used throughout the course, a collection of Review Exercises are provided as part of the classroom resources.

The concepts of the method and the corresponding UML notations are introduced by means of an example that is developed and discussed in detail. For those students who have already studied the content presented in this module, it will serve them as a review, which is especially convenient if they learned it some time ago and have not used it much since.


To enroll in this course, it is mandatory to have passed the Software Engineering course.


The general objective of the course is twofold. It aims to ensure that students master the analysis and design of software using object-oriented development methods, as well as to ensure that they acquire a solid understanding of the use of patterns. All of this as a way to simplify the software development thanks to the reuse of solutions to typical problems that appear in a recurrent manner.

The specific objectives that the student must acquire in this course are the following:
  • Assimilate the concept of pattern.
  • Get to know a selection of patterns applicable to the analysis and design phases of software development.
  • Be able to select the most suitable pattern for each situation.
  • Be able to apply a specific pattern in a specific situation.
  • Be able to analyze and design object-oriented software.
These objectives are related to the following competences of the Bachelor's Degree in Techniques for Software Development:  
  • Design and build computer applications using development, integration and reuse techniques.
  • Apply specific software engineering techniques to the different stages of a project's life cycle.
  • Propose and evaluate different technological alternatives for solving a specific software development problem.


The teaching material of the course consists of three didactic modules:

Module 1: Introduction to patterns
This module introduces UML by means of practical examples that cover the different modeling techniques. It includes an example of analysis and an example of design.

Module 2: Patterns catalogue

The most significant patterns are discussed in this module. Patterns covering mostly the entire life cycle of the software are described.

Module 3: Case study of pattern application

It includes the detailed development of a practical case similar to the Practical Exercise that students will need to solve.
The materials of this course are not designed to be studied sequentially. Once the introduction (Module 1) has been read, it is recommended to combine the study of theory (Module 2) and practice (Module 3) simultaneously. In the description of each activity, you will find a detailed description of which specific sections of each module must be studied for each activity.



The main resources for the course are the teaching modules, available in the Learning resources section in the classroom.

To carry out some of the course activities it is advisable to use a CASE (Computer Aided Software Engineering) tool, which allows to create well-formed UML diagrams. There are currently many CASE and modeling tools available on the market (both free and proprietary), as you can see in the following list: In any case, the course instructor does not offer technical support in the installation and use of these tools.


Assessment at the UOC is, in general, online, structured around the continuous assessment activities, the final assessment tests and exams, and the programme's final project.

Assessment activities and tests can be written texts and/or video recordings, use random questions, and synchronous or asynchronous oral tests, etc., as decided by each teaching team. The final project marks the end of the learning process and consists of an original and tutored piece of work to demonstrate that students have acquired the competencies worked on during the programme.

To verify students' identity and authorship in the assessment tests, the UOC reserves the right to use identity recognition and plagiarism detection systems. For these purposes, the UOC may make video recordings or use supervision methods or techniques while students carry out any of their academic activities.

The UOC may also require students to use electronic devices (microphones, webcams or other tools) or specific software during assessments. It is the student's responsibility to ensure that these devices work properly.

The assessment process is based on students' individual efforts, and the assumption that the student is the author of the work submitted for academic activities and that this work is original. The UOC's website on academic integrity and plagiarism has more information on this.

Submitting work that is not one's own or not original for assessment tests; copying or plagiarism; impersonation; accepting or obtaining any assignments, whether for compensation or otherwise; collaboration, cover-up or encouragement to copy; and using materials, software or devices not authorized in the course plan or instructions for the activity, including artificial intelligence and machine translation, among others, are examples of misconduct in assessments that may have serious academic and disciplinary consequences.

If students are found to be engaging in any such misconduct, they may receive a Fail (D/0) for the graded activities in the course plan (including final tests) or for the final grade for the course. This could be because they have used unauthorized materials, software or devices (such as artificial intelligence when it is not permitted, social media or internet search engines) during the tests; copied fragments of text from an external source (the internet, notes, books, articles, other students' work or tests, etc.) without the corresponding citation; purchased or sold assignments, or undertaken any other form of misconduct.

Likewise and in accordance with the UOC's academic regulations, misconduct during assessment may also be grounds for disciplinary proceedings and, where appropriate, the corresponding disciplinary measures, as established in the regulations governing the UOC community (Normativa de convivència).

In its assessment process, the UOC reserves the right to:

  • Ask students to provide proof of their identity as established in the UOC's academic regulations.
  • Ask students to prove the authorship of their work throughout the assessment process, in both continuous and final assessments, through a synchronous oral interview, of which a video recording or any other type of recording established by the UOC may be made. These methods seek to ensure verification of the student's identity, and their knowledge and competencies. If it is not possible to ensure the student's authorship, they may receive a D grade in the case of continuous assessment or a Fail grade in the case of the final assessment.

Artificial intelligence in assessments

The UOC understands the value and potential of artificial intelligence (AI) in education, but it also understands the risks involved if it is not used ethically, critically and responsibly. So, in each assessment activity, students will be told which AI tools and resources can be used and under what conditions. In turn, students must agree to follow the guidelines set by the UOC when it comes to completing the assessment activities and citing the tools used. Specifically, they must identify any texts or images generated by AI systems and they must not present them as their own work.

In terms of using AI, or not, to complete an activity, the instructions for assessment activities indicate the restrictions on the use of these tools. Bear in mind that using them inappropriately, such as using them in activities where they are not allowed or not citing them in activities where they are, may be considered misconduct. If in doubt, we recommend getting in touch with the course instructor and asking them before you submit your work.


You can only pass the course if you participate in and pass the continuous assessment. Your final mark for the course will be the mark you received in the continuous assessment.