General information

Subject type: Mandatory

Coordinator: Adso Fernández Baena

Trimester: Third term

Credits: 4

Teaching staff: 

Rosa Herrero Antón


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


  • 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



The subject d'Software Engineering II of the third term of the second year, is the second of three subjects called Software Engineering. Its teaching is designed to dedicate 3 ECTS to the theory part and 1 ECTS to practice the concepts exposed to theory.

This course will introduce the concept of Software Design Patterns by studying the most used and practicing their use in different circumstances.

Another of the topics covered in this subject will be Testing, making a general introduction, and explaining some specific techniques by deepening what is necessary to be able to use it.

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):

(1) Appropriately use 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 understanding of the commitments made in design decisions

(3) Use the tools of a software development environment to create and develop applications.

(5) Demonstrate knowledge and know how to apply the appropriate techniques to model and analyze the different types of decisions.

(10) Quality control and design testing in software production.

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

LO1. Modeling software applications

LO2. Apply the principles of object-oriented analysis and design

LO3. Apply and analyze the use of software design patterns

LO4. Know strategies and apply software testing techniques

LO5. Know the phases of a software project

LO7. Control project versions and configurations

Working methodology

All the theoretical concepts of the subject will be treated in the theory classes (large groups) of the subject. These classes introduce the basic concepts of the process to develop software and software design using patterns, 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. In the classes the participation of the students will be asked individually or in group, to solve different problems proposed with or without anticipation. These activities, which due to their optional nature and brevity are not reflected in this document, will serve the student as a tool for self-assessment of the achievement of the contents of the subject and may be used by the teacher to make decisions about the final grade of the student, but never to the detriment of the numerical grade calculated according to the grading system specified by the subject.

Students should attend all classes with a laptop with the ability to run the appropriate software for the subject. Teachers will report on what this software is and how it can be obtained.

The more practical concepts will be worked in small groups (laboratory) where works of medium complexity are presented, which require the application of the knowledge acquired in the most theoretical classes. These sessions will provide the appropriate tools to solve the scheduled activities but it is expected that these will be extended from a temporal point of view, beyond the 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.


1. Software development process             

1.1. The Unified Process.

1.2. Software Design.

1.3. Case Study.

2. Software testing

2.1. Introduction to software testing.

2.2. Test strategies.

2.3. Test techniques.

3. Software design patterns

3.1. Requirements and methods.

3.2. Pattern concept.

3.3. GoF patterns (adapter, factory, singelton, strategy, composite, facade and proxy).

4. Software modeling

4.1. Relationships between Use Cases.

4.2. Domain Model Organization.

4.3. Operations contract.

4.4. State diagrams. Pattern states.

4.5. Package Organization.

With this proposal we will reach the following contents of the report:

  • Application modeling.
  • Object-oriented analysis and design
  • Design patterns
  • Software architecture patterns

Learning activities

A series of activities of an eminently practical nature (short exercises, problems ...) are made available to students, which are the basis of the learning activities of the subject. These activities must be solved following the teachers' instructions and will be worked on in theory class, either as examples in the same session, or as optional exercises that will be solved in the next session. Although these activities are optional, and without any delivery, their realization are essential to achieve the theoretical-practical knowledge of the subject.

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

An individual examination computer writing (using, when appropriate, an IDE tool) of the theoretical-practical concepts of the contents of the subject with two autonomous parts.

  • Exam - Part 1

It will consist of questions from the contents of blocks 1, 2 and part of 3 up to the Strategy Pattern. This test asks students to properly develop software from an initial project.

The aim of this activity is to assess whether the student has acquired the knowledge of: 5 (know how to apply techniques to model), 10 (quality control), RA2, RA3 and RA4, which cover the following common and specific competencies: CIN1 (develop reliable software), CIN5 (maintain software), CIN8 (build and maintain applications), CIN13 (storage tools), CIN16 (life cycle software engineering), EFB4 (use of computer programs), EIS1 (meet requirements) and EIS4 (ability to analyze).

  • Exam - Part 2

It will consist of questions from the rest of the contents of block 3 and 4. This test asks students to develop software correctly from a base project.

The aim of this activity is to assess whether the student has achieved the knowledge of 5 (know how to apply techniques to model), RA2 and RA3. At the level of common and specific competencies, all those mentioned for the first part will be relevant.

Short exercise questionnaires, will have to be solved in non-contact time and individually through the virtual classroom, these are short exercises to learn how to use JUnit commands, reflective programming, Logger, among others, and also understand flowcharts and UML diagrams, cover competencies CB2, CB5, CIN1, CIN13, EFB4, EIS1 and EIS4.

Four practices, which will mostly have to be developed in non-contact time and in groups, cover the skills CB2, CB4, CB5, CIN1, CIN2, CIN3, CIN4, CIN13, EFB4, EIS1, EIS4, CT1 and CT2 and show the achievement of 1 (use professional tools) and 2 (use tools to develop). Internships will be delivered and conducted collaboratively using a Git repository.

  • Practice 1 - Testing

It involves developing a small software to learn how to use the Junit framework and learn about the TDD methodology "Test Driven Development" or use a specific technique of the views in block 2 of theory. At the end of the activity students should be able to RA4 and RA5

  • Practice 2 - Adapter Pattern + Factory Pattern

It is about redesigning a small software applying one or more of the first patterns of content 3. At the end of the activity students should be able to RA1, RA2, RA3 and R7.

  • Practice 3 - Strategy Pattern + Composite Pattern + Abstract Factory Pattern

It involves redesigning a small piece of software applying one or more of the other content patterns 3. At the end of the activity students should be able to RA1, RA2, RA3 and R7.

  • Practice 4 - Diagram of States + Pattern States

It is about redesigning a small software applying the contents of block 4. At the end of the activity students must be able to RA1, RA2, RA3 and R7

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]

In relation to the basic competences assigned to the subject, these are covered especially with regard to the aspects that are explained:

  • CB2: problem solving within their area of ​​study.
  • CB4: transmit information in public.
  • CB5: development of learning skills needed for further studies (autonomous access to documentation, effective work habits)

Finally, and with regard to the transversal competence associated with the subject:

  • CT1: (third language knowledge) this is worked from the documentary sources that students must consult, since all of them are in English.
  • CT2: (ability to work in groups) that they can achieve when doing the practices.

Evaluation system

The final grade of the course will be calculated according to the formulas specified below:

E1: qualification of the first part of the examination (it is necessary to obtain a minimum of a 4 to pass the subject) 25%

E2: qualification of the second part of the examination (it is necessary to obtain a minimum of a 4 to pass the subject) 25%

Q: average rating of short questionnaires 10%

P: average grade of the proposed internships during the quarter 40%

If the grades obtained in E1 and E2 are greater than or equal to 4 (E1> = 4 and E2> = 4), the final grade of the student will be:

Final grade = E1 · 0.25 + E2 · 0.25 + Q · 0.1 + P · 0.4

In another case (if E1 <4 or E2 <4), the final grade of the student will be:

Final grade = Q · 0.1 + P · 0.4


  • You must obtain a grade higher than 4 in each of the two parts of the exam, E1 and E2. Students who do not take the final exam will fail the subject with no option to retake. 
  • An activity not delivered or delivered late and without justification (court summons or medical matter) counts as a 0.
  • 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.
  • In group activities, the teacher can, based on the information available, customize the grade for each member of the group.
  • It is the responsibility of the student to prevent plagiarism in all its forms. In the case of detecting a plagiarism, regardless of its scope, in some activity will correspond to have a final grade of 0. In addition, the professor will communicate to the Head of Studies the situation so that applicable measures are taken in the matter of regime. sanctioning.


  • The internship of the subject (grade P) is NOT recoverable.
  • Short exercise questionnaires (Q grade) is NOT recoverable.
  • Students not presented and those who obtain a final grade> = 5 will not be able to make the recovery.
  • The mark of the resit exam replaces the mark of activities E1 and / or E2. The final grade will be calculated using the formulas detailed above.
  • Each student will be able to recover either of the two parts (E1 or E2) of the theory. The grade E1 and E2 will be replaced by the one you took in the recovery. 



Debrauwer, L. (2018) Design patterns in Java. The 23 design models: descriptions and illustrated solutions in UML2 and Java. (2nd edition). ENI editions. ISBN 9782409016349

Larman, C. (2003) UML and patterns: an introduction to object-oriented analysis and design and the unified process. (2nd Edition) Prentice Hall, cop. ISBN 978 8420534382


Gulati, S., (2017) Java Unit Testing with JUnit 5: Test Driven Development with JUnit 5. Editorial APress. ISBN 1484230140.

Garcia - De Marina, PC, et al. (2019) Specifying Software by Use Cases and Uml. Editorial Universitarua Ramón Areces. ISBN 9788499613420.

Gamma, E., et al. (2003) Design patterns: reusable object-oriented software elements. Addison-Wesley, cop. ISBN 9788478290598.

Bolaños, D. et al. (2008) Software testing and JUnit: an in-depth analysis and practical examples. Prentice-Hall Spain. ISBN 9788483223543.