Lògica de negoci
En programari informàtic, la lògica de negoci o lògica de domini és la part del programa que codifica les regles de negoci del món real que determinen com es poden crear, emmagatzemar i canviar les dades. Es contrasta amb la resta del programari que pot estar relacionat amb detalls de nivell inferior com la gestió d'una base de dades o la visualització de la interfície d'usuari, la infraestructura del sistema o, en general, la connexió de diverses parts del programa.[1]
Detalls i exemple
[modifica]- Prescribeix com els objectes de negoci interactuen entre si
- Força les rutes i els mètodes pels quals s'accedeix i s'actualitzen els objectes de negoci
Normes empresarials:
- Modelar objectes empresarials de la vida real (com ara comptes, préstecs, itineraris i inventaris)
La lògica de negoci comprèn:
- Fluxos de treball que són les tasques ordenades de passar documents o dades d'un participant (una persona o un sistema de programari) a un altre.
Cal distingir la lògica de negoci de les regles de negoci.[2] La lògica de negoci és la part d'un sistema empresarial que determina com es transformen o calculen les dades i com s'encaminen a les persones o al programari (flux de treball). Les regles de negoci són expressions formals de la política empresarial. Qualsevol cosa que sigui un procés o procediment és lògica de negoci, i qualsevol cosa que no sigui ni un procés ni un procediment és una regla de negoci. Donar la benvinguda a un nou visitant és un procés (flux de treball) que consisteix en els passos que s'han de seguir, mentre que dir que cada nou visitant ha de ser donat la benvinguda és una regla de negoci. A més, la lògica de negoci és procedimental, mentre que les regles de negoci són declaratives.[3]
Per exemple, un lloc web de comerç electrònic pot permetre als visitants afegir articles a un carretó de la compra, especificar una adreça d'enviament i proporcionar informació de pagament. La lògica empresarial del lloc web pot incloure un flux de treball com ara:
- La seqüència d'esdeveniments que es produeixen durant el pagament, per exemple, un formulari de diverses pàgines que primer demana l'adreça d'enviament, després l'adreça de facturació, la pàgina següent contindrà el mètode de pagament i l'última pàgina mostrarà felicitacions.
També hi haurà normes comercials del lloc web:
- Afegir un article més d'una vegada des de la pàgina de descripció de l'article incrementa la quantitat d'aquest article.
- Formats específics que han de seguir l'adreça, l'adreça electrònica i la informació de la targeta de crèdit del visitant.
- Un protocol de comunicació específic per parlar amb la xarxa de targetes de crèdit
El programari del lloc web també conté altre codi que no es considera part de la lògica empresarial ni de les regles empresarials:
- Contingut perifèric no relacionat amb les dades principals de l'empresa, com ara l'HTML que defineix els colors, l'aspecte, la imatge de fons i l'estructura de navegació del lloc web
- Codi genèric de gestió d'errors (per exemple, que mostra la pàgina del codi d'error HTTP 500)
- Codi d'inicialització que s'executa quan el servidor web inicia el lloc, que configura el sistema
- Monitorització de la infraestructura per assegurar-se que totes les parts del lloc funcionen correctament (per exemple, que el sistema de facturació estigui disponible)
- Codi genèric per fer connexions de xarxa, transmetre objectes a la base de dades, analitzar l'entrada de l'usuari mitjançant esdeveniments HTTP POST, etc.
Lògica de negoci i nivells/capes
[modifica]
La lògica de negoci pot estar a qualsevol lloc d'un programa. Per exemple, donat un format determinat per a una adreça, es podria crear una taula de base de dades que tingués columnes que corresponguessin exactament als camps especificats a la lògica de negoci, i s'hi afegissin comprovacions de tipus per assegurar-se que no s'afegeixin dades no vàlides.
La lògica de negoci sovint canvia. Per exemple, el conjunt de formats d'adreça permesos pot canviar quan un minorista en línia comença a enviar productes a un nou país. Per tant, sovint es considera desitjable fer que el codi que implementa la lògica de negoci estigui relativament aïllat o poc acoblat. Això fa que sigui més probable que els canvis a la lògica de negoci requereixin un petit conjunt de canvis de codi, només en una part del codi. El codi distant però fortament acoblat també crea un risc més gran que el programador només faci alguns dels canvis necessaris i es passi per alt una part del sistema, cosa que provoca un funcionament incorrecte.[4]
Una arquitectura multinivell formalitza aquest desacoblament creant una capa de lògica de negoci que està separada d'altres nivells o capes, com ara la capa d'accés a dades o la capa de servei. Cada capa "sap" només una quantitat mínima sobre el codi de les altres capes, just el suficient per dur a terme les tasques necessàries. Per exemple, en un paradigma model-vista-controlador, les capes de controlador i vista es poden fer tan petites com sigui possible, amb tota la lògica de negoci concentrada en el model. En l'exemple del comerç electrònic, el controlador determina la seqüència de pàgines web a la seqüència de pagament i també és responsable de validar que el correu electrònic, l'adreça i la informació de pagament compleixin les regles de negoci (en lloc de deixar-ho tot a la base de dades o al codi d'accés a la base de dades de nivell inferior).
Són possibles paradigmes alternatius. Per exemple, amb entitats de negoci relativament simples, una vista i un controlador genèrics podrien accedir a objectes de base de dades que contenen tota la lògica de negoci rellevant sobre quins formats accepten i quins canvis són possibles (conegut com a model de base de dades).
Alguns esquemes per nivells utilitzen una capa d'aplicació o una capa de servei diferent, o consideren que la capa de lògica de negoci és la mateixa que una d'aquestes.
Eines i tècniques
[modifica]La lògica de negoci es pot extreure del codi procedimental mitjançant un sistema de gestió de regles de negoci (BRMS).[5]
L'enfocament de regles de negoci del desenvolupament de programari utilitza BRMS i imposa una separació molt forta de la lògica de negoci de la resta de codi. Els sistemes de gestió d'interfície d'usuari són una altra tecnologia utilitzada per imposar una separació forta entre la lògica de negoci i la resta de codi. El botó màgic es considera un "antipatró": una tècnica que en aquest cas crea restriccions indesitjables que dificulten la codificació de la lògica de negoci d'una manera fàcil de mantenir.
Un model de domini és una representació abstracta dels tipus d'emmagatzematge de dades requerits per les regles de negoci.
Referències
[modifica]- ↑ KrishnaRahul. «An Extensive Guide to Business Logic» (en anglès americà), 29-07-2025. [Consulta: 18 agost 2025].
- ↑ «Definition of business logic» (en anglès), 24-12-2013.
- ↑ William Ulrich. «OMG Business Rules Symposium» (en anglès). Arxivat de l'original el 2013-12-24.
- ↑ Khawar Zaman Ahmed. «Introduction to Enterprise Software». A: Developing Enterprise Java Applications with J2EE and UML (en anglès). Addison-Wesley, 2001-10-17. ISBN 0-201-73829-5.
- ↑ Owen, James. «Bring business logic to light» (en anglès). InfoWorld, 19-09-2003. [Consulta: 21 juliol 2020].