General information


Subject type: Mandatory

Coordinator: Adso Fernández Baena

Trimester: Third term

Credits: 4

Teaching staff: 

David Ródenas Picó
Josep Roure Alcobé 

Teaching languages


The main language of instruction in class is Catalan.

However:

- all the material of the subject available is in English,
- the tools used and their documentation are in English,
- All work and deliveries must be in English.
  (this includes code, comments, documentation, interfaces, etc.) 

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. 

This course will explain new Software Design Patterns and topics related to Requirements Engineering, with an emphasis on modeling with Activity Diagrams and formal specifications with OCL.

Another of the topics addressed in this course will be Testing, extending the techniques already seen in Software Engineering I and II, introducing different strategies and debugging. Using Testing to improve code quality and maintainability is key. 

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.
  • Demonstrate knowledge of the ethical dimension in the company: social and corporate responsibility in general and, in particular, the civil and professional responsibilities of the computer engineer.
  • 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.
  • Specify, design, implement, manage and maintain complex and / or critical software systems and services.
  • Quality control and design testing in software production.
  • Identify current and emerging technologies and assess whether they are applicable, and to what extent, to meet user needs.
  • Design solutions that integrate hardware, software, and communications technologies (and the ability to develop system-specific software solutions) for distributed systems and ubiquitous computing devices.

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

RA1: Recognize the various participants in the acquisition of requirements and define Lean strategies for capturing requirements.
RA2: Recognize and be able to read OCL activity diagrams and restrictions.
RA3: Understand Agile Software Development and how it relates to the concept of Refactor and Lean.
RA4: Know how to test software and apply TDD methodologies, with FIRST and AAA properties.
RA5: Know how to read a UML diagram and know how to identify the directions of the coupling with the arrows.
RA6: Understand and apply SOLID patterns, Demeter's law and Dependency Injection.
RA7: Understand and apply the Command pattern, the Observer pattern, variations, and the MVC architectural pattern.
RA8: Understand the concepts of derived, materialized and computed data and how they relate to MVC.
RA9: Create an MVC application.

 

Working methodology


All the theoretical concepts of the subject will be treated in the theory classes (large groups) of the subject. In these classes the basic concepts proposed in the syllabus are introduced, 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 indicated above. 

The concepts of a more practical nature will be worked on in small (laboratory) groups where works of medium complexity are presented, which require the application of the knowledge acquired in the more 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.

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.

It will be made available to students activities of a completely optional nature that will help them prepare and prepare for those of a compulsory nature.

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, according to 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.      Requirements Engineering            

1.1.  Introduction.

1.2.  Requirements capture method: Lean

1.3. Agile, the search for trust.

1.4.  Modeling (introduction to Activity Diagrams).

1.5.  Specification (introduction to OCL).

2.      Software testing

2.1.  Test strategies and techniques.

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.      Software design patterns

3.1. High Cohesion / Low Coupling

3.2. Plugin Architecture

3.3. UML drawings, relationships, and dependency directions

3.4. SOLID pattern

3.5. Command Pattern.

3.6.  Observer pattern. 

3.7. Event Target pattern.

3.8. Event Bus.

3.9.  Pattern Vista Controller Model.

3.10. State.

3.11. Pure functional 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 will have to be solved by the students, often in a non-contact way, following the instructions of the teachers and will also be worked in class, either as examples in the theory sessions or in the laboratory sessions. Although these activities will be optional (teachers will not individually verify the performance by students), they will be essential to achieve the theoretical and practical knowledge of the subject.

With the aim of gathering evidence of the achievement of the expected learning outcomes, the following activities of an evaluative nature will be carried out: up to five practices and up to two written tests (exams).

Practice P1 (Evidence of learning outcomes RA1)

It is about capturing the requirements of a software using lean methodology.

Weighting: 8% of the final grade.

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

· Model software requirements.

· Write and understand the requirements as well as the actors involved.

 

Practice P2 and P3 (Evidence of learning outcomes RA3 and RA4)

A small software will be developed using Test Driven Development by applying some of the techniques explained in block 2.

Weighting: 16% (8% each) of the final grade.

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

· Know strategies and apply software testing techniques.

· Be able to do a development through TDD

· Know the phases of a software project and agile software development.

 

Practice P4 and P5  (Evidence of learning outcomes RA7, RA8, and RA9)

This involves redesigning a small piece of software by applying one or more of the following patterns: MVC, Observer, or Command.

Weighting: 16% (8% each) of the final grade.

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

· Modeling software applications.

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

· Apply and analyze the use of software design patterns.

 

E1 exam (Evidence of learning outcomes RA1, RA2, RA3, RA4, RA5 and RA6)

Individual test of the theoretical concepts and practical procedures of block 1 and 2.

This test represents 30% of the final grade of the subject.

The aim of this activity is to assess whether the student knows:

· Model software requirements.

. Write and understand formal specifications.

· Know strategies and apply software testing techniques

 

E2 exam (Evidence of learning outcomes RA5, RA6, RA7, RA8, and RA9)

Individual test of the theoretical concepts and practical procedures of block 2 and 3.

This test represents 30% of the final grade of the subject.

The aim of this activity is to assess whether the student knows:

· Apply the principles of object-oriented analysis and design

· Apply and analyze the use of software design patterns 

 

The course is divided into two main blocks: 1) requirements engineering, agile methodologies, and software testing (P1, P2 / 3 and E1) and 2) robust development patterns that allows to reach the objectives set in the previous block (P2 / 3, P4 / 5 and E3)

In the area of ​​competence, the first block, where the internships will mostly have to be developed in non-contact time, covers the following common and specific competencies of the subject:
CB.4: convey ideas, problems and solutions in language suitable for specialized and non-specialized audiences
CT.2: work assuming other roles and being pragmatic
CIN1: consider all stakeholders involved in the environment
CIN2: plan and lead a proposal valuing the whole environment
CIN3: conceive the solutions to apply in an environment
CIN4: consider the deployment and implementation of the solution
CIN5: consider the administration and maintenance of the solution
CIN16: learn and apply the principles of methodologies and life cycles
CIN18: Solution planning includes compliance with current legislation
EIS2: use methodologies to discover, evaluate, and specify solutions within limits
EIS3: adapt the technological proposal to the valued problem
EIS5: create contingency plans to propose alternatives in a development
EIS6: Consider legal and ethical aspects in requirements planning and development
ESI2: take into account security and legal aspects in capturing requirements
ESI3: specify and design the maintenance of solutions

The second block mainly affects:
CB.5: They need to be able to find and adapt to new technologies
CIN5: the maintenance of the solution is considered
CIN8: apply patterns to evolve a solution over time robustly
CIN13: implement web-based applications
CIN16: apply various life cycles on existing or proposed solutions
EIS3: apply the most appropriate patterns according to the requirements
EIS5: They use patterns to robustly adapt software to changing requirements or risks
EIS6: apply ethical aspects to software development
ESI3: design and implement solutions

Transversally to the whole subject:
CB.2: Demonstrate and apply their knowledge
CT.1: most of the syllabus material and all practices and code are in English
CT.2: fulfills various roles and interactions according to task
EIS1, EIS4: progressively applies and improves current practices and development.

 

In order to pass (pass) the assessment activities, students must 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]

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 P5: 40% (8% each of the internships)

If the mark of each of the practices from P1 to P5 equals or exceeds 3, the practice mark PS will be the weighting. Otherwise it will be the minimum.

If the mark of the PS practices and of each one of the examinations E1 and E2 equals or surpasses the 3, the final mark NF will be the weighting (40% practices, 30% and 30% the examinations). 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). 60% of the final mark of the subject will be the highest between the ER recovery exam and the one obtained in the E1 and E2 tests.

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

-          The grade of the subject is less than five.

- You have at least a 3 in each of the exams.

-          You have at least a 3 of each of the practices. 

REFERENCES


Basic

Design patterns: reusable object-oriented software elements.

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

Warmer, Jos B; Kleppe, Anneke G. The Object constraint language: getting your models ready for MDA. 2nd ed. Reading 2003: Addison-Wesley. ISBN 0321179366.

Software testing and JUnit: an in-depth analysis and practical examples. Bolaños Alonso, Daniel; Sierra Alonso, Almudena; Alarcón Rodríguez, Miren Idoia. 1a. Prentice-Hall Spain, 2008. ISBN 9788483223543.

Complementary

Writing Testable Code. Misko Hevery. http://misko.hevery.com/code-reviewers-guide/

Robert C. Martin: Principles of Object Oriented Design http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

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

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

Design patterns applied to Java. Stelting Stephen, Maassen Olav. Prentice-Hall 2003. ISBN 9788420538396.

Teacher's website: http://david-rodenas.com/tc/es3