ELECTIVA I
Arquitectura de Software
2022
DAVID ENRIQUE FERNANDEZ PEREZ
CELULAR 3008086695
E-MAIL [email protected]
Riohacha
Unidad 3. Diseño de la arquitectura
• Principios de diseño
• Estilos arquitectónicos
• Metodología de diseño arquitectónico
• Antipatrones arquitectónicos
• Patrones arquitectónicos
• Modelamiento y esquemas
Unidad 3. Diseño de la arquitectura
Definición arquitectura de software
Una arquitectura de software describe los componentes básicos
de un sistema de software y su combinación interna.
Arquitectura de software en el proceso de desarrollo
En el marco del desarrollo de software, la arquitectura de
software representa la decisión de diseño más temprana. Es
determinada básicamente por criterios de calidad como la
modificabilidad, mantenibilidad, seguridad y el rendimiento.
Una arquitectura de software una vez establecida es
modificable más tarde solo con gran esfuerzo. La decisión
acerca de su diseño es por eso uno de los puntos más críticos e
importantes en el proceso de desarrollo de un software.
Unidad 3. Diseño de la arquitectura de Software
Definición diseño de software
Diseño de software es el proceso de diseño para la
planificación de una solución de software. Este proceso es, por
regla general, necesario para que los programadores puedan
manejar la complejidad que la mayoría de los programas
informáticos poseen y para disminuir el riesgo de desarrollos
erróneos.
Unidad 3. Diseño de la arquitectura de Software
Definición Ingeniería de requerimientos
Generalmente, cliente y contratista analizan primero los
requerimientos que resultan, desde el punto de vista del cliente,
para el software a diseñar. En este contexto, el cliente prepara
el así llamado pliego de condiciones.
Unidad 3. Diseño de la arquitectura de Software
Estilos arquitectónicos
Conjunto de principios que definen a alto nivel un aspecto de
la aplicación.
Los principales aspectos son: Comunicación, despliegue,
dominio, interacción, relación y estructura. Lo normal en una
arquitectura es no basarse en un solo estilo arquitectural, sino
que combine varios para obtener las ventajas existentes de
cada uno.
Unidad 3. Diseño de la arquitectura de Software
Estilos arquitectónicos
Cliente/Servidor: Define una relación entre dos aplicaciones
en las cuales una de ellas (cliente) envía peticiones a la otra
(servidor y fuente de datos).
Basado en componentes: Conjunto de componentes que
exponen interfaces bien definidas y que colaboran entre sí
para resolver el problema. Diseñado de forma que puedan ser
reutilizados en distintos escenarios en distintas aplicaciones
aunque algunos componentes son diseñados para tareas
específicas.
Unidad 3. Diseño de la arquitectura de Software
Estilos arquitectónicos
Arquitectura en capas (N-Layer): Distribución jerárquica de
los roles y las responsabilidades para proporcionar una
división afectiva de los problemas a resolver. Los roles indican
el tipo y forma de interacción con otras capas y las
responsabilidades la funcionalidad que implementan
Presentación desacoplada: Indica cómo debe realizarse el
manejo de las acciones del usuario, la manipulación de la
interfaz y los datos de la aplicación. Separación de
componentes de la interfaz del flujo de datos y de la
manipulación.
Unidad 3. Diseño de la arquitectura de Software
Estilos arquitectónicos
Arquitectura en capas (N-Tier): Conceptualmente igual que la
arquitectura en capas (n-layer), aunque se define la
separación de la funcionalidad en segmentos físicos separados
(Tier). Normalmente la separación física se realiza en
servidores diferenciados por razones de escalabilidad,
seguridad, o simplemente necesidad.
Arquitectura Orientada al Dominio (DDD): Orientado para
diseñar e implementar aplicaciones empresariales complejas
donde es fundamental definir un Modelo de Dominio
expresado en el propio lenguaje de los expertos del dominio
de negocio real (llamado Lenguaje Ubicuo).
Unidad 3. Diseño de la arquitectura de Software
Estilos arquitectónicos
Orientado a Objetos (OO): Conjunto de objetos que cooperan
entre sí en lugar de cómo un conjunto de procedimientos. Los
objetos son discretos, independientes y poco acoplados, se
comunican mediante interfaces y permiten enviar y recibir
peticiones.
Bus de Servicios(Mensajes): Define un sistema de software
que puede enviar y recibir mensajes usando uno o más
canales de forma que las aplicaciones pueden interactuar sin
conocer detalles específicos la una de la otra. Interacción
entre aplicaciones a través del paso de mensajes por un canal
de comunicación común (bus). Se implementa a menudo
usando un sistema de mensajes como MSMQ.
Unidad 3. Diseño de la arquitectura de Software
Estilos arquitectónicos
Orientado a Objetos (OO): Conjunto de objetos que cooperan
entre sí en lugar de cómo un conjunto de procedimientos. Los
objetos son discretos, independientes y poco acoplados, se
comunican mediante interfaces y permiten enviar y recibir
peticiones.
Bus de Servicios(Mensajes): Define un sistema de software
que puede enviar y recibir mensajes usando uno o más
canales de forma que las aplicaciones pueden interactuar sin
conocer detalles específicos la una de la otra. Interacción
entre aplicaciones a través del paso de mensajes por un canal
de comunicación común (bus). Se implementa a menudo
usando un sistema de mensajes como MSMQ.
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Los patrones de software son formas de capturar estructuras de diseño de
probada eficacia, para que puedan ser reutilizadas. Los arquitectos de software
han estado buscando formas de capturar y reutilizar el conocimiento
arquitectónico que han probado ser exitosos en el pasado.
Más específicamente, un patrón arquitectónico es un paquete de decisiones de
diseño que se encuentra repetidamente en la práctica, tiene propiedades bien
definidas que pueden ser reutilizadas y describe una clase de arquitecturas.
El desarrollo de una arquitectura de software puede ser visto como un proceso
de selección, adaptación y combinación de patrones. El arquitecto de software
debe decidir cómo instanciar un patrón, cómo hacerlo encajar en el contexto
específico y las limitaciones del problema.
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
El patrón arquitectónico Microkernel también se conoce como un
patrón arquitectónico enchufable. Se utiliza típicamente cuando los
equipos de software crean sistemas con componentes
intercambiables.
Se aplica a los sistemas de software que deben ser capaces de
adaptarse a los requisitos cambiantes del sistema. Separa un núcleo
funcional mínimo de la funcionalidad ampliada y de las partes
específicas del cliente. También sirve de enchufe para conectar estas
extensiones y coordinar su colaboración.
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Ventajas del diseño basado en el patrón de software Microkernel:
•Gran flexibilidad y extensibilidad
•Algunas implementaciones web permiten añadir plugins mientras la aplicación se está
ejecutando
•Buena portabilidad
•Facilidad de despliegue
•Respuesta rápida a un entorno en constante cambio que implica un entorno empresarial
•Los módulos enchufables pueden probarse de forma aislada y pueden ser fácilmente
burlados por el sistema central para demostrar o hacer un prototipo de una característica
particular con poco o ningún cambio en el sistema central.
•Alto rendimiento ya que puede personalizar y racionalizar las aplicaciones para incluir
sólo las características que necesita.
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Casos de uso del modelo de patrón Microkernel:
1.Aplicaciones que toman datos de diferentes fuentes, los transforman y los escriben a
diferentes destinos
2.Aplicaciones de flujo de trabajo
3.Solicitudes de programación de tareas y trabajos
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Patrón de Arquitectura Microservicios
Cuando escribes tu solicitud como un conjunto de microservicios, en realidad estás
escribiendo múltiples solicitudes que funcionarán juntas. Cada microservicio tiene su
propia responsabilidad y los equipos pueden desarrollarlos independientemente de otros
microservicios. La única dependencia entre ellos es la comunicación. A medida que los
microservicios se comunican entre sí, tendrás que asegurarte de que los mensajes
enviados entre ellos sean compatibles con los anteriores.
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Ventajas del modelo de Software de Microservicios
•Puedes escribir, mantener y desplegar cada microservicio por separado
•Fácil de escalar, ya que sólo se pueden escalar los microservicios que necesitan ser
escalados
•Es más fácil reescribir las piezas de la aplicación porque son más pequeñas y menos
acopladas a otras partes
•Los nuevos miembros del equipo deben ser rápidamente productivos
•La aplicación debe ser fácil de entender y modificar
•Altamente mantenible y comprobable – permite un desarrollo y despliegue rápido y
frecuente
•Desplegable de forma independiente – permite a un equipo desplegar su servicio sin
tener que coordinar con otros equipos
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Casos de uso de este modelo de Software de Microservicios
•Sitios web con pequeños componentes
•Centros de datos corporativos con límites bien definidos
•El rápido desarrollo de nuevos negocios y aplicaciones web
•Los equipos de desarrollo que se extienden, a menudo por todo el mundo
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Patrón de arquitectura de software en capas
El patrón de software más común es el patrón arquitectónico en capas. Los patrones de
arquitectura en capas son patrones de n niveles donde los componentes están organizados en
capas horizontales. Este es el método tradicional para diseñar la mayoría de los programas
informáticos y está destinado a ser auto-independiente. Esto significa que todos los
componentes están interconectados pero no dependen unos de otros. Cada capa del patrón de
arquitectura en capas tiene un papel y una responsabilidad específicos dentro de la aplicación.
Por ejemplo, una capa de presentación se encargaría de manejar toda la interfaz de usuario y la
lógica de comunicación del navegador, mientras que una capa empresarial se encargaría de
ejecutar las reglas empresariales específicas asociadas a la solicitud.
Una de las características poderosas del patrón de arquitectura en capas es la separación de las
preocupaciones entre los componentes. Los componentes dentro de una capa específica se
ocupan sólo de la lógica que pertenece a esa capa
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Ventajas del modelo d software basado en capa
•Alta comprobabilidad porque los componentes pertenecen a capas específicas de la
arquitectura, otras capas pueden ser burladas o desviadas, haciendo que este patrón sea
relativamente fácil de comprobar..
•Alta facilidad de desarrollo porque este patrón es muy conocido y no es excesivamente
complejo de implementar, además la mayoría de las empresas desarrollan aplicaciones
separando conjuntos de habilidades por capas, este patrón se convierte en una elección natural
para la mayoría de los desarrollos de aplicaciones empresariales.
•Mantenible.
•Fácil de asignar «roles» separados.
•Fácil de actualizar y mejorar las capas por separado.
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Casos de uso del patrón de software que se basa en las capas
•Aplicaciones estándar de línea de negocios que hacen más que sólo operaciones CRUD
•Nuevas aplicaciones que necesitan ser construidas rápidamente
•Equipos de desarrolladores inexpertos que aún no entienden otras arquitecturas
•Aplicaciones que requieren normas estrictas de mantenimiento y comprobabilidad
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Tipo de patrón Event-based pattern
Esta es la arquitectura asíncrona distribuida más común utilizada para desarrollar un sistema
altamente escalable. La arquitectura consiste en componentes de procesamiento de eventos de
un solo propósito que escuchan los eventos y los procesan asincrónicamente. La arquitectura
impulsada por eventos construye una unidad central que acepta todos los datos y luego los
delega a los módulos separados que manejan el tipo particular.
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Ventajas del diseño de software basado en el modelo Event-Based
•Son fácilmente adaptables a entornos complejos, a menudo caóticos.
•Escala fácilmente.
•Son fácilmente ampliables cuando aparecen nuevos tipos de eventos.
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Casos de uso del modelo de diseño de software basado en el patrón Event-based
•Sistemas asíncronos con flujo de datos asíncronos.
•Interfaces de usuario
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Patrón de software basado en el espacio
El patrón de arquitectura basada en el espacio está diseñado específicamente para abordar y
resolver problemas de escalabilidad y concurrencia. También es un patrón de arquitectura útil
para las aplicaciones que tienen volúmenes de usuarios concurrentes variables e impredecibles.
La alta escalabilidad se logra eliminando la restricción de la base de datos central y utilizando
en su lugar cuadrículas de datos replicados en memoria.
La arquitectura basada en el espacio está diseñada para evitar el colapso funcional bajo una
gran carga al dividir tanto el procesamiento como el almacenamiento entre múltiples un
servidor y otro.
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Ventajas del modelo basado en el espacio
•Responde rápidamente a un entorno en constante cambio.
•Aunque las arquitecturas basadas en el espacio no suelen estar desacopladas y distribuidas,
son dinámicas, y las sofisticadas herramientas basadas en la nube permiten «empujar»
fácilmente las aplicaciones a los servidores, simplificando su despliegue.
•Se logra un alto rendimiento en el servidor gracias al acceso a los datos en memoria y a los
mecanismos de almacenamiento en caché incorporados en esta pauta.
•La elevada escalabilidad se debe a que se depende poco o nada de una base de datos
centralizada, con lo que se elimina esencialmente este cuello de botella limitante de la
ecuación de la escalabilidad en un servidor.
Unidad 3. Diseño de la arquitectura de Software
Patrones arquitectónicos
Casos de uso del diseño de software basado en el patrón espacio
•Datos de gran volumen como flujos de clicks y registros de usuarios
•Datos de bajo valor que pueden perderse ocasionalmente sin grandes consecuencias
•Redes sociales