Logika biznesowa to NIE jest logika aplikacji

Jeżeli pracujesz jako programista i rozwijasz oprogramowanie dla biznesu to pewnie już spotkałeś się z takimi określeniami jak logika biznesowa oraz logika aplikacji. Jeżeli jeszcze się nie spotkałeś – spokojnie, to tylko kwestia czasu. Na podstawie własnego doświadczenia zauważyłem, że programiści bardzo często operują terminami logika biznesowa i logika aplikacji ale nie zawsze rozumieją jakie jest ich znaczenie lub, co gorsza, używają ich zamiennie. Co ciekawe, z moich obserwacji wynika, że ten problem dotyczy również doświadczonych programistów. Ja również przez długi czas miałem problem z właściwą interpretacją tych terminów. W tym wpisie wyjaśnię co kryje się pod tymi pojęciami i podam kilka przykładów, które powinny Ci pomóc w poprawnej klasyfikacji logiki. Na koniec dowiesz się dlaczego rozróżnianie logiki jest ważne i co możesz dzięki temu zyskać.

Logika biznesowa

Gdybym miał podać ogólną definicję logiki biznesowej to brzmiałaby ona następująco:

Logika biznesowa dotyczy reguł (tzw. niezmienników), które funkcjonują w danej dziedzinie nawet jeżeli nie powstało żadne oprogramowanie działające w oparciu o tą logikę (jest to pewnego rodzaju uproszczenie, ale to temat na osobny wpis).

Wiem, że taka definicja na początku może być dla Ciebie niejasna ale nie przejmuj się, zaraz podam przykłady, które powinny wiele wyjaśnić.

Gdzie można znaleźć logikę biznesową?

Najpierw doprecyzuję jednak, że dziedzina to wycinek jakiegoś obszaru biznesowego. Obszarem biznesowym może być np. księgowość, bankowość lub logistyka. W tych obszarach można wyróżnić takie dziedziny jak podatki, rozliczenia, kredyty, transport czy magazynowanie. Natomiast w każdej z tych dziedzin jest całe mnóstwo reguł biznesowych, takich jak:

  • zasady rozliczania podatku dochodowego,
  • zasady naliczania podatku VAT w zależności od typu produktu/usługi,
  • wyliczanie zdolności kredytowej,
  • śledzenie przesyłek,
  • monitorowanie stanu magazynowego.

Powyżej podałem dość typowe przykłady miejsc, gdzie możemy znaleźć logikę biznesową. Funkcjonowanie każdego przedsiębiorstwa bazuje na tego rodzaju regułach. W zależności od profilu firmy będziemy mieli do czynienia z różnymi obszarami biznesowymi i różnymi zbiorami reguł. Zatrzymaj się tutaj na chwilę i spróbuj pomyśleć nad innymi przykładami.

Logika biznesowa to nie tylko biznes

Uważam, że słowo biznes szufladkuje nasz umysł bo logikę biznesową możemy znaleźć nie tylko w biznesie. Jednym z mniej oczywistych przykładów są gry. Na pewno każdy przynajmniej raz w życiu grał w jakąś grę karcianą lub planszową. Każda gra posiada określony zestaw reguł, według których przebiega rozgrywka. Te reguły to również logika biznesowa! Kolejnym nieoczywistym przykładem są wszelkiego rodzaju metodyki. Scrum, Kanban, Waterfall – każda z tych metodyk posiada ustandaryzowane zasady działania. Te zasady to również logika biznesowa.

Jak widzisz logikę biznesową można znaleźć nie tylko w biznesie. Dlatego ja wolę korzystać z terminu logika domenowa zaczerpniętego z Domain Driven Design. Uważam, że to określenie otwiera nasz umysł i zdecydowanie łatwiej nam wtedy znajdować niezmienniki w obszarze, w którym aktualnie działamy.

Została nam jeszcze jedna istotna kwestia. Wspomniałem, że

niezmienniki funkcjonują w danej dziedzinie nawet jeżeli nie powstało żadne oprogramowanie działające w oparciu o tą logikę

Zauważ, że każdy z przytoczonych przeze mnie przykładów to potwierdza.

Zasady rozliczania podatku funkcjonują tak samo niezależnie od tego w jaki sposób dokonujemy kalkulacji. Wysokość podatku możemy liczyć na papierze, w arkuszu kalkulacyjnym lub w dedykowanym oprogramowaniu. W przypadku gier mamy analogiczną sytuację – np. w pokera możemy grać papierowymi kartami ze znajomymi lub na smartfonie pobierając odpowiednią grę. Nieważne jaki format ma gra, zawsze gramy według tych samych reguł. To samo dotyczy wspomnianych wcześniej metodyk. Możemy ich używać korzystając z karteczek samoprzylepnych lub dedykowanej aplikacji. Forma nie ma znaczenia, zasady metodyki pozostają niezmienne.

W tym momencie powinieneś już dobrze rozumieć co to jest logika biznesowa czym się charakteryzuje i gdzie można ją znaleźć.

Jeśli uważasz tą treść za wartościową będzie mi niezmiernie miło jeśli poświęcisz kilka minut I wypełnisz ankietę dostępną tutaj: http://tymoteuszkestowicz.com/feedback. Twój feedback pomoże w tworzeniu treści dopasowanych do Twoich oczekiwań. To tyle, przejdźmy do logiki aplikacji.

Logika aplikacji

Definicja jaką ja stosuję do określenia co jest logiką aplikacji jest bardzo prosta i brzmi następująco:

Wszystkie zasady, które dotyczą funkcjonowania programu, ale nie są logiką biznesową są logiką aplikacji. Jak widzisz żeby skorzystać z tej definicji niezbędna jest wiedza na temat logiki biznesowej.

Właśnie dlatego opisałem ją w pierwszej kolejności.

Zdaję sobie sprawę, że sama definicja w tym momencie może być dla Ciebie niejasna. Myślę, że dobrym uzupełnieniem tej definicji będzie to, że logika aplikacji dotyczy wszystkich elementów oprogramowania, dzięki którym program przetwarza żądania, wyświetla i przechowuje dane oraz reaguje we właściwy sposób na akcje użytkownika. W zasadzie ten typ logiki znajduje się we wszystkich bazowych kawałkach oprogramowania, takich jak: sterowanie przepływem, mechanizmy wymiany danych, autoryzacja i uwierzytelnianie, walidacja, mechanizmy renderowania interfejsu użytkownika czy komunikacja z bazą danych. Logikę aplikacji można zaprezentować w postaci przypadków użycia, co oczywiście nie oznacza, że jeżeli nie mamy opisanych przypadków użycia to nie ma logiki aplikacji.

Z biegiem czasu na pewno zauważysz, że proporcje między logiką aplikacji a logiką biznesową w oprogramowaniu są różne. Rozkład zależy od tego jakiego rodzaju oprogramowanie tworzysz. W dużych systemach klasy ERP, czy CRM będzie przeważała logika biznesowa, natomiast w mniejszych systemach logiki biznesowej może być jej niewiele lub nie będzie jej wcale. Ciekawą grupą oprogramowania, w której występuje wyłącznie logika aplikacji są frameworki, biblioteki oraz programy narzędziowe.

Podsumowanie

Umiejętność właściwej kategoryzacji logiki znacząco wpływa na poprawę zrozumienia problemu, który rozwiązujemy i kształt tworzonego oprogramowania. Korzystanie z podanych wyżej definicji, w połączeniu z zasadami SoC (Separation of Concerns) oraz SOLID, ułatwia organizowanie kodu w taki sposób żeby kod aplikacji był odseparowany od logiki biznesowej. Dodatkowo wiedza na temat tego gdzie może być ukryta logika pomaga w zadawaniu odpowiednich pytań na etapie analizy, co pomaga w bardziej precyzyjnym opisywaniu wymagań funkcjonalnych.

Wspomniałem o separacji logiki biznesowej od kodu aplikacji. Takie rozdzielenie daje co najmniej dwie duże korzyści. Po pierwsze naturalne będzie korzystanie z języka biznesu bezpośrednio w kodzie, co ułatwia wyszukiwanie wymagań biznesowych w kodzie aplikacji. Po drugie w razie potrzeby bez problemu możemy wydzielić konkretne zadanie biznesowe (lub grupę zadań) do osobnej aplikacji.

Podczas DevTalk Trio Sławek Sobótka również poruszył ten temat, jeśli jeszcze tego nie zrobiłeś to koniecznie zajrzyj tutaj: DevTalk Trio LIVE (DevTalk Trio Season 2 powered by LINGARO)

Co powinieneś zapamiętać z tego wpisu?

  • Logika biznesowa to nie to samo co logika aplikacji.
  • Logika biznesowa może występować nawet jeżeli nie powstało żadne oprogramowanie działające w oparciu o tą logikę.
  • Logika biznesowa dotyczy jakiegoś wycinka rzeczywistości (domeny) niekoniecznie związanego z biznesem. W związku z tym lepiej korzystać z pojęcia logika domenowa.
  • Jeżeli z oprogramowania wyciągniemy logikę biznesową to zostanie nam logika aplikacji.
  • Proporcja między logiką biznesową a logiką aplikacji zależy od rodzaju oprogramowania, które wytwarzamy.
  • Pewne rodzaje oprogramowania nie posiadają logiki biznesowej.
  • Oddzielenie logiki biznesowej od logiki aplikacji w połączeniu z zasadami SOLID wpływa pozytywnie na jakość wytwarzanego oprogramowania.

Cieszę się, że dotarłeś do tego miejsca. Jeśli wpis Ci się podobał a jeszcze tego nie zrobiłeś to poświęć kilka minut i wypełnij krótką ankietą dostępną tutaj: http://tymoteuszkestowicz.com/feedback . Dzięki temu będę w stanie tworzyć więcej treści odpowiadających Twoim potrzebom. Liczę na Twój feedback, dzięki!

Nie przegap kolejnych postów, zapisz się do newslettera!

Zapisując się na listę zgadzasz się na otrzymywanie informacji o nowych wpisach i informacji marketingowych ze strony tymoteuszkestowicz.pl

Say something

Your email address will not be published. Required fields are marked with a grey bar.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">