SlideShare una empresa de Scribd logo
1 de 31
Joan Sebastián Ramírez Pérez
AGENDA
Conceptos
Arquitectura común
Arquitectura Limpia
Bibliografía
AGENDA
Conceptos
Arquitectura común
Arquitectura Limpia
Bibliografía
ARQUITECTURA
• Hace referencia a las decisiones de alto nivel, no tiene en cuenta los detalles de
bajo nivel.
• El objetivo es minimizar las personas requeridas para la mantenibilidad del
software.
DISEÑO
• Hace referencia a las decisiones de bajo nivel y estructuras.
• Su finalidad el cumplimiento de la funcionalidad.
Principios de diseño
• SOLID:
• Single Responsability Principle
• Open Close Principle
• Liskov Substitution Principle
• Interface Segregation Principle
• Dependency Inversión Principle
Principios de
componentes
The reuse/ Release Equivalent
Principle (REP)
The Common Closure Principle
(CCP)
The Common Reuse Principle
(CRP)
The reuse/ Release Equivalent Principle - REP
• La unidad de reuso es la unidad del release. El reuso efectivo deberá monitorear
un Sistema de control de reuso.
• El paquete (package) es la unidad de reuso y release.
• Para hacer efectivo el reuso deberemos incluir en nuestro Código el release de la
librería en nuesro código.
The Common Closure Principle - CCP
• Dentro de los componentes las clases deberían cambiar por las mismas razones y
en los mismos momentos.
• Deben separarse del componente aquellas clases que cambien en diferentes
momentos y por diferentes razones.
The Common Reuse Principle - CRP
• “Don’t forcé users of a component to depend on things they don’t need” Robert
Marin, Clean Architecture: A Crasftsman’s guide to Software Structure and Design
• Las clases y módulos que tienden a ser reusados deberían tender a ser reusados
juntos en el mismo componente.
CQRS PATTERN
• Command Query Responsibility Segregation.
• En modelos complejos se puede usar un
modelo diferente para actualizar (command)
la información que le usado para leerla
(query).
• https://martinfowler.com/bliki/CQRS.html
AGENDA
Conceptos
Arquitectura común
Arquitectura Limpia
Bibliografía
PRESENTATION DOMAIN DATA LAYERING
https://martinfowler.com/bliki/PresentationDomainDataLayering.html
AGENDA
Conceptos
Arquitectura común
Arquitectura Limpia
Bibliografía
Arquitecturas similares
Hexagonal
Architecture
• Alistair Cockburn.
• Adoptada por Steve
Freeman, and Nat Pryce
DCI
• James Coplien yTrygve Reenskaug.
• Data, Context, and Interaction.
• Data: representa el modelo con sus relaciones.
• Context: la instancia de la clase para un rol en una funcionalidad.
• Interaction: lo que el Sistema hace.
BCE
• Ivar Jacobson
• Entity Control Boundary
• Relacionado a crear componentes desacoplados sigiend el Open Close Principle,
Dependency Inversión e Interface Segregation.
Arquitectura
limpia
¿Qué se busca?
• Independiente de Frameworks
• Testeable
• Independiente de la interfaz de usuario
• Independiente de la base de datos
• Independiente de agentes externos
NO DEPENDER DE DETALLES
WEB FRAMEWORKS BASES DE DATOS
¿En qué consiste?
• Las capas exteriores dependen de las interiores. Bajo ninguna circunstancia lo
contrario.
• Círculos interiores no conocen de los exteriores.
• No dependencias de detalles.
• Tener en cuenta la visibilidad de las clases para que no se viole la arquitectura.
ENTITIES
• Lógica de negocio.
• Acá se incluyen objetos con métodos de negocio y estructuras de datos que
representan el negocio.
• Cambios externos (UI por ejemplo) no deben afectar a estos elementos.
USE CASES
• Contienen las reglas de negocio de la aplicación.
• Dirigen el flujo desde y hacia las entidades. Las entidades usan la lógica de esta
parte para cumplir con la funcionalidad.
• Cambios en esta capa no deben afectar las entidades, tampoco cambios externos-
INTERFACE ADAPTERS
• Presenters, Gatweays, Controllers.
• Acá tendremos los adaptadores encargados de convertir los datos para la las
fuentes externas como base de datos o interfaz de usuario.
• También se incluye la conversion de los datos obtenidos de una fuente externa a
una que sea usada por los casos de uso y entidades.
FRAMEWORKS Y DRIVERS
• Herramientas como base de datos y framework.
• Se escribe el Código necesario para generar adaptación a los círculos interiors.
• Acá van los detalles como Web o bases de datos.
CRUZANDO LA
FRONTERA
• Llamados de capa externa a interna se
hace llamado usando interfaces.
• Las entidades que Cruzan las fronteras
deben ser simples. No deben ser entidades
o filas de base de datos que retorna una
consulta
• Estructuras de datos que tienen cualquier
tipo de dependencia con capas exteriors
viola la Arquitectura Limpia.
Ejemplo:
Vídeo Tienda
AGENDA
Conceptos
Arquitectura común
Arquitectura Limpia
Bibliografía
Bibliografía
• MARTIN, Robert. Clean Architecture: A Craftsman's Guide to
Software Structure and Design. Prentice Hall, 2017.
• KRASNER, G. E., POPE, S. T. (1988). A Description of the Model-
View-Controller User Interface Paradigm in the Smalltalk-80 System.
ParcPlace Systems, Inc.
http://web.archive.org/web/20150117044636/http://www.itu.dk/c
ourses/VOP/E2005/VOP2005E/8_mvc_krasner_and_pope.pdf
• LAW, R. (2015). Clean Swift iOS Architecture for Fixing Massive View
Controller. Clean Swift.
http://clean-swift.com/clean-swift-ios-architecture/
• MARTIN, R. (2011). Screaming Architecture. 8th Light Blog.
http://blog.8thlight.com/uncle-bob/2011/09/30/Screaming-
Architecture.html
• MARTIN, R. (2011). Architecture the Lost Years. Ruby Midwest
2011.
https://www.youtube.com/watch?v=WpkDN78P884
• MARTIN, R. (2012). The Clean Architecture. 8th Light Blog.
https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-
architecture.html
• MARTIN, R. (2012). Clean Architecture. NDC Conferences.
https://vimeo.com/43612849
• PALERMO, J. (2008). The Onion Architecture. Part I. Jeffrey Palermo
Blog.
http://jeffreypalermo.com/blog/the-onion-architecture-part-1/

Más contenido relacionado

La actualidad más candente

Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To MicroservicesLalit Kale
 
Lambda Expressions in Java | Java Lambda Tutorial | Java Certification Traini...
Lambda Expressions in Java | Java Lambda Tutorial | Java Certification Traini...Lambda Expressions in Java | Java Lambda Tutorial | Java Certification Traini...
Lambda Expressions in Java | Java Lambda Tutorial | Java Certification Traini...Edureka!
 
D2 domain driven-design
D2 domain driven-designD2 domain driven-design
D2 domain driven-designArnaud Bouchez
 
Curso Java Inicial 5 Relaciones Entre Objetos
Curso Java Inicial   5 Relaciones Entre ObjetosCurso Java Inicial   5 Relaciones Entre Objetos
Curso Java Inicial 5 Relaciones Entre ObjetosEmilio Aviles Avila
 
1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseñolandeta_p
 
Retrofit library for android
Retrofit library for androidRetrofit library for android
Retrofit library for androidInnovationM
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgeLorran Pegoretti
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetoshector_h30
 
Linux ud7 - gestion de procesos
Linux   ud7 - gestion de procesosLinux   ud7 - gestion de procesos
Linux ud7 - gestion de procesosJavier Muñoz
 
Micro Frontends: Rompiendo el monolito en las aplicaciones Web
Micro Frontends: Rompiendo el monolito en las aplicaciones WebMicro Frontends: Rompiendo el monolito en las aplicaciones Web
Micro Frontends: Rompiendo el monolito en las aplicaciones WebBelatrix Software
 
Las apis como modelo de negocio
Las apis como modelo de negocioLas apis como modelo de negocio
Las apis como modelo de negocioCloudAppi
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 
TypeScript Best Practices
TypeScript Best PracticesTypeScript Best Practices
TypeScript Best Practicesfelixbillon
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareEsteban Espinel
 

La actualidad más candente (20)

Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To Microservices
 
Bancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geralBancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geral
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Lambda Expressions in Java | Java Lambda Tutorial | Java Certification Traini...
Lambda Expressions in Java | Java Lambda Tutorial | Java Certification Traini...Lambda Expressions in Java | Java Lambda Tutorial | Java Certification Traini...
Lambda Expressions in Java | Java Lambda Tutorial | Java Certification Traini...
 
D2 domain driven-design
D2 domain driven-designD2 domain driven-design
D2 domain driven-design
 
Java Generics - by Example
Java Generics - by ExampleJava Generics - by Example
Java Generics - by Example
 
Curso Java Inicial 5 Relaciones Entre Objetos
Curso Java Inicial   5 Relaciones Entre ObjetosCurso Java Inicial   5 Relaciones Entre Objetos
Curso Java Inicial 5 Relaciones Entre Objetos
 
1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Retrofit library for android
Retrofit library for androidRetrofit library for android
Retrofit library for android
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
 
Linux ud7 - gestion de procesos
Linux   ud7 - gestion de procesosLinux   ud7 - gestion de procesos
Linux ud7 - gestion de procesos
 
LINQ in C#
LINQ in C#LINQ in C#
LINQ in C#
 
Diagramas de pacotes
Diagramas de pacotesDiagramas de pacotes
Diagramas de pacotes
 
Micro Frontends: Rompiendo el monolito en las aplicaciones Web
Micro Frontends: Rompiendo el monolito en las aplicaciones WebMicro Frontends: Rompiendo el monolito en las aplicaciones Web
Micro Frontends: Rompiendo el monolito en las aplicaciones Web
 
Las apis como modelo de negocio
Las apis como modelo de negocioLas apis como modelo de negocio
Las apis como modelo de negocio
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
TypeScript Best Practices
TypeScript Best PracticesTypeScript Best Practices
TypeScript Best Practices
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 

Similar a Clean architecture

Introduccion a las Arquitecturas Limpias
Introduccion a las Arquitecturas LimpiasIntroduccion a las Arquitecturas Limpias
Introduccion a las Arquitecturas Limpiassolidussnake07
 
Arquitectura de Software Capitulo 7.pptx
Arquitectura de Software Capitulo 7.pptxArquitectura de Software Capitulo 7.pptx
Arquitectura de Software Capitulo 7.pptxEverestMedinilla3
 
Ingenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de softwareIngenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de softwareJosé Antonio Sandoval Acosta
 
Catalogo de patrones 0
Catalogo de patrones 0Catalogo de patrones 0
Catalogo de patrones 0Fabio Ruiz
 
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTEPRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTECAMILO
 
Análisis y diseño de sistemas sesion 13 - diagrama de componentes y despliegue
Análisis y diseño de sistemas   sesion 13 - diagrama de componentes y despliegueAnálisis y diseño de sistemas   sesion 13 - diagrama de componentes y despliegue
Análisis y diseño de sistemas sesion 13 - diagrama de componentes y despliegueGianfrancoEduardoBra
 
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.EtiCAGNU
 
Presentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CostePresentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CosteCAMILO
 
PROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOSPROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOSCAMILO
 
Proyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoProyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoCAMILO
 
presentacion de software y estimacion de doste
presentacion de software y estimacion de dostepresentacion de software y estimacion de doste
presentacion de software y estimacion de dosteCAMILO
 
Proyecto de Software y Coste
Proyecto de Software y CosteProyecto de Software y Coste
Proyecto de Software y CosteCAMILO
 
Metodo top-down.pptx
Metodo top-down.pptxMetodo top-down.pptx
Metodo top-down.pptxoera28
 
Oracle, Informix
Oracle, InformixOracle, Informix
Oracle, Informixallison tl
 
6 arquitectura desoftware
6 arquitectura desoftware6 arquitectura desoftware
6 arquitectura desoftwaregaston6711
 
Introducción a la Arquitectura de Software
Introducción a la Arquitectura de SoftwareIntroducción a la Arquitectura de Software
Introducción a la Arquitectura de SoftwareGustavo Alzate Sandoval
 

Similar a Clean architecture (20)

Introduccion a las Arquitecturas Limpias
Introduccion a las Arquitecturas LimpiasIntroduccion a las Arquitecturas Limpias
Introduccion a las Arquitecturas Limpias
 
Arquitectura de Software Capitulo 7.pptx
Arquitectura de Software Capitulo 7.pptxArquitectura de Software Capitulo 7.pptx
Arquitectura de Software Capitulo 7.pptx
 
Ingenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de softwareIngenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de software
 
Catalogo de patrones 0
Catalogo de patrones 0Catalogo de patrones 0
Catalogo de patrones 0
 
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTEPRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
 
Análisis y diseño de sistemas sesion 13 - diagrama de componentes y despliegue
Análisis y diseño de sistemas   sesion 13 - diagrama de componentes y despliegueAnálisis y diseño de sistemas   sesion 13 - diagrama de componentes y despliegue
Análisis y diseño de sistemas sesion 13 - diagrama de componentes y despliegue
 
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
 
Presentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CostePresentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de Coste
 
PROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOSPROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOS
 
Proyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoProyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de Costo
 
presentacion de software y estimacion de doste
presentacion de software y estimacion de dostepresentacion de software y estimacion de doste
presentacion de software y estimacion de doste
 
Proyecto de Software y Coste
Proyecto de Software y CosteProyecto de Software y Coste
Proyecto de Software y Coste
 
U7.pdf
U7.pdfU7.pdf
U7.pdf
 
Metodo top-down.pptx
Metodo top-down.pptxMetodo top-down.pptx
Metodo top-down.pptx
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
Oracle, Informix
Oracle, InformixOracle, Informix
Oracle, Informix
 
6 arquitectura desoftware
6 arquitectura desoftware6 arquitectura desoftware
6 arquitectura desoftware
 
Trabajoartemio
TrabajoartemioTrabajoartemio
Trabajoartemio
 
Introducción a la Arquitectura de Software
Introducción a la Arquitectura de SoftwareIntroducción a la Arquitectura de Software
Introducción a la Arquitectura de Software
 
2 modelos de datos
2 modelos de datos2 modelos de datos
2 modelos de datos
 

Más de Joan Sebastián Ramírez Pérez (20)

Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Practicas tecnicas
 
Bddtddatdd
BddtddatddBddtddatdd
Bddtddatdd
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 
Orm
OrmOrm
Orm
 
Servicios web
Servicios webServicios web
Servicios web
 
La nube. Cloud computting
La nube. Cloud computtingLa nube. Cloud computting
La nube. Cloud computting
 
Microservicios
MicroserviciosMicroservicios
Microservicios
 
Control de versiones
Control de versionesControl de versiones
Control de versiones
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Ciclo devida
Ciclo devidaCiclo devida
Ciclo devida
 
Practicas técnicas
Practicas técnicasPracticas técnicas
Practicas técnicas
 
Roles scrum
Roles scrumRoles scrum
Roles scrum
 
Lean startup
Lean startupLean startup
Lean startup
 
Principios SOLID
Principios SOLIDPrincipios SOLID
Principios SOLID
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Modelo diseño
Modelo diseñoModelo diseño
Modelo diseño
 
Roles desarrollo del software
Roles desarrollo del softwareRoles desarrollo del software
Roles desarrollo del software
 
Refactor y deuda técnica
Refactor y deuda técnicaRefactor y deuda técnica
Refactor y deuda técnica
 
Diagramas comportamiento
Diagramas comportamientoDiagramas comportamiento
Diagramas comportamiento
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 

Clean architecture

  • 4. ARQUITECTURA • Hace referencia a las decisiones de alto nivel, no tiene en cuenta los detalles de bajo nivel. • El objetivo es minimizar las personas requeridas para la mantenibilidad del software.
  • 5. DISEÑO • Hace referencia a las decisiones de bajo nivel y estructuras. • Su finalidad el cumplimiento de la funcionalidad.
  • 6. Principios de diseño • SOLID: • Single Responsability Principle • Open Close Principle • Liskov Substitution Principle • Interface Segregation Principle • Dependency Inversión Principle
  • 7. Principios de componentes The reuse/ Release Equivalent Principle (REP) The Common Closure Principle (CCP) The Common Reuse Principle (CRP)
  • 8. The reuse/ Release Equivalent Principle - REP • La unidad de reuso es la unidad del release. El reuso efectivo deberá monitorear un Sistema de control de reuso. • El paquete (package) es la unidad de reuso y release. • Para hacer efectivo el reuso deberemos incluir en nuestro Código el release de la librería en nuesro código.
  • 9. The Common Closure Principle - CCP • Dentro de los componentes las clases deberían cambiar por las mismas razones y en los mismos momentos. • Deben separarse del componente aquellas clases que cambien en diferentes momentos y por diferentes razones.
  • 10. The Common Reuse Principle - CRP • “Don’t forcé users of a component to depend on things they don’t need” Robert Marin, Clean Architecture: A Crasftsman’s guide to Software Structure and Design • Las clases y módulos que tienden a ser reusados deberían tender a ser reusados juntos en el mismo componente.
  • 11. CQRS PATTERN • Command Query Responsibility Segregation. • En modelos complejos se puede usar un modelo diferente para actualizar (command) la información que le usado para leerla (query). • https://martinfowler.com/bliki/CQRS.html
  • 13. PRESENTATION DOMAIN DATA LAYERING https://martinfowler.com/bliki/PresentationDomainDataLayering.html
  • 16. Hexagonal Architecture • Alistair Cockburn. • Adoptada por Steve Freeman, and Nat Pryce
  • 17. DCI • James Coplien yTrygve Reenskaug. • Data, Context, and Interaction. • Data: representa el modelo con sus relaciones. • Context: la instancia de la clase para un rol en una funcionalidad. • Interaction: lo que el Sistema hace.
  • 18. BCE • Ivar Jacobson • Entity Control Boundary • Relacionado a crear componentes desacoplados sigiend el Open Close Principle, Dependency Inversión e Interface Segregation.
  • 20. ¿Qué se busca? • Independiente de Frameworks • Testeable • Independiente de la interfaz de usuario • Independiente de la base de datos • Independiente de agentes externos
  • 21. NO DEPENDER DE DETALLES WEB FRAMEWORKS BASES DE DATOS
  • 22. ¿En qué consiste? • Las capas exteriores dependen de las interiores. Bajo ninguna circunstancia lo contrario. • Círculos interiores no conocen de los exteriores. • No dependencias de detalles. • Tener en cuenta la visibilidad de las clases para que no se viole la arquitectura.
  • 23. ENTITIES • Lógica de negocio. • Acá se incluyen objetos con métodos de negocio y estructuras de datos que representan el negocio. • Cambios externos (UI por ejemplo) no deben afectar a estos elementos.
  • 24. USE CASES • Contienen las reglas de negocio de la aplicación. • Dirigen el flujo desde y hacia las entidades. Las entidades usan la lógica de esta parte para cumplir con la funcionalidad. • Cambios en esta capa no deben afectar las entidades, tampoco cambios externos-
  • 25. INTERFACE ADAPTERS • Presenters, Gatweays, Controllers. • Acá tendremos los adaptadores encargados de convertir los datos para la las fuentes externas como base de datos o interfaz de usuario. • También se incluye la conversion de los datos obtenidos de una fuente externa a una que sea usada por los casos de uso y entidades.
  • 26. FRAMEWORKS Y DRIVERS • Herramientas como base de datos y framework. • Se escribe el Código necesario para generar adaptación a los círculos interiors. • Acá van los detalles como Web o bases de datos.
  • 27. CRUZANDO LA FRONTERA • Llamados de capa externa a interna se hace llamado usando interfaces. • Las entidades que Cruzan las fronteras deben ser simples. No deben ser entidades o filas de base de datos que retorna una consulta • Estructuras de datos que tienen cualquier tipo de dependencia con capas exteriors viola la Arquitectura Limpia.
  • 29.
  • 31. Bibliografía • MARTIN, Robert. Clean Architecture: A Craftsman's Guide to Software Structure and Design. Prentice Hall, 2017. • KRASNER, G. E., POPE, S. T. (1988). A Description of the Model- View-Controller User Interface Paradigm in the Smalltalk-80 System. ParcPlace Systems, Inc. http://web.archive.org/web/20150117044636/http://www.itu.dk/c ourses/VOP/E2005/VOP2005E/8_mvc_krasner_and_pope.pdf • LAW, R. (2015). Clean Swift iOS Architecture for Fixing Massive View Controller. Clean Swift. http://clean-swift.com/clean-swift-ios-architecture/ • MARTIN, R. (2011). Screaming Architecture. 8th Light Blog. http://blog.8thlight.com/uncle-bob/2011/09/30/Screaming- Architecture.html • MARTIN, R. (2011). Architecture the Lost Years. Ruby Midwest 2011. https://www.youtube.com/watch?v=WpkDN78P884 • MARTIN, R. (2012). The Clean Architecture. 8th Light Blog. https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean- architecture.html • MARTIN, R. (2012). Clean Architecture. NDC Conferences. https://vimeo.com/43612849 • PALERMO, J. (2008). The Onion Architecture. Part I. Jeffrey Palermo Blog. http://jeffreypalermo.com/blog/the-onion-architecture-part-1/