Curso de Arquitectura de software

Home

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