Descripción
El alumno aprenderá a desarrollar código de manera eficiente, aplicando diferentes patrones de diseño y buenas prácticas. Aprenderá también a usar un sistema de control de versiones como Git mientras desarrolla.
Tipo asignatura
Primer - Obligatoria
Semestre
Segundo
Curso
1
Créditos
5.00

Profesores Titulares

Profesores Docentes

Conocimientos previos
Objetivos

Esta asignatura proporciona las herramientas necesarias para desarrollar proyectos software de manera eficiente, ya sea en entornos web, móviles o desktop. Se focaliza en el paradigma de la Programación Orientada a Objetos, aunque muchas de las buenas prácticas que se enseñan se pueden aplicar a cualquier paradigma de programación.

Se empieza motivando al alumno a desarrollar código de manera eficiente, viendo muchas ventajas y desventajas de aplicar los contenidos que se ven en la asignatura y con la experiencia clave del profesor.
Seguidamente el alumno aprende a detectar code smells y a refactorizarlos. A la vez, también se aprenden distintos patrones de diseño y los principios de SOLID para desarrollar un código escalable, desacoplado y encapsulado. Como culminación de lo aprendido anteriormente, se enseñan los principios de la arquitectura hexagonal.
Finalmente, el profesor o un invitado especial dará una charla sobre un proyecto real donde se aplica arquitectura hexagonal.

En la segunda parte de esta asignatura se enseña testing, más concretamente unit testing, integration testing y semantic testing. Mediante un diseño orientado a tests (TDD), el alumno va aprendiendo los distintos conceptos anteriormente mencionados.

Contenidos

Code smells
Refactoring
Código semántico
UML (Unified Modeling Language)
Principios SOLID
Patrones de diseño
DDD
Inyector de dependencias
Arquitectura hexagonal
Charla sobre arquitectura hexagonal aplicada (Enterprise design patterns)
Unit testing
Integration testing
Semantic testing
TDD

Metodología

Los contenidos son presentados mediante lección magistral pero rápidamente se integran en los proyectos de los alumnos. Durante el desarrollo de la asignatura se ven proyectos reales y se hace una presentación, en grupos, de algún tema relacionado con las buenas prácticas de diseño, ya sea a nivel de código o de arquitecturas de software.

Evaluación

Se realizarán ejercicios para una evaluación continuada. Se hará especial énfasis en el feedback proporcionado por el profesor y se discutirá este en clase.
Se realizará un práctica final de la asignatura para asegurar la consolidación de los conocimientos por parte del alumno.

Criterios evaluación

Los resultados de aprendizaje de esta asignatura son los siguientes:

[RA1] El alumno conoce un lenguaje actual de desarrollo web siguiendo los estándares de calidad y estilo.

Bibliografía básica
Material complementario