General information


Subject type: Mandatory

Coordinator: Adso Fernández Baena

Trimester: First 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

     

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

     

  • 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

     

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

     

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


This is a laboratory subject and is therefore eminently practical. The ultimate goal is to build a complete web application so we will implement a minimum viable product that we will decide during the first days of the course. The features that the application must have will be the following:

  • The domain model must have a minimum of four classes
  • Must be connected to a remote database
  • Implement security: must validate users
  • Follow the software patterns seen in the programming and software engineering subjects
  • Separates the presentation layer from the domain layer with the view-controller pattern
  • The user interface offers a good user experience: follow the criteria explained in Computer Person Interaction

We will study the technologies and basic protocols on which web applications are built and then introduce the framework called Spring. We have chosen Spring for many reasons: it is open source, it is in Java, it is widely used in the professional world, it follows and encourages good programming practices, there is a very large and active community behind it. For the part of the user interface we will use client applications written with HTML, CSS and JavaScipt.

The course will give much importance to the process of developing the application. It will have to be developed in groups of four students and the work will have to be distributed so that all the members develop some function in their entirety, that is to say, that they work with the DB, the web service and the user interface. 

 

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


At a general level, this subject contributes to the following learning outcomes specified for the subject to which it belongs (Distributed Applications)

  • Evaluate and select hardware and software production platforms for the execution of computer applications and services.
  • Determine the factors that negatively affect the security and reliability of a hardware / software system, and minimize its effects.
  • Identify current and emerging technologies and assess whether they are applicable, and to what extent, to meet user needs.

At a more specific level, at the end of the course the student must be able to:

  • LO1: Design, write, test, debug, document, and maintain code in a high-level language to solve programming problems by applying algorithmic schemas and using data structures.
  • LO2: Design and write web pages in client languages
  • LO3: Design and develop web applications with server-side languages
  • LO4: Apply software engineering patterns to separate the presentation layer from the business layer
  • LO5: Implement security in developed applications
  • LO6: Select and publish an application to a cloud computing platform

 

Working methodology


Being a laboratory this subject will follow a learning methodology guided by examples (of the teacher) and especially by projects (that will develop the students).

Most of the class hours (4h / week) will be in the laboratory in small groups. In these sessions students will have to develop one (or several) web applications proposed by the teacher and the implementations will be discussed and argued.

Occasionally there will be master classes (2h / week) in large groups to introduce new concepts to be applied to the development of web applications in the practical part. Well, students will have to read materials proposed by the teachers in order to carry out the assigned assignments. Given the situation of covid-19 these classes will be done online: we will do a combination of synchronous sessions with zoom and video explanations.

Contents


  1. Internet applications
    1. Client and server communication: HTTP protocol
    2. JEE, Servlets and JSP
    3. Session and application context
    4. AJAX
    5. Transfer of serialized objects with XML and JSON
  2. Server: The Spring framework
    1. Spring components
    2. Injection of dependencies
    3. Aspect Oriented Programming (AOP)
    4. The Model View Controller (MVC) pattern
    5. REST services
    6. Forms and passage of information
    7. Exceptions and error checking
    8. Security
    9. DB connection with JDBC
    10. Asynchronous messaging
  3. Client: 
    1. Multiple page applications vs. single page applications
    2. Server-generated HTML template engines: Thymeleaf
    3. Client application with HTML, CSS and JavaScript 

Learning activities


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

  • Up to a maximum of 5 individual exercises: These are specific exercises that will assess the knowledge of the Spring framework introduced in class by the teacher. It is important to perform them to understand Spring well and become familiar with the development tools to face successful web application development. They are related to all learning outcomes and to the specific competences CIN1, CIN13 and CIN17
  • Up to a maximum of 3 group practices which correspond to partial deliveries of the web application. Teamwork, the difficulty of the project and the designed solution will be valued. 
  • Web project which corresponds to the last delivery of the application developed during the course. 

The three previous practices and the final web project are related to all the learning outcomes and to all the competences of the subject emphasizing the transversal T2: team work, that will be fundamental to develop an application of the required complexity.

  • Practical test: individual exam where the student will have to show that he has knowledge of the Spring and is familiar with the development tools. It is related to all learning outcomes and competences CIN8, CIN13, CIN17, EIS1, EIS4, EIS6, EIS13

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]

The following are the most important aspects of each competence assigned to the subject:

  • B2: problem solving within their area of ​​study.
  • 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
  • CIN8: analyze, design and build applications
  • CIN13: application of information storage tools
  • CIN17: design person-computer interfaces
  • EIS1: develop and evaluate systems that meet user requirements 
  • EIS2: Specify user requirements
  • EIS4: identify and analyze problems and design, implement and document software solutions
  • EIS5: identify, assess and manage risks
  • EIS6: designing software solutions
  • ESI13: specify, design and implement information and communication systems
  • T2: ability to work in a team developing different roles

Note: the transversal competence associated with the subject (T1: third language knowledge) is worked on as all classes and notes are given in English. 

Evaluation system


Assessment

  • PRJ_W: web project. Weighting of the final grade 25% if the grade of PR_P> = 4
  • PR_P: practical test. Weighting of the final grade 30%
  • PRAC: internships. Weighting in the final grade 25% (all with the same weight) if the grade of PR_P> = 4
  • EX: individual exercises. Weighting in the final grade 20% if the grade of PR_P> = 4

Final grade calculation (NF):

  • If PR_P> = 4 : NF = PON = PR_P 0,30 + PRJ_W 0,25 + PRAC 0,25 + EX 0,20
  • If PR_P <4 : NF = min (PR_P, PON)

Recovery:

Only the PR_P practical test can be retaken. The final grade will be calculated as set out above with the test recovery grades.

Normative:

  • Following UPF regulations, if it is detected that a practice or test has been copied, the mark for that test will be 0 (zero) regardless of its role (receiver or sender) and without this excluding the possible application of other sanctions in accordance with the current Disciplinary Regime.
  • In order for the student to be entitled to recovery, he / she must have presented himself / herself to PR_R

REFERENCES


Basic

Walls, Craig (2019), “Spring in Action”. (fifth edition) Manning. [in October 2021 the sixth edition may be published]

Spring main plane. https://spring.io/

Spring framework documentation: https://docs.spring.io/spring/docs/current/spring-framework-reference/index.html

Complementary

Deinum, Marten; Rubio, Daniel; Long, Josh and Mak, Gary (2014) "Spring Recipes, A problem-solution approach", Third Edition. Apress

 Stephen Ludin, Javier Garza, "Learning HTTP / 2: A Practical Guide for Beginners" 1st Edition. O'Reilly June 2017. ISBN-10: 1491962445