dossier curso coritel

Anuncio
Nuevas tendencias en el diseño y desarrollo
de aplicaciones con tecnologías Java
Duración: 150 horas
Fechas: 17/10/2016 - 16/12/2016
Semanas de aprendizaje: 8
Índice
1. INTRODUCCIÓN
2. PROFESORES
3. TEMARIO DETALLADO DEL CURSO
4. OBJETIVOS POR BLOQUE TEMÁTICO
5. METODOLOGÍA DE IMPARTICIÓN
6. EVALUACIÓN
7. CRONOGRAMA
1. Introducción
El curso “Nuevas tendencias en el diseño y desarrollo de aplicaciones con tecnologías
Java” tiene una carga docente de 150 horas distribuidas entre los días 17 de octubre y 16
de diciembre de 2016, en horario de 16:30 a 20:30, de lunes a viernes.
Sus destinatarios son jóvenes de 20 a 28 años que se encuentren cursando el último año o
estén titulados de Grado o Ciclo Formativo de Grado Superior, en situación de desempleo
especialmente en los sectores de Informática, Matemáticas, Física, Ingeniería o Estadística
posean conocimientos informáticos relacionados con el contexto del curso. Se suponen
conocimientos de programación orientada a objetos.
El curso cuenta con 19 módulos formativos que se dividen en cinco bloques:
●
El primer bloque (28 horas), formado por los módulos 1 a 6 está dedicado a la
programación orientada a objetos en Java. Aunque se supone que los alumnos
conocen la programación orientada a objetos, los objetivos de este módulo son
recordar los conceptos fundamentales en primer lugar, para centrarse
posteriormente en los mecanismos más avanzados del lenguaje Java, y en particular
los que introduce su última versión (8).
●
●
●
●
El segundo bloque (8 horas) está formado por los módulos 7, 8 y 9 , y su objetivo es
introducir los conceptos y mecanismos que proporciona el lenguaje UML para
modelar a alto nivel los diferentes aspectos de un sistema (requisitos, estructura,
comportamiento, despliegue…).
El bloque tercero (34 horas) está dedicado a las pruebas y la calidad del software, y
está compuesto por los módulos 10, 11 y 12 que se centran, respectivamente, en las
pruebas unitarias, las pruebas de integración y de producto, y al estudio de la
calidad del código. Se introduce el uso de herramientas como JUnit, JMockit o
SonarQube para la realización de las pruebas y el control de la calidad.
El cuarto bloque (4 horas) consta de un sólo módulo (13) dedicado a herramientas
que normalmente se utilizan para el desarrollo industrial de software, incluyendo Git,
Maven y Jenkins.
Finalmente, el bloque quinto (72 horas) está compuesto por seis módulos que
recorren en profundidad los aspectos fundamentales de lo que constituye la
programación Web y algunas de las plataformas existentes para el desarrollo de
sistemas Web, incluyendo tecnologías como JavaScript, Ajax, JSP, JSF, JPA, JPQL
y Spring. También se aborda el desarrollo y despliegue de servicios web.
2. Profesores
CHICANO GARCÍA, JOSÉ
FRANCISCO
FERNÁNDEZ BERTOA,
MANUEL
GUTIÉRREZ LÓPEZ,
FRANCISCO
Profesor Contratado Doctor. Doctor en Informática por la
UMA. Ingeniero en Informática por la UMA. Licenciado en
Ciencias Físicas por la UNED
Profesor Contratado Doctor. Doctor en Informática por la
UMA. Ingeniero de Telecomunicación por la UPM
Profesor Titular de Universidad. Doctor en Informática por
la UMA. Licenciado en Ciencias Exactas por la UMA
GUZMAN DE LOS RISCOS,
EDUARDO
Profesor Titular de Universidad. Doctor en Informática
por la UMA. Ingeniero en Informática por la UMA.
NEBRO URBANEJA,
ANTONIO
Profesor Titular de Universidad. Doctor en Informática
por la UMA. Ingeniero en Informática por la UMA.
ORTIZ DE LAZCANO
LOBATO, JUAN MIGUEL
Profesor Contratado Doctor. Doctor en Informática por la
UMA. Ingeniero en Informática por la UMA.
RUBIO MUÑOZ, BARTOLOMÉ
Profesor Titular de Universidad. Doctor en Informática por
la UMA. Licenciado en Informática por la UMA
VALLECILLO MORENO,
ANTONIO
Catedrático de Universidad. Doctor en Informática por la
UMA. Licenciado en Matemáticas por la UMA
Los profesores del equipo docente suman numerosos años de experiencia docente, tanto
en enseñanza secundaria, universitaria reglada y no reglada. El equipo docente ha
impartido con anterioridad asignaturas relacionadas con cada uno de los tópicos del temario
del curso. En particular, han sido o son profesores de asignaturas de introducción a la
programación, donde el lenguaje utilizado es Java; en asignaturas específicas de
programación orientada a objetos y programación funcional; en asignaturas relacionadas
con el modelado del software usando UML; en asignaturas centradas en las pruebas y la
calidad del software; en asignaturas de metodologías de desarrollo software y gestión de
herramientas para el desarrollo del software; y en asignaturas de desarrollo de aplicaciones
Web usando la tecnología Java EE.
3. Temario detallado del curso
Bloque 1. Programación en Java (28 horas)
Módulo 1. Introducción a Java (2 horas)
1.1.
Tipos Básicos de Datos
1.2.
Entrada/Salida Básicas
1.3.
Estructuras de Control
1.4.
Cadenas de caracteres
1.5.
Arrays
Módulo 2. Programación Orientada a Objetos (4 horas)
2.1.
Clases y Objetos
2.2.
Métodos y Mensajes
2.3.
Herencia, Polimorfismo y Vinculación Dinámica
2.4.
Clases Abstractas e Interfaces
2.5.
Anotaciones
Módulo 3. Tratamiento de Errores. Excepciones (2 horas)
3.1.
Concepto de Excepciones
3.2.
Tratamiento de Excepciones
Módulo 4. Clases Básicas (4 horas)
4.1.
Paquete java.lang
4.2.
Paquete java.util
4.3.
Paquete java.io
Módulo 5. Colecciones (8 horas)
5.1.
Genericidad
5.2.
Colecciones y Correspondencias
5.3.
Clases Ordenables
5.4.
Colecciones y Correspondencias ordenadas
Módulo 6. Programación Funcional en Java (8 horas)
6.1.
Interfaces Funcionales. Expresiones Lambda
6.2.
Streams.
6.3.
Creación y Manipulación de Streams
6.4.
Spliterator
Bloque 2. Modelado UML (8 horas)
Módulo 7.
7.1.
7.2.
Módulo 8.
8.1.
8.2.
8.3.
Módulo 9.
9.1.
9.2.
Modelado de la estructura de un sistema (4 horas)
Diagramas de clases
Diagramas de componentes
Modelado del comportamiento de un sistema (2 horas)
Diagramas de estado
Diagramas de secuencia
Diagramas de actividades
Modelado de otros aspectos (2 hora)
Diagramas de casos de uso
Diagramas de despliegue
Bloque 3. Pruebas y calidad (34 horas)
Módulo 10. Pruebas unitarias (12 horas)
10.1. Introducción a las pruebas del software
10.2. Desarrollo dirigido por pruebas (TDD)
10.3. Pruebas unitarias en Java: JUnit
10.4. Pruebas usando mocking con JMockit
Módulo 11. Pruebas de integración y de producto (12 horas)
11.1. Pruebas de integración
11.2. Pruebas de sistema y aceptación
Módulo 12. Calidad de código (10 horas)
12.1. ¿Por qué es importante la calidad en el código?
12.2. Calidad y Clean Code
12.3. Refactorización de código
12.4. Herramientas de control de calidad: SonarQube
Bloque 4. DevOps (4 horas)
Módulo 13. Herramientas para el desarrollo de software (4 horas)
13.1. Gestión de código fuente con GIT
13.2. Construcción del código con Maven
13.3. Integración contínua en Jenkins
Bloque 5. Programación web y plataforma Java EE (72 horas)
Módulo 14. Introducción al desarrollo de aplicaciones Web (4 horas)
14.1. La Web
14.2. HyperText Transfer Protocol (HTTP)
14.3. Arquitectura de aplicaciones Web
14.4. Servidores de aplicaciones
14.5. Configuración de las herramientas y el servidor
Módulo 15. Tecnologías en el lado del cliente (16 horas)
15.1. HyperText Markup Language (HTML)
15.2. eXtensible Markup Language (XML)
15.3. Cascading Style Sheets (CSS)
15.4. Javascript
15.5. JavaScript Object Notation (JSON)
15.6. Ajax
Módulo 16. Java EE: capa de presentación (20 horas)
16.1. Servlets
16.2. JavaServer Pages (JSP)
16.3. Expression Language (EL)
16.4. JavaServer Pages Standard Tag Library (JSTL)
16.5. JavaServer Faces (JSF)
16.6. Pruebas de aplicaciones Web con Selenium HQ
Módulo 17. Java EE: capa de persistencia (12 horas)
17.1. Bases de datos relacionales
17.2. Java Persistence API (JPA)
17.3. Java Persistence Query Language (JPQL)
Módulo 18. Spring (12 horas)
18.1. Spring Framework
18.2. Spring MVC
18.3. Spring MVC + JPA
18.4. Pruebas en Spring MVC
Módulo 19. Servicios Web (8 horas)
19.1. Arquitecturas orientadas a servicios (SOA)
19.2. Servicios Web
19.3. Representational State Transfer (REST)
19.4. Servicios RESTful en Spring
4. Objetivos por bloque temático
Bloque 1. Programación en Java
●
●
●
●
●
●
●
●
●
●
●
Repasar los tipos básicos de datos en Java
Repasar las estructuras de control de flujo de Java
Repasar los conceptos de programación orientada a objetos
Repasar la sintaxis de Java para definir clases, interfaces y sus miembros
Comprender y aplicar el tratamiento de excepciones en Java
Conocer las clases básicas de los paquetes java.lang, java.util y java.io.
Comprender la genericidad en Java
Saber desarrollar clases genéricas
Conocer las colecciones de la biblioteca estándar de Java
Comprender los conceptos básicos de programación funcional en Java
Saber utilizar los streams y las expresiones lambda en Java
Bloque 2. Modelado UML
●
●
●
●
●
Comprender el papel y la importancia del modelado de software
Conocer los diagramas estructurales de UML (clases y componentes) y saber
realizarlos
Conocer los diagramas de comportamiento de UML (estado, secuencia y
actividades) y saber realizarlos
Conocer los diagramas de casos de uso y saber realizarlos
Conocer los diagramas de despliegue y saber realizarlos
Bloque 3. Pruebas y calidad
●
●
●
●
●
●
●
●
●
●
●
●
Comprender la importancia de las pruebas del software
Conocer los distintos tipos de pruebas existentes
Conocer el desarrollo dirigido por pruebas
Saber implementar pruebas unitarias usando JUnit
Saber usar JMockit para crear objetos mock
Comprender el objetivo de las pruebas de integración y saber realizarlas
Comprender el objetivo de las pruebas de sistemas y saber realizarlas
Comprender el objetivo de las pruebas de aceptación y saber realizarlas
Comprender la importancia de la calidad del código fuente
Conocer buenas prácticas de implementación para mejorar la calidad del código
Comprender el concepto de refactorización y saber aplicarlo para mejorar la calidad
del código
Conocer métricas para medir la calidad del código y herramientas para medir de
forma automática la calidad (SonarQube)
Bloque 4. DevOps
● Conocer las fases por las que pasa el código desde su implementación hasta su
despliegue
●
●
●
●
Comprender los gestores de código fuente y saber utilizar GIT
Saber utilizar Maven para construir un proyecto Java
Comprender el concepto de integración contínua y saber utilizar Jenkins
Comprender el concepto de entrega contínua y saber ponerlo en práctica usando
Jenkins
Bloque 5. Programación web y plataforma Java EE
● Comprender el funcionamiento de la Web y el protocolo HTTP
● Conocer la arquitectura en capas de las aplicaciones Web
● Conocer el objetivo de los servidores de aplicaciones y saber configurar Wildfly
● Saber escribir páginas en HTML y XHTML
● Saber interpretar y escribir los ficheros XML
● Saber escribir hojas de estilo CSS
● Introducir los conceptos básicos de programación en Javascript
● Saber interpretar y escribir documentos JSON
● Conocer los principios de funcionamiento de Ajax y saber aplicarlos
● Saber desarrollar servlets y JavaServer Pages
● Saber crear expresiones en lenguaje EL
● Conocer la biblioteca de etiquetas JSTL y saber utilizarla
● Introducir el framework JavaServer Faces
● Saber desarrollar pruebas de sistemas para aplicaciones Web usando Selenium HQ
● Comprender el mapeo objeto-relacional
● Saber utilizar Java Persistence API para aplicar el mapeo objeto-relacional en Java
● Conocer el lenguaje de consultas JPQL
● Introducir el framework Spring
● Saber desarrollar aplicaciones Web usando Spring MVC
● Saber combinar la tecnología Spring MVC con la tecnología JPA
● Saber desarrollar pruebas de aplicaciones Web en Spring MVC
● Comprender la arquitectura orientada a servicios
● Comprender el concepto de servicio Web
● Conocer los principios REST y los servicios Web REST
● Saber implementar servicios Web REST usando Spring
5. Metodología de impartición
El curso se plantea de una forma eminentemente práctica, donde todas las clases se
impartirán en laboratorios de programación y los alumnos podrán practicar de primera mano
con los conceptos, mecanismos y herramientas que se introducen en el curso.
Todas las actividades tienen como objetivo principal el de potenciar el aprendizaje de los
alumnos, facilitando la adquisición de cuantos conocimientos y competencias precise. Por
ello, dependiendo del tipo de contenidos de los diferentes módulos formativos los métodos a
utilizar variarán: expositivo, por descubrimiento, interactivo, enseñanza programada, trabajo
autónomo, metodología participativa, etc.
Al comenzar cada módulo del curso, el alumno dispondrá de todo el material del mismo. Se
incluirán las transparencias presentadas en clase como guión de los conocimientos a
adquirir, para facilitar su seguimiento. Se proporcionarán enunciados con ejercicios, así
como toda la documentación que se considere necesaria relativas a la contenidos
formativos.
Los enunciados de las prácticas también estarán disponibles en cada módulo, así como
hojas de ejercicios para trabajo personal de los estudiantes.
A continuación se detallan los diferentes métodos docentes que se emplearán a lo largo del
curso:
● Clases magistrales: se utilizarán para exponer la teoría básica del programa en cada
uno de los temas que se vayan a tocar.
● Prácticas: se utilizarán para asentar los conocimientos teóricos adquiridos. El trabajo
práctico será propuesto por el profesor sobre la materia estudiada. Estos trabajos
deberán completarse en el aula. El trabajo realizado por cada alumno será revisado
y valorado por el profesor, tanto en contenidos como en presentación, pudiendo ser
requeridas de los alumnos cuantas explicaciones se consideren oportunas.
Los contenidos se desarrollarán en el aula (clase magistral más prácticas en aula),
resolviendo supuestos teórico/prácticos. Cada sesión constará de explicaciones teóricas
intercaladas con actividades prácticas. Durante la parte teórica se introducirán los
conceptos clave y se presentarán los elementos tecnológicos más relevantes de cada tema,
y durante la parte práctica se aplicarán estos conceptos a través de una serie de ejercicios
propuestos.
6. Evaluación
Instrumentos de evaluación
La calificación final del curso se hará en base a una serie de pruebas (tests) de evaluación.
Con independencia de estas pruebas, dentro de cada módulo se podrán definir una serie de
prácticas de laboratorio que los alumnos deberán realizar de forma individual o en grupos
(dependiendo de la práctica) y que deberán entregar al equipo docente para su evaluación.
El equipo docente, a la mayor brevedad posible realizará una evaluación formativa (sin peso
en la calificación final) de dichas prácticas y la hará disponible para el alumno, con el
objetivo de que sepa qué aspectos debe mejorar. Las pruebas de evaluación con influencia
en la calificación podrán estar basadas en los ejercicios prácticos que se realicen durante el
curso en el aula.
Momentos en los que se realizará la evaluación
Las pruebas con peso en la calificación se realizarán a mitad y al final del curso. El resto de
instrumentos de evaluación serán utilizados durante todo el proceso formativo a modo de
evaluación continua.
Responsables de la evaluación
La responsabilidad de la evaluación recaerá principalmente en los profesores que serán los
encargados de la revisión de los trabajos prácticos, si bien, los alumnos deberán
responsabilizarse de los ejercicios generales que se resuelvan en clases prácticas a modo
de autoevaluación.
7. Cronograma
L
M
X
J
V
17/10/2016
B1
B1
B1
B1
B1
24/10/2016
B1
B1
B2
B2
B3
Festivo
B3
B3
B3
31/10/2016 No hay clase
7/11/2016
B3
B3
B3
B3
B3+T
14/11/2016
B4
B5
B5
B5
B5
21/11/2016
B5
B5
B5
B5
B5
28/11/2016
B5
B5
B5
B5
B5
Festivo
No hay clase
Festivo
No hay clase
B5
B5
B5
T
5/12/2016 No hay clase
12/12/2016
B5
Leyenda
B1
Bloque 1: Programación en Java
B2
Bloque 2: Modelado UML
B3
Bloque 3: Pruebas y calidad
B4
Bloque 4: DevOps
B5
Bloque 5: Programación web y plataforma Java EE
T
Pruebas de conocimiento calificativas
Descargar