Słyszałem, jak ludzie dużo mówią o logice biznesowej w pracy i Internecie, i przeczytałem o niej kilka pytań na tej stronie, ale ten termin wciąż nie ma dla mnie większego sensu. Oto na przykład niektóre (parafrazowane) stwierdzenia, które często widzę:
„Logika biznesowa jest częścią twojego programu, która koduje aktualne reguły biznesowe”. Większość definicji, które przeczytałem, jest takich okrągłych.
„Logika biznesowa to wszystko, co jest specyficzne dla konkretnej aplikacji”. Nie rozumiem, czym to się różni od „Twoja konkretna aplikacja to nic innego jak logika biznesowa”, chyba że przypadkowo opracowaliśmy kilka kół, do których moglibyśmy wykorzystać istniejące oprogramowanie innych firm. Stąd tytuł pytania.
„Powinna istnieć warstwa logiki biznesowej powyżej warstwy dostępu do danych i poniżej warstwy GUI”. W kodzie, który piszę, osoby korzystające z bazy danych muszą wiedzieć, do jakich danych mają uzyskiwać dostęp, a kod interfejsu użytkownika musi wiedzieć wiele o tym, co wyświetla, aby wyświetlać go poprawnie, i nie ma nic do zrobienia pomiędzy te dwa miejsca inne niż przekazywanie obiektów blob danych między klientem a serwerem. Więc co właściwie powinno wejść w warstwę logiki biznesowej?
„Logika biznesowa powinna być oddzielna od logiki prezentacji”. Większość otrzymywanych przez nas żądań funkcji polega na zmianie logiki prezentacji ze względów biznesowych. Jeśli jedna z reguł biznesowych ma domyślnie wyświetlać ceny amerykańskich obligacji skarbowych w notacji 32. (zapewniając jednocześnie interfejs użytkownika dla użytkownika, aby to skonfigurował), logika prezentacji musi przynajmniej wiedzieć, że ta reguła istnieje, jeśli nie zostanie w pełni wdrożona. Wydaje się również, że większa część projektowania UX pomaga użytkownikowi zrozumieć zasady biznesowe, które nasze oprogramowanie próbuje wdrożyć.
Czy to możliwe, że faktycznie pracuję w zespole, który zajmuje się wyłącznie logiką biznesową, a cała logika pozabiznesowa jest wykonywana przez inne zespoły? Czy też cała koncepcja „logiki biznesowej” jako odrębnej jednostki może być zastosowana tylko w przypadku niektórych aplikacji lub architektur?
Aby pomóc w uzyskaniu konkretnych odpowiedzi: Udawaj, że musisz ponownie wdrożyć aplikację Pizza Domino. Jaka jest logika biznesowa i jaka jest logika pozabiznesowa tej aplikacji? I jak byłoby możliwe umieścić logikę biznesową zamawiania pizzy we własnej „warstwie” kodu, tak aby większość informacji o pizzy nie przenikała do warstw dostępu do danych i prezentacji?
Aktualizacja: doszedłem do wniosku, że mój zespół prawdopodobnie robi 90% kodu interfejsu użytkownika i większość - ale nie wszystkie - logiki biznesowej, którą nazwalibyście, pochodzi od innych zespołów lub firm. Zasadniczo nasza aplikacja służy do monitorowaniadane finansowe i prawie wszystkie funkcje umożliwiają użytkownikowi dostosowanie wyświetlanych danych i sposobu ich wyświetlania. Nie dzieje się kupno ani sprzedaż (choć integrujemy się trochę z innymi aplikacjami naszej firmy, które to robią), a rzeczywiste dane są dostarczane przez mnóstwo zewnętrznych źródeł. Pozwalamy jednak użytkownikom robić takie rzeczy, jak wysyłanie kopii swoich „monitorów” do innych użytkowników, więc szczegóły dotyczące tego, jak sobie z tym poradzimy, prawdopodobnie kwalifikują się jako logika biznesowa. W rzeczywistości istnieje aplikacja mobilna, która obecnie komunikuje się z niektórymi z naszego kodu zaplecza, i wiem dokładnie, jaką część naszego kodu frontendowego chciałbym udostępnić naszemu interfejsowi użytkownika w idealnym świecie (w zasadzie M w naszym quasi-MVC), więc Domyślam się, że to dla nas BLL.
Akceptuję odpowiedź user61852, ponieważ pozwoliło mi to na bardziej konkretne zrozumienie tego, co robi „logika biznesowa” i do której się nie odnosi.