SlideShare una empresa de Scribd logo
1 de 85
Descargar para leer sin conexión
Modelando la Lógica de Negocio
Ing. Juan M. Arias
2011
Arquitectura de Proyectos IT
UTN - FRBA
Modelando la Lógica de Negocio
Domain  Model
DDD
Layers
Hexagonal  Arch.
SoC
DSL
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Modelando la Lógica de Negocio
Agenda
> Introducción
> Domain Model
> Domain Driven Design
> Capas
> Alternativas a las Capas
> Mecanismos de Separación
> DSL
> BPM
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Modelando la Lógica de Negocio
Introducción
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Introducción
Algunos tipos de Arquitectura
> Sociales
> Móviles
> Games
> Empresariales
4
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Introducción
¿Qué es la Lógica de Negocio?
– Conceptos de negocio.
– Conjunto de procesos.
– Contiene información de los estados de los procesos de
negocio.
Es  el  Corazón  de  Nuestro  Sistema
5
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Modelando la Lógica de Negocio
Domain  Model
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Domain Model
¿Qué es un Modelo?
– Una visión simplificada de algo complejo utilizado en el
análisis y resolución de problemas.
– Debe tener un propósito.
7
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Domain Model
¿Qué es Domain Model?
– Es un modelo que representa un Dominio de Negocio.
– Debe expresar el Dominio y no los detalles técnicos.
– No es un diagrama UML o un esquema de BD.
– Debe ser relevante tanto para los expertos de dominio
como para el equipo de desarrollo.
8
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Domain Model
Componentes
Abstracción
Tecnología Negocio
Diagrama de
Clases y Secuencia
Unit Test
Código OO
Esquema de
Base de Datos
Diagrama de
Capas
Diagrama de
Deploy
BPM &
Workflow
Data examples
Story test
Prototypes
DSL
Obtenido de
Architecture
Journal Magazine
9
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Domain Model
Diseño - Aislando el Modelo
– Separar el dominio de los demás aspectos
– Evitar el acoplamiento
– Pensar en el cambio, no implica que todo va cambiar
– Las capas no siempre son la solución
El  Dominio  es  el  Core  de  nuestra  aplicación
10
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Domain Model
Principios claves de Diseño
Single Responsability Principle
Open Close Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle
> SOLID
11
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Domain Model
Principios claves de Diseño
> Diseño altamente Cohesivo.
> Código transversal abstraído de la
lógica de la aplicación.
> Separation of Concerns
> DRY (Donʼt Repeat Yourself)
> YAGNI (You Ainʼt Gonna Need It)
12
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Modelando la Lógica de Negocio
DDD
Domain  Driven  Design
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DDD - Domain Driven Design
¿Qué es DDD?
– ¿Podemos construir software complejo sin conocer el dominio?
– ¿Quién conoce el negocio? ¿El Arquitecto? ¿El Desarrollador?
– Necesitamos crear una Abstracción del Dominio.
– Modelo OO que refleja el conocimiento de un Dominio.
14
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DDD - Domain Driven Design
El Problema de la Comunicación
Quiero  que  se  puedan  
cambiar  las  reglas  de  
las  políFcas  para  
disFntos  clientes
Podemos  usar  
un  Strategy Podemos  
usar  IoC
¿Que  es  
IoC?
¿Nos  entendemos  realmente?
15
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DDD - Domain Driven Design
Lenguaje Ubicuo
Traducir
Domain
Expert
Technical
Expert
Refinar
Acordar
Jerga
Jerga
16
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DDD - Domain Driven Design
Lenguaje Ubicuo
Domain
Expert
Technical
Expert
Lenguaje
Ubicuo
Bounded  
Context
Bounded  
Context
Bounded  
Context
17
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DDD - Domain Driven Design
Lenguaje Ubicuo
– Facilitamos la transferencia de conocimiento.
– Los desarrolladores tienen un buen conocimiento del dominio.
– Requiere tiempo y esfuerzo
Arquitecto  y  Experto  más  Felices
18
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DDD - Domain Driven Design
TDD
Red Green Refactor
Buenas Prácticas
– Desarrollo de UT que sirven
como especificación.
– Pensar en la interface antes
de la implementación.
– Código dirigido por los Test
> TDD
19
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DDD - Domain Driven Design
Buenas Prácticas
> Aislar el modelo Arquitectura típica en 4 capas
User  Interface
Applica:on
Domain
Infraestructure
20
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Modelando la Lógica de Negocio
Layers
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Capas
– Agrupaciones horizontales lógicas de componentes de
Software.
– Ayudan a diferenciar los distintos tipos de tareas.
– Maximiza la reutilización.
– Ayuda a aplicar el principio de SoC (Separation of
Concerns o Separación de Responsabilidades).
No  confundir  Layers  con  Tiers
22
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Capa de Persistencia
Persistencia
– Centraliza el acceso a la/s fuente/s de datos/s.
– Desacopla la tecnología utilizada.
– Se utilizan DAOs y/o Repositorios.
– Puede implementarse con un ORM (Hibernate, Entity
Framework, etc.).
– Algunos patrones:
Active Record
Data Mapper
Table Module
23
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Capa de Dominio
Dominio
– Implementa la funcionalidad principal de nuestro Sistema.
– Aislado de la Infraestructura.
– Cuenta con Entidades
– Anemic Model: Cuando nuestras entidades no tienen lógica
propia.
– Contrato de Interfaces.
– Las operaciones surgen del modelo
ubicuo
24
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Capa de Dominio
Dominio
– Identificar bien las responsabilidades.
– Alta cohesión.
– No mezclar componentes.
– Reutilizar lógica común.
– Hacer uso de abstracciones.
> Algunas consideraciones
25
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Capa de Aplicación
Aplicación
– Coordina actividades de la Aplicación.
– No incluye lógica de Negocio.
– Coordina servicios de la capa de nivel inferior.
– Es como una fachada (Façade).
– Puede incluir workflows.
– Puede incluir conversores a DTO en caso
de contar con dichos objetos.
26
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Capa de Servicios
Servicios
– Se trata de Servicios Distribuidos.
– Primero necesito tener definido el contrato.
– Una vez más, los servicios son una fachada de nuestra
lógica.
– Expone servicios a la capa de presentación o a otros
servicios.
– Intercambian estructuras de datos serializadas,
DTOs o valores escalares.
– Uso de REST o SOAP
27
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Capa de Servicios
Servicios
Servicio
Aplicación Aplicación Aplicación
28
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Capa de Presentación
Presentación
– Describe la Interfaz de Usuario.
– No olvidar que es lo que el usuario ve.
– Evitar acoplamiento entre componentes.
– No olvidarse de los Unit Test.
– Algunos Patrones:
MVC
MVP
MVVM
29
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Capa de Infraestructura Transversal
Inf. Transversal
– Aspectos Horizontales
– Impactan en toda la aplicación.
– Busca componentes comunes para favorece la reutilización
– Se utilizan técnicas como DI y AOP.
– Aspectos transversales:
Seguridad
Cache
Logging
Validaciones de Input
30
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Capa de Infraestructura Transversal
> Radiografía de una aplicación no modularizada
> Radiografía de una aplicación modularizada
31
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Persistence
Domain
Applica:on
Service
Presenta:on
Database
Transversal
32
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Persistence
Domain
Applica:on
Service
Presenta:on
Database
Transversal
Caching
Security
Logging
IoC Repository
Repository  
Contracts
Applica)on  Services
DTOs
Model
Controller
View
Web  
En))es
Core
Domain  Services
Core
33
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Persistence
Domain
Applica:on
Service
Presenta:on
Database
Transversal
Caching
Security
Logging
IoC Repository
Repository  
Contracts
Applica)on  Services
DTOs
Model
Controller
View
Web  
En))es
Core
Domain  Services
Core
34
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Persistence
Domain
Applica:on
Service
Presenta:on
Database
Transversal
Caching
Security
Logging
IoC Repository
Applica)on  Services
DTOs
Model
Controller
View
Web  
En))es
Core
Domain  Services
Core
Aunque  a  veces  encontramos  esto…!!
35
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Layers - Capas
Algunas Consideraciones
> Suelen existir un acoplamiento al no respetar el Principio
de Inversión de Dependencia.
> Cambios en cascada.
> Puede haber problemas de Performance.
> Demasiado complejo para:
– Aplicaciones orientada a datos.
– Aplicaciones pequeñas
– Pocas reglas de negocio
Seamos  Agiles!
36
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Modelando la Lógica de Negocio
AlternaFvas  a  las  Capas
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Alternativa a las Capas
RAD - Rappid Application Development
> Aplicaciones pequeñas con pocos cambios.
> Orientadas a los datos
> Algunos ejemplos:
– Dynamic Data .NET
– Ruby on Rails
– MVC Scaffolding
– Lightswitch
38
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Alternativa a las Capas
Hexagonal Architecture
– Port & Adapters
– Contratos para la integración con el Dominio
– El Dominio es agnóstico a las tecnologías
– Separated Interfaces Pattern
39
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Alternativa a las Capas
Domain
Mock  DB
UI
Unit  Test
DB
App
Hexagonal Architecture
Aislamiento  por  medio  de  Interfaces
40
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Alternativa a las Capas
Hexagonal Architecture
> Metodología
Aplicación
Mock  DB DB  Access
Tests User  UI
1 2 3 4
41
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Alternativa a las Capas
Hexagonal Architecture
Domain
DB
Mock DB
42
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Alternativa a las Capas
Transaction Script
> Orientada a Datos.
– Relación pantalla / tabla
– Lógica en Procedimientos
> Poca Lógica
– Funcionalidad acotada
– Evolución costosa y difícil de mantener
> Workflow controlado
– Cada transacción tiene su Transaction Script
43
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Alternativa a las Capas
Transaction Script
User  Interface
Services
Infraestructure
> Diseño
44
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Alternativa a las Capas
Transaction Script
Servicio
UI DB
Nombre
Apellido
Edad
45
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Alternativa a las Capas
Transaction Script
46
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Alternativa a las Capas
Transaction Script
> Algunas consideraciones
– No existe un modelo de la lógica.
– Suele existir código duplicado.
– Si la lógica se vuelve más compleja, progresivamente
será más difícil de mantener.
– No utiliza el Paradigma Orientado a Objetos.
47
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Alternativa a las Capas
Transaction Script
> Comparación con un modelo en capas
Esfuerzo
Complejidad de la lógica de Dominio
Transaction
Script
Domain
Model
48
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Modelando la Lógica de Negocio
Separación  de  la  Lógica
Mecanismos  de
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
¿Qué pasa cuando no separamos la lógica?
Guardar()
{
// Manejo el evento de guardar
// Abro una transacción
// Verifico reglas de negocio
// Logueo la transacción
// Guardo
// Cierro la transacción
}
Guardar
– Código Spaghetti.
– Extremadamente difícil de mantener.
50
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Mecanismos de Separación
> Separación Programática
> Separación Declarativa
> Separación Introspectiva / Reflexiva
51
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Separación Programática
– Separación de responsabilidades mediante distintos
objetos que se envían mensajes entre sí.
Objeto de
Negocio
DAO
52
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Separación Declarativa
– Separa la lógica de negocio de aspectos intrusivos.
– Parametriza fuera del código los componentes
arquitecturales.
– Me concentro en el qué y no en el cómo.
53
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Separación Declarativa
> XAML - eXtensible Application Markup Language
– Lenguaje declarativo basado en XML para interfaces
– Soporte clases y métodos
– Separo la definición de la interfaz de su lógica de
comportamiento
Guardar <Button Width="102"
Height="31"
Click=“OnClick” />
54
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Separación Declarativa
> Metadata
[Required]
public void Email(string email)
{
this.Email = email;
}
Annotation
55
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Separación Declarativa
> Beneficios de utilizar Aspectos
Sin Aspectos
Con Aspectos
56
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Separación Declarativa
> AOP (Aspectos)
– Trata de resolver el problema de Cross-Custting
Concerns.
– Separo la lógica de negocio componentes de
infraestructura.
– Parametrizo fuera del código los componentes
arquitecturales.
57
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Separación Declarativa
> Aspectos típicos de una aplicación
– Seguridad
– Cache
– Gestión de Configuración
– Gestión de Excepciones
– Logging
– Validaciones de datos de entrada
58
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Separación Declarativa
> Ejemplo de un aspecto de Logging
public ActionResult Customers()
{
var logger = new Logger();
logger.Log(string.Format(“Se accedió al método ‘Customers' del
controlador ‘Home’”));
// Get Customers
return View();
}
Sin Aspectos
View Controller
59
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Separación Declarativa
> Ejemplo de un aspecto Logging
View Controller
[HandleLogging]
public ActionResult Customers()
{
// Get Customers
return View();
}
Con Aspectos
Ejemplo  uFlizando  AcFon  Filters  de  ASP  MVC  3
60
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Separación Declarativa
> Ejemplo de un aspecto Logging
public class HandleLoggingAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext context)
{
base.OnActionExecuted(context);
Log(context);
}
private void Log(ActionExecutedContext context)
{
var logger = new Logger();
logger.Log(string.Format("Se accedió al método {0} del
controlador {1}",
context.ActionDescriptor.ActionName,
context.ActionDescriptor.ControllerDescriptor.ControllerName));
}
}
El Aspecto
61
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Mecanismos de Separación de la Lógica
Separación Introspectiva / Reflexiva
– Puedo manipular la lógica utilizando Reflection.
– Modifica el comportamiento de mi aplicación.
– Me permite extender mi aplicación.
Dominio
nuevo
Comportamiento
62
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Modelando la Lógica de Negocio
DSL
Domain  Specific  Language
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
¿DSL… y eso con que se come?
– El diseño de una Aplicación mapea un problema de dominio
con su implementación.
– Para que ese mapeo sea posible, necesitamos un
vocabulario común que ambos dominios compartan.
MAP
Problem  Domain
Security
Stock
Bonds
Solu3on  Domain
Classes
Objects
Methods
64
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
¿Qué es un DSL?
– Es un lenguaje de programación dedicado a resolver un
problema particular.
– Es un lenguaje específico a mi dominio en contraposición de
los lenguajes de propósito general (C#, Java, UML).
– Permite diseñar abstracciones que forman parte de un
dominio.
– Se focaliza en el problema de dominio y no en los detalles de
implementación.
– Necesita proveer la sintaxis y semántica correcta al usuario.
65
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
Creando un Lenguaje Compartido
> Vocabulario compartido
El experto de dominio se puede entender con quien lo
modele
> Terminología común en los Test Cases
El experto de dominio podría verificar los casos.
> Vocabulario común durante el Desarrollo
El desarrollo resultante hablará en el mismo idioma que el
lenguaje de Dominio.
66
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
Algunos ejemplos de DSL
>SQL
>CSS
>HTML
>RSpec
>ANTRL
>Visualization & Modeling SDK (Visual Studio)
>M Language
67
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
Tipos de DSL
> Externos
– Lenguaje independiente.
– Standalone.
– Son muy expresivos y pueden leerse como si fuese
inglés.
– Necesita de compiladores y analizadores.
68
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
Tipos de DSL
> Internos
– Embebidos dentro del lenguaje.
– No son tan expresivos como los DSL Externos.
– Son más sencillos porque no usan compiladores
externos.
– Hace que el lenguaje general parezca de uso específico.
– A veces ligado al concepto de «Fluent Interfaces»
69
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
DSL vs UML: O cuando utilizarlos
No  hay  una  "mejor"  que  otra
– UML es de uso general. Puede contar con elementos innecesarios a nuestro
problema.
– UML es lo más utilizado para transmitir ideas.
– UML es más fácil de implementar al inicio.
– UML se vuelve más complejo al extenderlo.
– DSL se ajusta a nuestro dominio.
– DSL se lleva mejor con los Code-Generators.
– UML puede trabajar de forma conjunta con DSL
70
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
Ejemplo de un DSL Visual
> Vista de Diseño
71
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
Ejemplo de un DSL Visual
> Vista del DSL del punto de vista del usuario
Padre
Hijo
Relación
Padre-Hijo
Podría  luego  generar  código  a  parFr  de  este  DSL
72
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
Fluent Interfaces
– Es un tipo particular de API diseñada de forma «fluida»
– Facilitan el trabajo al implementar API que son más fáciles
de leer y escribir.
– Pensar como expresar el DSL de manera lógica y
autodescriptiva, de forma independiente a la funcionalidad
real.
– Nos da la sensación de tener todo junto y conectado en vez
de comandos desconectados.
73
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
Un ejemplo simple de legibilidad
> Comunmente encontramos:
> Pero usando una Extensión Literal:
schedule.RepeatEvery = new TimeSpan(2,0,0);
schedule.ExpiresIn = new TimeSpan(100,0,0,0);
schedule.RepeatEvery = 2.Hours();
schedule.ExpiresIn = 100.Days();
74
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
DSL – Domain Specific Language
Algunos ejemplos de Fluent
> Fluent Assertions
string actual = "ABCDEFGHI";
actual.Should().StartWith("AB").And.EndWith("HI").And.Contain
("EF").And.HaveLength(9)
RuleFor(customer => customer.Surname).NotEmpty();
RuleFor(customer => customer.Forename).NotEmpty().WithMessage
("Specify a First Name");
RuleFor(customer => customer.Discount).NotEqual(0).When(customer =>
customer.HasDiscount);
RuleFor(customer => customer.Address).Length(20, 250);
RuleFor(customer => customer.Postcode).Must
(BeAValidPostcode).WithMessage("Specify a valid Postcode");
> Fluent Validations
75
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Modelando la Lógica de Negocio
BPM
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
BPM – Business Process Management
77
“Conjunto de las fases sucesivas de un fenómeno natural o
de una operación artificial”
RAE
“Un proceso de negocio es un conjunto de tareas
relacionadas lógicamente llevadas a cabo para lograr un
resultado definido”
Wikipedia
¿Qué es un proceso?
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
BPM – Business Process Management
78
¿Qué es una regla de negocio?
Describe políticas, normas, operaciones, definiciones y
restricciones
Ejemplo:
“Si a un cliente se le factura mas de $10000
mensualmente, es un cliente tipo A”
“A los clientes tipo A se les hace un descuento del 15%
sobre facturas superiores a $3000”
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
BPM – Business Process Management
79
¿Qué es BPM?
“Es un enfoque sistemático para mejorar los procesos de
negocio de una compañía”
www.cio.com
“… Una mezcla de administración de procesos con
tecnologías de integración… para dar soporte a una rica
interacción humana y una profunda integración de
aplicaciones.”
Gartner
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
BPM – Business Process Management
80
Componentes de BPM como enfoque
Experiencia Disciplinas  
Organizacionales
Control  y  
Management
Socios  y  
Servicios
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
BPM – Business Process Management
81
Componentes de BPM como suite SW
BPM  Layer
Front end cliente Monitoreo y análisis
Diseño y simulación de procesos
Motor de procesos Motor de reglas
Monitoreo
y
administración
Capa SOA
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
BPM – Business Process Management
82
BPM vs Otras soluciones
Aplicación  
separada
Workflow
Departamental
Workflow  
Mul)departamental
BPM  Empresarial
Ruteo  de  imágenes  y  
documentación
Ruteo  de  imágenes  y  
documentación
Ruteo  de  imágenes  y  
documentación
Ruteo  de  imágenes  y  
documentación
Formularios  
electrónicos
Formularios  
electrónicos
Formularios  
electrónicos
Motor  de  reglas Motor  de  reglas
Broker  de  integración
Servicios  de  
integración
Portales
Portales  &  
colaboración
Análisis  de  procesos
BAM
Manejo  de  eventos
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
BPM – Business Process Management
83
BPM – alternativas en el mercado
Open Source
World Class
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Modelando la Lógica de Negocio
¿Preguntas?
Wednesday, May 4, 2011
Arquitectura de Proyectos IT
Modelando la Lógica de Negocio
Bibliografía
>Architecture Journal 23
>Domain Driven Design - Eric Evans >DSL in Action - Debasish Ghosh
>Guía de Arquitectura N-Capas
Orientada al Dominio con .NET 4.0
85
Wednesday, May 4, 2011

Más contenido relacionado

Similar a logica de negocio ddd arquitectura de software

Hoja de vida Jose Osoria
Hoja de vida Jose OsoriaHoja de vida Jose Osoria
Hoja de vida Jose OsoriaJOSE OSORIA
 
Eric Evans 2003 - Domain-Driven Design - Tackling Complexity in the Heart of ...
Eric Evans 2003 - Domain-Driven Design - Tackling Complexity in the Heart of ...Eric Evans 2003 - Domain-Driven Design - Tackling Complexity in the Heart of ...
Eric Evans 2003 - Domain-Driven Design - Tackling Complexity in the Heart of ...FidelValeriano1
 
UDA-Arquitectura conceptual
UDA-Arquitectura conceptualUDA-Arquitectura conceptual
UDA-Arquitectura conceptualAnder Martinez
 
Arquitectura en la nube. PowerPoint^.pptx
Arquitectura en la nube. PowerPoint^.pptxArquitectura en la nube. PowerPoint^.pptx
Arquitectura en la nube. PowerPoint^.pptxEl Arcón de Clio
 
How To Split The Monolith - From monolith to microservices
How To Split The Monolith - From monolith to microservicesHow To Split The Monolith - From monolith to microservices
How To Split The Monolith - From monolith to microservicesOliver Fierro
 
Presentación tech cloud
Presentación tech cloudPresentación tech cloud
Presentación tech cloudCAPACICERT
 
Orientación a tendencias de Arquitectura DDD
Orientación a tendencias de Arquitectura DDDOrientación a tendencias de Arquitectura DDD
Orientación a tendencias de Arquitectura DDDCesar Gomez
 
Planificar un proyecto bi
Planificar un proyecto biPlanificar un proyecto bi
Planificar un proyecto biaitorvasco
 
Experiencias adquiridas en el desarrollo orientado a la semántica
Experiencias adquiridas en el desarrollo orientado a la semánticaExperiencias adquiridas en el desarrollo orientado a la semántica
Experiencias adquiridas en el desarrollo orientado a la semánticaSoftware Guru
 
1 El Paradigma De OrientacióN A Objetos
1  El Paradigma De OrientacióN A Objetos1  El Paradigma De OrientacióN A Objetos
1 El Paradigma De OrientacióN A ObjetosHectorMamani
 
Arquitectura de Empresa TOGAF
Arquitectura de Empresa TOGAFArquitectura de Empresa TOGAF
Arquitectura de Empresa TOGAFnetmind
 
Base de Datos
Base de DatosBase de Datos
Base de Datosjmmosque
 
Grupo 4
Grupo 4Grupo 4
Grupo 4Ingrid
 
Presentcion grupo 4 ib
Presentcion grupo  4 ibPresentcion grupo  4 ib
Presentcion grupo 4 ibfdfreddy
 

Similar a logica de negocio ddd arquitectura de software (20)

Hoja de vida Jose Osoria
Hoja de vida Jose OsoriaHoja de vida Jose Osoria
Hoja de vida Jose Osoria
 
Eric Evans 2003 - Domain-Driven Design - Tackling Complexity in the Heart of ...
Eric Evans 2003 - Domain-Driven Design - Tackling Complexity in the Heart of ...Eric Evans 2003 - Domain-Driven Design - Tackling Complexity in the Heart of ...
Eric Evans 2003 - Domain-Driven Design - Tackling Complexity in the Heart of ...
 
UDA-Arquitectura conceptual
UDA-Arquitectura conceptualUDA-Arquitectura conceptual
UDA-Arquitectura conceptual
 
SOA Open Source
SOA Open SourceSOA Open Source
SOA Open Source
 
Arquitectura proyecto fam
Arquitectura proyecto famArquitectura proyecto fam
Arquitectura proyecto fam
 
Arquitectura en la nube. PowerPoint^.pptx
Arquitectura en la nube. PowerPoint^.pptxArquitectura en la nube. PowerPoint^.pptx
Arquitectura en la nube. PowerPoint^.pptx
 
How To Split The Monolith - From monolith to microservices
How To Split The Monolith - From monolith to microservicesHow To Split The Monolith - From monolith to microservices
How To Split The Monolith - From monolith to microservices
 
Arquitectura Empresarial 11.0
Arquitectura Empresarial 11.0Arquitectura Empresarial 11.0
Arquitectura Empresarial 11.0
 
Presentación tech cloud
Presentación tech cloudPresentación tech cloud
Presentación tech cloud
 
Orientación a tendencias de Arquitectura DDD
Orientación a tendencias de Arquitectura DDDOrientación a tendencias de Arquitectura DDD
Orientación a tendencias de Arquitectura DDD
 
Planificar un proyecto bi
Planificar un proyecto biPlanificar un proyecto bi
Planificar un proyecto bi
 
Experiencias adquiridas en el desarrollo orientado a la semántica
Experiencias adquiridas en el desarrollo orientado a la semánticaExperiencias adquiridas en el desarrollo orientado a la semántica
Experiencias adquiridas en el desarrollo orientado a la semántica
 
Offering Cloud Solutions
Offering Cloud Solutions Offering Cloud Solutions
Offering Cloud Solutions
 
1 El Paradigma De OrientacióN A Objetos
1  El Paradigma De OrientacióN A Objetos1  El Paradigma De OrientacióN A Objetos
1 El Paradigma De OrientacióN A Objetos
 
Sistemas IV (I Bimestre)
Sistemas IV (I Bimestre)Sistemas IV (I Bimestre)
Sistemas IV (I Bimestre)
 
Arquitectura de Empresa TOGAF
Arquitectura de Empresa TOGAFArquitectura de Empresa TOGAF
Arquitectura de Empresa TOGAF
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Grupo 4
Grupo 4Grupo 4
Grupo 4
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Presentcion grupo 4 ib
Presentcion grupo  4 ibPresentcion grupo  4 ib
Presentcion grupo 4 ib
 

Último

COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023RonaldoPaucarMontes
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingKevinCabrera96
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptxBRAYANJOSEPTSANJINEZ
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrialGibranDiaz7
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfbcondort
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILProblemSolved
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptMarianoSanchez70
 
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
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMONICADELROCIOMUNZON1
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOFritz Rebaza Latoche
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.pptoscarvielma45
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLdanilojaviersantiago
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfs7yl3dr4g0n01
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 

Último (20)

COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrial
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
 
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)
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptx
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 

logica de negocio ddd arquitectura de software

  • 1. Modelando la Lógica de Negocio Ing. Juan M. Arias 2011 Arquitectura de Proyectos IT UTN - FRBA Modelando la Lógica de Negocio Domain  Model DDD Layers Hexagonal  Arch. SoC DSL Wednesday, May 4, 2011
  • 2. Arquitectura de Proyectos IT Modelando la Lógica de Negocio Agenda > Introducción > Domain Model > Domain Driven Design > Capas > Alternativas a las Capas > Mecanismos de Separación > DSL > BPM Wednesday, May 4, 2011
  • 3. Arquitectura de Proyectos IT Modelando la Lógica de Negocio Introducción Wednesday, May 4, 2011
  • 4. Arquitectura de Proyectos IT Introducción Algunos tipos de Arquitectura > Sociales > Móviles > Games > Empresariales 4 Wednesday, May 4, 2011
  • 5. Arquitectura de Proyectos IT Introducción ¿Qué es la Lógica de Negocio? – Conceptos de negocio. – Conjunto de procesos. – Contiene información de los estados de los procesos de negocio. Es  el  Corazón  de  Nuestro  Sistema 5 Wednesday, May 4, 2011
  • 6. Arquitectura de Proyectos IT Modelando la Lógica de Negocio Domain  Model Wednesday, May 4, 2011
  • 7. Arquitectura de Proyectos IT Domain Model ¿Qué es un Modelo? – Una visión simplificada de algo complejo utilizado en el análisis y resolución de problemas. – Debe tener un propósito. 7 Wednesday, May 4, 2011
  • 8. Arquitectura de Proyectos IT Domain Model ¿Qué es Domain Model? – Es un modelo que representa un Dominio de Negocio. – Debe expresar el Dominio y no los detalles técnicos. – No es un diagrama UML o un esquema de BD. – Debe ser relevante tanto para los expertos de dominio como para el equipo de desarrollo. 8 Wednesday, May 4, 2011
  • 9. Arquitectura de Proyectos IT Domain Model Componentes Abstracción Tecnología Negocio Diagrama de Clases y Secuencia Unit Test Código OO Esquema de Base de Datos Diagrama de Capas Diagrama de Deploy BPM & Workflow Data examples Story test Prototypes DSL Obtenido de Architecture Journal Magazine 9 Wednesday, May 4, 2011
  • 10. Arquitectura de Proyectos IT Domain Model Diseño - Aislando el Modelo – Separar el dominio de los demás aspectos – Evitar el acoplamiento – Pensar en el cambio, no implica que todo va cambiar – Las capas no siempre son la solución El  Dominio  es  el  Core  de  nuestra  aplicación 10 Wednesday, May 4, 2011
  • 11. Arquitectura de Proyectos IT Domain Model Principios claves de Diseño Single Responsability Principle Open Close Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle > SOLID 11 Wednesday, May 4, 2011
  • 12. Arquitectura de Proyectos IT Domain Model Principios claves de Diseño > Diseño altamente Cohesivo. > Código transversal abstraído de la lógica de la aplicación. > Separation of Concerns > DRY (Donʼt Repeat Yourself) > YAGNI (You Ainʼt Gonna Need It) 12 Wednesday, May 4, 2011
  • 13. Arquitectura de Proyectos IT Modelando la Lógica de Negocio DDD Domain  Driven  Design Wednesday, May 4, 2011
  • 14. Arquitectura de Proyectos IT DDD - Domain Driven Design ¿Qué es DDD? – ¿Podemos construir software complejo sin conocer el dominio? – ¿Quién conoce el negocio? ¿El Arquitecto? ¿El Desarrollador? – Necesitamos crear una Abstracción del Dominio. – Modelo OO que refleja el conocimiento de un Dominio. 14 Wednesday, May 4, 2011
  • 15. Arquitectura de Proyectos IT DDD - Domain Driven Design El Problema de la Comunicación Quiero  que  se  puedan   cambiar  las  reglas  de   las  políFcas  para   disFntos  clientes Podemos  usar   un  Strategy Podemos   usar  IoC ¿Que  es   IoC? ¿Nos  entendemos  realmente? 15 Wednesday, May 4, 2011
  • 16. Arquitectura de Proyectos IT DDD - Domain Driven Design Lenguaje Ubicuo Traducir Domain Expert Technical Expert Refinar Acordar Jerga Jerga 16 Wednesday, May 4, 2011
  • 17. Arquitectura de Proyectos IT DDD - Domain Driven Design Lenguaje Ubicuo Domain Expert Technical Expert Lenguaje Ubicuo Bounded   Context Bounded   Context Bounded   Context 17 Wednesday, May 4, 2011
  • 18. Arquitectura de Proyectos IT DDD - Domain Driven Design Lenguaje Ubicuo – Facilitamos la transferencia de conocimiento. – Los desarrolladores tienen un buen conocimiento del dominio. – Requiere tiempo y esfuerzo Arquitecto  y  Experto  más  Felices 18 Wednesday, May 4, 2011
  • 19. Arquitectura de Proyectos IT DDD - Domain Driven Design TDD Red Green Refactor Buenas Prácticas – Desarrollo de UT que sirven como especificación. – Pensar en la interface antes de la implementación. – Código dirigido por los Test > TDD 19 Wednesday, May 4, 2011
  • 20. Arquitectura de Proyectos IT DDD - Domain Driven Design Buenas Prácticas > Aislar el modelo Arquitectura típica en 4 capas User  Interface Applica:on Domain Infraestructure 20 Wednesday, May 4, 2011
  • 21. Arquitectura de Proyectos IT Modelando la Lógica de Negocio Layers Wednesday, May 4, 2011
  • 22. Arquitectura de Proyectos IT Layers - Capas Capas – Agrupaciones horizontales lógicas de componentes de Software. – Ayudan a diferenciar los distintos tipos de tareas. – Maximiza la reutilización. – Ayuda a aplicar el principio de SoC (Separation of Concerns o Separación de Responsabilidades). No  confundir  Layers  con  Tiers 22 Wednesday, May 4, 2011
  • 23. Arquitectura de Proyectos IT Layers - Capas Capa de Persistencia Persistencia – Centraliza el acceso a la/s fuente/s de datos/s. – Desacopla la tecnología utilizada. – Se utilizan DAOs y/o Repositorios. – Puede implementarse con un ORM (Hibernate, Entity Framework, etc.). – Algunos patrones: Active Record Data Mapper Table Module 23 Wednesday, May 4, 2011
  • 24. Arquitectura de Proyectos IT Layers - Capas Capa de Dominio Dominio – Implementa la funcionalidad principal de nuestro Sistema. – Aislado de la Infraestructura. – Cuenta con Entidades – Anemic Model: Cuando nuestras entidades no tienen lógica propia. – Contrato de Interfaces. – Las operaciones surgen del modelo ubicuo 24 Wednesday, May 4, 2011
  • 25. Arquitectura de Proyectos IT Layers - Capas Capa de Dominio Dominio – Identificar bien las responsabilidades. – Alta cohesión. – No mezclar componentes. – Reutilizar lógica común. – Hacer uso de abstracciones. > Algunas consideraciones 25 Wednesday, May 4, 2011
  • 26. Arquitectura de Proyectos IT Layers - Capas Capa de Aplicación Aplicación – Coordina actividades de la Aplicación. – No incluye lógica de Negocio. – Coordina servicios de la capa de nivel inferior. – Es como una fachada (Façade). – Puede incluir workflows. – Puede incluir conversores a DTO en caso de contar con dichos objetos. 26 Wednesday, May 4, 2011
  • 27. Arquitectura de Proyectos IT Layers - Capas Capa de Servicios Servicios – Se trata de Servicios Distribuidos. – Primero necesito tener definido el contrato. – Una vez más, los servicios son una fachada de nuestra lógica. – Expone servicios a la capa de presentación o a otros servicios. – Intercambian estructuras de datos serializadas, DTOs o valores escalares. – Uso de REST o SOAP 27 Wednesday, May 4, 2011
  • 28. Arquitectura de Proyectos IT Layers - Capas Capa de Servicios Servicios Servicio Aplicación Aplicación Aplicación 28 Wednesday, May 4, 2011
  • 29. Arquitectura de Proyectos IT Layers - Capas Capa de Presentación Presentación – Describe la Interfaz de Usuario. – No olvidar que es lo que el usuario ve. – Evitar acoplamiento entre componentes. – No olvidarse de los Unit Test. – Algunos Patrones: MVC MVP MVVM 29 Wednesday, May 4, 2011
  • 30. Arquitectura de Proyectos IT Layers - Capas Capa de Infraestructura Transversal Inf. Transversal – Aspectos Horizontales – Impactan en toda la aplicación. – Busca componentes comunes para favorece la reutilización – Se utilizan técnicas como DI y AOP. – Aspectos transversales: Seguridad Cache Logging Validaciones de Input 30 Wednesday, May 4, 2011
  • 31. Arquitectura de Proyectos IT Layers - Capas Capa de Infraestructura Transversal > Radiografía de una aplicación no modularizada > Radiografía de una aplicación modularizada 31 Wednesday, May 4, 2011
  • 32. Arquitectura de Proyectos IT Layers - Capas Persistence Domain Applica:on Service Presenta:on Database Transversal 32 Wednesday, May 4, 2011
  • 33. Arquitectura de Proyectos IT Layers - Capas Persistence Domain Applica:on Service Presenta:on Database Transversal Caching Security Logging IoC Repository Repository   Contracts Applica)on  Services DTOs Model Controller View Web   En))es Core Domain  Services Core 33 Wednesday, May 4, 2011
  • 34. Arquitectura de Proyectos IT Layers - Capas Persistence Domain Applica:on Service Presenta:on Database Transversal Caching Security Logging IoC Repository Repository   Contracts Applica)on  Services DTOs Model Controller View Web   En))es Core Domain  Services Core 34 Wednesday, May 4, 2011
  • 35. Arquitectura de Proyectos IT Layers - Capas Persistence Domain Applica:on Service Presenta:on Database Transversal Caching Security Logging IoC Repository Applica)on  Services DTOs Model Controller View Web   En))es Core Domain  Services Core Aunque  a  veces  encontramos  esto…!! 35 Wednesday, May 4, 2011
  • 36. Arquitectura de Proyectos IT Layers - Capas Algunas Consideraciones > Suelen existir un acoplamiento al no respetar el Principio de Inversión de Dependencia. > Cambios en cascada. > Puede haber problemas de Performance. > Demasiado complejo para: – Aplicaciones orientada a datos. – Aplicaciones pequeñas – Pocas reglas de negocio Seamos  Agiles! 36 Wednesday, May 4, 2011
  • 37. Arquitectura de Proyectos IT Modelando la Lógica de Negocio AlternaFvas  a  las  Capas Wednesday, May 4, 2011
  • 38. Arquitectura de Proyectos IT Alternativa a las Capas RAD - Rappid Application Development > Aplicaciones pequeñas con pocos cambios. > Orientadas a los datos > Algunos ejemplos: – Dynamic Data .NET – Ruby on Rails – MVC Scaffolding – Lightswitch 38 Wednesday, May 4, 2011
  • 39. Arquitectura de Proyectos IT Alternativa a las Capas Hexagonal Architecture – Port & Adapters – Contratos para la integración con el Dominio – El Dominio es agnóstico a las tecnologías – Separated Interfaces Pattern 39 Wednesday, May 4, 2011
  • 40. Arquitectura de Proyectos IT Alternativa a las Capas Domain Mock  DB UI Unit  Test DB App Hexagonal Architecture Aislamiento  por  medio  de  Interfaces 40 Wednesday, May 4, 2011
  • 41. Arquitectura de Proyectos IT Alternativa a las Capas Hexagonal Architecture > Metodología Aplicación Mock  DB DB  Access Tests User  UI 1 2 3 4 41 Wednesday, May 4, 2011
  • 42. Arquitectura de Proyectos IT Alternativa a las Capas Hexagonal Architecture Domain DB Mock DB 42 Wednesday, May 4, 2011
  • 43. Arquitectura de Proyectos IT Alternativa a las Capas Transaction Script > Orientada a Datos. – Relación pantalla / tabla – Lógica en Procedimientos > Poca Lógica – Funcionalidad acotada – Evolución costosa y difícil de mantener > Workflow controlado – Cada transacción tiene su Transaction Script 43 Wednesday, May 4, 2011
  • 44. Arquitectura de Proyectos IT Alternativa a las Capas Transaction Script User  Interface Services Infraestructure > Diseño 44 Wednesday, May 4, 2011
  • 45. Arquitectura de Proyectos IT Alternativa a las Capas Transaction Script Servicio UI DB Nombre Apellido Edad 45 Wednesday, May 4, 2011
  • 46. Arquitectura de Proyectos IT Alternativa a las Capas Transaction Script 46 Wednesday, May 4, 2011
  • 47. Arquitectura de Proyectos IT Alternativa a las Capas Transaction Script > Algunas consideraciones – No existe un modelo de la lógica. – Suele existir código duplicado. – Si la lógica se vuelve más compleja, progresivamente será más difícil de mantener. – No utiliza el Paradigma Orientado a Objetos. 47 Wednesday, May 4, 2011
  • 48. Arquitectura de Proyectos IT Alternativa a las Capas Transaction Script > Comparación con un modelo en capas Esfuerzo Complejidad de la lógica de Dominio Transaction Script Domain Model 48 Wednesday, May 4, 2011
  • 49. Arquitectura de Proyectos IT Modelando la Lógica de Negocio Separación  de  la  Lógica Mecanismos  de Wednesday, May 4, 2011
  • 50. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica ¿Qué pasa cuando no separamos la lógica? Guardar() { // Manejo el evento de guardar // Abro una transacción // Verifico reglas de negocio // Logueo la transacción // Guardo // Cierro la transacción } Guardar – Código Spaghetti. – Extremadamente difícil de mantener. 50 Wednesday, May 4, 2011
  • 51. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Mecanismos de Separación > Separación Programática > Separación Declarativa > Separación Introspectiva / Reflexiva 51 Wednesday, May 4, 2011
  • 52. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Separación Programática – Separación de responsabilidades mediante distintos objetos que se envían mensajes entre sí. Objeto de Negocio DAO 52 Wednesday, May 4, 2011
  • 53. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Separación Declarativa – Separa la lógica de negocio de aspectos intrusivos. – Parametriza fuera del código los componentes arquitecturales. – Me concentro en el qué y no en el cómo. 53 Wednesday, May 4, 2011
  • 54. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Separación Declarativa > XAML - eXtensible Application Markup Language – Lenguaje declarativo basado en XML para interfaces – Soporte clases y métodos – Separo la definición de la interfaz de su lógica de comportamiento Guardar <Button Width="102" Height="31" Click=“OnClick” /> 54 Wednesday, May 4, 2011
  • 55. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Separación Declarativa > Metadata [Required] public void Email(string email) { this.Email = email; } Annotation 55 Wednesday, May 4, 2011
  • 56. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Separación Declarativa > Beneficios de utilizar Aspectos Sin Aspectos Con Aspectos 56 Wednesday, May 4, 2011
  • 57. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Separación Declarativa > AOP (Aspectos) – Trata de resolver el problema de Cross-Custting Concerns. – Separo la lógica de negocio componentes de infraestructura. – Parametrizo fuera del código los componentes arquitecturales. 57 Wednesday, May 4, 2011
  • 58. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Separación Declarativa > Aspectos típicos de una aplicación – Seguridad – Cache – Gestión de Configuración – Gestión de Excepciones – Logging – Validaciones de datos de entrada 58 Wednesday, May 4, 2011
  • 59. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Separación Declarativa > Ejemplo de un aspecto de Logging public ActionResult Customers() { var logger = new Logger(); logger.Log(string.Format(“Se accedió al método ‘Customers' del controlador ‘Home’”)); // Get Customers return View(); } Sin Aspectos View Controller 59 Wednesday, May 4, 2011
  • 60. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Separación Declarativa > Ejemplo de un aspecto Logging View Controller [HandleLogging] public ActionResult Customers() { // Get Customers return View(); } Con Aspectos Ejemplo  uFlizando  AcFon  Filters  de  ASP  MVC  3 60 Wednesday, May 4, 2011
  • 61. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Separación Declarativa > Ejemplo de un aspecto Logging public class HandleLoggingAttribute : ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext context) { base.OnActionExecuted(context); Log(context); } private void Log(ActionExecutedContext context) { var logger = new Logger(); logger.Log(string.Format("Se accedió al método {0} del controlador {1}", context.ActionDescriptor.ActionName, context.ActionDescriptor.ControllerDescriptor.ControllerName)); } } El Aspecto 61 Wednesday, May 4, 2011
  • 62. Arquitectura de Proyectos IT Mecanismos de Separación de la Lógica Separación Introspectiva / Reflexiva – Puedo manipular la lógica utilizando Reflection. – Modifica el comportamiento de mi aplicación. – Me permite extender mi aplicación. Dominio nuevo Comportamiento 62 Wednesday, May 4, 2011
  • 63. Arquitectura de Proyectos IT Modelando la Lógica de Negocio DSL Domain  Specific  Language Wednesday, May 4, 2011
  • 64. Arquitectura de Proyectos IT DSL – Domain Specific Language ¿DSL… y eso con que se come? – El diseño de una Aplicación mapea un problema de dominio con su implementación. – Para que ese mapeo sea posible, necesitamos un vocabulario común que ambos dominios compartan. MAP Problem  Domain Security Stock Bonds Solu3on  Domain Classes Objects Methods 64 Wednesday, May 4, 2011
  • 65. Arquitectura de Proyectos IT DSL – Domain Specific Language ¿Qué es un DSL? – Es un lenguaje de programación dedicado a resolver un problema particular. – Es un lenguaje específico a mi dominio en contraposición de los lenguajes de propósito general (C#, Java, UML). – Permite diseñar abstracciones que forman parte de un dominio. – Se focaliza en el problema de dominio y no en los detalles de implementación. – Necesita proveer la sintaxis y semántica correcta al usuario. 65 Wednesday, May 4, 2011
  • 66. Arquitectura de Proyectos IT DSL – Domain Specific Language Creando un Lenguaje Compartido > Vocabulario compartido El experto de dominio se puede entender con quien lo modele > Terminología común en los Test Cases El experto de dominio podría verificar los casos. > Vocabulario común durante el Desarrollo El desarrollo resultante hablará en el mismo idioma que el lenguaje de Dominio. 66 Wednesday, May 4, 2011
  • 67. Arquitectura de Proyectos IT DSL – Domain Specific Language Algunos ejemplos de DSL >SQL >CSS >HTML >RSpec >ANTRL >Visualization & Modeling SDK (Visual Studio) >M Language 67 Wednesday, May 4, 2011
  • 68. Arquitectura de Proyectos IT DSL – Domain Specific Language Tipos de DSL > Externos – Lenguaje independiente. – Standalone. – Son muy expresivos y pueden leerse como si fuese inglés. – Necesita de compiladores y analizadores. 68 Wednesday, May 4, 2011
  • 69. Arquitectura de Proyectos IT DSL – Domain Specific Language Tipos de DSL > Internos – Embebidos dentro del lenguaje. – No son tan expresivos como los DSL Externos. – Son más sencillos porque no usan compiladores externos. – Hace que el lenguaje general parezca de uso específico. – A veces ligado al concepto de «Fluent Interfaces» 69 Wednesday, May 4, 2011
  • 70. Arquitectura de Proyectos IT DSL – Domain Specific Language DSL vs UML: O cuando utilizarlos No  hay  una  "mejor"  que  otra – UML es de uso general. Puede contar con elementos innecesarios a nuestro problema. – UML es lo más utilizado para transmitir ideas. – UML es más fácil de implementar al inicio. – UML se vuelve más complejo al extenderlo. – DSL se ajusta a nuestro dominio. – DSL se lleva mejor con los Code-Generators. – UML puede trabajar de forma conjunta con DSL 70 Wednesday, May 4, 2011
  • 71. Arquitectura de Proyectos IT DSL – Domain Specific Language Ejemplo de un DSL Visual > Vista de Diseño 71 Wednesday, May 4, 2011
  • 72. Arquitectura de Proyectos IT DSL – Domain Specific Language Ejemplo de un DSL Visual > Vista del DSL del punto de vista del usuario Padre Hijo Relación Padre-Hijo Podría  luego  generar  código  a  parFr  de  este  DSL 72 Wednesday, May 4, 2011
  • 73. Arquitectura de Proyectos IT DSL – Domain Specific Language Fluent Interfaces – Es un tipo particular de API diseñada de forma «fluida» – Facilitan el trabajo al implementar API que son más fáciles de leer y escribir. – Pensar como expresar el DSL de manera lógica y autodescriptiva, de forma independiente a la funcionalidad real. – Nos da la sensación de tener todo junto y conectado en vez de comandos desconectados. 73 Wednesday, May 4, 2011
  • 74. Arquitectura de Proyectos IT DSL – Domain Specific Language Un ejemplo simple de legibilidad > Comunmente encontramos: > Pero usando una Extensión Literal: schedule.RepeatEvery = new TimeSpan(2,0,0); schedule.ExpiresIn = new TimeSpan(100,0,0,0); schedule.RepeatEvery = 2.Hours(); schedule.ExpiresIn = 100.Days(); 74 Wednesday, May 4, 2011
  • 75. Arquitectura de Proyectos IT DSL – Domain Specific Language Algunos ejemplos de Fluent > Fluent Assertions string actual = "ABCDEFGHI"; actual.Should().StartWith("AB").And.EndWith("HI").And.Contain ("EF").And.HaveLength(9) RuleFor(customer => customer.Surname).NotEmpty(); RuleFor(customer => customer.Forename).NotEmpty().WithMessage ("Specify a First Name"); RuleFor(customer => customer.Discount).NotEqual(0).When(customer => customer.HasDiscount); RuleFor(customer => customer.Address).Length(20, 250); RuleFor(customer => customer.Postcode).Must (BeAValidPostcode).WithMessage("Specify a valid Postcode"); > Fluent Validations 75 Wednesday, May 4, 2011
  • 76. Arquitectura de Proyectos IT Modelando la Lógica de Negocio BPM Wednesday, May 4, 2011
  • 77. Arquitectura de Proyectos IT BPM – Business Process Management 77 “Conjunto de las fases sucesivas de un fenómeno natural o de una operación artificial” RAE “Un proceso de negocio es un conjunto de tareas relacionadas lógicamente llevadas a cabo para lograr un resultado definido” Wikipedia ¿Qué es un proceso? Wednesday, May 4, 2011
  • 78. Arquitectura de Proyectos IT BPM – Business Process Management 78 ¿Qué es una regla de negocio? Describe políticas, normas, operaciones, definiciones y restricciones Ejemplo: “Si a un cliente se le factura mas de $10000 mensualmente, es un cliente tipo A” “A los clientes tipo A se les hace un descuento del 15% sobre facturas superiores a $3000” Wednesday, May 4, 2011
  • 79. Arquitectura de Proyectos IT BPM – Business Process Management 79 ¿Qué es BPM? “Es un enfoque sistemático para mejorar los procesos de negocio de una compañía” www.cio.com “… Una mezcla de administración de procesos con tecnologías de integración… para dar soporte a una rica interacción humana y una profunda integración de aplicaciones.” Gartner Wednesday, May 4, 2011
  • 80. Arquitectura de Proyectos IT BPM – Business Process Management 80 Componentes de BPM como enfoque Experiencia Disciplinas   Organizacionales Control  y   Management Socios  y   Servicios Wednesday, May 4, 2011
  • 81. Arquitectura de Proyectos IT BPM – Business Process Management 81 Componentes de BPM como suite SW BPM  Layer Front end cliente Monitoreo y análisis Diseño y simulación de procesos Motor de procesos Motor de reglas Monitoreo y administración Capa SOA Wednesday, May 4, 2011
  • 82. Arquitectura de Proyectos IT BPM – Business Process Management 82 BPM vs Otras soluciones Aplicación   separada Workflow Departamental Workflow   Mul)departamental BPM  Empresarial Ruteo  de  imágenes  y   documentación Ruteo  de  imágenes  y   documentación Ruteo  de  imágenes  y   documentación Ruteo  de  imágenes  y   documentación Formularios   electrónicos Formularios   electrónicos Formularios   electrónicos Motor  de  reglas Motor  de  reglas Broker  de  integración Servicios  de   integración Portales Portales  &   colaboración Análisis  de  procesos BAM Manejo  de  eventos Wednesday, May 4, 2011
  • 83. Arquitectura de Proyectos IT BPM – Business Process Management 83 BPM – alternativas en el mercado Open Source World Class Wednesday, May 4, 2011
  • 84. Arquitectura de Proyectos IT Modelando la Lógica de Negocio ¿Preguntas? Wednesday, May 4, 2011
  • 85. Arquitectura de Proyectos IT Modelando la Lógica de Negocio Bibliografía >Architecture Journal 23 >Domain Driven Design - Eric Evans >DSL in Action - Debasish Ghosh >Guía de Arquitectura N-Capas Orientada al Dominio con .NET 4.0 85 Wednesday, May 4, 2011