General information


Subject type: Mandatory

Coordinator: Adso Fernández Baena

Trimester: Second term

Credits: 6

Teaching staff: 

Josep Roure Alcobé

Skills


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

     

  • ES14_Ability to understand and apply the principles and practices of organizations, so that they can act as a liaison 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

     

  • ES16_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

     

Description


In this course you will see an overview of the three architectures of information systems most used today in the industry. Firstly the monolithic architecture where all the functionalities are in a single module, secondly we will see the family of "clean" or hexagonal architectures that separate the functionalities in different modules and seek to isolate them from the "details" of the application, and third we will explore microservice-based architectures that seek to separate functionalities into independent but interconnected applications. We will see the advantages and disadvantages of each. Internships will focus on hexagonal and microservice-based architectures.

This subject has methodological and digital resources to make possible its continuity in non-contact mode in the case of being necessary for reasons related to the Covid-19. In this way, the achievement of the same knowledge and skills that are specified in this teaching plan will be ensured.

 

Learning outcomes


This subject contributes to the following learning outcomes specified for the subject to which it belongs (Services and information systems for organizations)

  • LO1: Appropriately use theories, procedures and tools in the professional development of computer engineering in all its areas (specification, design, implementation, deployment -implementation- and product evaluation) in a way that demonstrates the understanding of all. the commitments made in design decisions.
  • LO2: Specify, design, implement, manage and maintain complex and / or critical software systems and services.
  • LO3: Control quality and design tests in software production.
  • LO4: Define and manage the requirements of an information system.
  • LO5: Evaluate and select hardware and software production platforms for the execution of computer applications and services.
  • LO6: Determine the factors that negatively affect the security and reliability of a hardware / software system, and minimize their effects.
  • LO7: Control project versions and configurations. 
  • LO8: Design and manage information systems.
  • LO9: Understand and use manuals, product specifications and other technical information effectively written in English.

 

Working methodology


There will be large group theory classes and small group practice classes. In the theory classes, master class sessions will be combined with problem-solving sessions proposed by the teacher in groups of two or three students.

The practices in the laboratory will be carried out in pairs. They will have to start working in the laboratory with the help of the teacher and will have to finish autonomously outside the regulated contact hours.

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 modular architectures
    4.1.- Characteristics
    4.2.- A structure that explains the functionality
    4.3.- Ports and adapters
    4.4.- Mapping between layers
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

Learning activities


In order to gather evidence of the achievement of the expected learning outcomes, the following evaluative activities will be carried out:

Written test: the student will have to show that he / she has acquired the theoretical knowledge explained in class and that he / she makes informed design decisions. (Evidence of learning outcomes RA1, RA2, RA4, RA5, RA6, RA8). All skills except T2 (teamwork)

Practical test: the student will have to show that he has acquired the practical knowledge. The test will consist of the development of a part of an information system (Evidence of learning outcomes RA2, RA3, RA8, RA9)

Practices: there will be a maximum of 5 practices where the knowledge acquired in class will be applied. (Evidence of learning outcomes RA2, RA3, RA7, RA8, RA9)

Note: all activities are related to all skills. It should be noted that all documentation is written in English so the latest learning outcome and T1 cross-curricular competence are guaranteed. On the other hand to develop the practices the students will have to solve of autonomous form, using the manuals, the problems that go them arise by what the competition B5 also remains guaranteed. The following are the most important aspects of each competence assigned to the subject:

  • B2: problem solving within their area of ​​study.
  • B3: gather and interpret information relevant to their task.
  • B4: convey problems and solutions
  • B5: development of learning skills necessary for further studies (autonomous access to documentation, effective work habits)
  • CIN1: design, develop and evaluate computer systems and applications ensuring their reliability, security and quality
  • CIN2: plan, conceive, deploy and direct computer projects
  • CIN3: show attitudes of teamwork
  • CIN4: draw up the technical specifications of a system
  • CIN5: administration of services and systems
  • CIN13: application of information storage tools
  • CIN16: application of software engineering methodologies
  • EFB6: knowledge of the concept of company and its management
  • EIS1: develop and evaluate systems that meet user requirements 
  • EIS2: Specify user requirements
  • EIS3: integration based on strategies and standards
  • EIS4: identify and analyze problems and design, implement and document software solutions
  • EIS5: identify, assess and manage risks
  • EIS6: designing software solutions
  • ESI1: integrate software solutions and business processes
  • ESI2: determine information systems (IS) requirements in security and compliance with legislation
  • ESI3: specify, design and implement SI
  • ESI4: apply the principles and practices of organizations
  • ESI5: assess and manage risks in project development
  • ESI6: apply quality management techniques
  • T1: knowledge of the third language
  • T2: ability to work in a team developing different roles

In order to pass (pass) the assessment activities, students will have to demonstrate

  • That they have acquired the theoretical knowledge related to the contents of the subject and that their understanding allows them to put them into practice [MECES-2 point a, point c]
  • That they can develop solutions to problems that, although they are similar to others seen above, present aspects that are new [MECES- 2 point f]

Evaluation system


Assessment

  • PR_E: written test. Weighting of the final grade 30%
  • PR_P: practical test. Weighting of the final grade 30%
  • PRAC: practices from 1 to 5. Weighting in the final grade 40% (each 8%) if the grade of PR_E> = 3,5 and PR_P> = 3,5

 

Final grade calculation (NF):

  • If PR_E> = 3,5 and PR_P> = 3,5: NF = PON = PR_E 0,3 + PR_E2 0,3 + PRAC 0.4
  • Si (PR_E <3,5 or PR_P <3,5: NF = min ((PR_E 0,3 + PR_P 0,3), 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 internships is mandatory. If a student does not attend an internship session he will be graded with a grade of 0 (zero) in the corresponding internship
  • Following UPF regulations, if it is detected that a practice or test has been copied, it will be 0 (zero) of both the copy and the copy.
  • In order for the student to be entitled to recovery, he / she must have taken both tests (PR_E and PR_R).

REFERENCES


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

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

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

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