Curso de Ingeniería de Software 2020-i
Fecha 29-05-2020
Profesor: Luis Daniel Benavides N. Ph.D.
Créditos Académicos |
4 |
Duración |
7 semanas |
Horas de cátedra semanales |
3* |
Horas de laboratorio semanales |
6* |
Horas de trabajo individual semanal |
15* |
Horas totales de trabajo semanal |
24 |
Días a la semana |
2 |
Plataforma |
Teams |
*( 1 semana se realizará doble jornada)
Introducción
La arquitectura de software es una disciplina que busca el diseño y construcción de sistemas de cómputo seguros, confiables, modulares, eficientes, cómodos, robustos, sostenibles y de alta calidad. Una buena arquitectura permite a los usuarios, operadores y diseñadores comunicarse de manera fluida para construir, operar y evolucionar sistemas de altísima calidad. Para lograr una buena arquitectura se necesitan buenos arquitectos. Pero, el Arquitecto de Software navega en una disciplina que es a su vez una ciencia, una ingeniería y un arte. Por lo tanto, para formarse en arquitectura de software un profesional necesita experiencia, fundamentos teóricos, y buenas prácticas y heurísticas.
Este curso toma en serio las mejores teorías, heurísticas y prácticas de la industria para construir un entorno de formación completo en ingeniería de software. Los estudiantes adquieren sus conocimientos por medio de proyectos y conferencias. Las conferencias resaltan aspectos teóricos y heurísticas y los proyectos permiten el desarrollo de conocimiento prácticos. Los proyectos permiten igualmente adquirir experiencia y crecer en la forma en que desarrollan.
Pre-requisitos
Este curso asume que usted es un buen programador avanzado de Java y que tiene conocimientos avanzados de algoritmos, de diseño orientado a objetos, de Scrum y conocimiento básico de patrones de software. Además, asume que usted tiene conocimientos de git, github, maven y JUnit.
¿Qué espero que pueda hacer en Java?
Es necesario que usted sea diestro en el manejo de Java. Un conocimiento introductorio de Java y de la máquina virtual podría causarle problemas en el curso. Usted debe por lo menos conocer lo siguiente:
Competencias
Al finalizar este curso el estudiante podrá:
Herramientas que aprenderá a manejar bien
Forma de evaluación
El curso no tiene parciales. La evaluación se realizará por medio de los talleres y su trabajo final. Los trabajos son TODOS individuales. La evaluación del curso se realiza de la siguiente manera:
Talleres |
40% |
Asistencia y tiempo y calidad de codificación |
20% |
Proyecto Final |
40% |
TOTAL |
100% |
Para medir la “Asistencia y tiempo y calidad de codificación” se tendrá en cuenta la asistencia a las sesiones y los laboratorios así como la dedicación de talleres y al proyecto final que se realizará sobre la estadísticas y métricas de Github, así como la calidad de sus entregables.
Calendario
Semana |
Día |
Clase |
Laboratorio |
Sesión adicional |
Entregable |
1 |
mar 2/06/20 |
Introducción al curso, al diseño de software, al código como diseño, agile architecture, y a la arquitectura de software. Entrega enunciado del proyecto del curso. Clean Code. |
Introducción a Git, a GitHub, a Maven |
|
Tarea 1. Ejercicios de Autoevaluación para entrega inmediata |
|
jue 4/06/20 |
OO Design & Clean Code |
OO Design |
|
Taller 2 |
2 |
mar 9/06/20 |
Patrones de Diseño básicos. Historias de Usuario y Diagramas de Clase |
Networking |
|
Tarea de Networking. Incorpora Circleci |
|
jue 11/06/20 |
Patrones de Diseño Avanzados Diagramas de secuencia |
Concurrencia |
Primer Avance deproyecto |
Tarea de Concurrencia. |
3 |
mar 16/06/20 |
Patrones de diseño Avanzados |
Concurrencia |
|
Tarea de Concurrencia |
|
jue 18/06/20 |
Pruebas de software |
Pruebas |
|
Tarea de pruebas. |
4 |
mar 23/06/20 |
Introducción a las arquitecturas distribuidas, máquinas virtuales, IoC, servidores de aplicaciones y arquitectura Web. Servicios REST |
Introducción a Spring y Heroku |
|
Tarea de aplicación Web |
|
jue 25/06/20 |
Introducción a HTML y Javascript |
Introducción a HTML y Javascript |
Segundo Avance de proyecto |
Tarea de página Web dinámica |
5 |
mar 30/06/20 |
Frameworks para el desarrollo de frontends web |
Introducción a Reactjs |
|
Tarea de aplicación web con React |
|
jue 2/07/20 |
Web sockets. Mensajería y procesamiento en tiempo REAL |
Uso de STOMP |
Tercer avance de Proyecto |
|
6 |
mar 7/07/20 |
Aplicación de 12 factores |
|
|
|
|
jue 9/07/20 |
Revisión de código |
|
|
|
7 |
mar 14/07/20 |
Revisión de código |
|
|
|
|
jue 16/07/20 |
Entrega y sustentación final |
|
|
Proyecto Final |
Bibliografía
[1] Schildt, Herbert. Java: The Complete Reference, Eleventh Edition (p. i). McGraw-Hill Education. Edición de Kindle.
[2] Rod Johnson et all. Spring Framework Documentation. Version 5.2.6.RELEASE
2020. Pivotal Inc. Saw online on 30-05-2020 at: https://docs.spring.io/spring/docs/current/spring-framework-reference/
[3] Jakarta EE Platform Team. Jakarta EE Platform. Akarta EE. https://projects.eclipse.org/projects/ee4j.jakartaee-platform8. August 26, 2019