You are on page 1of 25

Introduccin a la lgica de

negocio en desarrollo de SW
Rodrigo Aranda Fernndez
Centro de Servicios Financieros
ADSI

Conceptos
Lgica de negocio: Es la parte del programa que
codifica las reglas de negocio del mundo real.
Indica cmo deben interactuar los objetos de
negocio entre s y cmo se puede acceder a ellos.
Reglas de negocio: Describe las operaciones,
definiciones y restricciones que aplican a una
organizacin. Las operaciones en su conjunto
forman un proceso el cual es utilizado para crear
los sistemas.

Conceptos
Bsicamente, la lgica de negocio hace referencia al
cdigo, mientras que las reglas de negocio hacen
referencia al negocio en s.
Conceptualmente, se podra decir que la lgica de
negocio posee dos categoras:
Validacin: todos los datos que ingresen deben
ser consistentes con el negocio.
Flujo: ciertas condiciones generan que los datos
pasen de un estado a otro, que se creen, alteren
o eliminen nuevos datos y que determinadas
personas tengan que ser alertadas de ello.

Conceptos
Tcnicamente, se podra decir que la lgica de negocios la
podemos dividir en 2 grandes categoras:
Objetos de Procesos de Negocios: Son aquellos que
reflejan la lgica de la actividad de el negocio, como
por ejemplo como procesar un pedido, una reserva,
etc.
Objetos o Entidades de Negocios: Con las tecnologas
actuales de ORM estos objetos se refieren a las clases
que estn mapeadas a objetos o tablas en la BD, es
decir, clases que forman parte de una unidad de
Persistencia de JPA o Hibernate y que pueden aparecer
opcionalmente en el Persistance.xml

Diseo procedimental u Orientado a


Objetos (OO)
Hay dos formas de organizar la lgica de negocio segn el estilo de diseo:
Diseo procedimental u Orientado a Objetos (OO).
El diseo procedimental organiza el cdigo en funciones y estructuras de datos
simples. Las estructuras de datos, generalmente se crean, se inicializan y se pasan
como parmetros a las funciones.
La relacin entre estas funciones y los datos que utilizan suelen asociarse en libreras
segn el criterio del programador.
Los principales atractivos del estilo procedimental son:
Implementar nuevas funcionalidades es fcil. Basta aadir cdigo a un script
transaccional o aadir un script transaccional nuevo.
No hace falta disear la aplicacin. No se necesita determinar las clases ni sus
responsabilidades. La lgica de negocio se distribuye en los scripts transaccionales
y los datos persistentes en simples estructuras de datos.
Es ms asequible para programadores con poca experiencia
El sistema funciona bien con lgicas de negocio simples pero a medida que sta se
complica, los scripts transaccionales suelen contener miles de lneas de cdigo. Se
promueve la duplicacin de cdigo, los programadores tienden a programar para si
mismos debido a la dificultad de encontrar los mtodos disponibles para cada modelo
de datos. El sistema se hace demasiado difcil de entender, probar y mantener.

Diseo procedimental u Orientado a


Objetos (OO)
El diseo orientado a objetos organiza el cdigo en objetos que contienen ambos
aspectos, datos y comportamiento.
Dichos objetos colaboran, generalmente mediante herencia o composicin para
resolver la lgica de la aplicacin. La relacin entre los datos y las funciones que los
usan est mantenida en su mayor parte por el propio lenguaje. Generalmente el
diseo orientado a objetos es ms fcil de entender, mantener, extender y probar.
Para desarrollar en objetos es necesaria una gran cantidad de anlisis para generar los
objetos adecuados que definan correctamente la empresa, negocio o institucin. Por
cada objeto a su vez el analista programador se debe preguntar, qu debe conocer,
que atributos debe tener, qu debe hacer.
El objetivo del anlisis es conseguir una abstraccin de la gestin para poder modelar
de forma ptima la solucin. De esta forma se podr entender, mantener y extender
mucho ms fcilmente el sistema.
A pesar de los beneficios del diseo OO, muchas aplicaciones JEE modernas se han
escrito utilizando el estilo procedimental.

Diseo procedimental u Orientado a


Objetos (OO)
Las principales ventajas de la arquitectura de Framework ligero (diseo OO) son:
Es simple y verstil
Escalable horizontalmente mediante el uso de clusters en los contenedores web
aunque limitada por las sesiones y el servidor de base de datos
Reutilizacin
de cdigo: Los contenedores ligeros manejan POJOs que son
independientes del contenedor. Es posible reutilizar los modelos del dominio en
cualquier otro entorno.
Servicios declarativos mediante contenedores ligeros con soporte de AOP.
Orientacin a Objetos: Puesto que no hay limitaciones impuestas en los POJOs, la
lgica de negocio de la aplicacin puede resolverse utilizando tcnicas de diseo
OO. Esta ventaja se hace ms importante segn la lgica de negocio se hace ms
compleja.
Es posible escribir test unitarios de forma independiente para cada modelo del
dominio ya que no es necesario desplegarlos en el contenedor.

Modelando las reglas


En su forma ms simple, una regla de negocio posee varios parmetros de entrada,
una validacin entre stos y de acuerdo a dicha validacin, realiza una accin de
salida.
Por ejemplo, tenemos la siguiente regla de negocio como parte de un proceso real de
dictamen y que nos fue proporcionado por el cliente para su modelado:
Si la reclamacin contiene el nmero de siniestro se toma como una reclamacin
complementaria, en caso contrario se trata de una reclamacin inicial.
Para modelar esta regla de negocio se identifican los siguientes elementos:
Entidades involucradas: Reclamacin.
Parmetros involucrados: nmero de siniestro.
Validaciones a realizar: si nmero de siniestro <> nulo
Accin a tomar: modificar tipo de reclamacin como complementaria.
Caso alterno: modificar tipo de reclamacin como inicial.
Esto en pseudocdigo se expresa como IF Reclamacion.numSiniestro != null THEN
Reclamacion.tipo = complementaria ELSE Reclamacion.tipo = inicial y en un Excel
puede quedar de la siguiente manera:
Ejemplo1

Modelando las reglas


Una regla un poco ms compleja

Pero qu ocurre cuando una regla posee varias validaciones? Y si al validar una condicin debe
ejecutar caminos alternos? Este mismo formato de documentacin de reglas de negocio permite
acomodar mayor complejidad:
Para reembolsos, verificar que la factura est cubierta por la vigencia de la pliza. En caso de ser
correctos, verificar el periodo de prescripcin de gastos; en caso contrario, registrar una incidencia.
En este caso, falta detalle cmo generar una nueva incidencia, qu es la "verificacin de periodo de
prescripcin de gastos" pero podemos dejarlo igualmente como un IF/THEN/ELSE que podemos
modelar as:
Entidades involucradas: Pliza, Factura.
Parmetros involucrados: echa de emisin de la factura, fechas de inicio y fin de la pliza.
Validaciones a realizar: si fecha de emisin > fecha inicio pliza Y fecha de emisin < fecha fin pliza
Accin a tomar: ejecutar la regla "verificar periodo de prescripcin de gastos".
Caso alterno: generar una nueva incidencia.

Que en pseudocdigo se expresa como IF Factura.fechaEmision > Poliza.fechaInicioVigencia &&


Factura.fechaEmision < Poliza.fechaFinVigencia THEN ejecuta "verificar periodo de prescripcin de
gastos" ELSE new Incidencia.
Ntese que la ejecucin de otras reglas de negocio a partir de una validacin ya conforma procesos de
negocio.
Ejemplo2

Tablas de decisin
Las reglas de negocio tambin pueden ser vistas como TABLAS
DE DECISIN. Una tabla de decisin son varias reglas de negocio
compactas que deben ser analizadas al tiempo.
Es una representacin grfica de una matriz de filas y columnas
separadas en cuatro cuadrantes que indican condiciones
y acciones. Las reglas de decisiones, incluidas en una tabla de
decisin establecen el procedimiento a seguir cuando existen
ciertas condiciones. Se utiliza la tabla de decisin cuando existen
muchas combinaciones.

Estructura de la tabla de decisin


La tabla de decisin est integrada por cuatro secciones:

Identificacin de Condiciones: seala aquellas que son ms relevantes. Se detalla


una condicin por rengln. Se llaman condiciones a situaciones variables que
pueden ocurrir
Entradas de Condiciones: indican qu valor, si es que lo hay, se debe asociar para
una determinada condicin. Se indican valores de las condiciones indicadas en la
primera seccin, dependiendo del tipo de tabla de decisin (de entrada limitada o
extendida) que se construya para representar el proceso.
Identificacin de Acciones: enlista el conjunto de todos los pasos que se deben
seguir cuando se presenta cierta condicin. Se llaman acciones a los distintos
comportamientos que se asumirn en funcin de los valores que tomen las
condiciones. Se escriben en el orden en que deben ser ejecutadas.
Entradas de Acciones: muestran las acciones especficas del conjunto que deben
emprender cuando ciertas condiciones o combinaciones de stas son verdaderas.

Las columnas del lado derecho de la tabla enlazan condiciones y acciones, forman
reglas de decisin que establecen las condiciones que deben satisfacerse para
emprender un determinado conjunto de acciones.

Tipos de tablas de decisin


Tablas de decisin binaria: cuando todas las condiciones son binarias, es decir la
evaluacin de todas las condiciones est limitada a dos valores posibles.
Tambin se denomina limitadas. Los valores en general sern SI (S), NO (N), aunque
pueden tomar otros valores binarios, por ejemplo, BLANCO (B) o NEGRO(N).

Tipos de tablas de decisin


Tablas de decisin mltiples: cuando todas sus condiciones pueden tomar ms de dos
valores. Tambin se denominan Ampliadas o Extendidas

Tipos de tablas de decisin


Tablas de decisin mixtas: son aquellas en que intervienen condiciones binarias y
mltiples. Se combinan la forma de los valores de las dos tablas anteriores,
considerando los valores de las condiciones en forma de entrada extendida e
identificando las acciones en forma de entrada limitada, o viceversa.

Como extraer las reglas de


negocio?

Donde estn las reglas de negocio de la empresa?


Estn en los procesos?

Caso
de Uso

Caso
de Uso

Caso
de Uso

Caso
de Uso

Caso de Uso

Base empresarial

Modelo de produccin actual

Modelado de
negocio

Mtodo propuesto
Anlisis de
requerimientos

Caso
de
Uso

Caso
de
Uso

Fuente: Grupo de Investigacin de Ingeniera del Software, Universidad de Murcia

Mtodo para la extraccin de reglas de negocio

Reglas de negocio

Mtodo de
extraccin

Casos de uso
Fuente: Grupo de Investigacin de Ingeniera del Software, Universidad de Murcia

Como funciona?

Analizar
Casos de Uso

Identificar
Elementos
Base

Procesar
tabla de
decisin

Nuevos casos
de uso

Fuente: Grupo de Investigacin de Ingeniera del Software, Universidad de Murcia

Expresar
reglas de
negocio

Como funciona?
Analizar Casos de Uso

Verificar la completitud de los


elementos que lo conforman.

Fuente: Grupo de Investigacin de Ingeniera del Software, Universidad de Murcia

Como funciona?
Identificar Elementos Base
Leer el caso de uso e identificar:
Actividades o acciones
(verbos)
Condiciones (hechos o
restricciones)
Tabla de condiciones

CONDICIONES
Afiliado Activo
Afiliado Multiafiliado
Citas Incumplidas
Cita Programada
Cita Odontolgica
Programa Mdico PyP
Programa Mdico Especialista
Programa Mdico Pediatra
Afiliado < 14 aos
Tratamiento OD sin terminar
Ultima cita OD > 6 meses
Afiliado inscrito a REB
Prestador Activo
Prestador libre
Afiliado tiene historia
Afiliado tiene Glosas

Fuente: Grupo de Investigacin de Ingeniera del Software, Universidad de Murcia

Como funciona?
Procesar tabla de decisin
Cargar la informacin en la
tabla
Aplicar teorema matemtico
Aplicar las leyes
Depurar las tablas

Fuente: Grupo de Investigacin de Ingeniera del Software, Universidad de Murcia

Como funciona?
Nuevos casos de uso
Agrupar condiciones
Generar casos de
uso para estos
grupos de
condiciones

Fuente: Grupo de Investigacin de Ingeniera del Software, Universidad de Murcia

Como funciona?
Expresar reglas de
negocio
Semnticamente
O Generar pseudo cdigo

Fuente: Grupo de Investigacin de Ingeniera del Software, Universidad de Murcia

Referencias
http://eve-ingsistemas-u.blogspot.com/2012/05/tablas-dedecision-parte-1.html
Cecilia Contreras Bez y Harold Adrian Bolaos Rodriguez. Mtodo
para la extraccin de reglas de negocio aplicados a casos de uso en
procesos empresariales(online)
http://www.aprenderaprogramar.com/index.php?option=com_atta
chments&task=download&id=119

You might also like