parte ii - logica de negocios

50
Lógica de Negocios Esteban Calabria 2007

Upload: juan-andres-amado-cerpa

Post on 27-Oct-2015

50 views

Category:

Documents


0 download

TRANSCRIPT

Lógica de Negocios

Esteban Calabria

2007

Lógica de Negocios

� Para organizar el Layer de Negocios

�Transaction Script

�Table Module

�Domain Module

�Service Layer

�Scripting

Conceptos Previos

Glanularidad Interfaces

� Coarse Grained

� Métodos con muchos

parámetros

� SOA

� Distribución

� Un procesamiento

completo para un

servicio

� Fine Grained

� Métodos con pocos

parámetros

� Domain Model

� Contiene un conjunto

de operaciones

separadas

�Mas Flexibilidad

Transaction Script

Transaction Script

Organiza la lógica de la aplicación en

procedimientos que resuelven la funcionalidad

que la aplicación requiere

Transaction Script

� Es un procedimiento que:

�Toma el input de la presentación

�Lo procesa y realiza los cálculos y

validaciones que correspondan

�Guarda los datos en una base de datos

�Devuelve un resultado a la presentación

Transaction Script

�Opciones de Implementación:

�Organizar en un conjunto de Métodos

�Organizar en un conjunto de Clases.

�Clases con Interfaces Coarse-Grained.

�Permite distribución

�Utilizando el patrón Command

�Fine-Grained

Transaction Script

�Coarse-Grained Transaction Script:

+AgregarFactura(in Fecha : Date, in Cliente : int, in Vencimiento : Date, in Lista De Precios : int, in ....) : int

«interface»

FacturaScript

Transaction Script

� Fine-Grained Transaction Script:

Transaction Script

� Problema a Resolver

� Como comunico mi capa de Transaction Scrtipts con

las otras capas de mi aplicación

� Opciones

� ID

� RecordSets

� Algún Tipo de Dato Abstracto

� Iteradores

� DTO

� XML

Transaction Script

� Ejemplo

� Se desea listar las ventas del ultimo período

� Para ello debemos comunicarnos con la capa de la

interfaz grafica

+VentasUltimoPeriodo() : ???

ScriptVentas

Transaction Script

� Opciones

� Devolver un RecordSet con las ventas del ultimo

período

� Devolver un Iterador a las ventas del ultimo Período

� Devolver una colección de DTO Ventas

� Devuelve un XML que contiene la colección de

Ventas

Transaction Script

� Consecuencias

�Ve a la aplicación como una serie de transacciones

�Existen varios componentes de negocios.

�Cada componentes de negocios tienen métodos que corresponden directamente con la funcionalidad que la aplicación requiere.

Transaction Script

� Consecuencias

�Se pueden generar distintos niveles de transaction script para eliminar el código duplicado

�Son un buen punto para incluir� Manejo de transacciones (strart transacción /

commit)

� Seguridad

Transaction Script

� Ventajas

�Es un modelo procedural simple que todos

los desarrolladores entienden.

�Fácil de comprender y rápido de desarrollar

para problemas no muy complejos

�Un procedimiento para cada acción

�Cada procedimiento maneja la transacción

Transaction Script

� Desventajas:

�Es propenso a que aparezca código

duplicado

�Carece de la flexibilidad que poseen otras

formas de organización.

�Se dificulta mantener el software (realizar

correcciones, agregar funcionalidades) a

medida que los requerimientos cambian.

Table Module

Table Module

Table Module

� Una instancia que maneja toda la lógica

de negocios para todas las filas de una

tabla o vista de la base de datos

� Se ajusta muy bien si el entorno donde

trabajamos esta preparado para trabajar

con RecordSets como por ejemplo Delphi

o .NET.

Table Module

Table Module

� Consecuencia

�Este patrón representa un punto medio de complejidad entre los otros dos.

�El diseño se hace más dependiente a la plataforma que elijamos

�Se ajusta muy bien con los DataSets de ADO.NET

�Es más difícil montar pruebas automaticas y hacer unit testing

Table Module� Esta directamente

relacionado con el

patrón de

Arquitectura

Recordset

� En el gráfico

podemos apreciar la

implementación de

.NET de ese patron

mediante la clase

DataSet

Domain Module

Domain Module

Una red de objetos interconectados que incorporan

tanto los datos como el comportamiento

Domain Module

� Temas a tener en cuenta

�Mapeo entre los objetos y la base de datos

�Generación de Ids.

�Colecciones Fuertemente tipadas

Domain Module

� Temas a tener en cuenta

�Mapeo entre los objetos y la base de datos

�Generación de Ids.

�Colecciones Fuertemente tipadas

Domain Module

� Patrones Relacionados

� Lazy Load

� Data Mapper

� Identity Field

Domain Module

� Permite aplicar técnicas y patrones conocido

(GOF) para trabajar con objetos.

� Creacionales

� Abstract

Factory

� Builder.

� Factory

Method

� Prototype.

� Singleton

� Estructurales

� Adapter

� Bridge

� Composite

� Decorator

� Facade

code.

� Flyweight

� Proxy

� Comportamiento

� Command

� Iterator

� Mediator

� Memento

� Observer

� State

� Strategy

� Template method

� Visitor

Domain Model

� Ideas para organizar domain module

� División vertical (en Capas)

Domain Model� División horizontal según funcionalidad (paquetes)

Domain Module

� Desventajas

�Requiere mayor preparación y conocimientos

por parte del equipo de desarrollo.

�No aprovecha la capacidad de determinados

entornos para trabajar alrededor de

RecordSets

Elección de la forma de

Organizar la lógica de negocios

Layer de Negocios

� Criterios para elegir

�Complejidad del problema

�Perspectiva de cambio del software a futuro

�Entorno de Desarrollo

�Equipo de Trabajo

Complejidad del problema

Ejemplo

Layer De Negocios

� Se tiene que diseñar un sistema para 3 clientes

distintos

� Los tres clientes manejan presupuesto

� Dependiendo ciertas circunstancias los

presupuestos se aprueban automáticamente

� Cada cliente tiene un criterio de aprobación

diferente

Juan Perez

En mi empresa los presupuestos

se aprueban automaticamente si

el cliente tiene cuenta corriente y

el saldo de la misma es positivo

Pedro Ramirez

En mi empresa si el cierre del

ultimo ejercicio fue positivo y se

pronostica que no habrá inflación

en los proximos 3 meses, el

presupuesto se aprueba

automaticamente

Ernesto Horangel

Si mercurio se encuentra alineado

con jupiter y neptuno y hay luna

llena entonces el presupuesto se

aprueba directamente

Ejemplo Con Transaction Script

If ( Cliente=Juan Perez )

{

Aprobado = TieneCuentaCorriente(IDcliente) and SaldoPositivo(IDCliente);

}

Else If ( Cliente=Pedro Ramirez)

{

(…)

}

Else If (Cliente=Ernesto Horangel)

{(…)

}

Ejemplo Con Domain Model

Presupuesto EstrategiaAprobacionAutomatica

AprobacionJuanPerez AprobacionPedroRamirez AprobacionErnestoHorangel

1 *

Domain logic

vs.

Aplication logic

Domain logic vs. Aplication logic

� Tipos de Lógica de Negocios

�Lógica del dominio del problema (domain logic)� Corresponden a calculos, validaciones, etcque ver puramente con el problema

�Lógica de la aplicación (aplication logic)� Corresponde por ejemplo mandar un mail al responsible cuando se produce una determinada acción

Service Layer

Service Layer

Service Layer

Define una capa con los servicios

disponibles a ejecutar la aplicacion y

corrdina la respuesta a esos servicios.

Scripting

Scripting

Permitir parametrizar en tiempo de

ejecución la logica de la aplicación

(application logic) mediante scripts que se

ejecutan ante determinados eventos del

sistema.

Lógica de Negocios

� Links� http://articles.techrepublic.com.com/5100-22-5107664.html