Denominación de la asignatura

Reutilización de Software

Grado al que pertenece
Grado en Ingeniería Informática
Créditos ECTS
6
Curso y cuatrimestre en el que se imparte
4º curso, primer cuatrimestre
Carácter de la asignatura Optativa

Presentación

En esta asignatura se realizará una introducción a los principales patrones de diseño software existentes, mostrando al estudiante un amplio catálogo de los más relevantes dentro cada una de las categorías principales: patrones de creación, patrones de diseño, patrones de comportamiento, frameworks y patrones J2EE.

Para ello, se dará una perspectiva general de en qué consisten los patrones de diseño y cuál es su utilidad en el diseño orientado a objetos para dar soluciones sencillas y elegantes a sistemas complejos.

A continuación, se estudiará para cada una de las principales familias de patrones de diseño, sus principales patrones, siguiendo una metodología mediante la que se hará una introducción teórico formal de cada patrón de diseño. A continuación se mostrará un ejemplo de aplicación. De tal forma que el estudiante no solo asimile el concepto sino que también lo comprenda y sea capaz de aplicarlo de forma autónoma en un enfoque práctico.

Competencias

Competencias básicas

  • CB1. Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la educación secundaria general, y se suele encontrar a un nivel que, si bien se apoya en libros de texto avanzados, incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio.

  • CB2. Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.
  • CB3. Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética.
  • CB4. Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.
  • CB5. Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.

Competencias generales

  • CG09. Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.

Competencias específicas

  • CIS04: Capacidad de identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales.
  • CR16. Conocimiento y aplicación de los principios, metodologías y ciclos de vida de la ingeniería de software.

Competencias transversales

  • CT1. Capacidad de innovación y flexibilidad en entornos nuevos de aprendizaje como es la enseñanza on-line.

  • CT2. Conocer, y utilizar con habilidad, los mecanismos básicos de uso de comunicación bidireccional entre profesores y alumnos, foros, chats, etc.

  • CT3. Utilizar las herramientas para presentar, producir y comprender la información que les permita transformarla en conocimiento.

     

Contenidos

Tema 1. Panorama general de la reutilización de software
En qué consiste la reutilización del software
Ventajas e inconvenientes de la reutilización de software
Principales técnicas de reutilización de software
¿Qué hemos aprendido?

Tema 2. Introducción a los patrones de diseño
¿Qué es un patrón de diseño?
Catálogo de los principales patrones de diseño
Cómo usar patrones para resolver problemas de diseño
Cómo seleccionar el mejor patrón de diseño
¿Qué hemos aprendido?
Referencias

Tema 3. Patrones de creación
Patrones de creación
Patrón Abstract Factory
Ejemplo de implementación del Patrón Abstract Factory
Patrón Builder
Ejemplo de implementación del Builder
Patrón Abstract Factory vs. Builder
¿Qué hemos aprendido?

Tema 4. Patrones de creación (II)
Patrón Factory Method
Factory Method vs Abstract Factory
Patrón Singleton
¿Qué hemos aprendido?

Tema 5. Patrones estructurales
Patrones estructurales
Patrón Adapter
Patrón Bridge
¿Qué hemos aprendido?
Referencias

Tema 6. Patrones estructurales (II)
Patrón Composite
Patrón Decorador
¿Qué hemos aprendido?

Tema 7. Patrones estructurales (III)
Patrón Facade
Patrón Proxy
¿Qué hemos aprendido?

Tema 8. Patrones de comportamiento
Concepto de los patrones de comportamiento
Patrón de comportamiento: Cadena de responsabilidad
Patrón de comportamiento Orden
¿Qué hemos aprendido?
Referencias

Tema 9. Patrones de comportamiento (II)
Patrón Intérprete o Interpreter
Patrón Iterador
¿Qué hemos aprendido?

Tema 10. Patrones de comportamiento (III)
Patrón Observador
Patrón Estrategia
Discusión sobre los patrones de comportamiento
¿Qué hemos aprendido?

Tema 11. Frameworks
Concepto de framework
Desarrollo mediante frameworks
Patrón Model View Controller
Framework para diseño de interfaces gráficas de usuario
Frameworks para el desarrollo de aplicaciones web
Frameworks para la gestión de la persistencia de objetos en bases de datos
Discusión sobre la utilización de frameworks
¿Qué hemos aprendido?

Tema 12. Introducción a la plataforma J2EE
Contexto de desarrollo de aplicaciones empresariales
¿Qué es la plataforma J2EE?
Componentes de negocio J2EE
Elementos de la arquitectura J2EE
Roles plataforma J2EE
Discusión: Plataforma J2EE y patrones de diseño
¿Qué hemos aprendido?

Metodología

Metodología

Las actividades formativas de la asignatura se han elaborado con el objetivo de adaptar el proceso de aprendizaje a las diferentes capacidades, necesidades e intereses de los alumnos.

Las actividades formativas de esta asignatura son las siguientes:

  • Trabajos y Lecturas. Se trata de actividades de diferentes tipos: reflexión, análisis de casos, prácticas, etc. Además de análisis de textos relacionados con diferentes temas de la asignatura.
  • Participación en eventos. Son eventos programados todas las semanas del cuatrimestre: sesiones presenciales virtuales, foros de debate, test.
  • Laboratorios. Actividad práctica que se realiza en tiempo real e interactuando con otros alumnos. En el laboratorio los estudiantes tendrán que desarrollar los ejercicios propuestos en un entorno de simulación online. Los estudiantes contarán en todo momento con el apoyo de un tutor de laboratorio, que ayudará al alumno a desarrollar su actividad. El tutor de laboratorio podrá asignar grupos de alumnos para que, de forma colaborativa, alcancen los resultados solicitados. Este tipo de actividad posee un peso considerable en la evaluación continua del alumno, por lo que, a pesar de no ser obligatoria su realización, se recomienda firmemente la participación en los mismos.

En la programación semanal puedes consultar cuáles son las actividades concretas que tienes que realizar en esta asignatura.

Descarga el pdf de la programación

Estas actividades formativas prácticas se completan, por supuesto, con estas otras:

  • Estudio personal
  • Tutorías. Las tutorías se pueden articular a través de diversas herramientas y medios. Durante el desarrollo de la asignatura, el profesor programa tutorías en días concretos para la resolución de dudas de índole estrictamente académico a través de las denominadas “sesiones de consultas”. Como complemento de estas sesiones se dispone también del foro “Pregúntale al profesor de la asignatura” a través del cual se articulan algunas preguntas de alumnos y las correspondientes respuestas en el que se tratan aspectos generales de la asignatura. Por la propia naturaleza de los medios de comunicación empleados, no existen horarios a los que deba ajustarse el alumno.
  • Examen final presencial u online

Las horas dedicadas a cada actividad se detallan en la siguiente tabla:

ACTIVIDADES FORMATIVAS
HORAS
% PRESENCIAL
Sesiones presenciales virtuales 
15
100%
Recursos didácticos audiovisuales
6
0
Estudio del material básico
50
0
Lectura del material complementario
25
0
Trabajos, casos prácticos, test
17
0
Prácticas de laboratorio virtuales
12
16,67%
Tutorías 
16
30%
Trabajo colaborativo
7
0
Realización de examen final
2
100%
Total 
150

 

Puedes personalizar tu plan de trabajo seleccionando aquel tipo de actividad formativa que se ajuste mejor a tu perfil. El profesor-tutor te ayudará y aconsejará en el proceso de elaboración de tu plan de trabajo. Y siempre estará disponible para orientarte durante el curso.

Bibliografía

Bibliografía básica

La bibliografía básica es imprescindible para el estudio de la asignatura. Cuando se indica que no está disponible en el aula virtual, tendrás que obtenerla por otros medios: librería UNIR, biblioteca… 

Los textos necesarios para el estudio de la asignatura han sido elaborados por UNIR y están disponibles en formato digital para consulta, descarga e impresión en el aula virtual.

Gamma, E. (2002). Patrones de Diseño (2ª ed.), pp. 7-9, 109, 127, 151-153, 161-164, 201-202, 204, 205, 215-218, 225-227, 237-239, 270-271, 289-293, 317-320. Madrid: Pearson Educación. ISBN: 84-7829-059-1.

Debrauwer, L. (2013). Patrones de Diseño en Java, pp. 59-61, 98-102, 144-146, 127-130, 155-158, 176-181, 188-191, 217-220, 236-238. Ediciones Eni. ISBN: 978-2-7460-8646-3.

Los intervalos necesarios para el estudio de la asignaturas están disponibles en el aula virtual en virtud del artículo 32.4 de la Ley de Propiedad Intelectual.

 

Bibliografía complementaria

Sommerville, I. (1992). Software Engineering (8ª ed.). London: Addison Wesley.

Szyperski, C. (2002). Component Software: Beyond Object- Oriented Programming  (2ª ed.). Boston: Addison-Wesley.

Alur, D. (2008). Core J2EE patterns, Best Practices and design strategies (8.ª ed.). Sun Microsystems Press.

evaluación

Evaluación y calificación

El sistema de calificación se basa en la siguiente escala numérica:

0 - 4, 9

Suspenso

(SS)

5,0 - 6,9

Aprobado

(AP)

7,0 - 8,9

Notable

(NT)

9,0 - 10

Sobresaliente

(SB)

La calificación se compone de dos partes principales:

calificación

El examen se realiza al final del cuatrimestre y es de carácter PRESENCIAL u ONLINE y OBLIGATORIO. Supone el 60% de la calificación final y para que la nota obtenida en este examen se sume a la nota final, es obligatorio APROBARLO.

La evaluación continua supone el 40% de la calificación final. Este 40% de la nota final se compone de las calificaciones obtenidas en las diferentes actividades formativas llevadas a cabo durante el cuatrimestre.

Ten en cuenta que la suma de las puntuaciones de las actividades de la evaluación continua permite que realices las que prefieras hasta conseguir el máximo puntuable mencionado en la programación semanal. En ella se detalla la calificación máxima de cada actividad o evento concreto puntuables.

Para aprobar la asignatura será necesario aprobar cada una de las partes.

El sistema de evaluación de la asignatura es el siguiente:

SISTEMA DE EVALUACIÓN 
PONDERACIÓN MIN. 
PONDERACIÓN MÁX. 
Prueba de evaluación final
60%
60%
Evaluación de prácticas de laboratorios virtuales
0%
40%
Resolución de trabajos, proyectos y casos
0%
40%
Test de autoevaluación
0%
20%
Participación en foros y otros medios participativos
0%
40%

 

 

Profesorado

Javier Cubo Villalba

Formación: Acreditado Ayudante Doctor por ANECA. Reúne dos trienios de investigación. Ha escrito más de medio centenar de artículos, incluyendo más de quince revistas especializadas en el ámbito de la Ingeniería del Software, Servicios Web, Redes de Sensores. Ha participado en multitud de congresos, es autor de un libro sobre técnicas de Adaptación Software, y de otros dos capítulos de libros sobre Servicios Web y Smart Cities.

Experiencia: El doctor Javier Cubo cuenta con experiencia docente desde 2008 y de investigación desde 2002, antes de terminar sus estudios de Ingeniería Informática, con experiencia también fuera del ámbito académico. Ha sido Researcher State University of New York SUNY, Tecnólogo Torres Quevedo en la Fundación CITIC, Becario FPI UMA, Investigador Predoctoral en la University College London UCL, y Contratado Postdoctoral en UMA y en la Università di Pisa UNIPI. También ha sido Profesor Sustituto Interino en UMA. Tiene experiencia en la preparación de propuestas de Proyectos Europeos, así como en la coordinación de equipos de trabajo, llevando la coordinación técnica de varios proyectos de investigación.

Líneas de investigación: Ha integrado la Investigación en el Grupo MUX, Mobility & User eXperience, centrado en movilidad, experiencia de usuario y accesibilidad, perteneciente a UNIR. Por otra parte, ha colaborado en el Grupo GISUM, Ingeniería del Software de UMA.
Sus líneas de investigación están centradas en Ingeniería del Software, Servicios Web, Cloud Computing, Internet of Things, Smart Cities, Big Data, Open Data y Marketing Digital.

Orientaciones para el estudio

Orientación para el estudio

Obviamente, al tratarse de formación on-line puedes organizar tu tiempo de estudio como desees, siempre y cuando vayas cumpliendo las fechas de entrega de actividades, trabajos y exámenes. Nosotros, para ayudarte, te proponemos los siguientes pasos:

  1. Desde el Campus virtual podrás acceder al aula virtual de cada asignatura en la que estés matriculado y, además, al aula virtual del Grado. Aquí podrás consultar la documentación disponible sobre cómo se utilizan las herramientas del aula virtual y sobre cómo se organiza una asignatura en la UNIR y también podrás organizar tu plan de trabajo personal con tu profesor-tutor.
  2. Observa la programación semanal. Allí te indicamos qué parte del temario debes trabajar cada semana.
  3. Ya sabes qué trabajo tienes que hacer durante la semana. Accede ahora a la sección Temas del aula virtual. Allí encontrarás el material teórico y práctico del tema correspondiente a esa semana.
  4. Comienza con la lectura de las Ideas clave del tema. Este resumen te ayudará a hacerte una idea del contenido más importante del tema y de cuáles son los aspectos fundamentales en los que te tendrás que fijar al estudiar el material básico. Lee siempre el primer apartado, ¿Cómo estudiar este tema?, porque allí te especificamos qué material tienes que estudiar. Consulta, además, las secciones del tema que contienen material complementario (Lo + recomendado y + Información).
  5. Dedica tiempo al trabajo práctico (sección Actividades y Test). En la programación semanal te detallamos cuáles son las actividades correspondientes a cada semana y qué calificación máxima puedes obtener con cada una de ellas.
  6. Te recomendamos que participes en los eventos del curso (sesiones presenciales virtuales, foros de debate…). Para conocer la fecha concreta de celebración de los eventos debes consultar las herramientas de comunicación del aula vitual. Tu profesor y tu profesor-tutor te informarán de las novedades de la asignatura.
En el aula virtual del Grado encontrarás siempre disponible la documentación donde te explicamos cómo se estructuran los temas y qué podrás encontrar en cada una de sus secciones: Ideas clave, Lo + recomendado, + Información, Actividades y Test.

 

Ten en cuenta estos consejos…

  • Sea cual sea tu plan de estudio, accede periódicamente al aula virtual, ya que de esta forma estarás al día de las novedades del curso y en contacto con tu profesor y con tu profesor tutor.
  • Recuerda que no estás solo: consulta todas tus dudas con tu profesor-tutor utilizando el correo electrónico. Si asistes a las sesiones presenciales virtuales también podrás preguntar al profesor sobre el contenido del tema. Además, siempre puedes consultar tus dudas sobre el temario en los foros que encontrarás en cada asignatura (Pregúntale al profesor).
  • ¡Participa! Siempre que te sea posible accede a los foros de debate y asiste a las sesiones presenciales virtuales. El intercambio de opiniones, materiales e ideas nos enriquece a todos.
  • Y ¡recuerda!, estás estudiando con metodología on line: tu esfuerzo y constancia son imprescindibles para conseguir buenos resultados. ¡No dejes todo para el último día!