Datos Identificativos 2020/21
Asignatura (*) Diseño Software Código 614G01015
Titulación
Grao en Enxeñaría Informática
Descriptores Ciclo Periodo Curso Tipo Créditos
Grado 1º cuatrimestre
Segundo Obligatoria 6
Idioma
Castellano
Inglés
Modalidad docente Híbrida
Prerrequisitos
Departamento Ciencias da Computación e Tecnoloxías da Información
Computación
Coordinador/a
Mosqueira Rey, Eduardo
Correo electrónico
eduardo.mosqueira@udc.es
Profesorado
,
Alonso Ríos, David
Monroy Camafreita, Juan
Morán Fernández, Laura
Mosqueira Rey, Eduardo
Pérez Sánchez, Beatriz
Correo electrónico
brais.cancela@udc.es
david.alonso@udc.es
juan.monroy@udc.es
laura.moranf@udc.es
eduardo.mosqueira@udc.es
beatriz.perezs@udc.es
Web
Descripción general O Deseño Software é unha fase chave dentro do ciclo de vida do software que establece a ligazón entre os requisitos dun sistema e a sua posterior implementación. O deseño máis habitual hoxe en día é o deseño baseado na orientación a obxectos, que consiste en desenvolver un programa en base a obxectos que intercambian mensaxes.

Esta materia introducirá ao alumnado nos elementos e propiedades básicas da orientación a obxectos usando unha linguaxe orientada a obxectos como Java. Aprenderase tamén a como reflectir os artefactos propios do deseño nunha linguaxe de modelado coma a Linguaxe Unificada de Modelado (UML).

Finalmente presentaranse aqueles principios básicos que representan un bo deseño e aprenderase a identificar aqueles problemas típicos de deseño e as súas solucións máis comúns representadas como patróns de deseño.
Plan de contingencia 1. Modificacións nos contidos

Non se realizarán cambios.

2. Metodoloxías

* Metodoloxías docentes que se manteñen

- Aínda que se manteñen as metodoloxías docentes de Sesión maxistral, Prácticas de laboratorio e Seminarios a forma de impartilas cambia tal e como se detalla no seguinte apartado.

* Metodoloxías docentes que se modifican

- Sesión maxistral. Un grupo xa se impartía de forma telemática. En caso de ter que impartir todos de forma non presencial o que se fará será gravar as sesións de teoría e utilizar o horario de clases para resolver dúbidas e realizar exercicios.

- Prácticas de laboratorio. Pasarán a impartirse de forma telemática. No horario destinado ás clases o profesor atenderá as dúbidas e resolverá os problemas dos alumnos.

- Seminarios. Deixarase gravada a explicación do profesor e aproveitarase o horario destinado ás clases para resolver dúbidas e problemas dos alumnos.


3. Mecanismos de atención personalizada ao alumnado

- Usarase Teams para as titorías tanto de forma síncrona (videoconferencias) como asíncrona (chat) respectando os horarios designados para as titorías.

- Usarase Moodle para comunicar anuncios importantes sobre a materia impartida.


4. Modificacións na avaliación

*Observacións de avaliación:

A avaliación, no caso de que se poida realizar unha avaliación presencial constará das seguintes porcentaxes que se adecúan á memoria do grao:

- Proba obxectiva: 60% (nota mínima de 4)
- Prácticas de laboratorio: 40%

En caso de non poder realizar unha avaliación presencial rebaixarase o peso da proba obxectiva seguindo as recomendacións do reitorado e eliminarase a nota mínima.

- Proba obxectiva non presencial: 40% (sen nota mínima de 4)
- Prácticas de laboratorio: 60%

A proba obxectiva non presencial será unha práctica (preferentemente) ou un tipo test se non se desen as condicións adecuadas para realizar dita práctica.

5. Modificacións da bibliografía ou webgrafía

Non se realizarán cambios. Xa dispoñen de todos os materiais de traballo de maneira dixitalizada en Moodle.

Competencias del título
Código Competencias del título
A7 Capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a principios éticos y a la legislación y normativa vigente.
A13 Conocimiento, diseño y utilización de forma eficiente de los tipos y estructuras de datos más adecuados a la resolución de un problema.
A14 Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados.
B1 Capacidad de resolución de problemas
B2 Trabajo en equipo
B3 Capacidad de análisis y síntesis
B4 Capacidad para organizar y planificar
C3 Utilizar las herramientas básicas de las tecnologías de la información y las comunicaciones (TIC) necesarias para el ejercicio de su profesión y para el aprendizaje a lo largo de su vida.
C6 Valorar críticamente el conocimiento, la tecnología y la información disponible para resolver los problemas con los que deben enfrentarse.

Resultados de aprendizaje
Resultados de aprendizaje Competencias del título
Identificar el diseño software como una de las fases del ciclo de vida del software A7
A13
A14
B3
B4
C3
Conocer los principios y propiedades básicas de la orientación a objetos A7
A13
A14
B1
B2
B3
B4
C3
C6
Plasmar un diseño software utilizando los artefactos propios de un lenguaje de modelado como UML A7
A13
A14
B1
B2
B3
B4
C3
C6
Conocer los principios básicos que representan un buen diseño software A7
A13
A14
B1
B2
B3
B4
C3
C6
Identificar problemas típicos de diseño y sus soluciones más comunes A7
A13
A14
B1
B2
B3
B4
C3
C6
Usar un diseño como guía para la implementación del software A7
A13
A14
B1
B2
B3
B4
C3
C6
Aprender un lenguaje orientado a objetos y aspectos relacionados (IDE, pruebas, repositorios, etc.) A13
B1
B2
B3
B4
C3
C6

Contenidos
Tema Subtema
1. Introducción • Diseño software
• Análisis y diseño orientado a objetos
2. Elementos Básicos de la Orientación a Objetos • Clases y objetos
• Identidad de objetos
• Estado de objetos
• Comportamento de objetos
3. Propiedades Básicas de la Orientación a Objetos • Abstracción y encapsulamiento
• Modularidad
• Jerarquía
• Polimorfismo
• Tipificación
• Ligadura dinámica
4. Lenguaje Unificado de Modelado (UML) • Introducción
• Bloques básicos del UML
• Diseño estático: Diagramas de clases
• Diseño dinámico: Diagramas de interacción
• Otros diagramas
5. Principios de Diseño • Calidad en el diseño
• Principios SOLID
• Tipos de herencia
6. Patrones de Diseño • Introducción a los patrones de diseño
• Patrones elementales
• Diseños adaptables a los cambios
• Diseños débilmente acoplados
• Patrones y colecciones de objetos
• Otros patrones y principios
Prácticas • Introducción a Java
• Excepciones en Java
• Pruebas de software
• Repositorios de código

Planificación
Metodologías / pruebas Competéncias Horas presenciales Horas no presenciales / trabajo autónomo Horas totales
Sesión magistral A7 A13 A14 B1 B3 C6 30 45 75
Prácticas de laboratorio A7 A13 A14 B1 B2 B3 B4 C3 C6 20 30 50
Seminario A7 A13 A14 B1 B2 B3 B4 C3 C6 10 10 20
Prueba objetiva A7 A13 A14 B1 B3 C6 3 0 3
 
Atención personalizada 2 0 2
 
(*)Los datos que aparecen en la tabla de planificación són de carácter orientativo, considerando la heterogeneidad de los alumnos

Metodologías
Metodologías Descripción
Sesión magistral Clases magistrales en la exposición de los conocimientos teóricos usando diferentes recursos: pizarra, proyección de material en formato electrónico, apuntes en formato electrónico y los recursos facilitados por el profesorado de la asignatura en el Campus Virtual de la UDC.
Prácticas de laboratorio Prácticas basadas en los conocimientos que el estudiante va adquiriendo en las clases teóricas. El alumnado desarrollará estos trabajos preferiblemente en grupo. Se utilizará una herramienta de modelado para construir los artefactos de diseño y se empleará un lenguaje orientado a objetos (Java) para realizar la implementación de los mismos.
Seminario Seminarios en los que se realizarán actividades relacionadas con los conocimientos adquiridos en teoría o práctica
Prueba objetiva Prueba escrita mediante la que se valora los conocimientos adquiridos por el alumnado.
Cada estudiante deberá aplicar sus conocimientos tanto a nivel teórico como a nivel práctico.

Atención personalizada
Metodologías
Prácticas de laboratorio
Seminario
Descripción
La atención personalizada al alumnado comprende no solo las tutorías, presenciales o virtuales, para la discusión de dudas, sino también las siguientes actuaciones:

- Seguimiento de la labor realizada en las prácticas de laboratorio propuestos por el profesorado.
- Evaluación de los resultados obtenidos en las prácticas, participación en seminarios realizados por el alumnado.
- Encuentros personalizados para resolver dudas sobre los contenidos de la asignatura.



Evaluación
Metodologías Competéncias Descripción Calificación
Prácticas de laboratorio A7 A13 A14 B1 B2 B3 B4 C3 C6 Realización de ejercicios basados en la programación en Java, en la orientación a objetos, el diseño de pruebas, el lenguaje de modelado UML y el uso de principios y patrones de diseño.

Practicas copiadas serán anuladas, tanto el original como la copia, y podrán suponer un cero en la nota global de la práctica en cuestión.
40
Seminario A7 A13 A14 B1 B2 B3 B4 C3 C6 Los seminarios son sesiones de carácter práctico dirigidas por el profesorado en las que se comentan aspectos útiles relacionados con las prácticas.

Los seminarios no incluyen la entrega de trabajos por parte del alumnado, por lo que no es una actividad evaluable.
0
Prueba objetiva A7 A13 A14 B1 B3 C6 Prueba escrita realizada al final del curso sobre contenidos teórico-prácticos.

La prueba objetiva es obligatoria para aprobar la asignatura y también es obligatorio obtener una nota mínima de 4 para poder hacer media con los otros elementos evaluables.
60
 
Observaciones evaluación

En caso de no llegar a la nota mínima, en cualquiera de las oportunidades, implicará que no se pueda obtener más de un 4,5 en la nota final de la materia.

Aspectos a tener en cuenta para la evaluación de segunda oportunidad (julio):

  • La nota de las prácticas de laboratorio serán las obtenidas en la primera oportunidad (no habrá entrega de prácticas en la segunda oportunidad).

Aspectos a tener en cuenta en caso de matrícula a tiempo parcial:

  • Se elimina la obligatoriedad de asistir a las actividades en las que se pueda exigir presencialidad.

Fuentes de información
Básica Gamma, E.; Helm, R.; Johnson, R. y Vlissides J. (1996). Design Patterns: Elements of Reusable Object-oriented Software.. Addison Wesley
Booch J.; Rumbaugh J. y Jacobson I. (2006). El Lenguaje Unificado de Modelado (2ª ed.) The Unified Modeling Language (2nd ed.). Addison Wesley
Sierra, K., Bates, B. (2005). Head First Java. O’Reilly
Schildt, H. (2018). Java 9. Anaya Multimedia
Martin, R.C. (2004). UML para programadores Java. UML for Java Programmers. Pearson


Complementária Martin, R.C. (2012). Código limpio : manual de estilo para el desarrollo ágil de software. Anaya Multimedia
Bloch, J. (2017). Effective Java (3rd ed.). Addison Wesley
Freeman, E., Freeman, E., Bates, B. (2004). Head First Design Patterns. O'Reilly
Grand M. (2002). Patterns in Java. John Wiley & Sons
Eckel, B. (2007). Piensa en Java (4ª ed.). Thinking in Java (4th ed.). Prentice-Hall
Rumbaugh, J.; Jacobson, I. y Booch, J. (2004). The Unified Modeling Language Reference Manual. Addison Wesley



Recomendaciones
Asignaturas que se recomienda haber cursado previamente
Programación I/614G01001
Programación II/614G01006

Asignaturas que se recomienda cursar simultáneamente
Paradigmas de Programación/614G01014

Asignaturas que continúan el temario
Proceso Software/614G01019
Interfaces Hombre Máquina/614G01022
Internet y Sistemas Distribuidos/614G01023

Otros comentarios

La asignatura asume que el alumnado sabe programar y conoce las estructuras de datos (Programación II) aunque nunca han utilizado un lenguaje orientado a objetos. Al principio del curso, y según se van introduciendo los conceptos propios de la orientación a objetos, el alumnado se familiarizará con los aspectos básicos del lenguaje de programación Java.



(*) La Guía Docente es el documento donde se visualiza la propuesta académica de la UDC. Este documento es público y no se puede modificar, salvo cosas excepcionales bajo la revisión del órgano competente de acuerdo a la normativa vigente que establece el proceso de elaboración de guías