General information


Subject type: Mandatory

Coordinator: Adso Fernández Baena

Trimester: Third term

Credits: 4

Teaching staff: 

Jordi Boix Baró
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
  • EFB4_Basic knowledge of the use and programming of computers, operating systems, databases and computer programs with application in engineering

     

  • 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

     

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 1 of the third term of second year, is the first of the two subjects called Software Laboratory. Its teaching is intended to dedicate 1 ECTS to the theory part and 3 ECTS to practice the concepts exposed to theory and those acquired in the rest of the first and second year subjects.

This course will introduce the persistence of relational database objects using the JDBC API, delve deeper into programming techniques, and introduce the concepts of REST API.

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)

  • 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) 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.
  • 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 project versions and configurations.
  • Quality control and design testing in software production.
  • Define and manage the requirements of a software system
  • Identify current and emerging technologies and assess whether they are applicable, and to what extent, to meet user needs.
  • Understand and use manuals, product specifications and other technical information written in English effectively.
  • Plan and use the information needed for an academic work (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, updated, and replaced, and that the people in the organization receive proper ICT support.
  • Direct, plan and coordinate the management of the IT infrastructure: hardware, software, networks and communications.

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

  • LO1: Understand the phases of a programming project.
  • LO2: Apply the principles of object-oriented design.
  • LO3: Implement programs with a graphical user interface in a desktop environment.
  • LO4: Implement programs for the web environment.
  • LO5: Persist in relational databases using JDBC.
  • LO6: Understand the quality criteria of programs.
  • LO7: Develop team programming projects.
  • LO8: Control the versions of the project

Working methodology


In this subject only a few sessions will be dedicated preferably to introduce the theoretical concepts, showing their application with exercises solved by the teacher. It is recommended that students read the material published on the virtual platform before each session.

Most sessions will be to develop the software proposed in the statement of the practice, will be done in small groups (between 3 and 5 students) and it will be necessary to apply the knowledge acquired in the 3 blocks of the subject in addition to the knowledge of the programming, database and software engineering subjects. These sessions will provide the appropriate tools to develop the proposed software but it is expected that these will be extended from a temporal point of view, beyond laboratory hours and that, consequently, students will have to complete them during autonomous learning time.

 

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.

In group activities, the teacher can, based on the information available, 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. Programming Improvement: Patterns and Good Practices.


The programming skills of each student will be perfected, so that it is easy to maintain and scale software projects in a production environment.


2. Basic concepts of REST environment

It is about introducing the concepts needed to be able to develop a REST celery with JAVA.

 

3. Persistence of Java objects based on relational data

Work with JDBC to persist JAVA database objects.

 

Learning activities


FIRST PART OF THE GROUP PROJECT

Analyze and program the domain of the group project.

From a statement, the group has designed the UML diagram of domain classes and developed the final software domain.

Weighting: 16% of the final grade.

Specific objectives: At the end of the activity students must be able to:

  • Apply the principles of object-oriented design.
  • Understand the quality criteria of the programs.
  • Develop team programming projects.
  • Control project versions

SECOND PART OF THE GROUP PROJECT

Implementation of the main functionalities of the software with the layered pattern and persistence with JDBC.  

The functional project that meets the previously detailed requirements must be submitted.

Weighting: 18% of the final grade.

Specific objectives: At the end of the activity students must be able to:

  • Apply the principles of object-oriented design.
  • Persist objects in relational databases using JDBC.
  • Understand the quality criteria of the programs.
  • Develop team programming projects.
  • Control project versions

THIRD PART OF THE GROUP PROJECT

Design, implementation of the REST API module.

The final project must be submitted with REST API that meets the requirements detailed above.

Weighting: 16% of the final grade.

Specific objectives: At the end of the activity students must be able to:

  • Apply the principles of object-oriented design.
  • Understand the quality criteria of the programs.
  • Develop team programming projects.
  • Control project versions

 

Exam 1

Eminently practical individual test of blocks 1, 2 and 3.

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:

  • Apply the principles of object-oriented design.
  • Software implementation in Rest API.
  • Persist objects in relational databases using JDBC.

In order to pass this test, students will need 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 [MECES2 point f]

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

  • B2: Apply knowledge professionally
  • B4: Convey information, ideas, problems and solutions to a diverse audience
  • B5: Have autonomy in learning
  • EFB4: Knowledge of computer programming and databases
  • CIN1: Develop software ensuring its security and quality in accordance with ethical principles
  • CIN3: Negotiate and communicate problems and solutions within the working group
  • CIN4: Prepare a list of technical conditions
  • CIN5: Administration and maintenance of computer applications
  • CIN8: Analyze, design and build applications in a robust, secure and efficient way
  • CIN12: Proper use of databases
  • CIN16: Application of the principles and methodologies of software engineering
  • EIS1: Develop software systems that meet user requirements
  • EIS2: Understand customer needs and specify software requirements
  • EIS3: Solve integration problems using available technologies
  • EIS4: Identify and solve software problems by documenting them
  • T1: Read and understand technical manuals in English
  • T2: Work in a team

Evaluation system


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

· Test 1: 50%

. First delivery of the project in group 16%.

· Second delivery of the project in group 18%.

· Third delivery of the project in group 16%.
 

Attendance at internships is mandatory. At the beginning of each session a list will be passed and if the student has not attended at least 80% of the practices, it will mean a penalty of 3 points in the total of the practical part.

If the student arrives once the attendance has been verified, he / she will be counted as non-attended. 

Only test 1 can be retrieved (el group project cannot be recovered). 50% of the final mark of the subject will be the highest between the recovery test and the one obtained in test 1.

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

. The grade of the subject is less than five.

. Test grade 1 is higher than 3.

. The mark obtained from group practice is higher than 3.

REFERENCES


Basic

Larman, Crai; Moros Valle, Begoñ. UML and patterns: an introduction to object-oriented analysis and design and the unified process. 2nd ed. Madrid [etc.]: Prentice Hall, cop. 200. ISBN 9788420534381.

Pressman, Roger S. Software Engineering: A Practical Approach. 7e. McGraw-Hill, 2010. ISBN 9786071503145.

Complementary

Bolaños Alonso, Danie; Sierra Alonso, Almuden; Alarcón Rodríguez, Miren Idoi. Software testing and JUnit: an in-depth analysis and practical examples. Madrid: Pearson, cop. 200. ISBN 9788483223543.

Martin, Robert C .. UML for Java programmers. 1a.Pearson, 2004. ISBN 9788420541099.