What are you looking for?
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
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
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.
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
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:
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.
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).
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.
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
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.
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.
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
In relation to the basic competences assigned to the subject, these are covered especially with regard to the aspects that are explained:
Finally, and with regard to the transversal competence associated with the subject:
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
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., et.al. (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.