What are you looking for?
The main language of instruction in class is Catalan.
However:
- All exposed code is in English
- The tools used and additional material are in English,
- All code delivered must be in English. Exams and practices that consist of writing must be either in Catalan or Spanish
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
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
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 III of the third term of the third year, is the last of the 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.
In this subject, new Software Design Patterns and topics related to Requirements Engineering will be explained, emphasizing the implications of Agile and Lean techniques in software design and development.
Another of the topics addressed in this subject will be Testing, making it an extension of the techniques already seen in Software Engineering II, introducing different strategies and debugging. The use of Testing to improve code quality and maintainability is key.
The classroom (physical or virtual) is a safe space, free of sexist, racist, homophobic, transphobic and discriminatory attitudes, either towards students or towards teachers. We trust that together we can create a safe space where we can make mistakes and learn without having to suffer prejudice from others.
1. Software design patterns
1.1. Functional Programming
1.2. High Cohesion / Low Coupling
1.3. UML drawings, relationships, and dependency directions
1.4. Plugin Architecture
1.5. SOLID Principles
1.6. Command Pattern.
1.7. Observer pattern.
1.8. Event Target pattern.
1.9. Event Bus.
1.10. Pattern Vista Controller Model.
2. Software testing
2.1. Test strategies and techniques. AAA & FIRST.
2.2. Test Driven Development
2.3. Coverage code
2.4. Law of Demeter
2.5. Dependency Injection
2.6. Code Review
2.7. Professionalism as emergence of Testing + Agile
3. Requirements Engineering
3.1. Introduction.
3.2. Lean
3.3. Agile
The final grade will be calculated with the grades of the weighted activities as follows:
· Exam (EX): 60%
· Internships (PR): 40%
In order to pass the subject, it is necessary that both EX and PR are equal to or higher than 5 (theory and practice must be approved separately). In this case the NF final mark will be the weighting as described above (40% PR, 60% EX). Otherwise it will be the minimum of them.
The exam (EX) can only be retaken in a single test for the entire subject (internships cannot be recovered). In case of recovery, 60% of the final mark of the subject will be the greater between the recovery exam ER and the one obtained in EX.
To be able to take the retake exam, the student must meet the following conditions:
Note on plagiarism and the use of generative AI
The use of generative artificial intelligences (IAGs) must be limited to those aspects that are not fundamental in the context of the subject. They can be used, critically, as a mechanism to resolve doubts about the subject and/or to improve the writing of deliverable documents and/or as an aid in the generation of auxiliary code that is outside the scope of the subject topics. In the second case (improvement of the writing) the participation of IAG in the writing must be made explicit in the document. In the last case (code generation) it will be essential to mention its nature as “generated by IAG” by explaining the model used and the prompt supplied, even if it has been subsequently personalized and/or modified. IAGs may not be used to generate programming code, not even in the form of fragments, when this code is within the scope of the subject topics and/or is of an assessable nature. This prohibition remains even if the code is subsequently personalized and/or modified. If you have any doubts regarding the legitimacy or not of the use of IAGs, you must contact, a priori, the professor of the subject.
Design patterns: reusable object-oriented software elements.
Gamma, Eric et al. Addison-Wesley, cop. 2003. ISBN 9788478290598.
Beck, Kent (2002). Test Driven Development: By Example. Addison-Wesley. ISBN 9780321146533
Clean Agile: Back to Basics
Robert C. Martin, Person, ISBN 9780135781869
Clean Architecture: A Craftman's Guide to Software Structure and Design
Robert C. Martin, Person, ISBN 9780134494166
Clean Craftsmanship: Disciplines, Standards, and Ethics
Robert C. Martin, Person, ISBN 9780136915713
Freeman, Eric, Robson, Elizabeth. (2021). Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software. (2nd ed.) O'Reilly, USA.
Khorikov, Vladimir (2020). Unit Testing: Principles, Practices, and Patterns. Manning Publications.
Larman, Craig. Applying UML and patterns: an introduction to analysis and object oriented design and the unified process. 3rd edition. Prentice Hall, 2005. ISBN9788420534381.
Refactoring Guru: https://refactoring.guru
Refactoring: Improving the Design of Existing Code
Martin Fowler, Addison-Wesley Professional, ISBN 9780134757599