Guía docente de la asignatura

Desarrollo de Software (Especialidad Ingeniería del Software)

Curso 2021 / 2022
Fecha última actualización: 14/06/2021
Fecha de aprobación: 14/06/2021

Grado

Grado en Ingeniería Informática

Rama

Ingeniería y Arquitectura

Módulo

Formación de Especialidad 2: Ingeniería del Software

Materia

Desarrollo y Gestión de Proyectos

Curso

3

Semestre

2

Créditos

6

Tipo

Obligatoria

Profesorado

Teoría

  • María Del Mar Abad Grau. Grupos: A

Prácticas

  • Luis López Escudero. Grupos: 1 y 3
  • María Del Mar Abad Grau. Grupos: 2

Tutorías

María Del Mar Abad Grau

mabad@ugr.es
    Primer semestre
    • Lunes de 8:30 a 11:30 (Etsiit 3ª P Despacho 25)
    • de 11:30 a 14:30 (Etsiit 3ª P Despacho 25)
    Segundo semestre
    • Lunes de 8:30 a 14:30 (Etsiit 3ª P Despacho 25)

Luis López Escudero

luislopez@ugr.es
    Segundo semestre
    • Martes de 10:00 a 14:00 (Despacho I1.14 Citic)
    • Miércoles de 12:00 a 14:00 (Despacho I1.14 Citic)
    Primer semestre
    • Martes de 10:30 a 14:30 (Despacho I1.14 Citic)
    • Miércoles de 15:30 a 17:30 (Despacho I1.14 Citic)

Prerrequisitos y/o Recomendaciones

Se recomienda la superación de los contenidos y adquisición de competencias de las materias de formación básica.

Breve descripción de contenidos (Según memoria de verificación del Grado)

  • Patrones de diseño.
  • Clasificación y composición de patrones.
  • Arquitecturas de software.
  • Técnicas de desarrollo dirigidas por modelos.
  • Modelado de negocio.
  • Técnicas de verificación y validación de software.
  • Pruebas unitarias.
  • Mantenimiento y evolución del software.

Competencias asociadas a materia/asignatura

Competencias generales

  • CG01 - Capacidad para concebir, redactar, organizar, planificar, desarrollar y firmar proyectos en el ámbito de la ingeniería en informática que tengan por objeto, de acuerdo con los conocimientos adquiridos, la concepción, el desarrollo o la explotación de sistemas, servicios y aplicaciones informáticas.
  • CG05 - Capacidad para concebir, desarrollar y mantener sistemas, servicios y aplicaciones informáticas empleando los métodos de la ingeniería del software como instrumento para el aseguramiento de su calidad.

Resultados de aprendizaje (Objetivos)

  • Conocer los patrones que se pueden aplicar a un diseño y a su estructura.
  • Clasificación de los patrones y su importancia como herramienta para mejorar la calidad de un diseño.
  • Adquirir destreza en la identificación de los patrones aplicables a un determinado problema.
  • Comprender correctamente el concepto de componente-software y saber aplicarlo en le desarrollo.
  • Conocer las técnicas de desarrollo dirigidas por modelos, sus ventajas e inconvenientes.
  • Conocer y saber aplicar diferentes niveles de prueba a un software.
  • Introducirse en el modelado de procesos de negocio, así como en sus técnicas fundamentales y herramientas.

Programa de contenidos teóricos y prácticos

Teórico

 

  • Tema 1. Desarrollo utilizando patrones software
  1. Análisis y diseño basado en patrones
  2. Estudio del catálogo GoF de patrones diseño y arquitectónicos
  • Tema 2. Arquitectura Software
  1. Estilos arquitectónicos
  2. Notaciones actuales para descripción arquitectónica
  • Tema 3. Pruebas software
  1. Objetivos y principios fundamentales
  2. Validación y verificación
  3. Relación con el ciclo de vida del software
  4. Técnicas, herramientas y marcos de trabajo para el desarrollo de pruebas del software
  • Tema 4. Desarrollo dirigido por modelos
  1. Fundamentos del desarrollo dirigido por modelos (MDD)
  2. Arquitecturas dirigidas por modelos (MDA) y factorías de software
  3. Modelado de negocio
  4. Arquitecturas de empresa/Sistemas de Información Empresarial
  • Tema 5. Mantenimiento y evolución del software
  1. Principios y tipos de mantenimiento aplicables al software
  2. El proceso de mantenimiento del software
  3. Actividades relacionadas con la correcta evolución del software

Talleres

  • Taller 1: Introducción a Git y GitHub
  • Taller 2: Introducción al desarrollo de apps con Flutter y Android Studio
  • Taller 3: Introducción al desarrollo de pruebas unitarias en Java (JUnit) y Flutter
  • Taller 4: Introducción a RoR
  • Taller 5: Introducción a los servicios Web RESTful con RoR y uso con Flutter

 

 

Práctico

  • Práctica 1. Realizar la aplicación del catálogo GoF al diseño de varios programas que resuelven un conjunto de problemas propuestos. Analizar la adecuación del diseño e implementación obtenidos con respecto a los requisitos especificados para cada problema.
  • Práctica 2. Implementar en Flutter una aplicación dentro de la temática del grupo pequeño de teoría, eligiendo el estilo arquitectónico más adecuado.
  • Práctica 3. Desarrollo de pruebas unitarias y de integración para evaluar la calidad del software desarrollado en la práctica 2. Redacción de un informe de validación del software referido.
  • Práctica 4. Realizar una propuesta de arquitectura software y aplicarla al desarrollo completo de una aplicación multiplataforma, incluyendo al menos una parte para móvil en Flutter, que parta de la práctica 2 y otra parte Web con Ruby on Rails y pruebas de unidad, de integración y de sistema.

Bibliografía

Bibliografía fundamental

  • Gamma, E., Helm, E.,Johnson, R., Vlissides, J. Design Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. Traducción al español de César Fernández Acebal y Juan Manuel Cueva Lovelle. Pearson Educación, 2009.
  • Nick Rozanski. Software Systems Architecture: Working with Stakeholders Using View-points and Perspectives, Second Edition. Addison-Wesley Professional, 2011. URL https://learning.oreilly.com/library/view/software-systems-architecture/9780132906135/.
  • Mary Shaw and David Garlan. Software Architecture. Prentice Hall, New Jersey, 1996.
  • Daniel Galin. Software Quality. Wiley-IEEE Computer Society Press, 2018. URL https://learning.oreilly.com/library/view/software-quality/9781119134497/c14.xhtml.
  • Priyadarshi Tripathy and Kshirasagar Naik. Software Evolution and Maintenance. John Wiley, EE.UU., 2014.
  • Alberto Rodrigues da Silva. Model-Driven Engineering: A survey supported by a unified conceptual model. Computer Languages, Systems & Structures, 20, 06 2015. doi: 10.1016/j.cl.2015.06.001.

Bibliografía complementaria

  • Brad Appleton. Patterns and software: Essential concepts and terminology, 2000. URL http://www.bradapp.com/docs/patterns-intro.html.
  • Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. Pattern-Oriented Software Architecture - Volume 1: A System of Patterns. Wiley Publishing, 1996. ISBN 0471958697. URL https://learning.oreilly.com/library/view/pattern-oriented-software-architecture/9781118725269/.
  • Anand Balachandran Pillai. Software Architecture with Python. Packt Publishing, 2017. URL https://learning.oreilly.com/library/view/software-architecture-with/9781786468529/h08s04.html.
  • Len Bass, Paul Clements, and Rick Kazman. Software Architecture in Practice (2nd Edition). Addison-Wesley Professional, 2003.
  • Judith Stafford, Robert Nord, Paulo Merson, Reed Little, James Ivers, David Garlan, Len Bass, Feliz Bachmann, and Paul Clements. Documenting Software Architectures: Views and Beyond, Second Edition. Addison-Wesley Professional, EE.UU., 2010.
  • Heinz Züllighoven. Object-Oriented Construction Handbook. Science Direct, EE.UU., 2005.
  • Michael Havey. Essential Business Process Modeling. O’Reilly Media, Inc., USA, 2005.
  • Mika Koskela and Jyrki Haajanen. Business process modeling and execution. research notes 2407. Technical report, 2007. URL https://www.vttresearch.com/sites/default/files/pdf/tiedotteet/2007/T2407.pdf.
  • Stephen J. Mellor and Marc J. Balcer. Executable UML: A Foundation for Model-Driven Architecture. Addison-Wesley, USA, 2002.
  • Stephen J. Mellor, K. Scott, Uhl A., and Weise D. MDA distilled: Principles of Model-Driven Architecture. Addison-Wesley Longman Publishing Co., Inc., USA, 2004.
  • Alberto Rodrigues da Silva. Model-Driven Engineering: A survey supported by a unified conceptual model. Computer Languages, Systems & Structures, 20, 06 2015. doi: 10.1016/j.cl.2015.06.001.
  • Jos Warmer, Anneke Kleppe, and Wim Bast. MDA Explained: The Model Driven Architecture: Practice and Promise. Addison-Wesley Professional, EE.UU., 2003.
  • L. A. Belady and M. M. Lehman. A model of large program development. IBM Systems Journal, 1(15):225–252, 1976.
  • Priyadarshi Tripathy and Kshirasagar Naik. Software Evolution and Maintenance. Johh Wiley, EE.UU., 2014.

Enlaces recomendados

Metodología docente

  • MD01 Lección Magistral (Clases Teóricas-Expositivas) 
  • MD02 Actividades Prácticas (Resolución de Problemas, Resolución de Casos Prácticos, Desarrollo de Proyectos, Prácticas en Laboratorio, Taller de Programación, Aula de Informática, Prácticas de Campo). 
  • MD03  Seminarios (Debates, Demos, Exposición de Trabajos Tutelados, Conferencias, Visitas Guiadas, Monografías). 
  • MD04 Actividades no presenciales Individuales. 
  • MD05 Actividades no presenciales Grupales. 
  • MD06 Tutorías Académicas. 

Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)

Evaluación ordinaria

Todo lo relativo a la evaluación se regirá por la Normativa de evaluación y calificación de los estudiantes vigente en la Universidad de Granada, que puede consultarse en: https://lsi.ugr.es/lsi/normativa_examenes

Preferentemente, la evaluación se ajustará al sistema de evaluación continua del aprendizaje del estudiante siguiendo el artículo 7 de la anterior Normativa.

En esta modalidad se utilizarán las siguientes técnicas de evaluación:

  • Parte teórica básica: Para la parte teórica básica se realizará un trabajo o examen diferido (varios días para hacerlo) y un examen presencial.
  • Otras actividades formativas: Se evaluarán asimismo actitudes a alcanzar como desarrolladores software, mediante otras actividades formativas: tareas individuales, tareas en grupo pequeño y los cuatro talleres. En los talleres se valorará la resolución de los problemas y ejercicios que hayan sido resueltos y entregados en plazo por los alumnos.
  • Las prácticas de laboratorio se evaluarán mediante entrevistas al grupo pequeño. Se valorarán las entregas en fechas establecidas de los informes/memorias realizados para cada práctica.
  • Para los estudiantes que se acojan a la evaluación única final, las pruebas y la evaluación estarán regidas por los criterios que se exponen más adelante en este documento (ver apartado correspondiente).
  • La calificación global corresponderá a la puntuación obtenida de la ponderación de los diferentes aspectos y actividades que integran el sistema de evaluación. La adaptación del sistema de evaluación general propuesto a las características de esta asignatura se ajustará a lo indicado a continuación:

Actividades formativas

Ponderación

Parte teórica básica

30%

Parte práctica

50%

Otras actividades formativas (trabajos grupo pequeño, trabajos individuales y talleres)

20%

Para aprobar la asignatura es necesario obtener una calificación numérica superior o igual a 5 puntos (sobre 10). No obstante, además del requisito anterior, se establecen adicionalmente los siguientes requisitos:

  • Parte teórica básica.- Se debe obtener una calificación mayor o igual a 4,5 puntos (sobre 10) en cada uno de los dos exámenes.
  • Parte práctica.- Será necesario una calificación mayor o igual a 4,5 en cada una de las cuatro prácticas.
  • Otras actividades formativas.- Se deberá obtener una puntuación de al menos 4,5 puntos para poder hacer media.

El sistema de calificaciones se expresará mediante calificación numérica de acuerdo con lo establecido en el artículo 5 del R.D. 1125/2003 de 5 de septiembre, por el que se establece el sistema europeo de créditos y el sistema de calificaciones en las titulaciones universitarias de carácter oficial y validez en el territorio nacional.

 

 

Evaluación extraordinaria

La evaluación de los estudiantes en la convocatoria extraordinaria se regirá por los mismos criterios y constará de las mismas pruebas que las indicadas en este documento para evaluación única final.

Evaluación única final

La evaluación única final consistirá en dos pruebas de evaluación, una para la parte teórica y otra para la parte práctica, con las características que se indican a continuación:

  • Evaluación de teoría: los estudiantes realizarán una prueba escrita que constará de preguntas de teoría, problemas y ejercicios sobre la teoría impartida y un trabajo extenso o examen diferido (varios días para realizarlo) de resolución de supuestos más extensos.
  • Evaluación de las prácticas: los estudiantes realizarán de manera individual la parte obligatoria de cada una de las prácticas de laboratorio de este curso y una prueba en el laboratorio que consistirá en la realización de modificaciones de dichas prácticas a partir de cambios en los requisitos de las mismas.

 

La ponderación de cada parte en la nota final será del 50% (parte teórica) y 50% (parte práctica). Para aprobar la asignatura se han de cumplir los siguientes requisitos:

  • La nota de la prueba de teoría ha de ser igual o superior al 4,5.
  • La nota de la prueba de prácticas ha de ser igual o superior a 4,5.
  • La suma ponderada de ambas notas ha de ser igual o superior a 5.

Información adicional

Metodología docente

1. Clases de teoría (grupo grande de teoría)

  • Descripción: Resumen de los contenidos que deben adquirirse, exposición de aquéllos más importantes o más difíciles de comprender, exposición de la resolución de problemas y casos prácticos realizada en grupos pequeños.
  • Propósito: Adquisición de un conocimiento profundo de la importancia del desarrollo del software, desarrollando la capacidad de reflexión, descubrimiento de las relaciones entre diversos conceptos, mentalidad crítica y presentación pública. Contenido en ECTS: 13 horas presenciales (0,52 ECTS).
  • Competencias: IS1, IS3, IS4, IS6, E1, E2, E3, E4, E5, E6, E7, E9, E10, E12, T1, T2, T4, T5, T6.
  • Metodología empleada: explicación del profesor, exposición de los grupos pequeños.

2. Actividades presenciales grupales (grupo pequeño de teoría)

  • Descripción: Actividades propuestas por el profesor a través de las cuales y de forma grupal se profundiza en aspectos concretos de la materia posibilitando a los estudiantes avanzar en la adquisición de determinados conocimientos y procedimientos de la materia.
  • Propósito: Favorecer en los estudiantes las capacidades (1) de trabajo en equipo, (2) de identificación y análisis de diferentes puntos de vista sobre una temática sabiendo reconocer las distintas responsabilidades de cada miembro de un equipo de desarrollo software para resolver lo conflictos en casos en los que no exista consenso de opiniones, (3) de generalización o transferencia de conocimiento, (4) de valoración crítica del mismo, (5) y de autocrítica.
  • Contenido en ECTS: 13 horas presenciales (0,52 ECTS).
  • Competencias: IS1, IS3, IS4, IS6, E1, E2, E3, E4, E5, E6, E7, E9, E10, E12, T1, T2, T4, T5, T6, T8.
  • Metodologías docentes: Trabajo en grupo pequeño de teoría como equipo de desarrollo software. Se trabajará con ordenadores personales en el aula de teoría o en cualquier otro lugar en el que el grupo pueda mantener conexión remota -videoconferencia- con el profesor.

3. Talleres (grupo grande de teoría)

  • Descripción: Aprendizaje práctico introductorio de herramientas concretas usadas en el Desarrollo Software.
  • Propósito: Facilitar el inicio de aprendizaje de herramientas concretas a usar en la asignatura, y sobre las que cada estudiante deberá profundizar en su conocimiento y destreza de uso a lo largo del curso.
  • Contenido en ECTS: 4 horas presenciales (0,16 ECTS).
  • Competencias: IS1, IS3, IS4, IS6, E1, E2, E3, E4, E5, E6, E7, E9, E10, E12, T1, T2, T4, T5, T6.
  • Metodologías docentes: Taller de Programación (aula de teoría o presencialidad remota -videoconferencia- con ordenadores personales).

4. Clases guiadas de prácticas de laboratorio (grupo grande de prácticas)

  • Descripción: Explicación detallada de la práctica a realizar por parte del profesor (objetivos, tareas y criterios de evaluación), posibles ejercicios (guiados) a realizar por los estudiantes.
  • Propósito: Entender lo que se pide, saber relacionarlo con los conocimientos teóricos y comprender la importancia de cada práctica.
  • Contenido en ECTS: 5 horas presenciales (0.2 ECTS).
  • Competencias: IS1, IS3, IS4, IS6, E1, E2, E3, E4, E5, E6, E7, E9, E10, E12, T1, T2, T4, T5, T6.
  • Metodologías empleadas: Explicación del profesor, ejercicios guiados.

5. Clases tutorizadas y presentación de prácticas de laboratorio (grupo pequeño y grupo grande de prácticas)

  • Descripción: Inicio de cada sesión semanal en los equipos software de prácticas (grupo pequeño de prácticas) bajo la supervisión del profesor y presentación de prácticas ya realizadas.
  • Propósito: Planificar la tarea a realizar en esa sesión repartiendo el trabajo entre los componentes del equipo, comienzo de la misma y resolución de todas las dudas que surjan para poder completarlas de forma autónoma. Presentación de la práctica realizadas al profesor (prácticas 1, 2 y 4) o al todo el grupo (práctica 3).
  • Contenido en ECTS: 25 horas presenciales (1 ECTS).
  • Competencias: IS1, IS3, IS4, IS6, E1, E2, E3, E4, E5, E6, E7, E9, E10, E12, T1, T2, T4, T5, T6.
  • Metodologías empleadas: Trabajo en grupo pequeño, resolución de dudas por parte de los compañeros del equipo y, si aún permanecen, por parte del profesor. Presentación mediante demostraciones, diapositivas, documentos de texto, tutoriales, etc.

6. Clases autónomas de prácticas de laboratorio (grupo pequeño de prácticas)

  • Descripción: Realización de las prácticas en los equipos software de prácticas (grupo pequeño de prácticas).
  • Propósito: Realización completa de la práctica y entrega de la misma.
  • Contenido en ECTS: 50 horas presenciales (2 ECTS).
  • Competencias: IS1, IS3, IS4, IS6, E1, E2, E3, E4, E5, E6, E7, E9, E10, E12, T1, T2, T4, T5, T6.
  • Metodologías empleadas: Distintas herramientas de desarrollo software, incluyendo software de control de versiones para trabajo en equipo.

7. Actividades no-presenciales individuales (estudio y trabajo autónomo)

  • Descripción: 1) Actividades (guiadas y no guiadas) propuestas por el profesor a través de las cuales y de forma individual se profundiza en aspectos concretos de la materia posibilitando al estudiante avanzar en la adquisición de determinados conocimientos y procedimientos de la materia; 2) Estudio individualizado de los contenidos de la materia; 3) Actividades evaluativas (informes, exámenes, …).
  • Propósito: Favorecer en el estudiante la capacidad para autorregular su aprendizaje, planificándolo, diseñándolo, evaluándolo y adecuándolo a sus especiales condiciones e intereses.
  • Contenido en ECTS: 39 horas no presenciales (1.56 ECTS).
  • Competencias: IS1, IS3, IS4, IS6, E1, E2, E3, E4, E5, E6, E7, E9, E10, E12, T1, T2, T4, T5.

8. Tutorías académicas (individual o grupo pequeño de teoría o de prácticas)

  • Descripción: manera de organizar los procesos de enseñanza y aprendizaje que se basa en la interacción directa entre el estudiante y el profesor.
  • Propósito: 1) Orientan el trabajo autónomo y grupal del alumnado; 2) profundizar en distintos aspectos de la materia y 3) orientar la formación académica-integral del estudiante.
  • Contenido en ECTS: 1 hora presencial (incluida videoconferencia), grupales e individuales (0.04 ECTS).
  • Competencias: IS1, IS3, IS4, IS6, E1, E2, E3, E4, E5, E6, E7, E9, E10, E12, T1, T2, T4, T6.

DEFINICIÓN DE GRUPO GRANDE Y PEQUEÑO:

  • Los grupos grandes son los grupos de teoría o de prácticas
  • Los grupos pequeños de prácticas de laboratorio son grupos de 2 a 4 estudiantes.
  • Los grupos pequeños para las clases de teoría son grupos de 4 a 8 estudiantes.

ESCENARIO A (ENSEÑANZA-APRENDIZAJE PRESENCIAL Y TELE-PRESENCIAL)

Horario (Según lo establecido en el POD)

Herramientas para la atención tutorial (Indicar medios telemáticos para la atención tutorial)

Google Meet: Debe entrarse con cuenta @go.ugr.es.

Medidas de adaptación de la evaluación (Instrumentos, criterios y porcentajes sobre la calificación)

  • Las clases teóricas se desarrollarán con el grado de presencialidad permitido por las normas de seguridad. Se utilizará preferentemente la videoconferencia síncrona (Google Meet con cuentas @go.ugr.es) en caso de que sea necesario que parte de los estudiantes deban asistir a estas clases de forma online. También se utilizará la grabación de clases en caso de que sea necesario.
  • Para las clases prácticas se utilizarán los mismos criterios y herramientas, aunque teniendo en cuenta que éstas tienen una componente importante de trabajo autónomo del alumno. Se prestará por tanto un mayor interés, si cabe, al plan de atención tutorial.

Evaluación ordinaria

Se utilizarán los exámenes online (PRADO) y/o la realización de exámenes por turnos dependiendo de la disponibilidad de aulas y del aforo permitido en las mismas por las medidas de seguridad a ser aplicadas. Las entrevistas y exposición de trabajos se realizarán en el aula, si lo permiten las medidas de seguridad, o por videoconferencia (Google Meet). El resto de pruebas no varían según presencialidad.

Evaluación extraordinaria

Se utilizarán los exámenes online (PRADO) y/o la realización de exámenes por turnos dependiendo de la disponibilidad de aulas y del aforo permitido en las mismas por las medidas de seguridad a ser aplicadas. Las entrevistas y exposición de trabajos se realizarán en el aula, si lo permiten las medidas de seguridad, o por videoconferencia (Google Meet).

Evaluación única final

Se utilizarán los exámenes online (PRADO) y/o la realización de exámenes por turnos dependiendo de la disponibilidad de aulas y del aforo permitido en las mismas por las medidas de seguridad a ser aplicadas. Las entrevistas y exposición de trabajos se realizarán en el aula, si lo permiten las medidas de seguridad, o por videoconferencia (Google Meet).

ESCENARIO B (SUSPENSIÓN DE LA ACTIVIDAD PRESENCIAL)

Horario (Según lo establecido en el POD)

Herramientas para la atención tutorial (Indicar medios telemáticos para la atención tutorial)

Google Meet: Debe entrarse con cuenta @go.ugr.es

Medidas de adaptación de la evaluación (Instrumentos, criterios y porcentajes sobre la calificación)

  • Las clases teóricas se desarrollarán por videoconferencia síncrona (Google Meet). También se utilizará la grabación de clases en caso de que sea necesario.
  • Las clases prácticas, en lo que respecta a las explicaciones que deben ser impartidas, también se desarrollarán utilizando la videoconferencia pudiendo utilizarse también la grabación de clases. Teniendo en cuenta que la componente de trabajo autónomo del alumno es fundamental, en esta parte de la asignatura, se prestará un mayor interés, si cabe, al plan de atención tutorial.

Evaluación ordinaria

Los exámenes se realizarán mediante la plataforma Prado, sustituyendo cualquier tipo de examen presencial. Las entrevistas y exposición de trabajos se realizarán por videoconferencia (Google Meet). El resto de pruebas no se ven afectados.

Evaluación extraordinaria

Los exámenes se realizarán mediante la plataforma Prado, sustituyendo cualquier tipo de examen presencial. Las entrevistas y exposición de trabajos se realizarán por videoconferencia (Google Meet).

Evaluación única final

Los exámenes se realizarán mediante la plataforma Prado, sustituyendo cualquier tipo de examen presencial. Las entrevistas y exposición de trabajos se realizarán por videoconferencia (Google Meet).