SlideShare una empresa de Scribd logo
1 de 45
Desacoplar la lógica de negocio del framework
Sobre mí
Manel López Torrent
Ingeniero en informática
Web Developer
@mloptor
malotor@gmail.com
www.develclub.es
mmm.. algo sobre
negocios
¿Tienes idea de
qué va la peli?
#project_wishlist
Mantenibilidad
Escalabilidad
Fiabilidad
Objetos del negocio
Objetos o entidades abstractas que conforman un
sistema del mundo real.
UniversidadPeriódico
Profesor
Alumno Asignatura
DepartamentoEditor
Periodista
Noticia
Anuncio
Objetos del negocio
Reglas de negocio
Las reglas de negocio son aquellas que nos dicen cómo
debe comportarse un sistema del mundo real.
Definen las relaciones , procesos y restricciones entre
los objetos del dominio.
Reglas de negocio
Modelo del dominio
Objetos del dominio
+
Relaciones
Lógica de negocio
La parte de nuestro software que
codifica las reglas de negocio y
mantiene el modelo del dominio
Lógica de negocio
Lógica de
negocio
Modelo - Vista - Controlador
Vista
Petición
Datos
Controlador
Modelo
Modelo - Vista - Controlador
Vista
Petición
Datos
Controlador
Aplica las
reglas de
negocio
Modelo
Modelo - Vista - Controlador
Vista
Petición
Datos
Controlador
Aplica las
reglas de
negocio
Modelo
Persistencia
de datos
Modelo - Vista - Controlador
Vista
Petición
Datos
Controlador
Aplica las
reglas de
negocio
Modelo
Persistencia
de datos
Respuesta
Modelo - Vista - Controlador
Vista
Petición
Datos
Controlador
Aplica las
reglas de
negocio
Modelo
Persistencia
de datos
Respuesta
Lógica de
negocio
Problema MVC
Alto nivel de acoplamiento
Difícil testeo
No SRP
Acceso HTTP
Hi! I'm your
controller
¿Solución?
Controlador
Lógica de
negocio
?
Arquitectura hexagonal
Arquitectura de software
Alistair CockBurn
AKA “Ports and adapters”
Lógica de
negocio
Framework
Puertos / Adaptadores
Adaptadores
Puertos
Puertos / Adaptadores
Puertos / Adaptadores
Puertos / Adaptadores
Puertos / Adaptadores
Factorías
Aislan los objetos del dominio
Capas y fronteras
Capa Infraestructura Aplicación Dominio
Responsabilidad Input/Output
Persistencia
Modela casos de
uso
Modelo de dominio
Elementos Frameworks Interfaces
Repositorios
Factorías
Orquestadores
Entidades
Objetos valor
Eventos de dominio
YOU SHALL
NOT PASS!!!!
Fronteras
Ventajas
Lógica
de
negocio
Agnóstica
Ventajas
Lógica
de
negocio
Fácil testeo
Ventajas
Lógica
de
negocio
Cambios aislados
+ refactoring
- deuda técnica
Ventajas
Adaptadores
intercambiables
Ventajas
Independiente
Dispositivos
Conclusión
+ Escalabilidad
+ Mantenibilidad
+ fiabilidad
+ Complejidad
- Rapidez
Shopping Cart
1. CLIENTE Quiero ver un listado de productos para elegir lo que quiero comprar
2. CLIENTE Quiero ser capaz de elegir el producto que quiero comprar y añadirlo a mi cesta de la
compra
a. Si un producto está ya en la cesta incrementaremos la cantidad
3. CLIENTE Quiero ser capaz de eliminar productos de mi cesta si he cambiado de opinión
4. CLIENTE Quero poder ver el coste total de todos los productos de mi cesta en todo momento.
5. CLIENTE Quiero que se guarde mi cesta de la compra por si quiero pensarmelo mejor
SHOW ME
THE
CODE!!!
Shopping Cart
Shopping Cart Business Logic
https://github.com/malotor/shoppingcart
Symfony 2
https://github.com/malotor/cupon_shoppingcart
ShoppingCartBundle
https://github.com/malotor/ShoppingCartBundle
Referencias
http://alistair.cockburn.us/Hexagonal+architecture
http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-
architecture.html
http://culttt.com/2014/12/31/hexagonal-architecture/
http://userscape.com/laracon/2014/chrisfidao.html
http://fideloper.com/hexagonal-architecture
http://www.slideshare.net/carlosbuenosvinos/hexagonal-
architecture-php-barcelona
Preguntas
There are no
dumb
questions
#ff @David_Baltha @circun4
@josedrac @helenatxu
@Raymond7 thx por el feedback
Gracias a todos

Más contenido relacionado

La actualidad más candente

PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
brobelo
 
Instrucciones Transact S Q L
Instrucciones Transact  S Q LInstrucciones Transact  S Q L
Instrucciones Transact S Q L
Olaya Molina
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
ayreonmx
 

La actualidad más candente (20)

Clase 10 Estructuras De Datos Y Arreglos
Clase 10 Estructuras De Datos Y ArreglosClase 10 Estructuras De Datos Y Arreglos
Clase 10 Estructuras De Datos Y Arreglos
 
SQL
SQLSQL
SQL
 
5. stored procedure and functions
5. stored procedure and functions5. stored procedure and functions
5. stored procedure and functions
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
 
Python unit 3 m.sc cs
Python unit 3 m.sc csPython unit 3 m.sc cs
Python unit 3 m.sc cs
 
SQL avanzado
SQL avanzadoSQL avanzado
SQL avanzado
 
Sql Functions And Procedures
Sql Functions And ProceduresSql Functions And Procedures
Sql Functions And Procedures
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Modelo de requerimientos
Modelo de requerimientosModelo de requerimientos
Modelo de requerimientos
 
Plsql y paquetes
Plsql y paquetesPlsql y paquetes
Plsql y paquetes
 
Instrucciones Transact S Q L
Instrucciones Transact  S Q LInstrucciones Transact  S Q L
Instrucciones Transact S Q L
 
Arreglos en Java
Arreglos en JavaArreglos en Java
Arreglos en Java
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Estructura de registros
Estructura de registrosEstructura de registros
Estructura de registros
 
Array vs array list
Array vs array listArray vs array list
Array vs array list
 
Store procedures
Store proceduresStore procedures
Store procedures
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
colecciones en java
colecciones en javacolecciones en java
colecciones en java
 
8.Clases y objetos Java
8.Clases y objetos Java8.Clases y objetos Java
8.Clases y objetos Java
 
Practicas prolog2011 listas
Practicas prolog2011 listasPracticas prolog2011 listas
Practicas prolog2011 listas
 

Similar a Desacoplar la lógica de negocio del framework

Similar a Desacoplar la lógica de negocio del framework (20)

Oracle SOA Suite
Oracle SOA SuiteOracle SOA Suite
Oracle SOA Suite
 
Presentación Sebastian Rojas | Walmart - eCommerce IT Camp
Presentación Sebastian Rojas | Walmart - eCommerce IT CampPresentación Sebastian Rojas | Walmart - eCommerce IT Camp
Presentación Sebastian Rojas | Walmart - eCommerce IT Camp
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
Anteproyecto salazar bolivar
Anteproyecto salazar bolivarAnteproyecto salazar bolivar
Anteproyecto salazar bolivar
 
Joomla
JoomlaJoomla
Joomla
 
Disenando Sistemas empleando el modelo de capas en desarrollo de software
Disenando Sistemas empleando el modelo de capas en desarrollo de softwareDisenando Sistemas empleando el modelo de capas en desarrollo de software
Disenando Sistemas empleando el modelo de capas en desarrollo de software
 
UBERCART UTVT E4
UBERCART UTVT E4UBERCART UTVT E4
UBERCART UTVT E4
 
Salesforce Bilbao Elevate '15 - 4th developer workshop
Salesforce Bilbao Elevate '15 - 4th developer workshopSalesforce Bilbao Elevate '15 - 4th developer workshop
Salesforce Bilbao Elevate '15 - 4th developer workshop
 
PROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTA
PROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTAPROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTA
PROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTA
 
11. corticon
11. corticon11. corticon
11. corticon
 
Erp
ErpErp
Erp
 
Interoperabilidad SOA ESB BRE CEP y BPM
Interoperabilidad SOA ESB BRE CEP y BPMInteroperabilidad SOA ESB BRE CEP y BPM
Interoperabilidad SOA ESB BRE CEP y BPM
 
Presentacion programacion avanzada
Presentacion programacion avanzadaPresentacion programacion avanzada
Presentacion programacion avanzada
 
Testing de Aplicaciones Móviles, Públicas, Masivas y Críticas
Testing de Aplicaciones Móviles, Públicas, Masivas y CríticasTesting de Aplicaciones Móviles, Públicas, Masivas y Críticas
Testing de Aplicaciones Móviles, Públicas, Masivas y Críticas
 
Diapositivas de Ventas e Inventario.pptx
Diapositivas de Ventas e Inventario.pptxDiapositivas de Ventas e Inventario.pptx
Diapositivas de Ventas e Inventario.pptx
 
Caso de Estudio Floter.com: Congreso SEO Profesional 2016
Caso de Estudio Floter.com: Congreso SEO Profesional 2016Caso de Estudio Floter.com: Congreso SEO Profesional 2016
Caso de Estudio Floter.com: Congreso SEO Profesional 2016
 
Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO
Recuperación de Información sobre Modelos de Dominio - Presentación JAIIORecuperación de Información sobre Modelos de Dominio - Presentación JAIIO
Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO
 
Openbravo, ERP per a pimes
Openbravo, ERP per a pimesOpenbravo, ERP per a pimes
Openbravo, ERP per a pimes
 
Tecnitek Presentacion Corporativa
Tecnitek Presentacion CorporativaTecnitek Presentacion Corporativa
Tecnitek Presentacion Corporativa
 

Último

Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdf
GuillermoBarquero7
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx
EncomiendasElSherpa
 

Último (6)

ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
 
Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdf
 
Trabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaTrabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - Ofimática
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Caso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralCaso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business Central
 

Desacoplar la lógica de negocio del framework