¿Qué es realmente la "lógica de negocios"?


115

Estoy trabajando con el desarrollo web desde 2009, cuando comencé con PHP. Cuando me mudé a ASP.NET, escuché mucho sobre DDD y OOAD, donde se presta mucha atención a esta "lógica de negocios" y "reglas de negocios". El punto es que todas las aplicaciones que he desarrollado hasta ahora se referían a operaciones CRUD y nunca he visto estas cosas en la práctica.

Simplemente no puedo imaginar lo que esas cosas realmente pueden ser en la práctica. Entonces, ¿qué es realmente esta lógica de negocios y cómo encaja esto en una aplicación? Sé que estos se implementan como métodos en modelos de dominio, pero ¿cuáles podrían ser esos métodos y en qué parte de la aplicación podrían usarse?

Respuestas:


107

CRUD es un acrónimo que significa Crear, Leer, Actualizar y Eliminar. Esas son las cuatro operaciones básicas que puede realizar en una tupla de base de datos. Pero siempre hay más en las aplicaciones comerciales que crear, leer, actualizar y eliminar registros de bases de datos.

Comencemos con algunas definiciones básicas, y luego veamos un par de ejemplos y veamos cómo esas definiciones se asignan a los ejemplos, y cómo se asignan al software real.

La lógica empresarial o la lógica de dominio es esa parte del programa que codifica las reglas comerciales del mundo real que determinan cómo se pueden crear, almacenar y cambiar los datos. Prescribe cómo los objetos comerciales interactúan entre sí y aplica las rutas y los métodos mediante los cuales se accede y actualiza los objetos comerciales.

Las reglas de negocio describen las operaciones, definiciones y restricciones que se aplican a una organización. Las operaciones colectivamente forman un proceso; toda empresa utiliza estos procesos para formar sistemas que hacen las cosas.

Ahora, trabajemos con algunos ejemplos.

Transferencia de dinero de una cuenta corriente a otra

Primero, ¿cuáles son las cosas que necesita saber (entrada)?

  • La identidad de la persona que realiza la transferencia.
  • La cantidad de dinero a transferir
  • El número de cuenta corriente de origen
  • El número de cuenta corriente objetivo

¿Cuáles son algunas de las "reglas comerciales" que deben aplicarse?

  • La persona que realiza la solicitud debe tener la autoridad para hacerlo.
  • La transacción debe ser atómica .
  • La transacción puede tener requisitos de información para el gobierno, si supera una cierta cantidad

Por "atómico", quiero decir que la transacción debe tener éxito completo o debe fallar por completo. No puede realizar transacciones de cuenta en las que se saca dinero de una cuenta sin llegar a la otra (el dinero desaparece) o el dinero se deposita en una cuenta, pero no se carga en otra cuenta (el dinero aparece mágicamente de la nada).

Ordenar algo de Amazon.

¿Qué necesitas saber?

  • La identidad de la persona que ordena
  • Información de envío
  • Datos de facturación
  • Forma de pago
  • Cantidad y cantidad de cada artículo a enviar
  • Cómo enviar (durante la noche, bote lento o super ahorrador)
  • Tasa de impuesto estatal

¿Qué sucede después de realizar el pedido?

  • Los artículos se retiran del stock
  • Las cantidades disponibles se cargan
  • Los artículos se empaquetan para su envío.
  • Los artículos agotados están pendientes
  • Los artículos que caen por debajo de las cantidades mínimas se ordenan
  • ¿Un envío o dos?
  • Se imprime una factura / lista de envío y se coloca con el pedido

    ..etc.


55
Me gustan las definiciones, pero en los ejemplos, extraño la distinción que hace entre la lógica de negocios y las reglas de negocios.
jdv-Jan de Vaan

1
OKAY. Pero, ¿por qué etiqueta "La transacción debe ser atómica" como regla comercial? Suena un poco bajo para una regla de negocios.
jdv-Jan de Vaan

99
@jdv: Estás pensando demasiado en esto. ¿Un cajero solo realizaría la mitad de esa transacción?
Robert Harvey

1
@jdv: decir que la transacción debe ser atómica implica dos cosas: (1) si algo interfiere con el procesamiento de la transacción, será posible deshacer cualquier efecto de la transacción como si nunca hubiera ocurrido (excepto, tal vez, por la creación de un informe de registro de errores), o bien, complete todo lo que debe hacerse; (2) ninguna parte de la transacción se superpondrá con ninguna otra transacción "atómica" que involucre esas cuentas. Por ejemplo, si alguien que tiene $ 1,000,000 en cada una de las dos cuentas transfiere $ 500,000 de una a la otra en el momento en que se le pregunta al banco ...
supercat

44
La transacción @jdv es atómica es un requisito fundamental que debe garantizarse y se relaciona con un estado final.
icarus74

27

CRUD es simplemente Crear, Leer, Actualizar, Eliminar que hace una aplicación.

Hasta cierto punto, un rastreador de errores también es una aplicación CRUD. Cree errores, lea (muestre) los errores, actualice los errores y, tal vez, elimínelos.

Sin embargo, hay más en un rastreador de errores que solo CRUD.

  • Un desarrollador no puede marcar el error verificado o cerrado, eso es parte del trabajo de QA. Entonces, hay un código para asegurarse de que alguien que no tenga el rol de control de calidad no pueda marcar un error como cerrado o verificado.
  • Nadie más que un gerente de proyecto puede eliminar un error.
  • Para que un error se marque como "probarme", debe haber al menos una confirmación de código contra el error.
  • Solo un error que está en el estado 'cerrado' puede moverse al estado 'reabrir'
  • El desarrollador asignado al error no puede moverlo de 'revisión de código' a 'revisión de código completa'
  • El control de calidad y los desarrolladores solo pueden ver errores en los proyectos a los que están asignados.

El código que implementa lo anterior es la lógica de negocios de la aplicación.

La restricción de los flujos de trabajo, o quién puede hacer las diversas operaciones en CRUD. Estos son los que separan una aplicación CRUD de otra. Son las partes donde necesita que la empresa diga cómo funciona la aplicación. Qué lógico es ... bueno, eso se discute mejor con una cerveza fuera del alcance del gerente del proyecto. Pero eso es lo que es la lógica de negocios.

Claro, es posible escribir una aplicación CRUD 'pura' donde no hay roles, todo se puede modificar y ver, pero estos son la excepción y no la regla.

La lógica de negocios es la lógica que está escribiendo en su programa para manejar las reglas de negocios que se le dan.


Cuando comienzas a entrar en las reglas de negocios, esto tiende a estar en un nivel más alto que el de la lógica comercial. Esto tiende a ser lo que obtienes de un analista de negocios que está trabajando con el negocio.

Considere en este ejemplo, un programa que determina cómo manejar la devolución de un artículo en un mostrador de devoluciones en una tienda.

  • Si el recibo tiene más de 90 días de antigüedad, solo se puede otorgar crédito en la tienda
  • Si el recibo tiene menos de 90 días, acredite la oferta con la que se utilizó el recibo para comprar (el crédito vuelve a la tarjeta de crédito, el efectivo vuelve al efectivo, el crédito en la tienda va al crédito en la tienda) ... a menos que era un cheque, en cuyo caso usar efectivo.

Esas son algunas reglas de negocios. No hablan con la parte CRUD de la aplicación.

Al trabajar con reglas comerciales, a menudo puede encontrarlas escritas en un motor de reglas (por ejemplo, Motor de reglas de Windows Workflow Foundation ) en lugar de escribir el código sin formato en su sistema.


Tenga en cuenta que la distinción lógica / reglas es una de terminología y puede discutirse durante toda la noche (mejor con una cerveza otra vez). Aunque esta no es una distinción poco común, los dos pueden mezclarse entre sí.


23

Otras respuestas son correctas. Un pensamiento adicional ...

La lógica de negocios es portátil

Si tuviera que volver a implementar un proyecto de software en un lenguaje de programación diferente, digamos que pasar de Turbo Pascal a Java , la lógica de negocios y las reglas de negocios es lo que los proyectos antiguos y nuevos tendrían en común .

El lenguaje de programación sería diferente. El código fuente sería completamente diferente. Las herramientas ( IDE , compiladores , etc.) pueden ser completamente diferentes. La interfaz de usuario puede estar completamente reorganizada o tener un aspecto diferente . La documentación probablemente sería diferente. Pero el propósito de los dos proyectos, los resultados finales del trabajo realizado / los objetivos cumplidos, sería el mismo.


10

La lógica empresarial consiste básicamente en 2 categorías amplias: validación y flujo. La lógica empresarial dice que la cantidad 1 debe ser mayor o igual que la cantidad 2; por ejemplo, el número de artículos a comprar debe ser menor o igual que el número de artículos en stock.

En una aplicación, la gente de negocios dirá que esta es una regla de negocios, por lo que escribes código para hacer cumplir esta lógica de negocios (validación). Otra aplicación dirá que si el número de artículos pedidos es mayor que el número de artículos en stock, aceptar el pedido y luego realizar su propio pedido por la diferencia más el 20%, y así escribirá esta lógica comercial (flujo) .

CRUD es simplemente obtener datos de entrada y salida de almacenamiento y cambiarlos. La lógica empresarial determina qué hacer con esos datos y qué transformaciones se les permite hacer. ¿Es su cliente nacido en el futuro, menor de 5 años, de una determinada área geográfica (descuentos para locales / visitantes). CRUD es simple, saber que puede obtener un crédito tributario por hijos solo si el hijo vivió con usted durante más de la mitad del tiempo que estuvo vivo en el año calendario NO solo más de 6 meses, es más complejo.


9

La lógica o las reglas comerciales son cualquier cosa que no pertenezca a la mecánica de la interfaz de usuario (las "cosas de programación"). Son las cosas que aún tendría que aplicar si estuviera haciendo esta transacción o lo que sea hace 100 años (manualmente). Por ejemplo, cuándo aplicar el impuesto sobre las ventas a una compra.


1

La "lógica de negocios" de un programa o aplicación es la parte del código que realmente hace cosas con la entrada (del usuario, el sistema operativo, etc.). Las "reglas de negocio" de una aplicación suelen ser los parámetros definidos del programa en sí (como la forma de manejar la entrada). Al menos, así es como lo he escuchado referido por muchas personas. Son términos bastante similares para describir partes del código.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.