Che cos'è veramente la "logica aziendale"?


115

Sto lavorando allo sviluppo web dal 2009, quando ho iniziato con PHP. Quando mi sono trasferito su ASP.NET ho sentito molto parlare di DDD e OOAD, dove molta attenzione è stata data a questa "logica di business" e "regole di business". Il punto è che tutte le app che ho sviluppato fino ad ora riguardavano le operazioni CRUD e non ho mai visto queste cose in pratica.

Semplicemente non riesco a immaginare cosa possano davvero essere in pratica. Quindi, cos'è davvero questa logica di business e come si inserisce in un'app? So che questi sono implementati come metodi nei modelli di dominio, ma quali potrebbero essere questi metodi e dove potrebbero essere utilizzati nell'applicazione?

Risposte:


107

CRUD è un acronimo che sta per Crea, Leggi, Aggiorna ed Elimina. Queste sono le quattro operazioni di base che è possibile eseguire su una tupla di database. Ma c'è sempre di più nelle applicazioni aziendali che creare, leggere, aggiornare ed eliminare i record del database.

Iniziamo con alcune definizioni di base, quindi esaminiamo un paio di esempi e vediamo come tali definizioni sono associate agli esempi e come si associano al software reale.

La logica aziendale o la logica di dominio è quella parte del programma che codifica le regole aziendali del mondo reale che determinano come i dati possono essere creati, archiviati e modificati. Stabilisce il modo in cui gli oggetti business interagiscono tra loro e applica le rotte e i metodi con cui gli oggetti business sono accessibili e aggiornati.

Le Business Rules descrivono le operazioni, le definizioni e i vincoli che si applicano a un'organizzazione. Le operazioni formano collettivamente un processo; ogni azienda utilizza questi processi per formare sistemi che realizzano attività.

Ora, lavoriamo con alcuni esempi.

Trasferimento di denaro da un conto corrente a un altro

Innanzitutto, quali sono le cose che devi sapere (input)?

  • L'identità della persona che effettua il trasferimento
  • La quantità di denaro da trasferire
  • Il numero di conto corrente di verifica
  • Il numero di conto corrente di destinazione

Quali sono alcune delle "regole commerciali" che devono essere applicate?

  • La persona che effettua la richiesta deve avere l'autorità per farlo.
  • La transazione deve essere atomica .
  • La transazione potrebbe avere requisiti di segnalazione al governo, se supera un determinato importo

Per "atomico" intendo che la transazione deve avere esito positivo o deve fallire completamente. Non è possibile effettuare transazioni su conti in cui il denaro viene prelevato da un conto senza arrivare nell'altro (il denaro scompare) o il denaro viene depositato su un conto, ma non addebitato su un altro conto (il denaro appare magicamente dal nulla).

Ordinare qualcosa da Amazon.

Che cosa ti serve sapere?

  • L'identità della persona che ordina
  • Informazioni sulla spedizione
  • Informazioni di fatturazione
  • Metodo di pagamento
  • Importo e quantità di ciascun articolo da spedire
  • Come spedire (durante la notte, barca lenta o super risparmiatore)
  • Aliquota fiscale statale

Cosa succede dopo che l'ordine è stato effettuato?

  • Gli articoli vengono estratti dal magazzino
  • Le quantità disponibili sono addebitate
  • Gli articoli sono imballati per la spedizione
  • Gli articoli esauriti sono in arretrato
  • Gli articoli che scendono al di sotto delle quantità minime vengono ordinati
  • Una o due spedizioni?
  • Viene stampato un elenco di fatture / spedizioni e inserito nell'ordine

    ..eccetera.


5
Mi piacciono le definizioni ma negli esempi, mi manca la distinzione che fai tra la logica di business e le regole di business.
jdv-Jan de Vaan,

1
OK. Ma perché etichettare "La transazione deve essere atomica" come regola aziendale? Mi sembra un po 'di basso livello per una regola aziendale.
jdv-Jan de Vaan,

9
@jdv: ci stai pensando troppo. Un cassiere effettuerebbe solo la metà di quella transazione?
Robert Harvey,

1
@jdv: Dire che la transazione deve essere atomica implica due cose: (1) se qualcosa interferisce con l'elaborazione della transazione, sarà possibile annullare gli effetti della transazione come se non fosse mai avvenuta (tranne, forse, per la creazione di un rapporto del registro degli errori) oppure completa tutto ciò che deve essere fatto; (2) nessuna parte della transazione si sovrapporrà a qualsiasi altra transazione "atomica" che coinvolge tali conti. Ad esempio, se qualcuno che ha $ 1.000.000 in ciascuno dei due conti trasferisce $ 500.000 dall'uno all'altro nel momento in cui viene chiesto alla banca ...
supercat

4
La transazione @jdv essendo atomica è un requisito fondamentale che deve essere garantito e si riferisce a uno stato finale.
icarus74

27

CRUD è semplicemente il Crea, Leggi, Aggiorna, Elimina che fa un'applicazione.

In una certa misura, un tracker di bug è anche un'app CRUD. Crea bug, leggi (visualizza) i bug, aggiorna i bug e, forse, eliminali.

Tuttavia, c'è un altro tracker di bug oltre al semplice CRUD.

  • A uno sviluppatore non è consentito contrassegnare il bug verificato o chiuso, fa parte del lavoro di QA. E quindi un po 'di codice è lì per assicurarsi che qualcuno a cui manca il ruolo del QA non possa contrassegnare un bug come chiuso o verificato.
  • Nessuno, tranne un project manager, può effettivamente eliminare un bug.
  • Affinché un bug sia contrassegnato come "test me", deve esserci almeno un commit di codice contro il bug.
  • Solo un bug che si trova nello stato "chiuso" può essere spostato nello stato "riaprire"
  • Lo sviluppatore assegnato al bug non può spostarlo da "revisione codice" a "revisione codice completata"
  • Il QA e gli sviluppatori possono vedere solo i bug sui progetti a cui sono assegnati.

Il codice che implementa quanto sopra è la logica aziendale dell'applicazione.

La restrizione dei flussi di lavoro o chi può eseguire le varie operazioni in CRUD. Ecco cosa separa un'app CRUD da un'altra. Sono le parti in cui è necessario convincere l'azienda a dire effettivamente come funziona l'applicazione. Com'è logico ... beh, è ​​meglio discuterne davanti a una birra fuori dall'orecchio del project manager. Ma questa è la logica aziendale.

Certo, è possibile scrivere un'app CRUD 'pura' dove non ci sono ruoli, tutto può essere modificato e visualizzato - ma queste sono l'eccezione piuttosto che la regola.

La logica aziendale è la logica che stai scrivendo nel tuo programma per gestire le regole aziendali che ti vengono fornite.


Quando inizi a entrare nelle regole aziendali, questo tende ad essere a un livello superiore rispetto al greggio stesso o alla logica aziendale. Questo tende ad essere le cose che ottieni da un analista aziendale che lavora con l'azienda.

Si consideri in questo esempio un programma che determina come gestire il reso di un articolo presso un banco resi in un negozio.

  • Se la ricevuta è uguale o superiore a 90 giorni, è possibile dare solo credito in negozio
  • Se la ricevuta ha meno di 90 giorni, accredita l'offerta con cui la ricevuta è stata utilizzata per l'acquisto (il credito ritorna sulla carta di credito, il denaro ritorna al denaro, il credito del negozio va al credito del negozio) ... a meno che non era un assegno, nel qual caso usare contanti.

Queste sono alcune regole commerciali. Non parlano con la parte CRUD dell'applicazione.

Quando si lavora con le regole di business, è possibile trovarle spesso in un motore di regole (ad esempio, Motore di regole di Windows Workflow Foundation ) invece di scrivere il codice non elaborato nel sistema.


Renditi conto che la distinzione logica / regole è quella della terminologia e può essere discussa per tutta la notte (meglio con una birra di nuovo). Anche se questa non è una distinzione insolita, sebbene i due possano fondersi l'uno con l'altro.


23

Altre risposte sono corrette Un altro pensiero ...

La logica aziendale è portatile

Se dovessi implementare nuovamente un progetto software in un linguaggio di programmazione diverso, supponiamo che passare da Turbo Pascal a Java , la logica di business e le regole di business siano ciò che i progetti vecchi e nuovi avrebbero in comune .

Il linguaggio di programmazione sarebbe diverso. Il codice sorgente sarebbe completamente diverso. Gli strumenti ( IDE , compilatori e simili) potrebbero essere completamente diversi. L' interfaccia utente potrebbe essere completamente riorganizzata o avere un aspetto diverso . La documentazione sarebbe probabilmente diversa. Ma lo scopo dei due progetti, i risultati finali del lavoro svolto / gli obiettivi raggiunti, sarebbero gli stessi.


10

La logica di business consiste sostanzialmente di 2 grandi categorie: validazione e flusso. La logica aziendale afferma che la quantità 1 deve essere maggiore o uguale alla quantità 2 - ad esempio, il numero di articoli da acquistare deve essere inferiore o uguale al numero di articoli disponibili.

In un'applicazione, la gente di affari dirà che questa è una regola di business e quindi scrivi il codice per applicare questa logica di business (convalida). Un'altra applicazione dirà che se il numero di articoli ordinati è maggiore del numero di articoli disponibili, per accettare l'ordine e quindi effettuare il proprio ordine per la differenza più il 20%, e quindi si scriverà questa logica aziendale (flusso) .

CRUD è semplicemente ottenere i dati dentro e fuori l'archiviazione e modificarli. La logica aziendale determina cosa fai con quei dati e quali trasformazioni ti è permesso fare. Il tuo cliente nasce in futuro, sotto i 5 anni, da una determinata area geografica (sconti per locali / visitatori). CRUD è semplice, sapendo che è possibile ottenere un credito d'imposta per i figli solo se il bambino ha vissuto con te per più della metà del tempo in cui era vivo nell'anno solare NON per più di 6 mesi, è più complesso.


9

La logica o le regole aziendali sono tutto ciò che non riguarda la meccanica dell'interfaccia utente (le "cose ​​di programmazione"). Sono le cose che dovresti ancora applicare se stessi facendo questa transazione o qualunque cosa 100 anni fa (manualmente). Ad esempio, quando applicare l'imposta sulle vendite a un acquisto.


1

La "logica aziendale" di un programma o di un'applicazione è la parte del codice che fa effettivamente le cose con input (da parte dell'utente, del sistema operativo, ecc.). Le "regole di business" di un'applicazione sono in genere i parametri definiti del programma stesso (come come gestire l'input). Almeno, è così che ho sentito parlare di molte persone. Sono termini abbastanza simili per descrivere parti del codice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.