business logic 2012
Post on 24-Jun-2015
119 Views
Preview:
DESCRIPTION
TRANSCRIPT
Introducción10 minutos
Diseño de la Lógica de Negocio30 minutos
Arquitectura de la Lógica de Negocio45 minutos
Tipos de Arquitectura25 minutos
Diseño
Arquitectura
Tipos
Introducción10 minutos
Diseño de la Lógica de Negocio30 minutos
Arquitectura de la Lógica de Negocio45 minutos
Tipos de Arquitectura25 minutos
¿Qué es un Modelo?
Visión simplificada de algo complejo utilizada en el
análisis y resolución de problemas
¿Por qué necesitamos modelar?
…
…
…
…
Ab
stra
cció
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
Introducción10 minutos
Diseño de la Lógica de Negocio30 minutos
Arquitectura de la Lógica de Negocio45 minutos
Tipos de Arquitectura25 minutos
SOLID DRYCommon
Closure
Common
Reuse
KISS YAGNIStable
Abstraction
Separation
of Concerns
Single Responsability Principle
Open Close Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle
Don’t Repeat Yourself
Evitar duplicaciones
Aplicar abstracciones
Keep it Simple… stupid
Evitar complejizar el problema de forma
innecesaria
Un modelo simple es siempre más fácil de
mantener
You ain’t gonna need it
No añadir funcionalidad extra que no vamos
a utilizar
Desventajas de implementar algo “a futuro”
Más tiempo de Testing
Más tiempo de documentación
Añadir funcionalidad extra, puede requerir
añadir además, más funcionalidad extra
Las clases que se usan juntas, se empaquetan
juntas
Apunta a la Modificabilidad
Permite facilidad de distribución y actualización
Las clases que se usan juntas, se empaquetan
juntas
Tener un balance entre lo abstracto y lo rígido
Ab
stra
cció
n
Estabilidad
rígido
inútil
Aplica a paquetes, clases y métodos
Separa las responsabilidades:
En un nuevo método
En una nueva dependencia
Las dependencias deben ser sobre abstracciones y
no sobre implementaciones concretas
Relacionado con Dependency Injection
Programática Declarativa
Introspectiva
Separación de responsabilidades mediante objetos
que se mandan mensajes entre sí
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.
[Required]
public void Email(string email)
{
this.Email = email;
}
<Button Width="102"
Height="31"
Click=“OnClick” />
Puedo manipular la lógica utilizando Reflection
Modifica el comportamiento de mi aplicación
Me permite extender mi aplicación
Introducción10 minutos
Diseño de la Lógica de Negocio30 minutos
Arquitectura de la Lógica de Negocio45 minutos
Tipos de Arquitectura25 minutos
DDD Capas AspectosTransaction
Script
Hexagonal CQRS Workflow Cloud
Problemas al construir Software:
Construir Software complejo sin conocer el Dominio
Trabajar en conjunto con el experto de Negocio
Lenguaje Ubicuo
Traducir
Domain Expert
Technical Expert
Refinar
Acordar
Jerga
Jerga
Lenguaje Ubicuo
Domain Expert
Technical Expert
Lenguaje Ubicuo
Bounded
Context
Bounded
Context
Bounded
Context
BDD
TDD
Building Blocks
X
Conjunto de componentes reutilizables
Ayuda a aplicar el principio de SoC
Facilidad para identificar problemas
Elimina duplicación innecesaria
División lógica por funcionalidad
Presentación
Recursos
Negocio
Presentación
Aplicación
Dominio
Servicios
Persistencia
Transversal
Presentación- Interfaz de Usuario
- MVC / MVP / MVVM
Servicios- Capa de Servicios Distribuidos
- Fachada de nuestra lógica
- REST / SOAP
Aplicación- Coordina actividades de la Aplicación
- No incluye lógica de Negocio
- Coordina servicios de la capa de nivel inferior
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
Persistencia- Centraliza el acceso a los datos
- Desacopla la tecnología utilizada
- DAOs / Repositorios / ORM / DataMapper / ActiveRecord
Transversal
- Aspectos
Horizontales
- Impactan en
toda la App.
- Favorece la
reutilización
- DI / AOP
Presentación- Interfaz de Usuario
- MVC / MVP / MVVM
Servicios- Capa de Servicios Distribuidos
- Fachada de nuestra lógica
- REST / SOAP
Aplicación- Coordina actividades de la Aplicación
- No incluye lógica de Negocio
- Coordina servicios de la capa de nivel inferior
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
Persistencia- Centraliza el acceso a los datos
- Desacopla la tecnología utilizada
- DAOs / Repositorios / ORM / DataMapper / ActiveRecord
Transversal
- Aspectos
Horizontales
- Impactan en
toda la App.
- Favorece la
reutilización
- DI / AOP
Presentación
Servicios
Aplicación
Dominio
Persistencia
View
ModelController
DTOsWeb
Services
Application Services
Repository Contracts
Entities Rules
Domain Services
Repository Core
Transversal
Caching
Security
Logging
IoC
Presentación
Servicios
Aplicación
Dominio
Persistencia
View
ModelController
DTOsWeb
Services
Application Services
Entities Rules
Domain Services
Repository Core
Transversal
Caching
Security
Logging
IoC
LoggingLogging
Repository Contracts
Aunque a veces encontramos esto!!!
División lógica por módulos
Separa Responsabilidades y Dependencias
Módulo A Módulo B Módulo C
Equipo A Equipo B Equipo C
Presentación
Recursos
Negocio
Presentación
Recursos
Negocio
Presentación
Recursos
Negocio
Módulo A Módulo B Módulo C
Presentación
Recursos
Negocio
Transversal
Transversal
Presentación
Recursos
Negocio
Aspectos Típicos
Seguridad
Cache
Gestión de Configuraciones
Gestión de Excepciones
Logging
Organiza la lógica de negocio en procedimientos
Cada procedimiento maneja una petición de la
presentación
Presentación
Infraestructura
Servicios (Comandos)
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
DB
Mock DB
Domain
Dominio
Command Query Responsibility Segregation
¿Qué pasa si tenemos pocos usuarios
actualizando los datos pero muchos leyendo?
¿Por que complejizar y comprometer
performance por transformaciones sin sentido?
update read
Hago Algo Aplicación
Almacén de Datos
hace algo
hic
e a
lgo
dam
e
dato
s
Permite escalar por separado el modelo de
Lectura y Escritura
Aplicable a un Bounded Context
UI con respuestas rápidas
Dominio
Modelo
comando
Lectu
ra
Misma fuente de Datos
UI
esc
ritu
ra
Lectu
ra
Dominio
Modelo 1
comando
esc
ritu
ra
Lectu
ra
Distintos modelos de Datos
Lectu
ra
UI
Modelo 2
Dominio
Event Store
comando
esc
ritu
ra
Lectu
ra
Event Sourcing
Lectu
ra
UI
ModeloEventos
SaaS
PaaS
IaaS
Public Cloud
Private Cloud
Organización
Cloud
usuarios
Proveedor
Cloud Platform
Storage / Network
VM VM VM
App 1 App 2 App 3
Organización
Private Cloud
Storage / Network
VM VM
App 1 App 2
App 3
Introducción10 minutos
Diseño de la Lógica de Negocio30 minutos
Arquitectura de la Lógica de Negocio45 minutos
Tipos de Arquitectura25 minutos
Desktop Web
Distribuidas Mobile
Abundan los recursos
Aplicaciones pesadas
Atadas al Sistema Operativo
Recursos escasos
Multiplataforma
Basado en estándares
Interfaces fluidas
Comunicaciones asincrónica
Múltiples servidores
Tecnologías que permitan la distribución
Transparencia en su uso
Cluster
Grid Computing
Interfaces Touch
Tiempo de Respuesta muy rápidos
Guidelines de diseño
Recursos más limitados
top related