General information


Subject type: Mandatory

Coordinator: Ana Beatriz Pérez Zapata

Trimester: Third term

Credits: 4

Teaching staff: 

Pedro Riera Martorell

Teaching languages


  • Catalan

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 

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

     

  • 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

     

  • 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

     

Description


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 I and II, introducing different strategies and debugging. The use of Testing to improve code quality and maintainability is key. 

Contents


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 pattern

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. Lower 's' singleton pattern

2.7. Code Review

2.8. Professionalism as emergence of Testing + Agile

3.      Requirements Engineering            

3.1.  Introduction.

3.2.  Requirements capture method: Lean

3.3. Agile, the search for trust.

Evaluation system


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

·          E1 exam: 30%

·          E2 exam: 30%

·          Internships from P1 to P4: 40% (10% each of the internships)

The grade for the theoretical part, TR, is the average of the E1 and E2 exams. The grade for the practical part, PR, is the average of practicals P1 to P4. In order to pass the subject, it is necessary that both TR and PR are equal to or greater than 5 (theory and practical must be passed separately) In this case the NF final mark will be the weighting as described above ( 40% PR, 30% E1 and 30% E2). Otherwise it will be the minimum of them.

Tests E1 and E2 can only be retaken in a single test of the whole subject (internships cannot be recovered). In case of retake, 60% of the final grade of the subject will be the greater between the retake exam ER and the one obtained in tests E1 and E2.

In order to take the resit exam, the student must meet the following three conditions:

-          The grade of the subject is less than five.

- At least one of E1 or E2 is above 4 and the student has taken both.

-          At least he has a 3 grade in PS practicals. 

REFERENCES


Basic

Clean Agile: Back to Basics
Robert C. Martin, Person, ISBN 9780135781869

Design patterns: reusable object-oriented software elements.

Gamma, Eric et al. Addison-Wesley, cop. 2003. ISBN 9788478290598.

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

Complementary

Refactoring: Improving the Design of Existing Code
Martin Fowler, Addison-Wesley Professional, ISBN 9780134757599

UML and patterns: an introduction to object-oriented analysis and design and the unified process.

Larman, Craig Prentice Hall, cop. 2003. ISBN 978 8420534382.