Częsty problem, z jakim się spotykam, to zjawisko “utraty panowania nad złożonością” (analizy, dokumentacji, itp.). Winnymi są zresztą sami zamawiający, niepotrafiący myśleć abstrakcyjnie. Nie chodzi o to, że powinni umieć, chodzi o to, że nie uznają tego, nie potrafią. Paradoksalnie, programiści w większości także nie potrafią myśleć abstrakcyjnie.

Beneficjenci  oprogramowania starają się opisać swoje oczekiwania przez pryzmat swojej szczegółowej  wiedzy o pracy jaką wykonują, pomijając w swych opisach niestety jej “oczywiste” dla nich elementy (z reguły najważniejsze). Programiści zaś patrzą na swoją pracę dokładnie tak samo: chcą usłyszeć “co mają zaprogramować”. Pierwsi godzinami opowiadają o znanych im przypadkach i metodach wytworzenia jednego dokumentu, drudzy już w pierwszej minucie spotkania z klientami pytają o “typ pola” tej formatki.

W efekcie zamawiający wyartykułuje setki wymagań a developer zada pytania o kolejne brakujące setki szczegółów tych setek wymagań. Zupełnie niepotrzebnie w pierwszych fazach projektu.

Wśród wielu takich szczegółów są różnego rodzaju ograniczenia nazywane regułami biznesowymi. Poniżej przykładowe “śmieciowe” zapisy w wymaganiach:

1.       Assigning values to variables.

2.       Asserting mandatory GUI fields.

3.       Specifying which data can be viewed by which users.

4.       Expressing which documents are to be routed to which queues.

5.       Orchestrating tasks assignments in an execution environment.

(źr. A Quick 5-Item List of What Are Not Business Rules! ? Ron Ross on Business Rules).

Po pierwsze są to albo elementy związane z implementacja (czyli ostatni etap pracy) albo elementy scenariuszy pracy z GUI. Ani jedno ani drugie to nie reguły biznesowe, bo te – jak sama nazwa wskazuje – ograniczają (regulują) działania biznesowe (ludzi) a nie oprogramowania. Oprogramowanie to tylko narzędzie pracy, ma określone cechy i funkcjonalności i nie może kolidować z biznesem (jego regułami), to tylko narzędzie w rękach ludzi.

Reguły biznesowe

http://www.modernanalyst.com/Resources/BusinessAnalystHumor/tabid/218/Default.aspx?ArticleType=ArticleView&ArticleID=2471
źr. http://www.modernanalyst.com/Resources/BusinessAnalystHumor/tabid/218/Default.aspx?ArticleType=ArticleView&ArticleID=2471

Reguła biznesowa nie powinna zawierać w sobie kryteriów podejmowania decyzji. Reguła biznesowa nie jest elementem algorytmizacji, wskazuje kiedy i co, a nie jak, ma być wykonane. Należy zawsze pamiętać, że model organizacji, system którego elementami są także ludzie, nie może od tych ludzi abstrahować. Dlatego diagramy zawierające wręcz algorytmiczną szczegółowość być może mają sens, tam gdzie szukamy 100%-towej automatyzacji, albo nie mają żadnego sensu.

Na stronie  Business Rules Group można przeczytać Manifest Reguł Biznesowych (także w polskiej wersji ;)). Dlaczego akurat to polecam? Bo konsorcjum to wprowadziło do OMG standard Semantics Of Business Vocabulary And Business Rules (SBVR), który jest zharmonizowany z innymi notacjami, w szczególności z BMM, BPMN i UML. Dzięki temu pojęcie reguły biznesowej ma tę sama definicję na wysokim poziomie abstrakcji analizy biznesowej i na poziomie np. “business rules engine” na poziomie implementacji.

 

Korzyści ze stosowania standardu SBVR to przede wszystkim panowanie nad szczegółami od samego początku projektu. Od samego początku analizy i projektowania logiki systemu należy skupić się na tym “co i po co” a nie “jak”. Zajmowanie się pytaniami “jak” (najgorsze pytanie analizy: jak Państwo to robią) na samym początku, prowadzi do zgromadzenia ogromnej ilości nadmiarowych szczegółów, które zamulają prace wszystkich członków zespołu projektowego. Szczegóły, te których znajomość faktycznie wnosi wartość, należy analizować na końcu, wtedy – mając szkielet całego projektu – wiemy które mają jakiekolwiek znaczenie. Po drugie większość szczegółów obecnie wykonywanej pracy i tak ulegnie zmianie w związku z wdrażaniem nowego narzędzia.

Tak więc: od ogółu do szczegółu, systematycznie i z pełnym zrozumieniem na każdym etapie, a nie “spiszemy wszystko co wiemy a potem zobaczymy”.

Jarosław Żeliński

Jarosław Żeliński: Od roku 1991 roku, nieprzerwanie, realizuje projekty z zakresu analiz i projektowania systemów, dla urzędów, firm i organizacji. Od 1998 roku prowadzi samodzielne studia i prace badawcze z obszaru analizy systemowej i modelowania (modele jako przedmiot badań: ORCID). Od 2005 roku, jako wykładowca akademicki wizytujący (nieetatowy), prowadzi wykłady i laboratoria (ontologie i modelowanie systemów informacyjnych, aktualnie w Wyższej Szkole Informatyki Stosowanej i Zarządzania pod auspicjami Polskiej Akademii Nauk w Warszawie.) Oświadczenia: moje badania i publikacje nie mają finansowania z zewnątrz, jako ich autor deklaruję brak konfliktu interesów. Prawa autorskie: Zgodnie z art. 25 ust. 1 pkt. 1) lit. b) ustawy o prawie autorskim i prawach pokrewnych zastrzegam, że dalsze rozpowszechnianie artykułów publikowanych w niniejszym serwisie jest zabronione bez indywidualnej zgody autora (patrz Polityki Strony). Konsultacje: dostęp do treści Bloga jest bezpłatny, jednak wszelka pomoc oraz wyjaśnienia dotyczące treści artykułów autora bloga, udzielane są wyłącznie w ramach płatnych konsultacji.