General information


Subject type: Mandatory

Coordinator: Alfonso Palacios González

Trimester: First term

Credits: 6

Teaching staff: 

David Ródenas Picó
Josep Roure Alcobé 

Teaching languages


The main language of instruction in class is Catalan.

However:

- all the material of the subject available is in English,
- the tools used and their documentation are in English,
- All work and deliveries must be in English.
  (this includes code, comments, documentation, interfaces, etc.)

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

  • 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

  • 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

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


The subject of Software Laboratory 2 of the first term of the fourth year is the last of the two subjects called Software Laboratory. Its teaching is intended to dedicate 1 ECTS to the theory part and 5 ECTS to practice the concepts exposed to theory and those acquired in the other subjects.

This subject will consist of the creation of a client-server application through a group while respecting the SCRUM methodology and continuous delivery.

The student, in addition to implementing the application and creating the software tests, will capture requirements for new features, specify them, and perform the roles of Scrum Master and Release Manager.

All development will be done on github, and team contributions will be regulated through pull requests.

The code will be developed with Java Spring + JPA on the server side, Javascript React + Redux on the client, and will communicate with REST protocol.

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


In general, this subject contributes to the following learning outcomes specified for the subject to which it belongs (Software Engineering):

- Appropriate use of theories, procedures and tools in the professional development of computer engineering in all its areas (specification, design, implementation, deployment -implantation- and product evaluation) so as to demonstrate an understanding of the commitments made. in design decisions.
- Use the tools of a software development environment to create and develop applications.
- Assume the roles and functions of the project manager and apply, in the field of organizations, the techniques of management and programming of time, costs and financial aspects, human resources and risk.
- Demonstrate knowledge and know how to apply the appropriate techniques to model and analyze the different types of decisions.
- Manage and resolve problems and conflicts thanks to the ability to generate alternatives or future scenarios conveniently analyzed, integrating the aspects of uncertainty and the multiple objectives to be considered.
- Control versions and configurations of the project.
- Take initiatives that generate opportunities, new objects or new solutions, with a vision of process and market implementation, and that involves and involves others in projects to be developed (ability to act autonomously) .
- Specify, design, implement, manage and maintain complex and / or critical software systems and services.
- Control quality and design tests in software production.
- Define and manage the requirements of a software system.
- Understand and use effectively manuals, product specifications and other technical information written in English.
- Plan and use the information needed for an academic project (for example, for the final degree project) based on a critical reflection on the information resources used. Manage information competently, independently and autonomously. Evaluate the information found and identify the gaps present.
- Ensure that an organization's ICT systems function properly, are secure, and are properly installed, documented, customized, maintained, and replaced, and that the organization's people receive proper ICT support.
- Direct, plan and coordinate the management of the computer infrastructure: hardware, software, networks and communications.

 

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

- LO1: Create client / server multi-user applications with web / mobile interface.
- LO2: Manage the development of a computer product as a team, as well as direct the team to ensure the correct development.
- LO3: Create and manage the quality tests of a computer product.
- LO4: Capture and create the requirements of a computer product, analyze them, define them, and present them to members outside the development.
- LO5: Ability to maintain an existing code, and add new functionalities, as part of a team.
- LO6: Introduce and negotiate new functionalities with internal and external members of the development.
- LO7: Ability to coordinate a team up to an environment and ensure the correct development of the software.
- LO8: Monitor and manage new functionalities while interacting with other team members and ensuring the correct correct quality. 
- LO9: Apply new functionalities to the production version as well as deploy them.

 

Working methodology


The work in this subject, in spite of being organized in groups, will be of a unipersonal character.

Each student will participate in the development of a client / server application with web / mobile interface, but not only from the point of view of the code, but also from the point of view of capturing requirements, and new functionalities.

During the term a work environment based on Scrum will be simulated where the teacher will play the role of head / PO (Product Owner).

The course will be organized in Sprints that will define a period during which the student will contribute to the project.

 


Rules for carrying out the activities

For each activity, teachers will report on the particular rules and conditions that govern them.

One-on-one activities presuppose the student's commitment to carry them out individually. All activities in which the student does not comply with this commitment will be considered suspended, regardless of their role (origin or destination).

Likewise, the activities to be carried out in groups presuppose the commitment on the part of the students who make it up to carry them out within the group. All activities in which the group has not respected this commitment regardless of its role (origin or destination) will be considered suspended.

All the activities carried out in this subject are considered to be carried out individually; the result of each contribution to the group must be negotiated with the rest of the group, with preference first to the teacher, and then to the Scrum Master if it is about functionalities or to the Release Manager if they are of quality and implementation details.

In group activities, the teacher will customize the grade for each member of the group.

Any undelivered activity will be considered scored with zero points.

It is optional for teachers to accept or not deliveries outside the deadlines indicated. In the event that these late deliveries are accepted, it is up to the teacher to decide whether to apply a penalty and the amount thereof.

Contents


1. Client / Server architecture design

Use of distributed architectures in client / server architecture. The server establishes an interface that the client will use to communicate with the user. The server and client communicated primarily with REST.

2. Automatic Dependency Injection Architecture + JPA

Use of Spring automatic dependency injection technologies.
Use the JPA API in the back-end that automatically connects to a data source and structures tables and relationships automatically.

3. MVC client architecture

Use of an MVC architecture on the client capable of properly managing data and communication with the server.

4. Project Management

Use of the SCRUM system in teams where students will have to present the results frequently in the PO. The teacher will play the role of PO. Within each group and in rotation one of the students will be a Scrumm Master.
Students will also capture requirements, present features, and implement design.

5. Continuous Delivery

Use of a continuous delivery system. Software testing is used to trace and ensure that the specification is implemented correctly. In each iteration, with a rotation system, each of the students will act as Release Manager, creating and validating the version to be deployed, and making the deployment to a real production environment.

6. Quality and Safety

The implemented system must pass high standards of quality and safety. All the code will go through several code reviews and will have to apply the patterns learned in previous subjects. Also all the code will have to have pots with a coverage of almost 100%, and these will have to contemplate all the exceptions that can compromise the server.

Learning activities


GROUP PROJECT (RA1 - RA9)

The theme of the whole term is the creation / maintenance of a group application, although the contribution of each student in the group to the project will be individual.

The student's tasks during the term will be:

- Blog: Capturing, defining, specifying and presenting requirements,
- How: Interaction with the PO teacher who ordered the stories to be implemented,
- Qlt: Ensure the quality and correctness of your own code,
- Test: Create and maintain accurate tests that validate the code and functionalities with the maximum possible coverage,
- CRev: Proactively review the pull requests of other students in the same group and approve them or make recommendations for changes,
- SM: When appropriate, play the role of scrum master, ensure the correct development of the product and make the progress report resulting from its management,
- RM: When appropriate, act as a release manager, validate pull requests, ensure product quality, and ensure the correct use of the repository, make the progress report resulting from its management and deployment to production,
- BE: Back-end implementation,
- FE: Front-end implementation

For the development of the project, stories will be defined that will represent a functionality to be added to the product. The student must be able to do all the stages of a single story.
Note: All students will be required to contribute in all roles and all assignments. Despite being done in groups, it will not be possible to divide the tasks so that a story is implemented between several students. All students will implement front-end, all back-end, and all will capture and define stories. Except for the main of the application, the coverage must be 100%, and all pots must be justified with the specification of the functionalities.

The group will meet with the teacher regularly in time periods identified as Sprints. In each Sprint the tasks to be developed will be reorganized, the work done will be evaluated, and the roles of scrum master and release manager will be able to change of student within the group.

 

INDIVIDUAL EXAMINATION (RA1 - RA5)

Eminently practical individual test.

The resolution of the test must be submitted.

This test represents 50% of the final grade of the subject.

Specific objectives: The aim of this activity is to evaluate if the student knows:

- Capture, define, and specify requirements

- Apply the principles of object-oriented design.

- Implement programs with graphical user interface and web.

- Persist objects in relational databases through the use of the JPA.

- Implement automated quality testing.

 

This subject is completely practical. Reproduces the development of client / web server software iteratively in groups. The student is required to participate in all phases of development, from the capture of new ideas and requirements to deployment in a real environment on the Internet. The teacher acts as the stakeholder of the company with whom the student must negotiate the new functionalities, the possible costs, and the result. Quality plays an essential role, along with traceability. All the new functionalities are documented in the application's blog, of a commercial nature, which are used as input to automatic test algorithms that verify the correct operation of the application. The student will also be responsible for the quality of the code, both his own and that of his peers through code review. The student is required to implement at all levels of application, both client and server, and participate in all roles. The assessment will be done through continuous individual deliveries signed with a hash key to a code repository indicated by the teacher, automatic tool life cycle tracking tools and code reviews, interaction with the teacher in their stakeholder role, and interviews / questionnaires about their effectiveness in each role. This means that despite being a group practice, each assessment is individual.

The exam has a much smaller scope, there is no interaction with other people, but it aims to contrast that the student has been able to achieve the more technical aspects. This requires the capture of requirements, specification, design, implementation, test creation and full integration of a proposal made by the teacher on a code basis equal to or similar to that used in practice. Optionally the teacher will be able to complement this test with a theoretical test on parts of the basic architecture of the practice.

In the area of ​​competence, the practice, which will mostly have to be developed in non-contact time, covers all the common and specific competencies of the subject:
EFB4: interaction with multiple tools and IDEs, both editors or browsers and databases
CIN1: complies in all life cycles with maximum reliability, safety, quality and compliance with ethical and legal principles
CIN2: participates in the entire development process until deployment, learning the consequences of their actions
CIN3: negotiates new functionalities with teacher and classmates
CIN4: must be able to determine and deploy the application in accordance with current standards and laws
CIN5: maintains and evolves the solution in a real environment
CIN8: Applies high standards of software testing, reviews code quality, and architecture every functionality
CIN12: deploys the practice in a real web environment
CIN13: The application follows the client / server schema using database-based web protocols
CIN16: Participates in all stages, including multiple application enhancements
CIN17: designs and implements new user interfaces taking into account accessibility standards
CIN18: they must consider national, European and international regulations in the conditions of deployment
EIS1: applies high standards of software testing and binds them to the requirements,
EIS2: makes proposals for new functionalities given an existing environment and analyzing costs
EIS3: solves problems based on available standards and technologies
EIS4: looks for alternatives of use advancing to problems of operation or security with tests of software
EIS5: when assigned the role, ensures the correctness of the method, the risks and proposes solutions
EIS6: applies high standards of software testing and reviews for good quality code and well-applied standards,
ESI2: adheres to the principles of security and legal compliance in the capture of requirements and specification
ESI3: integrates proposals with complete security thanks to a testing environment

In the basic and transversal field:
CB.2, CB.4, CT.2: despite being personal assessment, they need to communicate, convince other team members and teacher and coordinate work with a common goal
CB.5: they set the challenges themselves and learn their limitations
CT.1: All documentation, code, and working papers must be in English.

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


The final grade will be calculated with the grades of the weighted activities as follows:

- INDIVIDUAL EXAMINATION: 50%

- PRACTICE: GROUP PROJECT: 50%


The group project, despite being done in a group, the participation and the grade will be individual. This will be the weighting of the various notes of the various tasks carried out by the student. The grade for each task must be 3 or higher, otherwise the grade for the whole group project will be the minimum grade for each task.

If the mark of the exam is lower than 3, or the mark of the practice is lower than 3, the final mark of the subject will be the minimum of them.

Only the individual exam can be retaken (the group project cannot be retaken). 50% of the final mark of the subject will be the highest between the recovery test and the one obtained in the exam.
 

In order to take the recovery test, the student must meet the following three conditions:

- The mark of the subject is less than five.

- The mark of test 1 is higher than 3.

- The mark obtained in each of the tasks of the practice be 3 or more.

 

About the evaluation of the practice:

During the term, the evaluable activity of each student will be recorded and will be used to calculate the grade for the project in groups.

In each sprint the individual participation of each student in the project will be evaluated as well as the development of the possible roles that it has carried out.

It is essential that the student contributes uniformly in all sprints and in all tasks. Constancy is valued more in the contribution in all tasks than the end result of the group project of the subject.

Given the regularity of the sprints, at the discretion of the teacher, the option is given to ignore the results of one or two sprints of each student.

The exact number of sprints, and the change of role within each sprint are left to the discretion of the teacher, with all students fulfilling all roles.

 

Hardware requirements:

The student must have his own equipment with the software and versions required by the teacher. You must have the equipment during the theory and practice sessions and also during the exam.

REFERENCES


Basic

Spring Documentation - https://spring.io

Agile Software Development: Principles, Patterns, and Practices - Robert C. Martin,

Guide: Writing Testable Code http://misko.hevery.com/code-reviewers-guide/ — Miško Hevery

Complementary

UML for Java Programmers - Robert C. Martin