Software Engineering Code:  22.615    :  6
View general information   Description   Information prior to enrolment   Learning objectives and results   Content   View the learning resources used in the subject   Support tools and learning resources   Guidelines on assessment at the UOC   View the assessment model  
You can use the course plan to plan your enrolment (check to see whether the course is being run this semester in the 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.)

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. This approach is adopted in order to achieve the levels of quality, productivity and cost control of the rest of the engineering areas. But software, unlike other products, is intangible and, therefore, its production does not consume raw materials. On the other hand, it is not manufactured (all copies are identical and the cost of creating one is practically zero) nor does it wear out, but it quickly becomes obsolete.

The application of software engineering involves to follow a method that describes the characteristics of the disciplined process that we use. More specifically, this method will tell us what tasks have to be carried out, who has to carry them out (the roles) and what artifacts will be the inputs and the results of each task. Tasks defined by a method can belong to various fields such as project management, requirements identification and management, modeling, software construction, testing, quality management, maintenance or reverse engineering, among others. Each method can define different roles, such as the person responsible for the project, the expert in the domain, the functional analyst, the architect, the team in charge of programming, etc., although there are certain roles that usually appear (maybe with different names) in most of the methods. Finally, software engineering also provides us with a set of techniques and tools that help us put into practice the methods we have chosen to develop our software project.

This course provides an overview of software engineering, with special emphasis on practical contents directly applicable in the future professional work of the students. In addition, the practical activities have an important weight within the time that students must devoted to the course.


This course does not presuppose any prior knowledge of this discipline or of any other course in this Bachelor's Degree.


The objectives that the students must acquire in this course are the following:

  • Being able to explain what software engineering is and contextualize it.

  • Being able to list some of the most commonly used development methods.

  • Being able to explain the fundamental concepts of object oriented modeling.

  • Being able to identify and select the requirements of a software product.

  • Being  able to use the UML notation to document object-oriented analysis models.

  • Being able to use use cases to document the functional analysis of a software.

  • Being able to do model a domain using UML diagrams.

These objectives are related to the following competences of the Bachelor's Degree in Techniques for Software Development:

  • Evaluate software solutions and draw up proposals for development projects, taking into account the resources, the available alternatives and the market conditions.

  • Understand and use the scientific bases of software development to analyse each problem at the appropriate level of abstraction and apply the skills and knowledge acquired in order to solve them.


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

Module 1: Introduction to Software Engineering

It describes what software engineering is, how it is organized and presents some of the methods, techniques, tools and standards that characterize it.

Module 2: Object Orientation

It describes what object orientation (OO) is and some of its main characteristics: classification and abstraction; information hiding and encapsulation; and inheritance and polymorphism.

Module 3: Requirements

It introduces the concept of requirements and describes how to obtain, manage and document them throughout a software development process.

Module 4: UML Analysis

It presents UML as a language to model various aspects (use cases, interface, domain) of a software system.


UML Class diagrams. Problem collection PDF
UML Activity diagrams. Problem collection PDF
Basic associations Audiovisual
Advanced associations Audiovisual
Integrity rules, derivated information and new types of data Audiovisual
Attributes Audiovisual
Association classes Audiovisual
UML Analysis (practical sample) Audiovisual
Classes and objects Audiovisual
Inheritances Audiovisual


The learning resources used in this course are:

Didactic modules. This material is the most important resource and consists of four modules (Introduction, Object Orientation, Requirements and UML Analysis). Each of these modules is developed in the following sections:introduction,objectives, theoretical body with the corresponding examples, a collection of self-assessment exercises, and specific recommended bibliography.

Video tutorials. Collection of video-tutorials to facilitate the consolidation of the study of didactic modules 2 and 4 of the course. 

Besides, to carry out some activities of the course it is advisable to use a modeling tool, which allow to represent UML diagrams. In this course we recommend to use one of the tools listed below (although you can use other available tools - you can see some here: - or even make the diagrams to hand):

Papyrus: free Eclipse plugin.

MagicDraw: Proprietary tool for which students receive a temporary license that will allow to use it until the end of the semester.

The instructions to install MagicDraw are:

1. Go to the manufacturer's website:

2. Login (register)

3. Choose the product:

4. Choose operating system and download the installer locally

5. Install using the license key provided


The assessment process is based on the student's personal work and presupposes authenticity of authorship and originality of the exercises completed.

Lack of authenticity of authorship or originality of assessment tests, copying or plagiarism, the fraudulent attempt to obtain a better academic result, collusion to copy or concealing or abetting copying, use of unauthorized material or devices during assessment, inter alia, are offences that may lead to serious academic or other sanctions.

Firstly, you will fail the course (D/0) if you commit any of these offences when completing activities defined as assessable in the course plan, including the final tests. Offences considered to be misconduct include, among others, the use of unauthorized material or devices during the tests, such as social media or internet search engines, or the copying of text from external sources (internet, class notes, books, articles, other students' essays or tests, etc.) without including the corresponding reference.

And secondly, the UOC's academic regulations state that any misconduct during assessment, in addition to leading to the student failing the course, may also lead to disciplinary procedures and sanctions.


This course can only be passed by taking a final exam (EX), whose mark is combined with the final mark of the compulsory practical (Pr). If the final practical mark is different from N (absent), the course mark will be different from N (absent). The continuous assessment mark (CA) complements the combined mark of the final exam (EX) and the practical (Pr). The formula for accrediting the course is as follows: (EX + Pr) + CA.