NO EXISTEN CAMBIOS
La guía de la asignatura ha sido actualizada con los cambios que aquí se mencionan.
El desarrollo de aplicaciones informáticas suele conllevar la realización de actividades de codificación repetitivas y tediosas como, por ejemplo, escribir sentencias de inserción de filas en todas y cada una de las tablas de una aplicación.
La asignatura Generación Automática de Código ofrece técnicas para que, en estos casos, el código necesario no tenga que ser escrito por el programador; sino que pueda ser generado automáticamente a partir de meta-información o de plantillas. Por ejemplo, en el caso de inserciones en tablas, se puede utilizar como fuente para generar el código la propia descripción de los campos de la tabla que ya existe en el Sistema Gestor de la Base de Datos.
Esta asignatura, por tanto, está dirigida a presentar el conjunto de técnicas y de herramientas que permitan incrementar la productividad de el proceso de desarrollo de software.
La creación de unos mecanismos que permitan la generación de sistemas informáticos sin la necesidad de un proceso de codificación exhaustivo es uno de los objetivos fundamentales de diferentes líneas de investigación y técnicas de producción de software existentes. La eliminación de esta fase creativa de la producción de software se motiva por dos razones fundamentales: la productividad y la calidad. La disminución o desaparición de una fase de codificación asegura una capacidad de producir software siguiendo las líneas maestras de la producción industrial en línea: si somos capaces de introducir en un mecanismo la suficiente información de especificación y definición obtendremos al final de la cadena de producción el software acabado. Además, esta automatización de la producción de software permitirá establecer el estándar de calidad que se desee en la medida que los generadores de código serán elementos definidos, controlados y medibles en cuanto a sus resultados.
La asignatura se encuentra enmarcada en la materia de “Ingeniería del desarrollo de software”, de carácter anual, con una carga de 9 ECTS (dedicación estimada de 225 horas), de carácter optativo, y perteneciente al Bloque de Ingeniería de Software. Concretamente, es una de las seis asignaturas esa materia, que articula en: "Especificación de los sistemas de software", "Arquitecturas para sistemas software", "Arquitecturas orientadas a servicios", "Desarrollo de lineas de producto software mediante un enfoque generativo" y "Desarrollo de software seguro".
De forma complementaria, las técnicas y herramientas que se presentan en esta asignatura suponen un complemento ideal para la resolución de los sistemas software presentados en asignaturas del bloque de Ingeniería de Sistemas Informáticos, como las pertenecientes a la materia de Sistemas Móviles o Robótica y Percepción Visual.
La asignatura no requiere de requisitos previos específicos, si bien para su adecuado seguimiento y aprovechamiento se precisan conocimientos relacionados con la ingeniería de software y la construcción de sistemas informáticos que son propios de los adquiridos en los estudios de Grado en Informática o Ingeniería Informática.
En la metodología a distancia de la UNED, los foros del curso virtual son el principal recurso de atención colectiva los estudiantes. La comunicación a través de los foros tiene una doble vertiente en el aprendizaje: el enriquecimiento en el ejercicio de la dialéctica y del diálogo entre los estudiantes, por un lado, y la exposición del profesor a todos los alumnos (atención colectiva), junto con el debate que ello pueda suscitar.
En la atención colectiva de los foros del curso virtual, ante cualquier cuestión concreta, planteada sobre los contenidos o el funcionamiento de la asignatura, la respuesta será inferior a 5 días del calendario lectivo.
En cuanto a la atención individual, el equipo docente dará respuesta a través del teléfono (en el horario lectivo indicado) y, en horario laboral peninsular, por correo electrónico:
Horarios de atención presencial y telefónica (guardia):
Martes y jueves lectivos de 9:00 a 11:00 horas.
Despacho 2.21. Telf.: +34 91398 8654
Profesor: Ismael Abad Cardiel.
Correo electrónico: iabad@issi.uned.es
Dirección postal:
ETS de Ingeniería Informática de la UNED
Dpto. de Ingeniería de Software y Sistemas Informáticos.
C/ Juan del Rosal, 16
28040 Madrid
Competencias Básicas:
CB6 - Poseer y comprender conocimientos que aporten una base u oportunidad de ser originales en el desarrollo y/o aplicación de ideas, a menudo en un contexto de investigación
CB7 - Que los estudiantes sepan aplicar los conocimientos adquiridos y su capacidad de resolución de problemas en entornos nuevos o poco conocidos dentro de contextos más amplios (o multidisciplinares) relacionados con su área de estudio
CB8 - Que los estudiantes sean capaces de integrar conocimientos y enfrentarse a la complejidad de formular juicios a partir de una información que, siendo incompleta o limitada, incluya reflexiones sobre las responsabilidades sociales y éticas vinculadas a la aplicación de sus conocimientos y juicios
CB9 - Que los estudiantes sepan comunicar sus conclusiones y los conocimientos y razones últimas que las sustentan a públicos especializados y no especializados de un modo claro y sin ambigüedades
CB10 - Que los estudiantes posean las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo.
Competencias Generales:
CG01 - Saber aplicar los conocimientos adquiridos y la capacidad de resolución de problemas en entornos nuevos o poco conocidos dentro de contextos más amplios y multidisciplinares relacionados con la Ingeniería de Sistemas y la Ingeniería de Software.
CG02 - Demostrar una comprensión sistemática del campo de estudio de la Ingeniería de Software o de la Ingeniería de Sistemas, y el dominio de las habilidades y métodos de investigación relacionados con dicho campo.
CG03 - Demostrar la capacidad de concebir, diseñar, poner en práctica y adoptar un proceso sustancial de investigación con seriedad académica.
CG04 - Ser capaz de realizar un análisis crítico, evaluación y síntesis de ideas nuevas y complejas.
CG05 - Saber comunicar sus conclusiones -y los conocimientos y razones últimas que las sustentan- a públicos especializados y no especializados, a sus colegas, a la comunidad académica en su conjunto y a la sociedad, de un modo claro y sin ambigüedades.
CG06 - Ser capaz de fomentar, en contextos académicos y profesionales, el avance tecnológico dentro de una sociedad basada en el conocimiento.
CG07 - Ser capaz de integrar conocimientos y enfrentarse a la complejidad de formular juicios a partir de una información que, siendo incompleta o limitada, incluya reflexiones sobre las responsabilidades sociales y éticas vinculadas a la aplicación de sus conocimientos y juicios.
CG08 - Realizar una contribución a través de una investigación original que amplíe las fronteras del conocimiento desarrollando un corpus sustancial, del que parte merezca la publicación referenciada a nivel nacional o internacional.
CG09 - Poseer las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo.
Competencias Específicas:
CE01 - Incorporar mejoras cualitativas sustanciales, bien sea en la elaboración de software o bien en el desarrollo e implantación de sistemas robóticos.
CE02 - Concebir, implementar implantar y supervisar nuevas soluciones a los problemas específicos que se le planteen en el ámbito de la investigación, innovación y desarrollo de software o de la robótica.
Al finalizar el curso el alumno será capaz de:
-
RA1. Reconocer la importancia del uso de los generadores de código en la producción moderna de software (competencias CG3 y CB6).
-
RA2. Conocer y utilizar las principales técnicas de generación automática de código (competencias CG1, CB6, CED1 y CEP1).
-
RA3. Conocer y utilizar alguna de las principales herramientas de generación automática de código competencias CG1, CB6, CED1 y CEP1).
-
RA4. Analizar, seleccionar y aplicar la técnica de generación automática de código más adecuada según el tipo de problema a resolver (competencias CG3, CG8, CED1 y CEP1).
-
RA5. Plantear, diseñar y construir un sistema para la transformación de código (competencias CG1, CED1 y CEP1).
-
RA6. Plantear, diseñar y construir un sistema de generación automática de código (competencias CG1, CED1 y CEP1).
MÓDULO 1. Conceptos Generales sobre la Automatización de código
Este primer módulo presenta los elementos fudamentales relacionados con las técnicas y las herramientas de generación automática de código. También se comentan ejemplos sencillos de generadores de software aplicados a problemas simples. Está estructurado en los siguientes tres temas:
Tema 1. Introducción a la GAC (Generación automática de Código)
Tema 2. Representaciones de lenguajes
Tema 3. Herramientas para la GAC
Tema 4. Construyendo generadores simples.
MÓDULO 2. GAC dirigida por el objetivo
El módulo 2 incluye una clasificación de los generadores de código dirigidos por el objetivo del producto que se obtiene como resultado. Esta clasificación presenta los generadores automáticos de código dirigidos a: la generación de interfaces de usuario, la generación automática de documentación, la generación de pruebas unitarias, la generación de acceso a base de datos embebido en código con SQL, la generación de gestores de datos, la generación de acceso a BBDD, la generación de servicios web y la generación de lógica de negocio. Se estructura en los siguientes temas:
Tema 5. Generadores de interfaces
Tema 6. Generadores de documentos
Tema 7. Generadores de pruebas
Tema 8. Generadores de gestión BBDD
Tema 9. Generadores de servicios web
Tema 10. Generadores de reglas de negocio
MÓDULO 3. GAC dirigida por el paradigma
El tercer módulo se presenta como un bloque de especialización en el que el alumno centrará su trabajo en los recursos ofertados sobre los paradigmas que los paradigmas empleados para la generación. En concreto las opciones de especialización que se abordan son:
- Generadores basados en modelos MDD
- Generadores basados en patrones
- Generadores basados en DSLs
- Generación multiparadigmática
Desde el punto de vista metodológico las unidades integradas en este curso, si bien presentan los contenidos secuenciados de manera progresiva, tienen un carácter modular. Es decir, son unidades independientes organizadas de manera que tanto el docente como el alumno puedan utilizarlas en situaciones diferentes.
Las actividades formativas que se incluyen en la asignatura son:
- De contenido teórico: lectura compresiva de la bibliografía básica y asimilación de los conceptos relacionados con los resultados de aprendizaje RA1, RA2 y RA3.
- De contenido práctico: manejo de los casos prácticos incluidos en la bibliografía básica relacionado con los resultados de aprendizaje RA2 y RA3.
- Trabajo autónomo: resolución de los casos prácticos planteados, búsqueda de información adicional en las distintas fuentes, realización de una propuesta de artículo científico: análisis, comparación y síntesis de información relacionados con los resultados de aprendizaje RA4, RA5 y RA6.
Por otra parte, el curso se adapta a la modalidad de autoaprendizaje, propia de los alumnos a distancia, a través de medios de apoyo informáticos. Además, se adapta al crédito ECTS a través de la atención personalizada al desarrollo del estudio del alumno:
-
Pautas de planificación incluidas en el plan de trabajo.
-
Seguimiento del trabajo del alumno mediante supervisión individual y personalizada. Cada alumno recibe el informe personalizado sobre los trabajos realizados.
El curso virtual de la asignatura incluye:
- Información didáctica, donde se establecen los objetivos concretos y los puntos de interés con carácter general y público, el plan de trabajo y las orientaciones fundamentales para el estudio de los contenidos.
- Herramientas básicas para el estudio y seguimiento de la asignatura.
- Material de apoyo para el seguimiento del curso.
- Ejemplos de resolución de los casos prácticos planteados.
- Foros de debate para plantear las cuestiones que surgen al Equipo Docente y al resto de alumnos de la asignatura.
TIPO DE PRIMERA PRUEBA PRESENCIAL
|
Tipo de examen |
Tipo de examen |
No hay prueba presencial |
TIPO DE SEGUNDA PRUEBA PRESENCIAL
|
Tipo de examen |
Tipo de examen |
No hay prueba presencial |
CARACTERÍSTICAS DE LA PRUEBA PRESENCIAL Y/O LOS TRABAJOS |
CARACTERÍSTICAS DE LA PRUEBA PRESENCIAL Y/O LOS TRABAJOS
|
Requiere Presencialidad |
Requiere Presencialidad |
No |
Descripción |
Descripción |
El sistema de evaluación ordinario consiste en un conjunto de 4 pruebas de evaluación parcial (PEP) y un trabajo de investigación.
PEP (Pruebas de Evaluación Parcial). Opcional: es necesario superar tres de los cuatro casos. (60% nota final - 15% cada caso)
- PEP1 - Práctica parcial sobre introducción a la G.A.C.
- PEP2 - Práctica parcial generador de ficheros de datos
- PEP3 - Práctica parcial generador de programas CRUD
- PEP4.- Práctica parcial traductor de lenguajes
Trabajo Final. Obligatorio. (40% nota final)
- Trabajo de Investigación. El trabajo consiste en una pequeña investigación sobre un tema específico que el alumno debe desarrollar desde su punto de vista, teniendo en cuenta todas las fuentes de información que sean necesarias (se valorará la creatividad en los trabajos frente a estados del arte, comparativas o trabajos sintéticos. En este curso los paradigmas que se contemplan son los siguientes:
- Generación de código basada en DSLs
- Generación de código basada en modelos
- Generación de código basado en patrones
- Generación de código multiparadigmática
- Generación automática NO CODE/LOW CODE
- Generación automática por robots
Convocatoria Extraordinaria de septiembre
La convocatoria extraordinara de septiembre se realiza con el mismo sistema de evaluación que en la convocatoria ordinaria. Cada PEP aporta el 15% de la nota final, y el trabajo final de investigación obligatorio el restante 40%.
Paa esta convocatoria extraordinaria las PEP y el trabajo final de investigación pueden entregarse hasta el 15 de septiembre del curso académico.
|
Criterios de evaluación |
Criterios de evaluación |
Tanto para las cuatro prácticas (PEP1, PEP2, PEP3 y PEP4), como para el trabajo de investigación, se valorará, en relación a los resultados del aprendizaje a los que se refiere cada prueba:
- La calidad y claridad de redacción del documento explicativo, así como su nivel de detalle.
- La calidad y nivel de completitud de la solución aportada.
- La calidad de la documentación de los programas fuente.
- El número y calidad de los ejemplos que se han aportado así como la descripción detallada de los mismos.
- Casos de prueba.
- Documentación de uso para un eventual usuario del generador
|
Ponderación de la prueba presencial y/o los trabajos en la nota final |
Ponderación de la prueba presencial y/o los trabajos en la nota final |
PEP1: 15% de la calificación final.
PEP2: 15% de la calificación final.
PEP3: 15% de la calificación final.
PEP4: 15% de la calificación final.
Trabajo de Investigación: 40% de la calificación final.
Para aprobar la asignatura es imprescindible haber superado tres de las cuatro pruebas de evaluación parcial y el trabajo de investigación (cada uno). |
Fecha aproximada de entrega |
Fecha aproximada de entrega |
PEP1: 15 diciembre. PEP2: 15 enero. PEP3: 15 febrero. PEP4: 30 marzo. TI en convocatoria junio: 15 junio. TI en convocatoria septiembre: 15 septiembre |
Comentarios y observaciones |
Comentarios y observaciones |
Para poder aprobar la asignatura habrá que haber entregado y aprobado tres de las cuatro pruebas de evaluación parcial y el trabajo de investigación.
|
PRUEBAS DE EVALUACIÓN CONTINUA (PEC) |
PRUEBAS DE EVALUACIÓN CONTINUA (PEC)
|
¿Hay PEC? |
¿Hay PEC? |
No |
Descripción |
Descripción |
|
Criterios de evaluación |
Criterios de evaluación |
|
Ponderación de la PEC en la nota final |
Ponderación de la PEC en la nota final |
|
Fecha aproximada de entrega |
Fecha aproximada de entrega |
|
Comentarios y observaciones |
Comentarios y observaciones |
|
OTRAS ACTIVIDADES EVALUABLES
|
¿Hay otra/s actividad/es evaluable/s? |
¿Hay otra/s actividad/es evaluable/s? |
No |
Descripción |
Descripción |
|
Criterios de evaluación |
Criterios de evaluación |
|
Ponderación en la nota final |
Ponderación en la nota final |
|
Fecha aproximada de entrega |
Fecha aproximada de entrega |
|
Comentarios y observaciones |
Comentarios y observaciones |
|
¿Cómo se obtiene la nota final?
|
Modalidad de Evaluación Parcial:
PEP1: Calificación de la PEP1. Está aprobada si PEP1 >= 5
PEP2: Calificación de la PEP2. Está aprobada si PEP2 >= 5
PEP3: Calificación de la PEP3. Está aprobada si PEP3 >= 5
PEP4. Calificación de la PEP4. Está aprobada si PEP4 >=5
TI: Calificación del Trabajo de Investigación. Está aprobado si TI >= 5
NF: Nota Final de la Asignatura
Si se cumple la condición de tener tres PEP aprobadas (PEP >= 5) y TI >= 5, se aplica el cálculo:
NF = 0,15 * PEP1 + 0,15 * PEP2 + 0,15 * PEP3 + 0,15 * PEP4 + 0,4 * TI
La asignatura está superada si NF >= 5
|
Las referencias de este apartado de bibliografía están incluidas con carácter consultivo y de ampliación de algunos de los conceptos relacionados con la generación automática de código que se comentan en la bibliografía básica.
La documentación de apoyo para el seguimiento del curso que el alumno necesita durante el curso (planteamiento de los ejercicios, guías de uso de entornos, herramientas, plantillas de documentos, etc.) están a su disposición incluidas en el curso virtual de la asignatura.