He escuchado a la gente hablar mucho sobre lógica de negocios en el trabajo y en línea, y he leído varias preguntas en este sitio al respecto, pero el término aún no tiene mucho sentido para mí. Por ejemplo, aquí hay algunas declaraciones (parafraseadas) que a menudo veo:
"La lógica empresarial es la parte de su programa que codifica las reglas comerciales reales". La mayoría de las definiciones que he leído son circulares como esta.
"La lógica de negocios es todo único para su aplicación particular". No veo cómo esto es diferente de "su aplicación particular no es más que lógica de negocios", a menos que accidentalmente reinventamos un montón de ruedas para las que podríamos haber utilizado software de terceros. De ahí el título de la pregunta.
"Debe haber una capa de lógica de negocios encima de su capa de acceso a datos y debajo de su capa de GUI". En el código que escribo, los accesos a la base de datos deben saber a qué datos se supone que deben acceder, y el código de la interfaz de usuario tiene que saber mucho sobre lo que se muestra para mostrarlo correctamente, y no hay nada que hacer realmente en el medio esos dos lugares además de pasar blobs de datos entre el cliente y el servidor. Entonces, ¿qué se supone que debe entrar en una capa de lógica de negocios?
"La lógica de negocios debe estar separada de la lógica de presentación". La mayoría de las solicitudes de funciones que recibimos son para cambiar la lógica de presentación por razones comerciales. Si una de las reglas comerciales es mostrar los precios de los bonos del gobierno de los EE. UU. En notación 32 por defecto (al tiempo que proporciona una IU para que el usuario configure eso), la lógica de presentación necesita al menos saber que esta regla existe, si no implementarla completamente. Además, parece que una parte importante del diseño de UX es ayudar al usuario a comprender las reglas comerciales que nuestro software está tratando de implementar.
¿Es posible que realmente esté en un equipo que solo hace lógica de negocios, y toda la lógica no comercial está siendo realizada por otros equipos? ¿O todo el concepto de "lógica de negocios" como una entidad separada solo es viable para ciertas aplicaciones o arquitecturas?
Para ayudar a concretar las respuestas: imagina que tienes que volver a implementar la aplicación Domino's Pizza. ¿Cuál es la lógica comercial y cuál es la lógica no comercial de esa aplicación? ¿Y cómo sería posible poner esa lógica comercial de pedidos de pizza en su propia "capa" de código, sin que la mayor parte de la información de la pizza se filtre en las capas de acceso a datos y presentación?
Actualización: Llegué a la conclusión de que mi equipo probablemente está haciendo un 90% de código de interfaz de usuario y la mayoría, pero no todo, de lo que llamarías lógica empresarial proviene de otros equipos o empresas. Básicamente, nuestra aplicación es para monitoreardatos financieros, y casi todas las características son formas para que el usuario personalice qué datos ven y cómo los ven. No se realiza ninguna compra o venta (aunque integramos un poco con otras aplicaciones de nuestra empresa que lo hacen), y los datos reales son suministrados por muchas fuentes externas. Pero sí permitimos que los usuarios hagan cosas como enviar copias de sus "monitores" a otros usuarios, por lo que los detalles de cómo los manejamos probablemente califiquen como lógica comercial. En realidad, hay una aplicación móvil que actualmente habla con algunos de nuestros códigos de back-end, y sé exactamente qué parte de nuestro código de interfaz me gustaría que compartiera con nuestra interfaz de usuario en un mundo ideal (básicamente la M en nuestro cuasi-MVC) Supongo que ese es el BLL para nosotros.
Estoy aceptando la respuesta del usuario 61852 ya que me dio una comprensión mucho más concreta de lo que hace y no hace referencia la "lógica de negocios".