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

96

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 le da 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 eran todas sobre operaciones CRUD y nunca he visto estas cosas en la práctica.

Simplemente no puedo imaginar lo que realmente pueden ser esas cosas 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 los modelos de dominio, pero ¿cuáles podrían ser esos métodos y en qué lugar de la aplicación podrían usarse?

    
pregunta user1620696 31.03.2014 - 01:34
fuente

6 respuestas

91

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 empresariales 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.

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

Reglas comerciales describen las operaciones, definiciones y restricciones que se aplican a una organización. Las operaciones forman colectivamente un proceso; cada empresa usa estos procesos para formar sistemas que hacen las cosas.

Ahora, trabajemos con algunos ejemplos.

Transferir dinero de una cuenta de cheques 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 de cheques de origen
  • El número de cuenta de cheques objetivo

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

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

Por "atómico", quiero decir que la transacción debe tener éxito por completo o debe fallar por completo. No puede tener transacciones de cuenta en las que el dinero se saca 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
  • Información de facturación
  • Método de pago
  • Cantidad y cantidad de cada artículo para enviar
  • Cómo realizar el envío (barco nocturno, lento o super ahorro)
  • Tasa de impuesto estatal

¿Qué sucede después de que se realiza el pedido?

  • Los artículos se extraen de stock
  • Las cantidades disponibles se cargan
  • Los artículos están empaquetados para su envío
  • Los artículos agotados están en espera
  • Se ordenan los artículos que caen por debajo de las cantidades mínimas
  • ¿Un envío o dos?
  • Se imprime una lista de facturas / envíos y se coloca con el pedido

    ..etc.

respondido por el Robert Harvey 31.03.2014 - 02:04
fuente
24

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

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

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

  • Un desarrollador no tiene permiso para marcar el error verificado o cerrado, eso es parte del trabajo de QA. Y, por lo tanto, hay algo de código para asegurarse de que alguien que carece del rol de control de calidad no pueda marcar un error como cerrado o verificado.
  • Nadie, excepto un administrador de proyectos, puede en realidad eliminar un error.
  • Para que un error se marque como "probarme", debe haber al menos un código de confirmación contra el error.
  • Solo un error que se encuentre en el estado 'cerrado' se puede mover al estado 'reapertura'
  • El desarrollador asignado al error no puede moverlo de 'revisión de código' a 'revisión de código completa'
  • QA 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 flujos de trabajo, o who puede realizar las distintas operaciones en CRUD. Esto es lo que separa una aplicación CRUD de otra. Son las partes en las que necesita que la empresa diga cómo la aplicación. Cuán lógico es ... bueno, eso es mejor discutirlo con una cerveza fuera del alcance del oído 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 comercial es la lógica que está escribiendo en su programa para manejar las reglas comerciales que se le asignan.

Cuando comienzas a meterte en las reglas de negocios, esto tiende a estar en un nivel más alto que la crudeza misma o la lógica de negocios. Esto suele ser lo que obtiene de un analista de negocios que trabaja 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 es igual o mayor a 90 días de antigüedad, solo se puede otorgar crédito en la tienda
  • Si el recibo tiene menos de 90 días de antigüedad, acredite la oferta con la que se usó el recibo (el crédito se devuelve a la tarjeta de crédito, el efectivo se devuelve al efectivo, el crédito en la tienda se asigna al crédito en la tienda). . a menos que fuera un cheque, en cuyo caso use efectivo.

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

Cuando trabaje 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 en bruto en su sistema.

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

    
respondido por el user40980 31.03.2014 - 01:53
fuente
13

Otras respuestas son correctas. Un pensamiento adicional ...

La lógica de negocios es portátil

Si tuviera que reimplementar un proyecto de software en un lenguaje de programación diferente, por ejemplo, pasar de Turbo Pascal a Java , lógica de negocios & 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 s, compiladores , y tal) pueden ser completamente diferentes. La interfaz de usuario puede estar completamente reorganizada o tener un look-and-feel . La documentación probablemente sea diferente. Pero el propósito de los dos proyectos, los resultados finales del trabajo realizado / los objetivos cumplidos, serían los mismos.

    
respondido por el Basil Bourque 31.03.2014 - 23:38
fuente
8

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

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

CRUD es simplemente obtener datos dentro y fuera del almacenamiento y cambiarlos. La lógica de negocios determina lo que haces con esos datos y las transformaciones que puedes hacer. ¿Su cliente nace en el futuro, menos de 5 años, de un área geográfica determinada (descuentos para locales / visitantes)? CRUD es simple, sabiendo que puede obtener un crédito tributario por hijos solo si el niño 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.

    
respondido por el jmoreno 31.03.2014 - 09:33
fuente
7

La lógica de negocios o las reglas son algo que no se refiere a los mecanismos 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 fuera hace 100 años (manualmente). Por ejemplo, cuándo aplicar el impuesto sobre las ventas a una compra.

    
respondido por el Phil Perry 31.03.2014 - 17:48
fuente
1

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

    
respondido por el ChrisR. 31.03.2014 - 02:26
fuente

Lea otras preguntas en las etiquetas