Czarno na białym – o językach i procesie

Pozostańmy jeszcze przy klimacie zakupowym. W poprzednich newsach skupiałem się na realizacji zakupów jak na procesie, potem wskazywałem skutki wzrostu ceny czy niedostępności danego produktu. Tworzenie listy zakupów, określanie sklepów, potencjalnej drogi do przebycia, umiejscowienie jej w czasie i przestrzeni odbywa się jakby równocześnie, dynamicznie, w sposób, trzeba przyznać, który trudno ubrać w ramy. Próbowałem to w najprostszy sposób uporządkować. Można jednak na to spojrzeć inaczej. Patrzyłem na umysł jak białą skrzynkę (ang. white box) – próbowałem przedstawić jej procesy.

Potraktujmy umysł jak tzw. czarną skrzynkę (ang. black box). Musimy wykonać listę zakupów, zleconą przez kogoś innego lub po prostu stworzoną stopniową. Bierzemy ją pod obróbkę i czarna skrzynka proponuje. Można powiedzieć, że tworzymy zapytanie o pewnym formacie: „Podaj mi trasę po sklepach dla zdefiniowanego koszyka zakupów”. Czy nie przypomina to zapytania do bazy danych bądź systemu analizy danych?

„SELECT DISTINCT [ELEMENTY TRASY] FROM [BAZA INFORMACJI] WHERE [PRODUKTY] IN [ZDEFINIOWANA LISTA] ORDER BY [IDENTYFIKATOR POZYCJI] ASC

Do czego zmierzam? Po pierwsze, do generacji języków programowania. Podany przykład jest uproszczonym stwierdzeniem dla języków tzw. 4 generacji (4GL). Takie zapytanie jest przepisywana na kolejne poziomy z generacji języków programowania, aż schodzimy do poziomu właściwego dla języka maszynowego, wykonywania pojedynczych operacji. Pewnie specjaliści od budowy mózgu powiedzieliby, że na najniższym poziomie w mózgu też można mówić o pseudo „języku maszynowym”. Wszystko to odbywa się w czarnej skrzynce, a odbiorca nie musi znać szczegółów. Tak jak my nie wiemy, co się dzieje w mózgu, gdy myślimy.

Równocześnie, przytoczone przykłady obrazują dwa sposoby reprezentacji procesów biznesowych, odbywające się w interakcji między 2 podmiotami/aktorami. Pierwszy operacje białej skrzynki, ten drugi czarnej skrzynki.

Reklama

Projekt a proces – „magia” trójkąta

Zdaję sobię sprawę, że stosując brzytwę Ockhama nie powininem tego robić, a mówiąc o procesie, raczej trudno mówić o projekcie. Jednakże załóżmy na chwilę, że problem zakupowy przedstawiony w poprzednim wpisie jest projektem. Projekt ten ma jasno zdefiniowany cel (realizacja zakupów) i określone ramy realizacji. Zgodnie z metodyką zarządzania projektami można przyjąć, że ten projekt funkcjonuje w ramach trójkąta ograniczeń: budżet, czas, zakres.

W opisywanym przypadku zakres jest znany: lista zakupów. Czas oczekiwanej realizacji też mamy ustalony. Zastanówmy się nad 3 elementem: budżetem. Jakby wpłynął na realizację tego projektu, gdyby go zmiejszyć albo okazał się niewystarczający.
Załóżmy, że koszt zakupu danego produktu jest wyższy w sklepie, który wybraliśmy.
Możemy:

  •  szukać dalej w innych sklepach, co zwiększy czas realizacji;
  • zrezygnować z zakupu, co zmniejszy zakres i koszt zakupów, który można inaczej wykorzystać lub potraktować jako oszczędność;

Strzałki na diagramie wskazują zależności między poszczególnymi elementami. Istotne jest założenie, że podejmując daną decyzję – poszukiwanie lub rezygnacja – trzymamy się tego, że pozostałe elementy są stałe. Podobną analizę można by wykonać zaczynając od innego kąta trójkąta. Skutki jednak byłyby inne.

Wróćmy jednak na chwilę do samego procesu. Powyższe przypadki i decyzje mogą powodować nawroty w procesie, zmiany priorytetów, modyfikację kolejności wykonywania zakupów. Każdy nawrót wpływa na czas realizacji procesu i w zależności od podjętych decyzji, na jego koszt oraz efekt. Realizacja procesu ma przynieść efekty (=efektywność) osiągnięte w akceptowany sposób (=sprawność). Powyższy przykładowy diagram w BPMN prezentuje te nawroty.

Optymalizacja zakupowa a reguły biznesowe

Przygotowywanie listy zakupów to czynność jak najbardziej codzienna. Żadna filozofia, tworzysz listę, zastanawiasz się gdzie możesz kupić poszczególne rzeczy, jak daleko, ile czasu potrzeba, co jest najbardziej potrzebne, co mogę kupić innym razem. Łatwiej jest gdy robimy listę zakupów do określonego sklepu – spożywczego czy marketu. Trudniej, gdy okazuje się, że lista zakupów jest na tyle różnorodna, że wymaga odwiedzenia różnego rodzaju sklepów i niekoniecznie mamy czas, aby udać się do marketu.

Załóżmy więc, że mamy do kupienia: kwiaty (ZAK3), chleb(ZAK2), gazety(ZAK1) i płytę CD (ZAK4). Rzeczy potrzebne i jak dostępne w różnych sklepach. Dodatkowo mapa obok wskazuje miejsca potencjalnego zakupu tych produktów oraz miejsce rozpoczęcie zakupów (START).

Poniższy diagram (w BPMN) prezentuje przebieg procesu realizowanego w powyższej sytuacji – od określenia zakupów do realizacji zakupów. Najważniejszą częścią procesu jest określenie priorytetów oraz kolejności wykonywanych zakupów. Jest to istotne, gdy na przykład mamy mniej czasu lub liczymy się z tym, że pewnych produktów możemy nie dostać lub może być kolejka. Może będzie trzeba zmienić sklep. Następnie, co prawda dynamicznie, określana jest droga po zakupy. Można ją zaplanować przed wyjściem z domu a można w trakcie. W podanym przykładzie nie zostały wskazane priorytety. Po połączeniu informacji o miejscach (gdy będą inne) oraz priorytetach droga może zostać określona w zupełnie inny sposób.

Taką optymalizację zakupową wykonujemy automatycznie w trakcie określania listy zakupów, nie zastanawiając się nad poszczególnymi krokami, ani kolejnością. Gdybyśmy chcieli przygotować aplikację, która dla podanej listy zakupów określa lokalizację, potencjalną kolejność zakupów w zależności od priorytetów, akceptowalną odległość od miejsca startu, miejsca, których chcemy uniknąć, należałoby zdefiniować odpowiednie reguły biznesowe, zaimplementować mechanizm rozwiązujący problem komiwojażera, włączyć mapę wraz z naniesioną listą sklepów.