Od lat, podczas audytów i szkoleń, spotykam się z “dziwnymi diagramami” tworzonymi w celu… no właśnie. Ale po kolei…

Najpierw przypomnę, bardzo tu pomocne, pojęcie architektury korporacyjnej, która – śledząc literaturę przedmiotu – jest modelem (dokumentacją) wiążącym model biznesowy organizacji z jej zasobami informacyjnymi i infrastrukturą służącą do zarządzania informacją. Posiadanie takiego modelu ma sens nie tylko po to by, wiedzieć “co mamy” czy opisać wymagania na to czego “jeszcze nie nie mamy a potrzebujemy mieć”. Model taki pozwala analizować posiadane zasoby, ale także ocenić ich wpływ na działanie organizacji, wzajemny wpływ, przewidzieć reakcje systemu na nowe bodźce (lub awarie).

 

W artykule opisującym proces modelowania “od biznesu do projektu logiki systemu” opisałem przechodzenie od modelu procesów biznesowych, przez przypadki użycia do modelu dziedziny systemu (lub komponentów w przypadku złożonych systemów jak w artykule Przypadki użycia i granice systemu). Nie będę więc w tym miejscu powtarzał tych treści, ale pokaże przykłady.

 

Opisywane tu podejście wymaga przyjęcia standardowych definicji pojęć proces biznesowy i przypadek użycia oraz usługa systemu (tak zwana pragmatyka modeli, powinna być zawsze dołączona do dokumentów analizy). Dwie ostatnie są w UML praktycznie tożsame z procesem biznesowym (A use case is the specification of a set of actions performed by a system, which yields an observable result that is, typically, of value for one or more actors or other stakeholders of the system – czynność lub  ich seria dająca jako efekt produkt mający wartość dla aktora, źr. UML 2.4.1. 16.3.6 UseCase). W efekcie zestaw diagramów opisujących organizację z jej systemem informacyjnym, tworzą Architekturę jak poniżej:

Model warstw AK

 

Usługa systemu (jego przypadek użycia) może wspierać jeden lub wiele różnych procesów biznesowych, jednak na poziomie procesów elementarnych (tych których już nie dekomponujemy), jeden proces “elementarny” może być wspierany wyłącznie jednym przypadkiem użycia (bo na tym poziomie powstaje jeden produkt).  Przykładem jednej usługi  wykorzystywanej w kilku procesach może być przypadek zwany CRUD (Create, Retrieve, Update, Delete, czyli Utwórz, Przywołaj, Aktualizuj, Usuń), taka usługa (przypadek użycia typu CRUD) może wspierać  procesy: tworzenia, aktualizacji (w tym zmiany statusu) i usuwania dokumentów.

Usługi są realizowane przez określone komponenty (aplikacje), które są instalowane na konkretnych platformach. Z uwagi na to, że komponenty mogą współpracować (wymieniać między sobą dane) mają udokumentowane interfejsy.

 

Jak pokazać, które komponenty są wykorzystywane w określonych procesach?

Teraz przyszedł moment, w którym pojawiają się często niestandardowe diagramy “wymyślane” w celu “jakiegoś sposobu” na pokazanie związków pomiędzy biznesem (procesy biznesowe) a komponentami oprogramowania. Poważną wadą tych pomysłów jest przede wszystkim to, że są niestandardowe. Po drugie wymagają “ręcznego” wytworzenia, są pracochłonne, mnożą się dodatkowe strony dokumentacji, podnoszą jej złożoność i pogarszają zrozumiałość całości.

Jak sobie z tym poradzić? Tu nieocenione są właśnie dobre pakiety oprogramowania CASE. Poniżej prosty przykład:

Model procesu biznesowego (proces składa się z elementarnych procesów, każdy ma produkt):

Przykładowy proces biznesowy

Model przypadków użycia (zachowano nazwy z modelu procesów dla orientacji):

Przypadki użycia aplikacji

 

Przykładowa realizacja (scenariusz) wybranego przypadku użycia (na poziomie komponentów, tu celem jest specyfikowanie interfejsu czyli wywołań jednego komponentu przez drugi):

Czynność_4 - Scenariusz

 

Jak teraz sprawdzić i pokazać związki pomiędzy procesami, przypadkami użycia aplikacji (usługami systemu) i komponentami (aplikacjami)? Zamiast tworzyć nowe sztuczne i niestandardowe diagramy znacznie lepiej jest pokazać to w formie macierzy nie psując np. modeli procesów nieformalnymi zapisami o systemach:

Macierz Procesy na uslugi

 

Macierz Uslugi na kommponenty

Gdyby potrzebne były bardziej wyrafinowane analizy zależności, możemy stworzyć, zamiast dwuwymiarowej macierzy, taki diagram:

Czynność_4 Analiza wpływu

 

I teraz sedno czyli co nam daje dobre narzędzie CASE? otóż powyższe macierze (takie i każdą inną) oraz model analizy wpływu, są generowane i aktualizowane automatycznie. Wystarczy opracować standardowe modele w BPMN i UML jak powyżej, wskazać związki pomiędzy elementami jako ich parametry (nie trzeba do tego celu tworzyć sztucznych diagramów) i skorzystać z możliwości automatyczne dokumentowania tych związków.

Uzupełnieniem  powyższych modeli może być mapowanie dokumentów z diagramów procesów biznesowych na klasy (agregaty) reprezentujące je w oprogramowaniu (komponenty). Tu niestety nie widzę sensu mapowania na “dane w bazie danych” bo celem jest dokumentowanie miejsca przechowywania informacji (komponent) a nie implementacji (baza RDBMS, która jest jedną z wielu możliwych implementacji utrwalania).

Ważne jest by narzędzie bardzo dobrze wspierało specyfikacje notacji oraz metody weryfikowania spójności modeli takie jak śladowanie, podległość modeli, zależności “parent-child” i zagnieżdżanie.

(Artykuł powstał z użyciem oprogramowania Visual-Paradigm Agilian, pakiet ten ma moduł do prowadzenia analiz wpływu i zależności).

Jarosław Żeliński

Jarosław Żeliński: autor, badacz i praktyk analizy systemowej organizacji: 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: wszelka pomoc i wyjaśnienia dotyczące treści artykułów autora bloga udzielana jest wyłącznie w ramach płatnych konsultacji.