General information


Subject type: Mandatory

Coordinator: Vladimir Bellavista Parent

Trimester: Second term

Credits: 6

Teaching staff: 

Josep Roure Alcobé
Alfredo Rueda Unsain 

Academic year: 2025

Teaching course: 3

Languages ​​of instruction


  • English

Competencies / Learning Outcomes


Basic skills
  • B2_That students know how to apply their knowledge to their job or vocation in a professional way and have the skills they demonstrate by developing and defending arguments and solving problems within their area of ​​study

  • B3_Students have the ability to gather and interpret relevant data (usually within their area of ​​study), to make judgments that include reflection on relevant social, scientific or ethical issues

  • B4_That students can convey information, ideas, problems and solutions to both specialized and non-specialized audiences

  • B5_That students have developed those learning skills necessary to undertake further studies with a high degree of autonomy

Specific skills
  • EFB6_Adequate knowledge of the concept of company, institutional and legal framework of the company. Organization and management of companies

  • EIS1_Ability to develop, maintain and evaluate software services and systems that meet all user requirements and that behave reliably and efficiently, are affordable to develop and maintain and comply with quality standards, applying theories, principles, methods and software engineering practices

  • EIS2_Ability to assess customer needs and specify software requirements to meet those needs, reconciling conflicting goals, by seeking acceptable compromises, within the limitations of cost, time, the existence of already developed systems and of the organizations themselves

  • EIS3_Ability to solve integration problems based on available strategies, standards and technology

  • EIS4_Ability to identify and analyze problems and design, develop, implement, verify and document software solutions based on adequate knowledge of current theories, models and techniques

  • EIS5_Ability to identify, assess and manage potential associated risks that may arise

  • EIS6_Ability to design appropriate solutions in one or more application domains, using software engineering methods that integrate ethical, social, legal and economic aspects

  • ESI1_Ability to integrate Information and Communications Technology solutions and business processes to meet the information needs of organizations, enabling them to achieve their goals effectively and efficiently, thus achieving competitive advantage

  • ESI2_Ability to determine the requirements of the information and communication systems of an organization, taking into account security aspects and compliance with current regulations and legislation

  • ESI3_Ability to actively participate in the specification, design, implementation and maintenance of information and communication systems

  • ESI4_Ability to understand and apply the principles and practices of organizations, so that they can act as a link between the technical and management communities of an organization and actively participate in user training

  • ESI5_Ability to understand and apply the principles of risk assessment and apply them correctly in the elaboration and execution of action plans

  • ESI6_Ability to understand and apply the principles and techniques of quality management and technological innovation in organizations

Transversal competences
  • T1_That students know a third language, which will be preferably English, with an adequate level of oral and written form, according to the needs of the graduates in each degree

  • T2_That students have the ability to work as members of an interdisciplinary team either as one more member, or performing management tasks in order to contribute to developing projects with pragmatism and a sense of responsibility, making commitments taking into account the available resources

Presentation of the subject


In this course, we will see an overview of the three most commonly used information systems architectures in industry today. First, two monolithic architectures where all the functionalities are in a single module: layered architecture and we will also see the family of "clean" or hexagonal architectures that separate the domain and application controllers from the outside. This second architecture (the clean one) facilitates the separation of functionalities into different modules. Third, we will explore microservices-based architectures that seek to separate functionalities into independent but interconnected applications. We will see the advantages and disadvantages of each of them, referring to the consequences they have on the organization of the teams that develop and manage Information Systems. We will also introduce tools related to DevOps such as containers and the concept of an immutable server. During the course, we will develop a project that will use hexagonal and microservices-based architectures.

Use of Generative AI in the subject

In this subject, the use of the artificial generative intelligence (AIG) for the preparation of the practices and the practical exam. The code that is delivered must comply with the software architecture and established programming practices. Therefore, it is essential that the student knows how to discern the appropriate time to use the IAG, as well as maintain a critical sense given the results it offers. Likewise, it will be essential for the student to acquire the competence of design effective prompts in order to obtain code of the highest quality. It is important to emphasize that the student is the only responsible for all delivered code, regardless of whether it was generated by an IAG or developed by itself.

Tanmateix, NOT recommended the use of the IAG to solve exercises that are intended to practice the use of new libraries or frameworks, or to answer questions of a more theoretical nature. The teacher can give indications on when and how to use the IAG during the class.

Which gives prohibited the use of the IAG during the theoretical exam.

Important: in the practices we use the programming framework Spring boot i SpringCloud which are introduced during the subject Internet Applications Laboratory. It is recommended to have taken it before doing Information Systems Design.

The classroom (physical or virtual) is a safe space, free from sexist, racist, homophobic, transphobic and discriminatory attitudes, whether towards students or teachers. We trust that together we can create a safe space where we can make mistakes and learn without having to suffer the prejudices of others. 

Contents


1.- Motivation
2.- Introduction to software and systems architecture
3.- Monolithic architectures
    3.1.- Characteristics
    3.2.- We revisit the architecture in layers
4.- "Clean" or hexagonal architectures
    4.1.- Characteristics
    4.2.- A structure that explains the functionality
    4.3.- Ports and adapters
    4.4.- Mapping between layers
    4.5.- Organization in modules
5.- Distributed architectures: microservices
    5.1.- Introduction: “the monolith hell”
    5.2.- Modeling: DDD 
    5.3.- Communication models (synchronous and asynchronous)
    5.4.- Transactions and “eventual consistency”
    5.5.- Infrastructure patterns

Activities and evaluation system


Assessment

  • PR_E: written test. Weighting of the final grade 15%
  • PR_P: practical test. Weighting of the final grade 15%
  • PRJ: project. Weighting in the final grade 60% if the grade of PR_E >= 5 and PR_P >= 5

Final grade calculation (NF):

  • If PR_E >= 5 and PR_P >= 5 : NF = PON = PR_E 0,15 + PR_E2 0,15 + PRJ 0.6
  • Si (PR_E <5 or PR_P <5: NF = min ((PR_E 0,15 + PR_P 0,15), PON)

Recovery:

  • The two tests (PR_E and PR_P) can be retrieved separately. The final grade will be calculated as set out above with the test recovery grades.

Normative:

  • Attendance at the practical sessions is mandatory. If a student does not attend a practical session, they will be graded with a grade of 0 (zero) for the corresponding practical session.
  • Following UPF regulations, if it is detected that a practice or test has been copied, the grade for it will be 0 (zero) for both the one who copies and the one who allows himself to be copied.
  • In the theoretical exam (PR_E) the use of IAG is prohibited and if its use is detected it will be treated as if it had been copied during the test.
  • In order for the student to be entitled to recovery, he / she must have taken both tests (PR_E and PR_R).

Bibliography


Basic

Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java. Tom Hombergs. Package Ed

Newman, Sam (2021), “Building Microservices: Designing Fine-Grained Systems” (2nd edition). O'Reilly Media

Complementary

Chris Richardson. Microservice patterns: https://microservices.io/

Hands-On Microservices with Spring Boot and Spring Cloud. By Magnus Larsson. Packt publisher (2019)

Josh Long, Kenny Bastani, "Cloud Native Java. Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry." O'Reilly 2017