¿Cuál es la diferencia entre el negocio y la lógica de la aplicación? [cerrado]

11

Tenga en cuenta que hice la misma pregunta en stackoverflow pero me indicaron que preguntara aquí.

Mientras estoy tratando de discernir la diferencia entre la lógica de la aplicación y la lógica de negocios, he encontrado un conjunto de artículos, pero desafortunadamente hay una contradicción entre ellos.

Aquí dicen que son iguales pero la respuesta aquí es totalmente diferente.

Para mí lo entiendo de la siguiente manera:

Si buscamos la definición de la Logicpalabra en Google, obtendremos

sistema o conjunto de principios subyacentes a la disposición de los elementos en una computadora o dispositivo electrónico para realizar una tarea específica.

Entonces, si la lógica es la lógica set of principles underlying the arrangements of elementsdel negocio set of principles underlying the arrangements of the business rules, en otras palabras, significa que las reglas que se deben seguir para obtener un sistema reflejan las necesidades de su negocio.

Y para mí, la lógica de la aplicación es the principles that the application based on, en otras palabras, cómo aplicar estas reglas para que un sistema refleje las necesidades de su negocio, por ejemplo, ¿debería usar MVC o no, ?, ¿debería usar SQL o MSSQl?

Entonces, ¿alguien podría ayudarme a deshacerme de la confusión sobre la diferencia entre la aplicación y la lógica comercial?

Mo Haidar
fuente
3
Las respuestas debajo del segundo enlace SO ( stackoverflow.com/questions/1456425/… ) que proporcionó son correctas y completas. En resumen, dicen que "lógica empresarial" es un subconjunto de "lógica de aplicación".
Doc Brown
2
... y el enlace de la enciclopedia2 que le diste le dice a mi humilde opinión lo mismo, entonces, ¿dónde está su problema?
Doc Brown
1
... y dado que decidió no agregar ninguna aclaración, estoy votando para cerrar como "no está claro lo que está preguntando":
Doc Brown
@DocBrown, he editado el título de la pregunta y el último párrafo de la pregunta, ¡pero creo que estaba claro lo que quería y obtuve la respuesta! ¿Has leído la pregunta?
Mo Haidar

Respuestas:

13

Estoy de acuerdo con LoztInSpace de SO en que esta es una respuesta bastante obvia y que todos pueden tener definiciones ligeramente diferentes. Especialmente si hay influencias históricas involucradas. Así es como definiría los términos:

La lógica empresarial es lógica, que se crea con la colaboración y el acuerdo con expertos empresariales. Si el experto en negocios dice que "el cliente no puede retirar más dinero del que tiene en su cuenta", entonces esta es una regla comercial. En el mundo ideal, esta lógica estaría en algún tipo de biblioteca o servicio, por lo que puede reutilizarse en múltiples aplicaciones o cambiarse en todas las aplicaciones relevantes a la vez.

La lógica de la aplicación es simplemente todo lo demás. El ejemplo puede ser "al hacer clic en este botón se abre una ventana para agregar un nuevo cliente". No tiene nada que ver con los negocios, pero sigue siendo una lógica que debe implementarse. En el mundo ideal, la lógica de la aplicación utilizará la biblioteca o el servicio, es decir, la implementación de las reglas comerciales. La aplicación múltiple, cada una con una lógica de aplicación diferente, puede reutilizar una lógica de negocios. Imagine que la aplicación web, el servicio web y la aplicación móvil funcionan todos con una lógica empresarial, pero cada uno claramente necesita diferentes lógicas de aplicación.

La razón por la que creo que esos dos se mezclan es que mantenerlos separados es extremadamente difícil. Incluso si hace todo lo posible para mantenerlos separados, use cajas de superficie donde tenga que mezclarlas. Si, por ejemplo, tiene toda su lógica empresarial en servicio, la mantiene separada. Pero tener cierta lógica comercial en la aplicación local que está utilizando el servicio podría aumentar la capacidad de respuesta o la comodidad del usuario, porque la aplicación local no necesita llamar al servicio por cada pequeño cambio.

Otra razón por la que se mezclan es que para muchas personas no técnicas. La interfaz de usuario es "la aplicación", por lo que cualquier cosa reflejada en la interfaz de usuario es importante. En el caso ideal de "lógica de negocios", no hay interfaz de usuario. Probablemente habría un conjunto de pruebas automatizadas para verificar la lógica, pero nada que pueda mostrarse a la gente de negocios. Entonces, para la gente de negocios, todo es el mismo tipo de "lógica". OMI

Eufórico
fuente
1
"La lógica de la aplicación es simplemente todo lo demás": para ser meticuloso, yo diría que "incluye la lógica de negocios y todo lo demás" (pero probablemente depende de con quién hables)
Doc Brown
3

Como otros han señalado, estos términos no tienen un significado universalmente aceptado. Describiré las definiciones que he encontrado con más frecuencia, es decir, en varios proyectos con diferentes compañías.

La lógica empresarial define un modelo normalizado de uso general del dominio empresarial para el que se escribe una aplicación, p. Ej.

  • Las clases como Customer, Order, OrderLine, y asociaciones como customer-order, y así sucesivamente.
  • Operaciones de propósito general como registerCustomer,cancelOrder

Muy a menudo, este modelo de clase se asigna a un modelo de base de datos y la asignación se implementa utilizando ORM. Las operaciones se realizan normalmente cada una en su propia transacción y proporcionan la API básica para modificar la base de datos, es decir, el estado persistente de la aplicación.

La lógica de la aplicación es una capa construida sobre la lógica empresarial y sirve para implementar casos de uso específicos. Los módulos de lógica de aplicación pueden usar una representación de datos ad-hoc, por ejemplo, una clase CustomerSummary sin ninguna asociación Ordersi solo desea enumerar clientes. Dicha representación de datos ad-hoc debe asignarse a la representación normalizada subyacente proporcionada por el modelo de negocio. Por ejemplo, CustomerSummaryse puede definir como una vista encima de Customer.

Tenga en cuenta que el límite entre las dos capas puede no estar tan claramente definido. Por ejemplo, después de implementar varios casos de uso, uno puede notar estructuras de datos similares en la lógica de la aplicación y decidir unificarlas (normalizarlas) y moverlas a la lógica de negocios.

Giorgio
fuente
3

Cada sistema o aplicación tendrá sus propias definiciones de qué es la lógica de negocios y qué es la lógica de la aplicación. Será explícito o implícito.

En mi experiencia, las aplicaciones basadas en datos (por ejemplo, bases de datos, etc.) tienden a tener una definición más formal de lo que es la lógica empresarial.

La lógica de la aplicación tiende a centrarse en obtener información del punto A al punto B, la lógica empresarial se centra en lo que es la información, y el lenguaje de la lógica empresarial suele ser específico del dominio. Dicho de otra manera, la lógica de la aplicación se centra en la pregunta "¿cómo funciona?", La lógica de negocios en "¿qué hace?" - de nuevo, la distinción puede ser muy difusa y, con mayor frecuencia, no es específica del dominio.

Niall
fuente
1

No, son términos diferentes para la misma cosa: el "nivel intermedio" del código del programa que hace las cosas que desea que realice su programa. Al igual que muchas cosas en el software, no existe una terminología sólida y rápida para las partes de un sistema, ya que no hay definiciones formales únicas para la construcción de sistemas.

Por lo tanto, a veces las personas lo llamarán lógica de negocios, otras lógicas de aplicación, otras lo llamarán lógica de programa, todo es una gran cantidad. ¡No se moleste en tratar de definir esto de manera tan rígida, casi todos los sistemas varían en cómo está construido, así que alégrese de que solo haya un nivel menor de vaguedad en la terminología!

gbjbaanb
fuente