Está en la página 1de 51

Curso: Arquitectura e Integración de Sistemas

Software
• Unidad 1: Fundamentos de Arquitecturas de
Software
• Tema:
oIntroducción al diseño y la arquitectura de
software
• Ciclo: IV
• Semestre 2022-2
Logro de aprendizaje
Al finalizar la sesión, el/la estudiante describe los fundamentos de la
arquitectura de software y los tipos de arquitectura a través de actividades
prácticas.

Icono: descargado de Flaticon y atribuido a Freepik


Conocimientos previos

¿Sabes qué es la arquitectura de software?


¿Por qué será importante?

5 minutos
Temario
Tipos de
Arquitectura
Arquitectura
de Software
de Software

Actividad
Práctica
Video https://www.youtube.com/watch?v=Fe73xCOdPOc
Arquitectura de Software
Rol delArquitectode Software: etapa de análisis
y diseño

Fuente: https://www.simplichique.com.br/
Ingeniero de Software: etapa de implementación

Fuente: https://www.simplichique.com.br/
Arquitectura de Software

Especificación de Requerimientos del sistema (SRS)

En este camino hay mucho por


hacer.
¿Comenzamos a programar
para terminar lo antes posible?
¿Cuáles serían los riesgos?

Sistema instalado y funcionando


10
Arquitectura de Software
Especificación de Requerimientos del sistema (SRS)

-Arquitectura de Software
-Diseño detallado
No es un
proceso en -Implementación
cascada. No se -Verificación
está definiendo
un proceso.

Sistema instalado y funcionando


11
Arquitectura de Software

Los sistemas complejos están compuestos de subsistemas


que interactúan bajo el control de un diseño de sistema

Arquitectura de Software
• Los subsistemas que componen el sistema,
• las interfaces y
• las reglas de interacción entre ellos.

12
¿Qué es la Arquitectura de Software?

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Niveles de Abstracción de Arquitectura de
Software

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Definición

A software architecture for a system is the structure or structures of the


system, which consist of elements, their externally visible properties, and
the relationships among them.

Documenting software architectures, views and beyond

Una arquitectura de software para un sistema es la estructura o estructuras


del sistema, la cual consiste en elementos, sus propiedades visibles
externamente, y las relaciones entre ellos.

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.

15
Importancia

Ventajas de diseñar y documentar explícitamente una arquitectura de


software:
• Comunicación entre stakeholders

• Decisiones tempranas de diseño

• Reuso a gran escala

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.

16
¿Qué afecta y qué la determina?

• La arquitectura de software afecta la


• Performance
• Seguridad (security y safety)
• Disponibilidad
• Mantenibilidad
•…

• Entonces, el estilo y estructura particular elegido para una aplicación


dependen fuertemente de los requerimientos no funcionales.

17
Conflictos entre Soluciones

• El sistema debe tener “muy” buena performance (tiempos de respuesta) y


“muy” mantenible.

• ¿Cuál es el conflicto al momento de elegir el estilo arquitectónico?

• ¿Cómo se puede solucionar?


• Solución de compromiso.
• Diferentes estilos para distintas partes del sistema.

18
¿Qué tan fácil es modificarla?

• Sears
EEUU
527 metros
• Petronas
Malasia
452 metros
• Taipei 101
China
508 metros

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.

19
¿Qué tan fácil es modificarla?

“Me gustaría que el ascensor


quedara del otro lado”.

“Estaría bárbaro que el puente


estuviera 23 pisos más arriba, la
vista sería mejor”.

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.

20
¿Qué tan fácil es modificarla?
Burj Dubai, otros metros más arriba, Emiratos Árabes

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.

21
Aún más complicado

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.

22
Arquitecturas Desordenadas vs Ordenadas

Fuente: https://www.simplichique.com.br/
¿Qué es una mala arquitectura?

• Compleja
• Incoherente
• Rígida
• Frágil
• No se puedeProbar
• No mantenible

Fuente: https://www.simplichique.com.br/
¿Qué es una buena arquitectura?

• Simple
• Comprensible
• Flexible
• Emergente
• Se puedeProbar
• Mantenible
¿Qué es una arquitectura clara?

La arquitectura está diseñada


para los usuarios no para los
arquitectos …o las máquinas.
¿Qué es una arquitectura clara?

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


¿Por qué invertir en una buena arquitectura?

• Costo / Beneficio
• Minimizar el Costo
• Maximizar el valor
• Maximizar el Retorno
¿Por qué invertir en una buena arquitectura?

• Enfocada en lo esencial
• Construida para lo necesario
• Optimizada para ser mantenible
Decisiones

• El contexto es el rey.
• Son consensuadas
• Están alineadas con el negocio.
• Usa el mejor juicio.

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Tipos de Arquitectura de
Software
Centrado en el dominio

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Centrado en el dominio

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Clásico 3 Capas - Centrado en la Base Datos

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Centrado en la Base Datos vs Centrado en el
Dominio

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Principal preocupación

Laprincipal preocupaciónde los arquitectos es asegurar que la casa sea


utilizable, y no que sea hecha con ladrillos.
Esencial vs Detallista

Espacio es esencial
Usabilidad es esencial

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Esencial vs Detallista

Espacio es esencial.
Usabilidad es esencial.
El Material de Construcción es un
detalle.
La ornamentación es un detalle.

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Esencial vs Detallista

El dominio es esencial
Los casos de uso son esenciales

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Esencial vs Detallista

El dominio es esencial.
Los casos de uso son esenciales.
La presentación es un detalle.
La persistencia es un detalle.

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Arquitectura Hexagonal
Arquitectura Onion
ArquitecturaClara o Clean
Todo al mismo tiempo
¿Por qué usar una arquitectura centrada en
el dominio?

Pros Cons

Cambios sondifíciles
Enfocada en eldominio

Bajoacoplamiento Requiere másideas

Permite el diseño dirigidopor


dominio Alto costo alinicio

Fuente: Bass, et al, Software Architecture in Practice 2ed.Addison-Wesley.


Actividad práctica
(Por equipos)
En base al video “Arquitectura de Software – Entrevista a Alejandro
Bianchi”, resuelva las siguientes actividades:
1. Mencione tres diferencias entre Arquitectura de Software
y Arquitectura Empresarial
2. Indique 3 Beneficios de aplicar Arquitectura de Software
con buenas prácticas.
3. Indique 3 características de una arquitectura intencional y
3 características de una arquitectura accidental.
Conclusiones

✓ ¿Qué hemos aprendido?


✓ ¿Cómo utilizamos lo aprendido?
✓ ¿Qué concluimos?
Bibliografía

✓ Cervantes, H. (2018). Arquitectura de Software Conceptos y ciclo de


Desarrollo. Cengage Learning.
✓ Martin, R. (2018). Arquitectura limpia: Guía para especialistas en la
estructura y el diseño de software. Nota: Disponible en biblioteca
UPAL.
✓ Durango, A. & Arias, A. (2014). Ingeniería y Arquitectura de Software.

Créditos:

Autor: Equipo de mentores


Fecha: Julio 2022​
Facultad de Ingeniería de Software
Universidad Privada Peruano Alemana

También podría gustarte