Ho sentito persone parlare della logica aziendale molto al lavoro e online, e ho letto diverse domande su questo sito, ma il termine non ha ancora molto senso per me. Ad esempio, ecco alcune affermazioni (parafrasate) che vedo spesso:
"La logica di business è la parte del tuo programma che codifica le regole di business reali." La maggior parte delle definizioni che ho letto sono circolari come questa.
"La logica di business è tutto unico per la tua particolare applicazione." Non vedo come questo sia diverso da "la tua particolare applicazione non è altro che una logica aziendale", a meno che non abbiamo reinventato accidentalmente un mucchio di ruote per le quali avremmo potuto usare software di terze parti. Da qui il titolo della domanda.
"Dovrebbe esserci un livello di logica aziendale sopra il livello di accesso ai dati e sotto il livello della GUI." Nel codice che scrivo, gli accessi al database devono sapere a quali dati dovrebbero accedere e il codice dell'interfaccia utente deve sapere molto su ciò che viene visualizzato per visualizzarlo correttamente, e non c'è nulla da fare davvero tra quei due posti diversi dal passaggio di BLOB di dati tra client e server. Quindi, cosa dovrebbe effettivamente andare in un livello di logica aziendale?
"La logica aziendale dovrebbe essere separata dalla logica di presentazione." La maggior parte delle richieste di funzionalità che riceviamo è di modificare la logica di presentazione per motivi di lavoro. Se una delle regole aziendali è quella di visualizzare i prezzi dei titoli di Stato statunitensi nella notazione 32 per impostazione predefinita (fornendo anche un'interfaccia utente per l'utente per configurarlo), la logica di presentazione deve almeno sapere che esiste questa regola, se non la implementa completamente. Inoltre, sembra che una parte importante della progettazione di UX stia aiutando l'utente a comprendere le regole aziendali che il nostro software sta cercando di implementare.
È possibile che io effettivamente faccia parte di un team che esegue solo la logica aziendale e che tutta la logica non aziendale viene eseguita da altri team? Oppure l'intero concetto di "logica di business" come entità separata può funzionare solo per determinate applicazioni o architetture?
Per rendere concrete le risposte: fai finta di dover reimplementare l'app Pizza di Domino. Qual è la logica aziendale e qual è la logica non aziendale dell'app? E come sarebbe possibile mettere quella logica aziendale che ordina la pizza nel suo "strato" di codice, senza che la maggior parte delle informazioni sulla pizza penetri nei livelli di accesso e presentazione dei dati?
Aggiornamento: sono giunto alla conclusione che probabilmente il mio team sta eseguendo il 90% di codice UI e la maggior parte - ma non tutto - di ciò che chiameresti logica aziendale proviene da altri team o aziende. Fondamentalmente, la nostra applicazione è per il monitoraggioi dati finanziari e quasi tutte le funzionalità sono modi in cui l'utente può personalizzare i dati che vede e come li vede. Non ci sono acquisti o vendite in corso (anche se ci integriamo un po 'con altre app della nostra azienda che lo fanno) e i dati effettivi vengono forniti da un sacco di fonti esterne. Ma permettiamo agli utenti di fare cose come inviare copie dei loro "monitor" ad altri utenti, quindi i dettagli di come gestiamo che probabilmente si qualificano come logica aziendale. In realtà esiste un'app mobile che attualmente parla con alcuni dei nostri codici di backend e so esattamente quale parte del nostro codice di frontend vorrei condividere con la nostra UI in un mondo ideale (fondamentalmente la M nel nostro quasi-MVC) quindi Immagino sia il BLL per noi.
Sto accettando la risposta di user61852 poiché mi ha dato una comprensione molto più concreta di ciò che la "logica aziendale" fa e non fa riferimento.