Arquitectura del Software

Usted está aquí

Créditos
6
Tipos
Obligatoria de especialidad (Ingeniería del Software)
Requisitos
  • Prerrequisito: IES
Departamento
ESSI
L'objectiu de l'assignatura és capacitar a l'alumne per dissenyar i implementar sistemes software mitjançant l'aplicació d'un conjunt de tècniques, principis i patrons de disseny.

Profesores

Responsable

  • Cristina Gómez Seoane ( )

Otros

  • Claudia Patricia Ayala Martinez ( )
  • Lidia López Cuesta ( )

Horas semanales

Teoría
2
Problemas
1.4
Laboratorio
0.6
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.
  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
1h
Laboratorio
0h
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
6h
Laboratorio
0h
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
14h
Laboratorio
0h
Aprendizaje dirigido
3h
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
3h
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

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 los profesores presentan los contenidos esenciales de la asignatura. Los profesores usan 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, los alumnos entregan previamente los problemas a resolver. También, en algunas sesiones, al inicio de la clase los estudiantes contestan un cuestionario sobre los contenidos de la asignatura presentados y practicados la semana anterior y/o sobre los problemas propuestos previamente a la clase.

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

Los estudiantes 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,3*C1 + 0,3*C2 + 0,3*C3 + 0,1*NT

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 los estudiantes podrán realizar 6 tareas.
- Si el estudiante entrega 5 o menos tareas, NT será igual al sumatorio de las notas de todas las tareas entregadas dividido por 5.
- Si el estudiante entrega 6 tareas, NT será igual al sumatorio de las 5 mejores notas de las tareas entregadas dividido por 5.

Los estudiantes SÓLO SERÁN EVALUADOS SI ASISTEN a las clases del GRUPO DONDE ESTÁN MATRICULADOS.

La competencia transversal se evalúa mediante una pregunta en cada control (C1 y C3), donde los alumnos 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.

Adenda

Contenidos

NO HI HA CANVIS RESPECTE LA INFORMACIÓ PUBLICADA A LA GUIA DOCENT

Metodología docente

La docència de l'assignatura està estructurada en classes de teoria, classes de problemes i classes de laboratori. Classes de teoria. En les classes de teoria els professors presenten els continguts essencials de l'assignatura. Els professors usen transparències que els estudiants tenen disponibles abans de les classes. Altres continguts de l'assignatura s'han d'estudiar de forma autònoma. Classes problemes. En les classes de problemes es practiquen els continguts de l'assignatura presentats o adquirits autònomament prèviament a la classe. Durant la classe es resolen els problemes proposats prèviament a la classe, i es comenten possibles solucions alternatives. En algunes sessions, els alumnes entreguen previament els problemes a resoldre. Classes laboratori. En les classes de laboratori els estudiants treballen en equips. Durant la classe els estudiants fan els exercicis de laboratori proposats pel professor. En algunes sessions, a l'inici de la classe, els estudiants resolen un qüestionari sobre els continguts presentats, practicats o adquirits autònomament prèviament a la classe. Els estudiants han d'assistir a les classes del SUBGRUP ON ESTAN MATRICULATS.

Método de evaluación

La Nota Final (NF) de les competències tècniques de l'assignatura s'obté amb la fórmula següent: NF= 0,45*C1 + 0,45*C2 + 0,1*NT C1 és la nota del primer control C2 és la nota del segon control NT és la nota de les tasques realitzades (entrega de problemes abans de la classe i qüestionaris realitzats a l'inici de les classes de problemes i laboratori). Càlcul de NT: - Durant el curs els estudiants podran realitzar 5 tasques. - Si l'estudiant entrega 4 o menys tasques, NT serà igual al sumatori de les notes de totes les tasques entregats dividit per 4. - Si l'estudiant entrega les 5 tasques, NT serà igual al sumatori de les 4 millors notes de les tasques entregades dividit per 4. Els estudiants NOMÉS SE'LS PODRÀ AVALUAR SI ASSISTEIXEN a les classes del SUBGRUP ON ESTAN MATRICULATS. La competència transversal s'avalua mitjançant una pregunta en cada control, on els alumnes han de demostrar la seva capacitat crítica i d'avaluació dels dissenys proposats. La Nota Final de la competència transversal s'obté fent la mitjana de les notes obtingudes en aquestes preguntes i té una qualificació de: A si la nota està entre 8.5 i 10 B si la nota està entre 7 i 8.4 C si la nota està entre 5 i 6.9 D si la nota està entre 0 i 4.9

Plan de contingencia

En cas de nova alarma sanitària per rebrot de la pandèmia del virus Covid-19, que impedís tota activitat lectiva físicament presencial, les classes de problemes/laboratori es farien de forma remota i síncrona. Les classes de teoria es continuarien fent de forma remota i síncrona.