SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Introducción a las
arquitecturas limpias
Karla A. Fonseca Márquez
karlafm@unam.mx
Septiembre 2021
La arquitectura de software de
un sistema es el conjunto de
estructuras necesarias para
razonar acerca del sistema
• Elementos de software
• Relaciones entre ellos
• Propiedades de ambos.
UNO DE LOS PROPÓSITOS DE LA ARQUITECTURA DE SOFTWARE ES
SOPORTAR EL CICLO DE VIDA DEL SISTEMA
Mantenimiento del sistema
Despliegue del sistema
Casos de uso
Operación del sistema
Desarrollo del sistema
ATRIBUTOS
DE CALIDAD
Casos de uso
Atributos de calidad
Restricciones
Arquitecto
Decisiones
de diseño
ARQUITECTURA DE SOFTWARE
Mantenimiento correctivo
Modificaciones o actualizaciones
que corrigen un defecto
Mantenimiento perfectivo
Modificaciones a características
existentes que incrementarán la
funcionalidad y eficiencia
Mantenimiento adaptativo
Mantener el software vigente en
relación con tecnologías y
negocio cambiantes
Mantenimiento preventivo
Cambios realizados al software
para prevenir futuros problemas
The Cost of Poor Software Quality in the US: A 2018 Report, Consortium for IT Software Quality (CISQ)
https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report/The-Cost-of-Poor-Quality-Software-in-the-US-2018-Report.pdf
MANTENIMIENTO DE SOFTWARE
ESTIMACIÓN DEL COSTO DE MANTENIMIENTO
Costo hasta su liberación
Costo del mantenimiento
1 1.5x
40% 60%
1 9x
10% 90%
% Costo total del software
ATRIBUTOS DE CALIDAD QUE AFECTAN EL COSTO DE MANTENIMIENTO
Modificabilidad Capacidad de ser probado
UNA MALA ARQUITECTURA GENERA SISTEMAS:
Complejos
Incoherentes
Rígidos
Frágiles
Difíciles de probar
No mantenibles
¿CÓMO LIMITAR LA COMPLEJIDAD?
• Separación de intereses
• Reducir el acoplamiento
• Incrementar la cohesión
• Reducir el tamaño de módulos
• Inyección de dependencias
• Patrones arquitectónicos
• Patrones de diseño
ARQUITECTURA EN CAPAS
• Los componentes se organizan en capas
horizontales.
• Cada capa tiene un rol y responsabilidad
específicos dentro de la aplicación.
• Uno de los grandes beneficios de este patrón
arquitectónico es la separación de intereses
Usuarios
Presentación
Negocio
Acceso a datos
BD
Dependencia
DISEÑO CENTRADO EN LA BASE DE DATOS
Usuarios
Presentación
Negocio
Acceso a datos
BD
BD
Presentación
Negocio
Acceso a datos
Dependencia
¿QUÉ ES LO MÁS IMPORTANTE DEL SOFTWARE?
El problema o negocio que
intentamos resolver
Los casos de uso
Las reglas de negocio
El manejador de la base de
datos
La interfaz de usuario
El framework que se elija
(ESTOS SON DETALLES)
ARQUITECTURA CENTRADA EN EL DOMINIO
Presentación
Negocio
Acceso a datos
Presentación
Negocio
Acceso a datos
Dependencia
Arquitecturas
limpias
Son propuestas que
plantean un conjunto
de prácticas que se
utilizan para generar
arquitecturas de
software
Simple
Comprensible
Flexible
Emergente
Fácil de probar
Fácil de mantener
ARQUITECTURAS LIMPIAS
Con las arquitecturas limpias es posible generar sistemas de software que tengan
las siguientes caracterísiticas
• Independiente de marcos de trabajo o frameworks.
La arquitectura no depende de la existencia de una librería o funciones específicas. Esto permite utilizar dichos
marcos como herramientas, sin necesidad de incluir el sistema en su estructura.
• Fácil de probar.
Las reglas de negocio se pueden probar sin la interfaz de usuario, la base de datos, el servidor web o cualquier
otro elemento externo.
• Independiente de la interfaz de usuario.
Esta puede cambiar fácilmente, sin modificar el resto del sistema. Por ejemplo, una interfaz de usuario web
podría reemplazarse por una interfaz de usuario de consola, sin cambiar las reglas de negocio.
• Independiente de la base de datos.
Puede cambiar Oracle o SQL Server por Mongo, BigTable, CouchDB u otra. Las reglas de negocio no se
encuentran vinculadas a la base de datos.
• Independiente de cualquier librería externa.
Al igual que con los marcos de trabajo, es posible utilizar librerías externas, las cuales pueden intercambiarse
por otras sin afectar la funcionalidad del sistema.
1992
2004
2005
2008
2012
Boundary Control Entity
Ivar Jacobson, lo introduce en su
libro “Object Oriented Software
Engineering: A use case driven”
Domain Driven Design
Eric Evans, autor de “Domain-
Driven Design - Tackling
Complexity in the Heart of
Software”
Hexagonal architecture
Alistair Cockburn, a esta arquitectura
también se le conoce como
“Puertos y adaptadores”.
Onion architecture
Jeffrey Palermo
Clean arquitecture
Robert Martin, autor de los
libros “Clean code” y
“Clean arquitecture”
ARQUITECTURA HEXAGONAL O “PUERTOS Y ADAPTADORES”
https://alistair.cockburn.us/hexagonal-architecture/
“Crea tu aplicación para trabajar sin una interfaz de
usuario o una base de datos para que puedas
ejecutar pruebas de regresión automatizadas, trabajar
cuando la base de datos no esté disponible.”
“Los problemas tanto del lado del usuario como del
lado del servidor son causados por el mismo error de
diseño y programación - la mezcla entre la lógica de
negocio y la interacción con entidades externas”
La regla a seguir es que el código del interior no
debe filtrarse a la parte exterior.
https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/
ONION ARCHITECTURE
La aplicación se construye alrededor de un modelo de
objetos independiente.
Las capas internas definen interfaces.
Las capas externas implementan interfaces.
La dirección de acoplamiento es hacia el centro.
Todo el código central de la aplicación puede ser
compilado y ejecutado separado de la infraestructura.
CLEAN ARCHITECTURE
Enterprise business rules
Application business rules
Interface adapters
Frameworks & Drivers
<<interface>>
UserRepository
<<interface>>
Repository
UserMySQL
Repository
UserMongoDB
Repository
CreateUser
User
Role
CreateUser
Request
CreateUser
Response
<<interface>>
CreateUser
<<interface>>
CreateUser
Presenter
CreateUser
Presenter
User
Controller
CreateUser
ViewModel
CreateUser
View
ARQUITECTURAS CENTRADAS EN EL DOMINIO
https://blog.ploeh.dk/2013/12/03/layers-onions-ports-adapters-its-all-the-same/
DESVENTAJAS
• Excesivo para aplicaciones pequeñas.
• Muchas interfaces
• Costo de desarrollo más elevado
• Requiere un diseño más intencional
• Pueden perderse ciertas optimizaciones
VENTAJAS
• Enfoque en el dominio.
• Menos acoplamiento, dirigido fuera
del dominio.
• Compatible con un diseño guiado
por el dominio
• La interfaz de usuario, librerías
externas y persistencia de datos se
pueden intercambiar por otra
implementación.
• Promueve la generación de código
que es fácil de probar.
CONCLUSIONES
• El énfasis al diseñar la arquitectura debe dirigirse a lograr una
implementación exitosa y mantenible de los requerimientos de
negocio y de operación.
• La arquitectura de software no son las herramientas y
frameworks.
• El arquitecto debe maximizar la cantidad de decisiones no
tomadas
• El reto es lograr que el sistema sea fácil de cambiar, en todas
las maneras en que deba cambiar, dejando las opciones
abiertas.
REFERENCIAS (LIBROS)
REFERENCIAS (PÁGINAS WEB)
• Hexagonal architechture, Alistair Cockburn
https://alistair.cockburn.us/hexagonal-architecture/
• The onion architecture, Jeffrey Palermo
https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/
• Clean architecture, Robert Martin
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
• “Dependency Inversion Principle”, Robert Martin
http://www.objectmentor.com/resources/articles/dip.pdf
• “Dependency Injection’’ pattern por Martin Fowler
http://www.martinfowler.com/articles/injection.html
• “The Software Architecture Chronicles”
https://herbertograca.com/2017/07/03/the-software-architecture-chronicles/
REFERENCIAS (VIDEOS)
• Eric Evans (2016). Tackling Complexity in the Heart of Software.
https://www.youtube.com/watch?v=dnUFEg68ESM
• Robert Martin (2014). Clean architecture
https://www.youtube.com/watch?v=Nltqi7ODZTM
• Alistair Cockburn. “Hexagone”, 3 partes:
https://www.youtube.com/watch?v=th4AgBcrEHA
https://www.youtube.com/watch?v=iALcE8BPs94
https://www.youtube.com/watch?v=DAe0Bmcyt-4
Karla A. Fonseca Márquez
karlafm@unam.mx

Más contenido relacionado

Similar a Introduccion a las Arquitecturas Limpias

Similar a Introduccion a las Arquitecturas Limpias (20)

Modelos de procesos de software(completo)
Modelos de procesos de software(completo)Modelos de procesos de software(completo)
Modelos de procesos de software(completo)
 
Metodo watch y lps
Metodo watch y lpsMetodo watch y lps
Metodo watch y lps
 
Metodo watch y lps
Metodo watch y lpsMetodo watch y lps
Metodo watch y lps
 
Fundamentos de ingenieria del software (2)
Fundamentos de ingenieria del software (2)Fundamentos de ingenieria del software (2)
Fundamentos de ingenieria del software (2)
 
Watch, lps
Watch, lpsWatch, lps
Watch, lps
 
Clase7
Clase7Clase7
Clase7
 
Clase7 unidad1
Clase7 unidad1Clase7 unidad1
Clase7 unidad1
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de software
 
Sistemao
SistemaoSistemao
Sistemao
 
Watch, lps
Watch, lpsWatch, lps
Watch, lps
 
SistemaoPERATIVOS
SistemaoPERATIVOSSistemaoPERATIVOS
SistemaoPERATIVOS
 
Nuevas tecnologías reingsys 31_3_09
Nuevas tecnologías reingsys 31_3_09Nuevas tecnologías reingsys 31_3_09
Nuevas tecnologías reingsys 31_3_09
 
Watch, lps
Watch, lpsWatch, lps
Watch, lps
 
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCHLINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
 
Lineas de productos de software y metodo watch
Lineas de productos de software y metodo watchLineas de productos de software y metodo watch
Lineas de productos de software y metodo watch
 
Diapositiva2
Diapositiva2Diapositiva2
Diapositiva2
 
José Rincón
José RincónJosé Rincón
José Rincón
 
Sistemao
SistemaoSistemao
Sistemao
 
Sistemao
SistemaoSistemao
Sistemao
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 

Último

clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxSergioGJimenezMorean
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVSebastianPaez47
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónXimenaFallaLecca1
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfDiegoMadrigal21
 
Rendimiento-de-Maquinaria y precios unitarios para la construcción de una ma...
Rendimiento-de-Maquinaria y precios unitarios  para la construcción de una ma...Rendimiento-de-Maquinaria y precios unitarios  para la construcción de una ma...
Rendimiento-de-Maquinaria y precios unitarios para la construcción de una ma...RichardRivas28
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilDissneredwinPaivahua
 

Último (20)

clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcción
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdf
 
Rendimiento-de-Maquinaria y precios unitarios para la construcción de una ma...
Rendimiento-de-Maquinaria y precios unitarios  para la construcción de una ma...Rendimiento-de-Maquinaria y precios unitarios  para la construcción de una ma...
Rendimiento-de-Maquinaria y precios unitarios para la construcción de una ma...
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civil
 

Introduccion a las Arquitecturas Limpias

  • 1. Introducción a las arquitecturas limpias Karla A. Fonseca Márquez karlafm@unam.mx Septiembre 2021
  • 2. La arquitectura de software de un sistema es el conjunto de estructuras necesarias para razonar acerca del sistema • Elementos de software • Relaciones entre ellos • Propiedades de ambos.
  • 3. UNO DE LOS PROPÓSITOS DE LA ARQUITECTURA DE SOFTWARE ES SOPORTAR EL CICLO DE VIDA DEL SISTEMA Mantenimiento del sistema Despliegue del sistema Casos de uso Operación del sistema Desarrollo del sistema ATRIBUTOS DE CALIDAD
  • 4. Casos de uso Atributos de calidad Restricciones Arquitecto Decisiones de diseño ARQUITECTURA DE SOFTWARE
  • 5.
  • 6. Mantenimiento correctivo Modificaciones o actualizaciones que corrigen un defecto Mantenimiento perfectivo Modificaciones a características existentes que incrementarán la funcionalidad y eficiencia Mantenimiento adaptativo Mantener el software vigente en relación con tecnologías y negocio cambiantes Mantenimiento preventivo Cambios realizados al software para prevenir futuros problemas The Cost of Poor Software Quality in the US: A 2018 Report, Consortium for IT Software Quality (CISQ) https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report/The-Cost-of-Poor-Quality-Software-in-the-US-2018-Report.pdf MANTENIMIENTO DE SOFTWARE
  • 7. ESTIMACIÓN DEL COSTO DE MANTENIMIENTO Costo hasta su liberación Costo del mantenimiento 1 1.5x 40% 60% 1 9x 10% 90% % Costo total del software
  • 8. ATRIBUTOS DE CALIDAD QUE AFECTAN EL COSTO DE MANTENIMIENTO Modificabilidad Capacidad de ser probado
  • 9. UNA MALA ARQUITECTURA GENERA SISTEMAS: Complejos Incoherentes Rígidos Frágiles Difíciles de probar No mantenibles
  • 10. ¿CÓMO LIMITAR LA COMPLEJIDAD? • Separación de intereses • Reducir el acoplamiento • Incrementar la cohesión • Reducir el tamaño de módulos • Inyección de dependencias • Patrones arquitectónicos • Patrones de diseño
  • 11. ARQUITECTURA EN CAPAS • Los componentes se organizan en capas horizontales. • Cada capa tiene un rol y responsabilidad específicos dentro de la aplicación. • Uno de los grandes beneficios de este patrón arquitectónico es la separación de intereses Usuarios Presentación Negocio Acceso a datos BD Dependencia
  • 12. DISEÑO CENTRADO EN LA BASE DE DATOS Usuarios Presentación Negocio Acceso a datos BD BD Presentación Negocio Acceso a datos Dependencia
  • 13. ¿QUÉ ES LO MÁS IMPORTANTE DEL SOFTWARE? El problema o negocio que intentamos resolver Los casos de uso Las reglas de negocio El manejador de la base de datos La interfaz de usuario El framework que se elija (ESTOS SON DETALLES)
  • 14. ARQUITECTURA CENTRADA EN EL DOMINIO Presentación Negocio Acceso a datos Presentación Negocio Acceso a datos Dependencia
  • 16. Son propuestas que plantean un conjunto de prácticas que se utilizan para generar arquitecturas de software Simple Comprensible Flexible Emergente Fácil de probar Fácil de mantener ARQUITECTURAS LIMPIAS
  • 17. Con las arquitecturas limpias es posible generar sistemas de software que tengan las siguientes caracterísiticas • Independiente de marcos de trabajo o frameworks. La arquitectura no depende de la existencia de una librería o funciones específicas. Esto permite utilizar dichos marcos como herramientas, sin necesidad de incluir el sistema en su estructura. • Fácil de probar. Las reglas de negocio se pueden probar sin la interfaz de usuario, la base de datos, el servidor web o cualquier otro elemento externo. • Independiente de la interfaz de usuario. Esta puede cambiar fácilmente, sin modificar el resto del sistema. Por ejemplo, una interfaz de usuario web podría reemplazarse por una interfaz de usuario de consola, sin cambiar las reglas de negocio. • Independiente de la base de datos. Puede cambiar Oracle o SQL Server por Mongo, BigTable, CouchDB u otra. Las reglas de negocio no se encuentran vinculadas a la base de datos. • Independiente de cualquier librería externa. Al igual que con los marcos de trabajo, es posible utilizar librerías externas, las cuales pueden intercambiarse por otras sin afectar la funcionalidad del sistema.
  • 18. 1992 2004 2005 2008 2012 Boundary Control Entity Ivar Jacobson, lo introduce en su libro “Object Oriented Software Engineering: A use case driven” Domain Driven Design Eric Evans, autor de “Domain- Driven Design - Tackling Complexity in the Heart of Software” Hexagonal architecture Alistair Cockburn, a esta arquitectura también se le conoce como “Puertos y adaptadores”. Onion architecture Jeffrey Palermo Clean arquitecture Robert Martin, autor de los libros “Clean code” y “Clean arquitecture”
  • 19. ARQUITECTURA HEXAGONAL O “PUERTOS Y ADAPTADORES” https://alistair.cockburn.us/hexagonal-architecture/ “Crea tu aplicación para trabajar sin una interfaz de usuario o una base de datos para que puedas ejecutar pruebas de regresión automatizadas, trabajar cuando la base de datos no esté disponible.” “Los problemas tanto del lado del usuario como del lado del servidor son causados por el mismo error de diseño y programación - la mezcla entre la lógica de negocio y la interacción con entidades externas” La regla a seguir es que el código del interior no debe filtrarse a la parte exterior.
  • 20. https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/ ONION ARCHITECTURE La aplicación se construye alrededor de un modelo de objetos independiente. Las capas internas definen interfaces. Las capas externas implementan interfaces. La dirección de acoplamiento es hacia el centro. Todo el código central de la aplicación puede ser compilado y ejecutado separado de la infraestructura.
  • 21. CLEAN ARCHITECTURE Enterprise business rules Application business rules Interface adapters Frameworks & Drivers
  • 22.
  • 24. ARQUITECTURAS CENTRADAS EN EL DOMINIO https://blog.ploeh.dk/2013/12/03/layers-onions-ports-adapters-its-all-the-same/
  • 25. DESVENTAJAS • Excesivo para aplicaciones pequeñas. • Muchas interfaces • Costo de desarrollo más elevado • Requiere un diseño más intencional • Pueden perderse ciertas optimizaciones VENTAJAS • Enfoque en el dominio. • Menos acoplamiento, dirigido fuera del dominio. • Compatible con un diseño guiado por el dominio • La interfaz de usuario, librerías externas y persistencia de datos se pueden intercambiar por otra implementación. • Promueve la generación de código que es fácil de probar.
  • 26. CONCLUSIONES • El énfasis al diseñar la arquitectura debe dirigirse a lograr una implementación exitosa y mantenible de los requerimientos de negocio y de operación. • La arquitectura de software no son las herramientas y frameworks. • El arquitecto debe maximizar la cantidad de decisiones no tomadas • El reto es lograr que el sistema sea fácil de cambiar, en todas las maneras en que deba cambiar, dejando las opciones abiertas.
  • 28. REFERENCIAS (PÁGINAS WEB) • Hexagonal architechture, Alistair Cockburn https://alistair.cockburn.us/hexagonal-architecture/ • The onion architecture, Jeffrey Palermo https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/ • Clean architecture, Robert Martin https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html • “Dependency Inversion Principle”, Robert Martin http://www.objectmentor.com/resources/articles/dip.pdf • “Dependency Injection’’ pattern por Martin Fowler http://www.martinfowler.com/articles/injection.html • “The Software Architecture Chronicles” https://herbertograca.com/2017/07/03/the-software-architecture-chronicles/
  • 29. REFERENCIAS (VIDEOS) • Eric Evans (2016). Tackling Complexity in the Heart of Software. https://www.youtube.com/watch?v=dnUFEg68ESM • Robert Martin (2014). Clean architecture https://www.youtube.com/watch?v=Nltqi7ODZTM • Alistair Cockburn. “Hexagone”, 3 partes: https://www.youtube.com/watch?v=th4AgBcrEHA https://www.youtube.com/watch?v=iALcE8BPs94 https://www.youtube.com/watch?v=DAe0Bmcyt-4
  • 30. Karla A. Fonseca Márquez karlafm@unam.mx