Arquitectura del Software

Usted está aquí

Créditos
6
Tipos
Obligatoria de especialidad (Ingeniería del Software)
Requisitos
  • Prerrequisito: IES
Departamento
ESSI
El objetivo de la asignatura es capacitar a los estudiantes para diseñar e implementar sistemas software mediante la aplicación de un conjunto de técnicas, principios y patrones de diseño.

Profesorado

Responsable

  • Cristina Gómez Seoane ( )

Otros

  • Pau Duran Manzano ( )

Horas semanales

Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0.4
Aprendizaje autónomo
5.6

Competencias

Competencias Técnicas

Competencias técnicas comunes

  • CT2 - Utilizar de forma apropiada teorías, procedimientos y herramientas en el desarrollo profesional de la ingeniería informática en todos sus ámbitos (especificación, diseño, implementación, despliegue -implantación- y evaluación de productos) de manera que se demuestre la comprensión de los compromisos adoptados en las decisiones de diseño.
    • CT2.1 - Demostrar conocimiento y capacidad de aplicación de los principios, metodologías y ciclos de vida de ingeniería de software.
    • CT2.3 - Diseñar, desarrollar, seleccionar y evaluar aplicaciones, sistemas y servicios informáticos, y al mismo tiempo asegurar su fiabilidad, su seguridad y su calidad, conforme a principios éticos y a la legislación y la normativa vigente.

Competencias Técnicas de cada especialidad

Especialidad ingeniería del software

  • CES1 - Desarrollar, mantener y evaluar servicios y sistemas software que satisfagan todos los requisitos del usuario, que se comporten de forma fiable y eficiente, que tengan un desarrollo y mantenimiento asequible y que cumplan normas de calidad, aplicando las teorías, los principios, los métodos y las prácticas de Ingeniería del Software.
    • CES1.1 - Desarrollar mantener y evaluar sistemas y servicios software complejos y/o críticos.
    • CES1.4 - Desarrollar, mantener y evaluar servicios y aplicaciones distribuidas con soporte de red.
  • CES2 - Valorar las necesidades del cliente y especificar los requisitos software para satisfacer estas necesidades, reconciliando objetivos en conflicto mediante la búsqueda de compromisos aceptables, dentro de las limitaciones derivadas del costo, del tiempo, de la existencia de sistemas ya desarrollados y de las propias organizaciones.
    • CES2.2 - Diseñar soluciones apropiadas en uno o más dominios de aplicación, utilizando métodos de ingeniería del software que integren aspectos éticos, sociales, legales y económicos.

Competencias Transversales

Razonamiento

  • G9 [Avaluable] - Capacidad de razonamiento crítico, lógico y matemático. Capacidad para resolver problemas dentro de su área de estudio. Capacidad de abstracción: capacidad de crear y utilizar modelos que reflejen situaciones reales. Capacidad de diseñar y realizar experimentos sencillos, y analizar e interpretar sus resultados. Capacidad de análisis, síntesis y evaluación.
    • G9.3 - Capacidad crítica, capacidad de evaluación.

Objetivos

  1. Explicar qué es la arquitectura lógica y física de un sistema software y las relaciones entre ellas.
    Competencias relacionadas: CT2.1,
  2. Explicar las características de una arquitectura en capas y los principios de diseño que rigen la construcción de sistemas software con este tipo de arquitectura.
    Competencias relacionadas: CT2.1,
  3. Explicar las características de una arquitectura orientada a objetos y los principios de diseño que rigen la construcción de sistemas software con este tipo de arquitectura.
    Competencias relacionadas: CT2.1,
  4. Diseñar sistemas software utilizando una arquitectura en capas y orientada a objetos y usando servicios software, partiendo de la especificación de sus requisitos (funcionales y no funcionales) utilizando metodologías clásicas y agiles.
    Competencias relacionadas: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  5. Representar el diseño de los sistemas software utilizando el lenguaje UML.
    Competencias relacionadas: CT2.1,
  6. Aplicar correctamente los principios de diseño al realizar el diseño de sistemas software.
    Competencias relacionadas: G9.3, CT2.1, CES1.1, CES2.2, CT2.3,
  7. Diseñar la capa de dominio (negocio) de un sistema software utilizando metodologías clásicas y ágiles.
    Competencias relacionadas: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  8. Diseñar la capa de presentación de un sistema software identificando los patrones a aplicar i aplicarlos correctamente.
    Competencias relacionadas: G9.3, CT2.1, CES1.1, CES2.2, CT2.3,
  9. Explicar las características de las diferentes estrategias de persistencia.
    Competencias relacionadas: CT2.1,
  10. Diseñar la capa de gestión de datos de un sistema software aplicando los patrones de acceso o de traducción de datos.
    Competencias relacionadas: G9.3, CT2.1, CES1.1, CES2.2, CT2.3,
  11. Identificar y usar correctamente servicios software existentes al realizar el diseño de sistemas software.
    Competencias relacionadas: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  12. Evaluar y criticar los diseños de los sistemas software y proponer diseños alternativos que mejoren su calidad.
    Competencias relacionadas: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  13. Explicar qué es la arquitectura y el diseño del software y en qué consisten las diferentes vistas de la arquitectura del software.
    Competencias relacionadas: CT2.1,

Contenidos

  1. Introducción a la arquitectura y diseño del software
    Metodologías de desarrollo de software. Arquitectura y diseño de software. Arquitectura lógica y física de un sistema software. Rol de los patrones de diseño en el diseño del software. Arquitectura y diseño del software en metodologías clásicas y ágiles.
  2. Arquitectura en capas y orientada a objetos
    Patrón arquitectónico en capas. Aplicación del patrón arquitectónico en capas a los sistemas y servicios software. Principios de diseño de la arquitectura en capas. Patrón arquitectónico orientación a objetos. Aplicación del patrón arquitectónico orientación a objetos a los sistemas software. Principios de diseño de la arquitectura orientada o objetos.
  3. Diseño del software utilizando metodologías clásicas
    Diseño del software utilizando metodologías clásicas. Diseño de la capa de dominio. Patrones Domain Model y Transaction Script. Patrones de diseño de la capa de dominio. Uso de servicios software. Diseño de la capa de presentación. Diseño externo de un sistema software. Diseño interno de la capa de presentación. Diseño de la capa de datos. Tecnología de bases de datos relacionales. Estrategias de gestión de la persistencia. Generación automática de la persistencia. Diseño directo de la persistencia. Otras arquitecturas. Arquitectura de microservicios
  4. Diseño de software utilizando metodologías ágiles
    Disseny del software utilizando metodologías ágiles. Extreme Programming. TDD. Tests en TDD.
    Coding en TDD. Pair Programming. Simple Design and Incremental design and architecture. Code Smells and Refactorings.

Actividades

Actividad Acto evaluativo


C1

Control 1 de teoría y problemas donde se evaluan todos los objetivos de los temas 1 hasta parte del tema 3
Objetivos: 13 1 2 3 4 5 6 7
Semana: 6
Tipo: examen de teoría
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

C2

Control 2 de teoría y problemas donde se evaluan parte de los objetivos del tema 3.
Objetivos: 4 6 8 9 10 11
Semana: 11
Tipo: examen de teoría
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Introducción a la arquitectura del software

Escucha con atención, coge los apuntes que considera necesarios y pregunta las dudas que tenga. Además, estudia autónomamente los contenidos que el profesor indica
Objetivos: 13 1
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
1h

Estudio de la arquitectura en capas

Escucha con atención, coge los apuntes que considera necesarios y pregunta las dudas que tenga. Además, estudia autónomamente los contenidos que el profesor indica
Objetivos: 2
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
1h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Estudio de la arquitectura orientada a objetos

Escucha con atención, coge los apuntes que considera necesarios y pregunta las dudas que tenga. Además, estudia autónomamente los contenidos y hace los ejercicios que el profesor indica
Objetivos: 3 5 12
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
6h
Aprendizaje dirigido
0h
Aprendizaje autónomo
8h

Estudio del diseño del software utilizando metodologías clásicas

Escucha con atención, coge los apuntes que considera necesarios y pregunta las dudas que tenga. Además, estudia autónomamente los contenidos y hace los ejercicios que el profesor indica
Objetivos: 4 5 6 7 8 9 10 11
Contenidos:
Teoría
14h
Problemas
0h
Laboratorio
14h
Aprendizaje dirigido
0h
Aprendizaje autónomo
28h

Estudio del diseño del software utilizando metodologías ágiles

Escucha con atención, coge los apuntes que considera necesarios y pregunta las dudas que tenga. Además, estudia autónomamente los contenidos y hace los ejercicios que el profesor indica
Objetivos: 4 6 7 12
Contenidos:
Teoría
10h
Problemas
0h
Laboratorio
7h
Aprendizaje dirigido
0h
Aprendizaje autónomo
15h

C3

Control 3 de laboratorio donde se evaluan todos los objectivos del tema 4
Objetivos: 6 7 12
Semana: 15
Tipo: examen de laboratorio
Teoría
0h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Revisión de C1 (Control 1) con feedback formativo (entrega solución con comentarios grupales)

Revisión de C1 (Control 1) con feedback formativo (entrega solución) en grupos de 10 estudiantes (vía meet o con aula asignada, dependiendo de la disponibilidad de aulas).
Objetivos: 1 2 3 4 5 6 7
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
2h
Aprendizaje autónomo
0h

Revisión de C2 (Control 2) con feedback formativo (entrega solución con comentarios grupales)

Revisión de C1 (Control 1) con feedback formativo (entrega solución) en grupos de 10 estudiantes (vía meet o con aula asignada, dependiendo de la disponibilidad de aulas).
Objetivos: 4 6 8 9 10 11
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
2h
Aprendizaje autónomo
0h

Revisión de C3 (Control 3) con feedback formativo (entrega solución con comentarios grupales)

Revisión de C3 (Control 3) con feedback formativo (entrega solución) en grupos de 10 estudiantes (vía meet o con aula asignada, dependiendo de la disponibilidad de aulas).
Objetivos: 6 7 12
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
2h
Aprendizaje autónomo
0h

Metodología docente

La docencia de la asignatura está estructurada en clases de teoría, clases de problemas y clases de laboratorio.

En las clases de teoría el profesorado presenta los contenidos esenciales de la asignatura. El profesorado usa transparencias que los estudiantes tienen disponibles antes de las clases. Otros contenidos de la asignatura se tendrán que estudiar de forma autónoma.

En las clases de problemas se practican los contenidos de la asignatura presentados o adquiridos autónomamente previamente a la clase. Durante la clase se resuelven los problemas propuestos previamente a la clase y se discutirán las diferentes soluciones. En algunos casos, el alumnado entrega los problemas resueltos. También, en algunas sesiones, al inicio de la clase el estudiantado contesta un cuestionario sobre los contenidos de la asignatura presentados y practicados previamente a la clase.

En las clases de laboratorio los estudiantesa trabajan en equipos de 2 personas (pair programming). Durante la clase el estudiantado realiza ejercicios de laboratorio propuestos por el profesor. Al inicio de algunas clases contestan un cuestionario sobre los contenidos de la asignatura presentados y practicados y/o sobre los problemas propuestos previamente a la clase.

El estudiantado tienen que asistir a las clases del GRUPO DONDE ESTAN MATRICULADOS.

Método de evaluación

La Nota Final (NF) de las competencias técnicas de la asignatura se obtiene con la siguiente fórmula:

NF= 0,2*C1 + 0,25*C2 + 0,4*C3 + 0,1*NT + NPP

C1 es la nota del primer control
C2 es la nota del segundo control
C3 es la nota del tercer control
NT es la nota de los tareas realizadas (entrega de problemas antes de la classe y cuestionarios realitzados al inicio de las clases de problemas y laboratorio.

Cálculo de NT:
- Durante el curso el estudiantado podrá realizar 5 tareas.
- Si entrega 4 o menos tareas, NT será igual al sumatorio de las notas de todas las tareas entregadas dividido por 4.
- Si entrega 5 tareas, NT será igual al sumatorio de las 4 mejores notas de las tareas entregadas dividido por 4.

NPP es la nota de problemas hechos y entregados en clase y de la participación en clase. Esta nota tendrá como máximo un valor de 0,5. Para obtener esta nota se considerarán los siguientes aspectos:
- La entrega de un 75% o más dels problemas propuestos para entregar.
- La participación activa en clase.

El estudiantado SÓLO SERÁ EVALUADOS SI ASISTE a las clases del GRUPO DONDE ESTÁ MATRICULADO.

La competencia transversal se evalúa mediante una pregunta en los controles, donde el alumnado deben demostrar su capacidad crítica y de evaluación de los diseños propuestos. La Nota Final de la competencia transversal se obtiene haciendo la media de las notas obtenidas en estas preguntas y tiene una calificación de:
A si la nota está entre 8.5 y 10
B si la nota está entre 7 y 8.4
C si la nota está entre 5 y 6.9
D si la nota está entre 0 y 4.9

Bibliografía

Básica:

Complementaria:

Web links

Capacidades previas

Saber qué es una especificación (formal) en UML/OCL de los requisitos funcionales y no funcionales de un sistema.
Saber el contexto en el qué se puede realizar el diseño de un sistema y, en particular, cuáles son las actividades previas y siguientes.
Conocer la programación orientada a objetos y (como mínimo) un lenguaje de programación orientada a objetos.