Business Logic 2012

63

description

Presentación de la clase "Lógica de Negocio" de la materia "Arquitectura de Proyectos IT" dictada en la Universidad Tecnológica Nacional, Facultad Regional Buenos Aires (UTN FRBA).

Transcript of Business Logic 2012

Page 1: Business Logic 2012
Page 2: Business Logic 2012

Introducción10 minutos

Diseño de la Lógica de Negocio30 minutos

Arquitectura de la Lógica de Negocio45 minutos

Tipos de Arquitectura25 minutos

Page 3: Business Logic 2012

Diseño

Arquitectura

Tipos

Page 4: Business Logic 2012

Introducción10 minutos

Diseño de la Lógica de Negocio30 minutos

Arquitectura de la Lógica de Negocio45 minutos

Tipos de Arquitectura25 minutos

Page 5: Business Logic 2012

¿Qué es un Modelo?

Visión simplificada de algo complejo utilizada en el

análisis y resolución de problemas

Page 6: Business Logic 2012

¿Por qué necesitamos modelar?

Page 7: Business Logic 2012

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

Page 8: Business Logic 2012

Introducción10 minutos

Diseño de la Lógica de Negocio30 minutos

Arquitectura de la Lógica de Negocio45 minutos

Tipos de Arquitectura25 minutos

Page 9: Business Logic 2012

SOLID DRYCommon

Closure

Common

Reuse

KISS YAGNIStable

Abstraction

Separation

of Concerns

Page 10: Business Logic 2012

Single Responsability Principle

Open Close Principle

Liskov Substitution Principle

Interface Segregation Principle

Dependency Inversion Principle

Page 11: Business Logic 2012

Don’t Repeat Yourself

Evitar duplicaciones

Aplicar abstracciones

Page 12: Business Logic 2012

Keep it Simple… stupid

Evitar complejizar el problema de forma

innecesaria

Un modelo simple es siempre más fácil de

mantener

Page 13: Business Logic 2012

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

Page 14: Business Logic 2012

Las clases que se usan juntas, se empaquetan

juntas

Apunta a la Modificabilidad

Permite facilidad de distribución y actualización

Page 15: Business Logic 2012

Las clases que se usan juntas, se empaquetan

juntas

Page 16: Business Logic 2012

Tener un balance entre lo abstracto y lo rígido

Ab

stra

cció

n

Estabilidad

rígido

inútil

Page 17: Business Logic 2012

Aplica a paquetes, clases y métodos

Separa las responsabilidades:

En un nuevo método

En una nueva dependencia

Page 18: Business Logic 2012

Las dependencias deben ser sobre abstracciones y

no sobre implementaciones concretas

Relacionado con Dependency Injection

Page 19: Business Logic 2012

Programática Declarativa

Introspectiva

Page 20: Business Logic 2012

Separación de responsabilidades mediante objetos

que se mandan mensajes entre sí

Page 21: Business Logic 2012

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

Page 22: Business Logic 2012

Puedo manipular la lógica utilizando Reflection

Modifica el comportamiento de mi aplicación

Me permite extender mi aplicación

Page 23: Business Logic 2012

Introducción10 minutos

Diseño de la Lógica de Negocio30 minutos

Arquitectura de la Lógica de Negocio45 minutos

Tipos de Arquitectura25 minutos

Page 24: Business Logic 2012

DDD Capas AspectosTransaction

Script

Hexagonal CQRS Workflow Cloud

Page 25: Business Logic 2012

Problemas al construir Software:

Construir Software complejo sin conocer el Dominio

Trabajar en conjunto con el experto de Negocio

Page 26: Business Logic 2012

Lenguaje Ubicuo

Traducir

Domain Expert

Technical Expert

Refinar

Acordar

Jerga

Jerga

Page 27: Business Logic 2012

Lenguaje Ubicuo

Domain Expert

Technical Expert

Lenguaje Ubicuo

Bounded

Context

Bounded

Context

Bounded

Context

Page 28: Business Logic 2012

BDD

TDD

Page 29: Business Logic 2012

Building Blocks

X

Page 30: Business Logic 2012

Conjunto de componentes reutilizables

Ayuda a aplicar el principio de SoC

Facilidad para identificar problemas

Elimina duplicación innecesaria

Page 31: Business Logic 2012

División lógica por funcionalidad

Presentación

Recursos

Negocio

Page 32: Business Logic 2012

Presentación

Aplicación

Dominio

Servicios

Persistencia

Transversal

Page 33: Business Logic 2012

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

Page 34: Business Logic 2012

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

Page 35: Business Logic 2012

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

Page 36: Business Logic 2012

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

Page 37: Business Logic 2012

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

Page 38: Business Logic 2012

Presentación

Recursos

Negocio

Presentación

Recursos

Negocio

Presentación

Recursos

Negocio

Módulo A Módulo B Módulo C

Page 39: Business Logic 2012

Presentación

Recursos

Negocio

Transversal

Page 40: Business Logic 2012

Transversal

Presentación

Recursos

Negocio

Page 41: Business Logic 2012

Aspectos Típicos

Seguridad

Cache

Gestión de Configuraciones

Gestión de Excepciones

Logging

Page 42: Business Logic 2012

Organiza la lógica de negocio en procedimientos

Cada procedimiento maneja una petición de la

presentación

Page 43: Business Logic 2012

Presentación

Infraestructura

Servicios (Comandos)

Page 44: Business Logic 2012

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

Page 45: Business Logic 2012

DB

Mock DB

Domain

Page 46: Business Logic 2012

Dominio

Page 47: Business Logic 2012

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?

Page 48: Business Logic 2012

update read

Page 49: Business Logic 2012

Hago Algo Aplicación

Almacén de Datos

hace algo

hic

e a

lgo

dam

e

dato

s

Page 50: Business Logic 2012

Permite escalar por separado el modelo de

Lectura y Escritura

Aplicable a un Bounded Context

UI con respuestas rápidas

Page 51: Business Logic 2012

Dominio

Modelo

comando

Lectu

ra

Misma fuente de Datos

UI

esc

ritu

ra

Lectu

ra

Page 52: Business Logic 2012

Dominio

Modelo 1

comando

esc

ritu

ra

Lectu

ra

Distintos modelos de Datos

Lectu

ra

UI

Modelo 2

Page 53: Business Logic 2012

Dominio

Event Store

comando

esc

ritu

ra

Lectu

ra

Event Sourcing

Lectu

ra

UI

ModeloEventos

Page 54: Business Logic 2012

SaaS

PaaS

IaaS

Public Cloud

Private Cloud

Page 55: Business Logic 2012

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

Page 56: Business Logic 2012

Introducción10 minutos

Diseño de la Lógica de Negocio30 minutos

Arquitectura de la Lógica de Negocio45 minutos

Tipos de Arquitectura25 minutos

Page 57: Business Logic 2012

Desktop Web

Distribuidas Mobile

Page 58: Business Logic 2012

Abundan los recursos

Aplicaciones pesadas

Atadas al Sistema Operativo

Page 59: Business Logic 2012

Recursos escasos

Multiplataforma

Basado en estándares

Interfaces fluidas

Comunicaciones asincrónica

Page 60: Business Logic 2012

Múltiples servidores

Tecnologías que permitan la distribución

Transparencia en su uso

Cluster

Grid Computing

Page 61: Business Logic 2012

Interfaces Touch

Tiempo de Respuesta muy rápidos

Guidelines de diseño

Recursos más limitados

Page 62: Business Logic 2012
Page 63: Business Logic 2012