Czym tak naprawdę jest „logika biznesowa”?

115

Zajmuję się tworzeniem stron internetowych od 2009 roku, kiedy zacząłem od PHP. Kiedy przeniosłem się do ASP.NET, dużo słyszałem o DDD i OOAD, gdzie wiele uwagi poświęcono tej „logice biznesowej” i „regułom biznesowym”. Chodzi o to, że wszystkie aplikacje, które do tej pory tworzyłem, dotyczyły operacji CRUD i nigdy nie widziałem takich rzeczy w praktyce.

Po prostu nie mogę sobie wyobrazić, jak te rzeczy mogą być w praktyce. Czym więc jest ta logika biznesowa i jak to pasuje do aplikacji? Wiem, że są one zaimplementowane jako metody w modelach domen, ale jakie mogą być te metody i gdzie w aplikacji mogłyby być użyte?

użytkownik1620696
źródło

Odpowiedzi:

107

CRUD jest akronimem tworzącym, czytającym, aktualizującym i usuwającym. Są to cztery podstawowe operacje, które można wykonać na krotce bazy danych. Jednak aplikacje biznesowe zawsze zawierają coś więcej niż tworzenie, odczytywanie, aktualizowanie i usuwanie rekordów bazy danych.

Zacznijmy od kilku podstawowych definicji, a następnie spójrzmy na kilka przykładów i zobaczmy, jak te definicje odwzorowują na przykłady i jak odwzorowują na rzeczywiste oprogramowanie.

Logika biznesowa lub logika domenowa to część programu, która koduje rzeczywiste reguły biznesowe, które określają sposób tworzenia, przechowywania i zmiany danych. Określa sposób interakcji między obiektami biznesowymi oraz wymusza trasy i metody uzyskiwania dostępu do obiektów biznesowych i ich aktualizowania.

Reguły biznesowe opisują operacje, definicje i ograniczenia dotyczące organizacji. Operacje wspólnie tworzą proces; każda firma wykorzystuje te procesy do tworzenia systemów, które wykonują zadania.

Teraz popracujmy z kilkoma przykładami.

Przelewanie pieniędzy z jednego rachunku czekowego na inny

Po pierwsze, jakie rzeczy musisz wiedzieć (dane wejściowe)?

  • Tożsamość osoby dokonującej przeniesienia
  • Kwota do przesłania
  • Numer konta sprawdzającego źródło
  • Numer konta sprawdzającego cel

Jakie są „reguły biznesowe”, które należy zastosować?

  • Osoba składająca wniosek musi mieć do tego uprawnienia.
  • Transakcja musi być atomowa .
  • Transakcja może podlegać wymogom sprawozdawczym wobec rządu, jeśli przekroczy pewną kwotę

Przez „atomowy” rozumiem, że transakcja musi całkowicie zakończyć się powodzeniem lub całkowicie zawieść. Nie możesz mieć transakcji na rachunku, na których pieniądze są pobierane z jednego konta bez dotarcia na drugie (pieniądze znikają) lub pieniądze są wpłacane na konto, ale nie są pobierane z innego konta (pieniądze magicznie pojawiają się znikąd).

Zamawianie czegoś z Amazon.

Co chcesz wiedzieć?

  • Tożsamość osoby zamawiającej
  • Informacje wysyłkowe
  • Informacje rozliczeniowe
  • Metoda płatności
  • Ilość i ilość każdego przedmiotu do wysłania
  • Jak wysyłać (z dnia na dzień, wolna łódź lub super oszczędność)
  • Stawka podatkowa

Co dzieje się po złożeniu zamówienia?

  • Przedmioty są pobierane z magazynu
  • Ilości na rękę są obciążane
  • Przedmioty są pakowane do wysyłki
  • Brak towaru w magazynie
  • Produkty, które spadają poniżej minimalnych ilości, są zamawiane
  • Jedna przesyłka czy dwie?
  • Faktura / lista wysyłkowa są drukowane i składane wraz z zamówieniem

    ..itp.

Robert Harvey
źródło
5
Podobają mi się definicje, ale w przykładach brakuje mi rozróżnienia między logiką biznesową a regułami biznesowymi.
jdv-Jan de Vaan
1
DOBRZE. Ale dlaczego nazywa się „Transakcja musi być atomowa” jako reguła biznesowa? Brzmi trochę nisko jak na regułę biznesową.
jdv-Jan de Vaan
9
@jdv: Przesadzasz z tym. Czy bankomat wykonałby tylko połowę tej transakcji?
Robert Harvey
1
@jdv: Powiedzenie, że transakcja musi być atomowa, implikuje dwie rzeczy: (1) jeśli coś zakłóca przetwarzanie transakcji, możliwe będzie cofnięcie jakichkolwiek efektów transakcji, tak jakby nigdy nie doszło (z wyjątkiem, być może, utworzenie raportu dziennika błędów), lub dokończ wszystko, co trzeba zrobić; (2) żadna część transakcji nie będzie nakładać się na żadną inną transakcję „atomową” obejmującą te konta. Na przykład, jeśli ktoś, kto ma 1 000 000 USD na każdym z dwóch kont, przeniesie 500 000 USD z jednego do drugiego w momencie, gdy bank zostanie poproszony ...
supercat
4
Transakcja @jdv jako atomowa jest podstawowym wymogiem, który należy zapewnić i dotyczy stanu końcowego.
icarus74
27

CRUD to po prostu Tworzenie, Odczytywanie, Aktualizowanie, Usuwanie, które wykonuje aplikacja.

Do pewnego stopnia narzędzie do śledzenia błędów jest również aplikacją CRUD. Twórz błędy, czytaj (wyświetlaj) błędy, aktualizuj błędy i być może je usuwaj.

Śledzenie błędów nie ogranicza się jednak do CRUD.

  • Deweloper nie może oznaczać błędu jako zweryfikowanego lub zamkniętego - to część pracy QA. A więc jest tam jakiś kod, aby upewnić się, że ktoś, kto nie pełni roli QA, nie może oznaczyć błędu jako zamknięty lub zweryfikowany.
  • Nikt oprócz kierownika projektu nie jest w stanie usunąć błędu.
  • Aby błąd mógł zostać oznaczony jako „przetestuj mnie”, musi istnieć co najmniej jeden kod zatwierdzający błąd.
  • Tylko błąd, który jest w stanie „zamkniętym”, może zostać przeniesiony do stanu „ponownie otwarty”
  • Deweloper przypisany do błędu nie może przenieść go z „przeglądu kodu” na „przegląd kodu zakończony”
  • Kontrola jakości i programiści widzą błędy tylko w projektach, do których są przypisani.

Kod, który implementuje powyższe, jest logiką biznesową aplikacji.

Ograniczenie przepływów pracy lub kto może wykonywać różne operacje w CRUD. To właśnie odróżnia jedną aplikację CRUD od drugiej. Są to części, w których musisz sprawić, by firma faktycznie powiedziała, jak działa aplikacja. Jakie to logiczne ... cóż, najlepiej omówić to przy piwie poza okiem kierownika projektu. Ale taka jest logika biznesowa.

Jasne, można napisać „czystą” aplikację CRUD, w której nie ma ról, wszystko można modyfikować i przeglądać - ale to raczej wyjątek niż reguła.

Logika biznesowa to logika, którą piszesz w swoim programie, aby obsłużyć podane reguły biznesowe.


Kiedy zaczynasz wchodzić w reguły biznesowe, zwykle jest to na wyższym poziomie niż sama grubiańska logika biznesowa. Zwykle są to rzeczy, które dostajesz od analityka biznesowego, który współpracuje z biznesem.

Rozważ w tym przykładzie program, który określa sposób obsługi zwrotu towaru na stanowisku zwrotu w sklepie.

  • Jeśli paragon ma co najmniej 90 dni, można otrzymać tylko kredyt w sklepie
  • Jeśli paragon ma mniej niż 90 dni, zaakceptuj ofertę, za pomocą której paragon został wykorzystany do zakupu (kredyt wraca na kartę kredytową, gotówka wraca do gotówki, kredyt w sklepie trafia do kredytu w sklepie) ... chyba że był czekiem, w którym to przypadku użyj gotówki.

To są niektóre reguły biznesowe. Nie rozmawiają z częścią CRUD aplikacji.

Podczas pracy z regułami biznesowymi często można je znaleźć w silniku reguł (na przykład Windows Rulesflow Foundation Rules Engine ) zamiast pisać surowy kod w systemie.


Uświadom sobie, że rozróżnienie logiki / zasad jest terminologiczne i można je spierać całą noc (najlepiej przy piwie). Choć nie jest to rzadkie rozróżnienie, oba mogą się ze sobą łączyć.


źródło
23

Inne odpowiedzi są poprawne. Jedna dodatkowa myśl…

Logika biznesowa jest przenośna

Jeśli chcesz ponownie wdrożyć projekt oprogramowania w innym języku programowania, powiedzmy, przejście z Turbo Pascal na Javę , logika biznesowa i reguły biznesowe są wspólne dla starych i nowych projektów .

Język programowania byłby inny. Kod źródłowy byłby zupełnie inny. Narzędzia ( IDE , kompilatory itp.) Mogą być zupełnie inne. Interfejs użytkownika może być całkowicie zreorganizowany lub mieć inny wygląd i dotyk . Dokumentacja będzie prawdopodobnie inna. Ale cel tych dwóch projektów, końcowe wyniki wykonanej pracy / osiągnięte cele byłyby takie same.

Basil Bourque
źródło
10

Logika biznesowa zasadniczo składa się z 2 ogólnych kategorii: walidacji i przepływu. Logika biznesowa mówi, że ilość 1 musi być większa lub równa 2 - na przykład liczba pozycji do zakupu musi być mniejsza lub równa liczbie elementów w magazynie.

W jednej aplikacji ludzie biznesu powiedzą, że jest to reguła biznesowa, więc piszesz kod w celu wymuszenia logiki biznesowej (sprawdzania poprawności). Inna aplikacja powie, że jeśli liczba zamówionych przedmiotów jest większa niż liczba przedmiotów w magazynie, przyjęcie zamówienia, a następnie złożenie własnego zamówienia z różnicą plus 20%, a więc zapiszę tę logikę biznesową (przepływ) .

CRUD po prostu pobiera i zapisuje dane oraz je zmienia. Logika biznesowa określa, co robisz z tymi danymi i jakie transformacje możesz w nich wprowadzać. Czy Twój klient urodził się w przyszłości, w wieku poniżej 5 lat, z określonego obszaru geograficznego (zniżki dla mieszkańców / gości). CRUD jest prosty, wiedząc, że możesz uzyskać ulgę podatkową na dziecko tylko wtedy, gdy dziecko mieszkało z tobą przez ponad połowę czasu, w którym żyło w roku kalendarzowym, a NIE tylko dłużej niż 6 miesięcy, jest bardziej złożone.

jmoreno
źródło
9

Logika biznesowa lub reguły to wszystko, co nie dotyczy mechaniki interfejsu użytkownika („rzeczy programistyczne”). Są to rzeczy, które nadal musiałbyś zastosować, gdybyś robił tę transakcję lub cokolwiek 100 lat temu (ręcznie). Na przykład, kiedy zastosować podatek od sprzedaży do zakupu.

Phil Perry
źródło
1

„Logika biznesowa” programu lub aplikacji jest częścią kodu, która faktycznie robi rzeczy z danymi wejściowymi (od użytkownika, systemu operacyjnego itp.). „Reguły biznesowe” aplikacji to zazwyczaj zdefiniowane parametry samego programu (takie jak sposób obsługi danych wejściowych). Przynajmniej tak słyszałem o tym wiele osób. Są to bardzo podobne terminy opisujące części kodu.

ChrisR.
źródło