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
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
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
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
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
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
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