10 minutos
             Introducción

30 minutos
             Diseño de la Lógica de Negocio

45 minutos
             Arquitectura de la Lógica de Negocio

25 minutos
             Tipos de Arquitectura
Diseño


Arquitectura


Tipos
10 minutos
             Introducción

30 minutos
             Diseño de la Lógica de Negocio

45 minutos
             Arquitectura de la Lógica de Negocio

25 minutos
             Tipos de Arquitectura
¿Qué es un Modelo?
Visión simplificada de algo complejo utilizada en el
análisis y resolución de problemas
¿Por qué necesitamos modelar?

      …

      …

      …

      …
BPM & Workflow

                   Diagrama de Deploy

                                                              Data examples
                     Diagrama de Capas

                                                                  Story test
Abstracción




                           Diagrama de Clases y Secuencia

                                                            Prototypes

                           Unit Test                                       DSL

                       Código OO


                 Esquema de Base de Datos




              Tecnología                                        Negocio
10 minutos
             Introducción

30 minutos
             Diseño de la Lógica de Negocio

45 minutos
             Arquitectura de la Lógica de Negocio

25 minutos
             Tipos de Arquitectura
Common         Common
SOLID   DRY
                 Closure        Reuse




                  Stable      Separation
KISS    YAGNI
                Abstraction   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



                          inútil
            Abstracción




                                       rígido


                                   Estabilidad
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]
<Button   Width="102"           public void Email(string email)
           Height="31"          {
           Click=“OnClick” />        this.Email = email;
                                }
Puedo manipular la lógica utilizando Reflection

Modifica el comportamiento de mi aplicación

Me permite extender mi aplicación
10 minutos
             Introducción

30 minutos
             Diseño de la Lógica de Negocio

45 minutos
             Arquitectura de la Lógica de Negocio

25 minutos
             Tipos de Arquitectura
Transaction
  DDD       Capas   Aspectos
                                  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

              Domain            Jerga
              Expert

                                     Technical
                                      Expert
                  Jerga



                          Traducir

                          Refinar

                       Acordar
Lenguaje Ubicuo




                            Bounded
                             Context

       Domain              Lenguaje         Technical
       Expert                                Expert
                            Ubicuo
                Bounded
                 Context         Bounded
                                  Context
TDD

BDD
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



                      Negocio



                      Recursos
Transversal
              Presentación




                 Servicios




                Aplicación




                  Dominio




               Persistencia
Transversal
                  - Interfaz de Usuario
                  - MVC / MVP / MVVM                                              Presentación



                  - Capa de Servicios Distribuidos
                  - Fachada de nuestra lógica                                        Servicios
                  - REST / SOAP

- Aspectos
  Horizontales
                  - Coordina actividades de la Aplicación
- Impactan en     - No incluye lógica de Negocio                                    Aplicación
  toda la App.    - Coordina servicios de la capa de nivel inferior
- Favorece la
  reutilización

- DI / AOP
                  - Implementa la funcionalidad principal de nuestro Sistema
                  - Es quien cuenta con las Entidades de nuestro Negocio
                         - Recordar que las operaciones nacen del modelo Ubicuo       Dominio
                  - Totalmente aislado de los componentes de Infraestructura




                  - Centraliza el acceso a los datos
                  - Desacopla la tecnología utilizada                              Persistencia
                  - DAOs / Repositorios / ORM / DataMapper / ActiveRecord
Transversal
                  - Interfaz de Usuario
                  - MVC / MVP / MVVM                                              Presentación



                  - Capa de Servicios Distribuidos
                  - Fachada de nuestra lógica                                        Servicios
                  - REST / SOAP

- Aspectos
  Horizontales
                  - Coordina actividades de la Aplicación
- Impactan en     - No incluye lógica de Negocio                                    Aplicación
  toda la App.    - Coordina servicios de la capa de nivel inferior
- Favorece la
  reutilización

- DI / AOP
                  - Implementa la funcionalidad principal de nuestro Sistema
                  - Es quien cuenta con las Entidades de nuestro Negocio
                         - Recordar que las operaciones nacen del modelo Ubicuo       Dominio
                  - Totalmente aislado de los componentes de Infraestructura




                  - Centraliza el acceso a los datos
                  - Desacopla la tecnología utilizada                              Persistencia
                  - DAOs / Repositorios / ORM / DataMapper / ActiveRecord
Transversal        Controller                              Model
                                                                              Presentación
                                        View
  Caching



                                      Web
                                                               DTOs              Servicios
                                     Services



  Security
              Application Services
                                                                                Aplicación



               Domain Services
  Logging

                                                Entities              Rules       Dominio

              Repository Contracts



    IoC
                  Repository                       Core
                                                                               Persistencia
Transversal        Controller                              Model
                                                                              Presentación
                                        View
  Caching



                                      Web
                                                               DTOs              Servicios
                                     Services



  Security
              Application Services
                                                                                Aplicación



               Domain Services
  Logging

                                                Entities              Rules       Dominio

              Repository Contracts



    IoC
                  Repository                       Core
                                                                               Persistencia
                    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   Presentación   Presentación



  Negocio        Negocio        Negocio



 Recursos       Recursos       Recursos



 Módulo A        Módulo B      Módulo C
Transversal
              Presentación




               Negocio




               Recursos
Transversal
              Presentación




               Negocio




               Recursos
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



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




         Mock DB
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
Almacén de Datos

      hice algo




                                     dame
                                     datos
Hago Algo            hace algo         Aplicación
Permite escalar por separado el modelo de
Lectura y Escritura

Aplicable a un Bounded Context

UI con respuestas rápidas
Misma fuente de Datos


                             Modelo
                 escritura




                                       Lectura
      Lectura




           Dominio           comando   UI
Distintos modelos de Datos


           Modelo 1                     Modelo 2
                  escritura




                                          Lectura
       Lectura




            Dominio           comando      UI
Event Sourcing


         Event Store          Eventos   Modelo
                  escritura




                                         Lectura
       Lectura




            Dominio           comando     UI
SaaS   Public Cloud

PaaS   Private Cloud

IaaS
Proveedor

Organización           App 1    App 2      App 3

                       VM         VM        VM

                          Cloud Platform


               Cloud     Storage / Network



                            Organización
  usuarios

                       App 1    App 2

                       VM         VM       App 3

                       Private Cloud

                         Storage / Network
10 minutos
             Introducción

30 minutos
             Diseño de la Lógica de Negocio

45 minutos
             Arquitectura de la Lógica de Negocio

25 minutos
             Tipos de Arquitectura
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
Business Logic 2012
Business Logic 2012

Business Logic 2012

  • 2.
    10 minutos Introducción 30 minutos Diseño de la Lógica de Negocio 45 minutos Arquitectura de la Lógica de Negocio 25 minutos Tipos de Arquitectura
  • 3.
  • 4.
    10 minutos Introducción 30 minutos Diseño de la Lógica de Negocio 45 minutos Arquitectura de la Lógica de Negocio 25 minutos Tipos de Arquitectura
  • 5.
    ¿Qué es unModelo? Visión simplificada de algo complejo utilizada en el análisis y resolución de problemas
  • 6.
    ¿Por qué necesitamosmodelar?  …  …  …  …
  • 7.
    BPM & Workflow Diagrama de Deploy Data examples Diagrama de Capas Story test Abstracción Diagrama de Clases y Secuencia Prototypes Unit Test DSL Código OO Esquema de Base de Datos Tecnología Negocio
  • 8.
    10 minutos Introducción 30 minutos Diseño de la Lógica de Negocio 45 minutos Arquitectura de la Lógica de Negocio 25 minutos Tipos de Arquitectura
  • 9.
    Common Common SOLID DRY Closure Reuse Stable Separation KISS YAGNI Abstraction of Concerns
  • 10.
    Single Responsability Principle OpenClose Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle
  • 11.
    Don’t Repeat Yourself Evitarduplicaciones Aplicar abstracciones
  • 12.
    Keep it Simple…stupid Evitar complejizar el problema de forma innecesaria Un modelo simple es siempre más fácil de mantener
  • 13.
    You ain’t gonnaneed 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
  • 14.
    Las clases quese usan juntas, se empaquetan juntas Apunta a la Modificabilidad Permite facilidad de distribución y actualización
  • 15.
    Las clases quese usan juntas, se empaquetan juntas
  • 16.
    Tener un balanceentre lo abstracto y lo rígido inútil Abstracción rígido Estabilidad
  • 17.
    Aplica a paquetes,clases y métodos Separa las responsabilidades:  En un nuevo método  En una nueva dependencia
  • 18.
    Las dependencias debenser sobre abstracciones y no sobre implementaciones concretas Relacionado con Dependency Injection
  • 19.
    Programática Declarativa Introspectiva
  • 20.
    Separación de responsabilidadesmediante objetos que se mandan mensajes entre sí
  • 21.
    Separa la lógicade negocio de aspectos intrusivos. Parametriza fuera del código los componentes arquitecturales. Me concentro en el qué y no en el cómo. [Required] <Button Width="102" public void Email(string email) Height="31" { Click=“OnClick” /> this.Email = email; }
  • 22.
    Puedo manipular lalógica utilizando Reflection Modifica el comportamiento de mi aplicación Me permite extender mi aplicación
  • 23.
    10 minutos Introducción 30 minutos Diseño de la Lógica de Negocio 45 minutos Arquitectura de la Lógica de Negocio 25 minutos Tipos de Arquitectura
  • 24.
    Transaction DDD Capas Aspectos Script Hexagonal CQRS Workflow Cloud
  • 25.
    Problemas al construirSoftware:  Construir Software complejo sin conocer el Dominio  Trabajar en conjunto con el experto de Negocio
  • 26.
    Lenguaje Ubicuo Domain Jerga Expert Technical Expert Jerga Traducir Refinar Acordar
  • 27.
    Lenguaje Ubicuo Bounded Context Domain Lenguaje Technical Expert Expert Ubicuo Bounded Context Bounded Context
  • 28.
  • 29.
  • 30.
    Conjunto de componentesreutilizables Ayuda a aplicar el principio de SoC Facilidad para identificar problemas Elimina duplicación innecesaria
  • 31.
    División lógica porfuncionalidad Presentación Negocio Recursos
  • 32.
    Transversal Presentación Servicios Aplicación Dominio Persistencia
  • 33.
    Transversal - Interfaz de Usuario - MVC / MVP / MVVM Presentación - Capa de Servicios Distribuidos - Fachada de nuestra lógica Servicios - REST / SOAP - Aspectos Horizontales - Coordina actividades de la Aplicación - Impactan en - No incluye lógica de Negocio Aplicación toda la App. - Coordina servicios de la capa de nivel inferior - Favorece la reutilización - DI / AOP - Implementa la funcionalidad principal de nuestro Sistema - Es quien cuenta con las Entidades de nuestro Negocio - Recordar que las operaciones nacen del modelo Ubicuo Dominio - Totalmente aislado de los componentes de Infraestructura - Centraliza el acceso a los datos - Desacopla la tecnología utilizada Persistencia - DAOs / Repositorios / ORM / DataMapper / ActiveRecord
  • 34.
    Transversal - Interfaz de Usuario - MVC / MVP / MVVM Presentación - Capa de Servicios Distribuidos - Fachada de nuestra lógica Servicios - REST / SOAP - Aspectos Horizontales - Coordina actividades de la Aplicación - Impactan en - No incluye lógica de Negocio Aplicación toda la App. - Coordina servicios de la capa de nivel inferior - Favorece la reutilización - DI / AOP - Implementa la funcionalidad principal de nuestro Sistema - Es quien cuenta con las Entidades de nuestro Negocio - Recordar que las operaciones nacen del modelo Ubicuo Dominio - Totalmente aislado de los componentes de Infraestructura - Centraliza el acceso a los datos - Desacopla la tecnología utilizada Persistencia - DAOs / Repositorios / ORM / DataMapper / ActiveRecord
  • 35.
    Transversal Controller Model Presentación View Caching Web DTOs Servicios Services Security Application Services Aplicación Domain Services Logging Entities Rules Dominio Repository Contracts IoC Repository Core Persistencia
  • 36.
    Transversal Controller Model Presentación View Caching Web DTOs Servicios Services Security Application Services Aplicación Domain Services Logging Entities Rules Dominio Repository Contracts IoC Repository Core Persistencia Aunque a veces encontramos esto!!!
  • 37.
    División lógica pormódulos Separa Responsabilidades y Dependencias Módulo A Módulo B Módulo C Equipo A Equipo B Equipo C
  • 38.
    Presentación Presentación Presentación Negocio Negocio Negocio Recursos Recursos Recursos Módulo A Módulo B Módulo C
  • 39.
    Transversal Presentación Negocio Recursos
  • 40.
    Transversal Presentación Negocio Recursos
  • 41.
    Aspectos Típicos  Seguridad  Cache  Gestión de Configuraciones  Gestión de Excepciones  Logging
  • 42.
    Organiza la lógicade negocio en procedimientos Cada procedimiento maneja una petición de la presentación
  • 43.
  • 44.
    El core esel modelo y es centro de la aplicación La infraestructura depende del core La UI depende del core y tiene acceso a la infraestructura
  • 45.
    Domain DB Mock DB
  • 46.
  • 47.
    Command Query ResponsibilitySegregation ¿Qué pasa si tenemos pocos usuarios actualizando los datos pero muchos leyendo? ¿Por que complejizar y comprometer performance por transformaciones sin sentido?
  • 48.
    update read
  • 49.
    Almacén de Datos hice algo dame datos Hago Algo hace algo Aplicación
  • 50.
    Permite escalar porseparado el modelo de Lectura y Escritura Aplicable a un Bounded Context UI con respuestas rápidas
  • 51.
    Misma fuente deDatos Modelo escritura Lectura Lectura Dominio comando UI
  • 52.
    Distintos modelos deDatos Modelo 1 Modelo 2 escritura Lectura Lectura Dominio comando UI
  • 53.
    Event Sourcing Event Store Eventos Modelo escritura Lectura Lectura Dominio comando UI
  • 54.
    SaaS Public Cloud PaaS Private Cloud IaaS
  • 55.
    Proveedor Organización App 1 App 2 App 3 VM VM VM Cloud Platform Cloud Storage / Network Organización usuarios App 1 App 2 VM VM App 3 Private Cloud Storage / Network
  • 56.
    10 minutos Introducción 30 minutos Diseño de la Lógica de Negocio 45 minutos Arquitectura de la Lógica de Negocio 25 minutos Tipos de Arquitectura
  • 57.
    Desktop Web Distribuidas Mobile
  • 58.
    Abundan los recursos Aplicacionespesadas Atadas al Sistema Operativo
  • 59.
    Recursos escasos Multiplataforma Basado enestándares Interfaces fluidas Comunicaciones asincrónica
  • 60.
    Múltiples servidores Tecnologías quepermitan la distribución Transparencia en su uso Cluster Grid Computing
  • 61.
    Interfaces Touch Tiempo deRespuesta muy rápidos Guidelines de diseño Recursos más limitados