Publicado el 24 de Abril del 2018
1.809 visualizaciones desde el 24 de Abril del 2018
829,2 KB
16 paginas
Creado hace 11a (13/05/2013)
Introducción
Diseño de la Lógica de Negocio
Arquitectura de la Lógica de Negocio
Tipos de Arquitectura
10 minutos
30 minutos
45 minutos
25 minutos
Introducción
Diseño de la Lógica de Negocio
Arquitectura de la Lógica de Negocio
Tipos de Arquitectura
10 minutos
30 minutos
45 minutos
25 minutos
¿Qué es un Modelo?
Visión simplificada de algo complejo utilizada en el
análisis y resolución de problemas
13/05/2013
1
Diagrama de Deploy
Diagrama de Capas
i
n
ó
c
c
a
r
t
s
b
A
Diagrama de Clases y Secuencia
Unit Test
Código OO
Esquema de Base de Datos
BPM & Workflow
Data examples
Story test
Prototypes
DSL
Tecnología
Negocio
Introducción
Diseño de la Lógica de Negocio
Arquitectura de la Lógica de Negocio
Tipos de Arquitectura
10 minutos
30 minutos
45 minutos
25 minutos
SOLID
DRY
Common
Closure
Common
Reuse
KISS
YAGNI
Stable
Abstraction
Separation
of Concerns
Single Responsability Principle
Open Close Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle
13/05/2013
2
DON’T REPEAT YOURSELF
KEEP IT SIMPLE…
Evitar duplicaciones
Aplicar abstracciones
Evitar complejizar el problema de forma innecesaria
Un modelo simple es siempre más fácil de mantener
YOU AIN’T GONNA NEED IT
Las clases que se usan juntas, se empaquetan
No añadir funcionalidad extra que no vamos a
juntas
utilizar
Desventajas de implementar algo “a futuro”
o Más tiempo de Testing
o Más tiempo de documentación
o Añadir funcionalidad extra, puede requerir añadir
más funcionalidad extra!
Apunta a la Modificabilidad
Permite facilidad de distribución y actualización
13/05/2013
3
Las clases que se usan juntas, se empaquetan
Tener un balance entre lo abstracto y lo rígido
juntas
inútil
i
n
ó
c
c
a
r
t
s
b
A
rígido
Estabilidad
Aplica a paquetes, clases y métodos
Separa las responsabilidades:
En un nuevo método
En una nueva dependencia
Programática
Declarativa
Introspectiva
13/05/2013
4
Separación de responsabilidades mediante objetos
Separa la lógica de negocio de aspectos intrusivos.
que se mandan mensajes entre sí
Parametriza fuera del código los componentes
arquitecturales.
Me concentro en el qué y no en el cómo.
<Button Width="102"
Height="31"
Click=“OnClick” />
[Required]
public void Email(string email)
{
this.Email = email;
}
Puedo manipular la lógica utilizando Reflection
Modifica el comportamiento de mi aplicación
Me permite contar con puntos de extensibilidad
Introducción
Diseño de la Lógica de Negocio
Arquitectura de la Lógica de Negocio
Tipos de Arquitectura
10 minutos
30 minutos
45 minutos
25 minutos
13/05/2013
5
DDD
Capas
Aspectos
Transaction
Script
Ports and
Adapters
CQRS
Workflow
Business
Rules
Problemas al construir Software:
o Construir Software complejo sin conocer el Dominio
o Trabajar en conjunto con el experto del negocio
Propone una serie de métodos para construir
software trabajando con el experto de domino
Es el dominio quien guía la solución
LENGUAJE
Principales conceptos:
o Ubiquitous Language
o Bounded Context
o Aggregates Roots
Domain
Expert
Jerga
Technical
Expert
Jerga
Traducir
Refinar
Acordar
13/05/2013
6
LENGUAJE UBICUO
BOUNDED CONTEXT
Domain
Expert
Lenguaje
Ubicuo
Technical
Expert
Cada contexto está optimizado para resolver un
problema específico
Permite tener sistemas distribuidos en lugar de un
gran sistema monolítico
BOUNDED CONTEXT
BUILDING BLOCKS
Domain
Expert
Bounded
Context
Lenguaje
Ubicuo
Bounded
Context
Bounded
Context
Technical
Expert
X
13/05/2013
7
BUILDING BLOCKS
Entidades:
o Identidad
o Mutables
Value Object
o No tienen identidad
o Inmutables
Aggregates:
o Compuesto por objetos
o Soportan operaciones de negocio
o Aggregate Root
División lógica por funcionalidad
Presentación
Negocio
Recursos
Conjunto de componentes reutilizables
Ayuda a aplicar el principio de SoC
Facilidad para identificar problemas
Elimina duplicación innecesaria
Transversal
13/05/2013
Presentación
Servicios
Aplicación
Dominio
Persistencia
8
Transversal
- Interfaz de Usuario
- MVC / MVP / MVVM
- Capa de Servicios Distribuidos
- Fachada de nuestra lógica
- REST / SOAP
- Coordina actividades de la Aplicación
- No incluye lógica de Negocio
- Coordina servicios de la capa de nivel inferior
- Aspectos
Horizontales
- Impactan en
toda la App.
- Favorece la
reutilización
- DI / AOP
Presentación
Servicios
Aplicación
Transversal
- Interfaz de Usuario
- MVC / MVP / MVVM
- Capa de Servicios Distribuidos
- Fachada de nuestra lógica
- REST / SOAP
- Coordina actividades de la Aplicación
- No incluye lógica de Negocio
- Coordina servicios de la capa de nivel inferior
- Aspectos
Horizontales
- Impactan en
toda la App.
- Favorece la
reutilización
- DI / AOP
Presentación
Servicios
Aplicación
- Implementa la funcionalidad principal de nuestro Sistema
- Es quien cuenta con las Entidades de nuestro Negocio
- Recordar que las operaciones nacen del modelo Ubicuo
- Totalmente aislado de los componentes de Infraestructura
Dominio
- Implementa la funcionalidad principal de nuestro Sistema
- Es quien cuenta con las Entidades de nuestro Negocio
- Recordar que las operaciones nacen del modelo Ubicuo
- Totalmente aislado de los componentes de Infraestructura
Dominio
- Centraliza el acceso a los datos
- Desacopla la tecnología utilizada
- DAOs / Repositorios / ORM / DataMapper / ActiveRecord
Persistencia
- Centraliza el acceso a los datos
- Desacopla la tecnología utilizada
- DAOs / Repositorios / ORM / DataMapper / ActiveRecord
Persistencia
Transversal
Caching
Controller
Model
Presentación
View
Web
Services
DTOs
Servicios
Transversal
Caching
Controller
Model
Presentación
View
Web
Services
DTOs
Servicios
Security
Application Services
Aplicación
Security
Application Services
Aplicación
Logging
Domain Services
Logging
Logging
Logging
Domain Services
Entities
Rules
Dominio
Entities
Rules
Dominio
Repository Contracts
Repository Contracts
IoC
Repository
Core
IoC
Repository
Core
Persistencia
Aunque a veces encontramos esto!!!
Persistencia
13/05/2013
9
División lógica por módulos
Separa Responsabilidades y Dependencias
Presentación
Presentación
Presentación
Módulo A
Módulo B
Módulo C
Recursos
Recursos
Recursos
Negocio
Negocio
Negocio
Módulo A
Módulo B
Módulo C
Equipo A
Equipo B
Equipo C
Transversal
Transversal
Presentación
Negocio
Recursos
Presentación
Negocio
Recursos
13/05/2013
10
Aspectos Típicos
o Seguridad
o Cache
o Gestión de Configuraciones
o Gestión de Excepciones
o Logging
Organiza la lógica de negocio en procedimientos
Cada procedimiento maneja una petición de la
presentación
Presentación
Servicios (Comandos)
Infraestructura
El “core” es el modelo y es centro de la aplicación
La infraestructura depende del core
La UI depende del core y tiene acceso a la
infraestructura
13/05/2013
11
Domain
DB
Mock DB
Dominio
COMMAND QUERY SEPARATION
Es un principio que indica:
“Un método cambia el estado de un objeto o retorna
un valor, pero no ambos”
COMMAND
- Cambian el estado
- Retornan void
QUERIES
- Devuelven un resultado
- Retornan un tipo
13/05/2013
12
COMMAND QUERY RESPONSIBILITY SEGREGATION
COMMAND QUERY RESPONSIBILITY SEGREGATION
Existe para resolver un problema particular:
Utilizado solamente en dominios colaborativos donde
hay gran cantidad de personas modificando un conjunto
“Bloquear al usuario cuando se bloquean los datos“
pequeño de datos
Bloquear los datos es necesario, pero bloquear al
usuario no
COMMAND QUERY RESPONSIBILITY SEGREGATION
Permite escalar por separado el modelo de
¿Qué pasa si tenemos pocos productores pero muchos
Lectura y Escritura
consumidores?
¿Por que complejizar y comprometer performance por
transformaciones sin sentido?
Aplicable a un Bounded Context
UI con respuestas rápidas
13/05/2013
13
Escenarios “Reactivos”
minutos
horas
días
Aprobación
Requerida
Esperar
Aprobación
¿Aprobado?
Procesar
Notificar
ACTIVIDADES
Representan acciones o tareas:
o Leer de una Base de Datos
o Generar archivos
o Hacer FTP
o Llamar a un Web Service
o Etc.
MOTOR DE REGLAS
UNA REGLA (EN LENGUAJE TÉCNICO)
Permite definir las reglas de nuestro negocio de
Ej: “Cuando un cliente es del tipo Gold, entonces se le
forma centralizada
aplica un descuento del 10%”
Puedo cambiar el comportamiento del sistema
sin necesidad de modificarlo
when Customer( Type == “Gold”)
then discount = new Discount(10);
13/05/2013
14
UNA REGLA (IMPLEMENTADA COMO DSL)
Define en lenguaje natural el comportamiento de
la regla
Fácil de comunicar con experto del negocio
Cuando un cliente es Gold
Entonces tiene un descuento del 15%
Introducción
Diseño de la Lógica de Negocio
Arquitectura de la Lógica de Negocio
Tipos de Arquitectura
10 minutos
30 minutos
45 minutos
25 minutos
Desktop
Web
Distribuidas
Mobile
Abundan los recursos
Aplicaciones pesadas
Atadas al Sistema Operativo
13/05/2013
15
Múltiples servidores
Tecnologías que permitan la distribución
Transparencia en su uso
Cluster
Grid Computing
Recursos escasos
Multiplataforma
Basado en estándares
Interfaces fluidas
Comunicaciones asincrónica
Interfaces Touch
Tiempo de Respuesta muy rápidos
Guidelines de diseño
Recursos más limitados
13/05/2013
16
Comentarios de: Lógica de Negocio (0)
No hay comentarios