Arquitectura de software

Dr, Alfredo de Jesús Gutiérrez Gómez

Contenido

1.  Piense en el nombre de un animal que inicie con la primera letra de su nombre.

2. Este no deberá repetirse.

3. Al presentarse deberá completar la siguiente frase: Mi nombre es: _______ y he venido sobre un/a: _______ a la escuela desde _____

4. Dar respuesta a las preguntas:

4.1  ¿Porqué estudio está carrera?

4.2  ¿Qué me ha gustado de la carrera hasta ahora?

Presentación

  • Unidad I: Fundamentos de Arquitectura de software
  • Unidad 2: Modelado de Arquitectura de software
  • Unidad 3: Patrones de diseño

Temas

  • Introducción a las arquitecturas de software
  • Framework de las arquitecturas de software
  • Estilos de arquitectura de software

Unidad I: Fundamentos de Arquitectura de Software

  • Modelos y lenguajes de descripción de arquitectura
  • Diagramas y herramientas de diseño arquitectónico de software

Unidad II: Modelado de Arquitectura de software

  • Introducción a los patrones de diseño
  • Patrones de diseño GoF
  • Patrones de diseño emergentes

Unidad III: Patrones de diseño

  • Teléfono móvil en modo silencio.
  • Las llamadas urgentes /prio se contestan fuera del salón.
  • Turnos de una sola persona para ir al WC.
  • Dos faltas a la semana sin justificante perderían derecho a las cuestiones de aprendizaje.
  • Levantar la mano para participar.
  • Respetar la participación de cada alumno.
  • No hay retardos

Políticas de clase

  • Mantenerse informado acerca de las lecturas, actividades y tareas del curso asistiendo por lo menos dos veces por semana, durante la duración del curso.
  • Cumplir dentro del aula virtual con todas las tareas, foros y actividades detalladas por el programa académico y el profesor, en el tiempo y forma establecidos.
  • El incumplimiento de las tareas en tiempo y forma llevarán a una no aprobación del curso

Lineamiento de clase

  • Realizar el seguimiento personal desde el Aula Virtual.
  • Estar pendiente de los resultados de las evaluación/es parcial/es y final/es.
  • Notificar al tutor por escrito, con copia a la coordinación académica, si, por alguna razón excepcional, se encontrara en una circunstancia especial que le impidiera continuar con el curso y recibir así indicaciones de cómo proceder a partir de ese momento.

Lineamiento de clase

  • Cuestionario de aprendizaje
  • Caso de estudio

Descripción de las actividades

Unidad I

Fundamentos de arquitectura de software

  • Cuestionario de aprendizaje
  • Caso de estudio

Descripción de las actividades

Unidad II

Modelado de arquitectura de software

  • Cuestionario de aprendizaje
  • Caso de estudio

Descripción de las actividades

Unidad III

Patrones de diseño

Instrucciones

  • En una hoja escribe la respuesta a las siguientes preguntas
  1.     ¿Qué esperas que se enseñe en este curso?
  2.     ¿A qué te comprometes en este curso?
  3.     ¿Qué deseas aprender en este curso?

Actividad de encuadre

Instrucciones

  1. Una vez contestadas las preguntas pulsa aquí para unirte al grupo
  2. Toma una foto de las respuestas.
  3. En la sección de tareas busca la que dice: "actividad de encuadre" ahí sube la foto que tomaste.

Actividad de encuadre

Recomendaciónpara la entrega de trabajos / actividades

Recomendaciones

  • Portada
  • Presentación
  • Introducción
  • Conclusión

Trabajo

  • Mayores a tres líneas
  • Menores a ocho líneas
  • Coherencia entre párrafos

Párrafos

  • Acentuación.
  • Evitar redundancia.
  • Pleonasmos.
  • Mínimo tres errores.

Ortografía - Gramática

  • Al menos tres citas dentro del trabajo.
  • En formato APA 7ma edición.

Referencia bibliográfica

Recomendaciones

  • Fuente Arial.
  • Tamaño de título: 14 puntos.
  • Tamaño de texto: 12 puntos.
  • Interlineado 1.5
  • Alineación justificada del texto.
  • Los títulos alineados a la izquierda.
  • En el encabezado del documento colocar el logotipo del instituto alineado a la derecha. Nombre de la carrera a la izquierda.

Formato del trabajo

Recomendaciones

  • Hacerlos en día.
  • Exportarlos a jpg / png

Diagramas

  • Colocarlos en github.
  • En el documento a entregar, colocar el enlace al código.

Códigos fuentes

  • Colocarle al pie de la tabla un nombre a la tabla, bajo el siguiente formato:  <nombre_tabla numero consecutivo>. <nombre_tabla> <fuente:> <donde_fue_tomada> .
  • Colocar un párrafo descriptivo

Tablas

Recomendaciones

  • Al menos tres párrafos.

Introducción - conclusión

  • Al menos tres fuentes de diversos autores.
  • Con sangría francesa al inicio de cuatro espacios.
  • Fuente Times New Roman.
  • 12 puntos.
  • Sin enlaces activos.

Lista de referencias bibliográficas

Recomendaciones

  • Colocarle al pie de la imagen / diagrama / gráfica un nombre, bajo el siguiente formato:  <nombre_objeto numero consecutivo>. <nombre_objeto> <fuente:> <donde_fue_tomada> .
  • Colocar un párrafo donde se describa la imagen / diagrama / gráfica

Imágenes / diagramas / gráficas

¿Dudas?

Comentarios

Unidad I

Fundamentos de arquitectura de software

  • Es la estructura fundamental de un sistema, compuesta por sus componentes, las relaciones entre ellos y los principios y guías que gobiernan su diseño y evolución.
  • Define cómo se organizan y comunican los diferentes módulos o elementos para cumplir los requisitos del sistema, incluyendo sus atributos de calidad.

¿Qué es la Arq. de software?

Según la IEEE: 

La descripción de las partes esenciales de un sistema y sus relaciones, junto con los principios que guían su diseño y evolución

¿Qué es la Arq. de software?

Componentes

Arq. software > Elementos Claves

Partes funcionales del sistema que procesan datos o realizan tareas específicas.

Conectores

Mecanismos que permiten la comunicación e interacción entre componentes (como APIs, mensajes, o sockets).

Configuración

La disposición específica de los componentes y conectores para formar el sistema.

Estilos y Patrones

Arq. software > Elementos Claves

Soluciones reutilizables que proporcionan guías para diseñar arquitecturas.

Calidad del Software

Consideraciones como rendimiento, escalabilidad, y mantenibilidad.

Vistas de Arquitectura

Diferentes perspectivas como la vista lógica, física, y de despliegue.

Modularidad

Arq. software > Principios de diseño

División del sistema en componentes independientes para facilitar el mantenimiento y la evolución.

Encapsulamiento

Ocultar la implementación interna de los componentes para reducir el acoplamiento.

Cohesión

Los componentes deben tener una única responsabilidad clara.

Separación de responsabilidades

Arq. software > Principios de diseño

Asignar funciones específicas a diferentes módulos para mejorar la organización.

Bajo acoplamiento

Reducir las dependencias entre componentes para mejorar la flexibilidad.

Arq. software > Actividad de aprendizaje

  1. Pulsa aquí o escanea el qr.
  2. Resuelve 

Instrucciones

Arq. software > Actividad de aprendizaje

  1. Pulsa aquí o escanea el qr.
  2. Resuelve 

Instrucciones

Arq. software > Ejemplos de arq. de software

Utilizada en aplicaciones web donde las capas separan las funciones de presentación, lógica de negocio y datos.

Arquitectura en Capas

 Una de las más conocidas, donde un servidor centralizado proporciona servicios a múltiples clientes.

Arquitectura Cliente-Servidor

 Cada servicio es independiente y se comunica mediante interfaces ligeras, ideal para sistemas escalables y flexibles.

Arquitectura de Microservicios

Arq. software > Actividad de aprendizaje

Instrucciones

  1. Google Frexus
  2. Selecciona la opción Generando valor agregado.
  3. Pulsa en el menú Academia.
  4. Busca el nombre de la materia y has clic en el.
  5. Busca el recurso con el nombre de:Puente.
  6. Leelo y resuelve las preguntas

Arq. software > Framework de arq

Es un conjunto estandarizado de prácticas, principios, y herramientas que ayudan a diseñar, implementar y gestionar la estructura tecnológica de una solución o sistema.

Estos frameworks proporcionan un enfoque sistemático para resolver problemas complejos de diseño de software, sistemas empresariales o arquitecturas de tecnología de la información.

Arq. software > Framework de arq

  • Estandarizar la creación de soluciones tecnológicas.
  • Alinear las soluciones con los objetivos estratégicos de una organización.
  • Mejorar la eficiencia y la reusabilidad de componentes.

Arq. software > Framework de arq

Seguimiento de estándares internacionales como TOGAF, ISO 42010, y Zachman.

Aspectos Claves

Escalabilidad

Capacidad de crecer o adaptarse a mayores cargas de trabajo.

Interoperabilidad

Habilidad para integrarse con otros sistemas o componentes.

Modularidad

División en componentes independientes que pueden ser reemplazados o actualizados sin afectar al sistema entero.

Estándares / Normativas

Arq. software > Framework de arq

Ejemplos de Framework

TOGAF

(The Open Group Architecture Framework). Es uno de los frameworks más populares para arquitectura empresarial, proporcionando un método detallado y probado para desarrollar arquitecturas a gran escala.

Zachman Framework

Un enfoque más estructurado que define diferentes perspectivas de los interesados en la arquitectura.

Arq. software > Framework de arq

Ejemplos de Framework

ARCADIA

Un framework desarrollado para sistemas complejos basado en ingeniería de modelos.

FEAF

(Federal Enterprise Architecture Framework). Utilizado por el gobierno de EE. UU. para gestionar la arquitectura de sistemas.

Arq. software > Framework de arq

Software

Archimate (Archi)

Herramienta de modelado que soporta el lenguaje de modelado ArchiMate.

Modelio

Plataforma de modelado basada en UML y BPMN con soporte para arquitecturas TOGAF

Arq. software > Framework de arq

Software

Essential Project

Software de arquitectura empresarial open-source.

Draw.io (ahora Diagrams.net)

Aplicación para crear diagramas de flujo y diagramas de arquitectura.

Arq. software > Framework de arq

Software

Git

Sistema de control de versiones que permite gestionar proyectos arquitectónicos colaborativamente.

Arq. software > Framework de arq

Software

Pulsa aquí o scanea el qr

Arq. software > Estilos de arq.

Software

  • Son patrones o soluciones generales que definen cómo los componentes de un sistema interactúan entre sí.
  • Estos estilos ofrecen un marco conceptual para diseñar sistemas de software, permitiendo que los desarrolladores se enfoquen en la funcionalidad, rendimiento, mantenimiento y escalabilidad del sistema.

Arq. software > Estilos de arq.

Principales

Apache HTTP Server, MySQL.

Cliente - Servidor

Descripción

Un modelo donde un cliente solicita servicios a un servidor, que los proporciona.

Ejemplo

Aplicaciones web como Gmail.

Software Open Source

Arq. software > Estilos de arq.

Principales

Django (framework de Python), Spring (Java).

Capas (Layered Architecture)

Descripción

Divide el sistema en capas jerárquicas, donde cada capa tiene una responsabilidad específica.

Ejemplo

Aplicaciones web con capas de presentación, lógica de negocio y datos.

Software Open Source

Arq. software > Estilos de arq.

Principales

Kubernetes, Docker, Spring Boot.

Arquitectura en Microservicios

Descripción

Consiste en pequeños servicios independientes que trabajan juntos.

Ejemplo

Netflix utiliza microservicios para sus múltiples funcionalidades.

Software Open Source

Arq. software > Estilos de arq.

Principales

 Kafka, RabbitMQ.

Arquitectura Orientada a Eventos

Descripción

Basado en la producción y consumo de eventos entre componentes.

Ejemplo

Sistemas de monitoreo como Prometheus

Software Open Source

Arq. software > Estilos de arq.

Principales

Apache Camel, OSGi.

Arquitectura basada en Componentes

Descripción

El sistema se organiza como un conjunto de componentes reutilizables.

Ejemplo

IDEs como Eclipse.

Software Open Source

Arq. software > Estilos de arq.

Principales

Logstash, ETL tools.

Pipe and Filter

Descripción

Los datos fluyen a través de una secuencia de filtros, cada uno con una función específica.

Ejemplo

Compiladores

Software Open Source

Arq. software > Estilos de arq.

Principales

Flask, Express.js.

Arquitectura REST (Representational State Transfer)

Descripción

Un estilo para sistemas distribuidos que utiliza HTTP para intercambiar datos.

Ejemplo

APIs RESTful.

Software Open Source

Arq. software > Estilos de arq.

Actividad de aprendizaje

  • Googlea Frexus.
  • Selecciona la opción: Generando Valor Agregado.
  • Ve a la sección de academia.
  • Busca el nombre de la materia y has clic en ella
  • En la sección de recursos lee el que tiene el nombre de: La evolución.

Unidad II

Modelado de arquitecturas de software

  • Es el proceso de diseñar y representar visualmente la estructura de un sistema software, definiendo sus componentes, interacciones y principios fundamentales.
  • El objetivo es facilitar la comprensión, comunicación y evolución del software.

Modelado de arquitecturas de software 

para equipos de desarrollo y mantenimiento.

Modelado de arquitecturas de software 

Importancia

Visualización clara

Del sistema antes de su implementación.

Facilita la toma de decisiones

Sobre tecnologías y estructura.

 Detecta problemas

Antes del desarrollo

Sirve como documentación

Representa la distribución en hardware y servidores

Modelado de arquitecturas de software 

modelo 4+1 de Kruchten

Vista Lógica

Define módulos y relaciones (usada para diagramas de clases en UML).

Vista de Desarrollo

Muestra la organización del código en módulos y paquetes.

Vista de Procesos

Define la concurrencia, comunicación y sincronización.

Vista Física

Explican cómo interactúan los usuarios con el sistema.

Casos de Uso

Modelado de arquitecturas de software 

Diagramas UML (Unified Modeling Language)

Diagrama de Componentes

Representa los módulos y sus dependencias.

Diagrama de Clases

Muestra la estructura de datos y relaciones.

Diagrama de Despliegue

Esquematiza la distribución del sistema en hardware

Modelado de arquitecturas de software 

Diagramas UML (Unified Modeling Language)

Diagrama de Componentes

Representa los módulos y sus dependencias.

Diagrama de Clases

Muestra la estructura de datos y relaciones.

Diagrama de Despliegue

Esquematiza la distribución del sistema en hardware

Modelado de arquitecturas de software 

Vista Lógica (Diagrama de Clases - UML)

Modelado de arquitecturas de software 

Vista de Desarrollo (Diagrama de Componentes - UML)

Modelado de arquitecturas de software 

Vista de Procesos (Diagrama de Secuencia - UML)

Modelado de arquitecturas de software 

Vista Física (Diagrama de Despliegue - UML)

Modelado de arquitecturas de software 

Vista de Casos de Uso (Diagrama de Casos de Uso - UML)

Modelado de arquitecturas de software 

Actividad de Aprendizaje

  • Googlea Frexus.
  • Selecciona la opción: Generando Valor Agregado.
  • Ve a la sección de academia.
  • Busca el nombre de la materia y has clic en ella
  • En la sección de recursos lee el que tiene el nombre de: Modelando.

Modelado de arquitecturas de software 

Actividad de Reforzamiento

Pulsa aquí o escanea el qr

Arquitectura de Software

By Alfredo de Jesús Gutiérrez Gómez

Arquitectura de Software

Presentación utilizada para la materia de Arquitectura de Software

  • 219