Osobą odpowiedzialną za system IT zawsze będzie zamawiający. Dlatego zamawiający powinien jednoznacznie opisać swoje oczekiwania i zrozumieć potem odpowiedź czyli propozycję ich wykonawcy. Menedżer nie musi uczyć się diagramów UML ale powinien rozumieć modele procesów tak by mieć możliwość ich oceny i zatwierdzania. Dlatego modele procesów powinny być tworzone metodami zrozumiałymi dla menedżerów, moim zdaniem nie jest to notacja UML. Notacja ta jednak jest niewątpliwie doskonałym narzędziem do udokumentowania i przekazania swoich oczekiwań przyszłemu wykonawcy systemu: integratorowi IT. Tak więc wykonaj model procesów biznesowych, określ które procesy chcesz informatyzować. Potem przygotuj na bazie tej analizy listę przypadków użycia przyszłego systemu, uzupełnij ją o model pojęciowy twojego biznesu i firmy i przekaż to do realizacji wykonawcy systemu. Na koniec pozostaje wdrożenie a to już osobny projekt :), socjologiczny.
Mały wstęp dla informatyków
Menadżera interesują procesy biznesowe a nie przypadki użycia. System IT kupujemy po to by te procesy wesprzeć a nie po to by mieć system.
Coraz częściej menedżerowie są jednak obciążani decyzjami o oczekiwanej funkcjonalności systemów, za które potem płacą. Paradoksem wielu nieudanych projektów jest to, że dostawcy rozwiązań IT po pierwsze dokumentują sami sobie wymagania, po drugie robią to metodami niejednokrotnie nieznanymi menadżerom (np.. właśnie diagramy UML), ci podpisują dokumenty nie przyznając się, że ich nie zrozumieli (takie strasznie mądre te kwity), dostawca realizuje projekt a na końcu menadżer mówi: TO NIE TO CHCIAŁEM!
UML czyli jak napisać dokumentację niezrozumiałą dla jej adresata
Systemy często są opisywane od razu za pomocą przypadków użycia, te zaś opisują zasoby ale już nie relacje między nimi. Problem, który przewijał się w większości referatów na konferencji to moim zdaniem mieszanie procesów, zasobów i produktów okraszone wplataniem w to tak zwanych przypadków użycia. Do tego dochodzi wierność metodom analizy zorientowanym właśnie na przypadki użycia, które to metody są moim zdaniem niekompletne i powodują wiele nieporozumień. Przypadki użycia to podzbiór pełnej listy działań w firmie. Dlatego bazowanie tylko na nich skutkuje często zupełną utratą kontekstu projektu wdrożeniowego.
Próbą naprawy tego faktu są modele tak zwanych biznesowych i systemowych przypadków użycia, które jednak moim zdaniem zaciemniają tylko obraz. Twierdzenie zaś, że biznes powinien się nauczyć analizy obiektowej skoro zamawia systemy jest moim zdaniem tyle samo warte co twierdzenie, że kierowcy powinni się uczyć termodynamiki silników spalinowych.
Wiec jednak procesy i ich analiza
W analizie procesowej opisujemy organizacje poprzez produkty (głownie dokumenty ale nie tylko) jakie ona wytwarza i procesy wymagane by produkty te powstawały. System IT jako zasób dla procesów jest z natury rzeczy opisywany rolami ludzkimi (aktorzy) i zasobami systemowymi, którymi są programy i sprzęt informatyczny . Procesy to sieć działań. Pojęcie sieci działań i kłopotów związanych z opisywaniem ich za pomocą przypadków użycia wiążą się moim zdaniem z tym, że opis procesowy bazuje na łańcuchach wartości będących łańcuchem następstw przetwarzanych produktów o czym zapominają analitycy programiści a przypadki użycia to lista tych momentów, gdy człowiek korzysta z systemu by proces zrealizować.
Jak więc opisać wymagania na system IT
Kluczowym elementem procesu przejścia od opisu organizacji do opisu systemu IT jest transformacja procesów biznesowych, czyli wewnętrznego łańcucha wartości, na zasoby je wspierające i przypadki ich użycia czyli funkcjonalności systemu. Kluczowym elementem jest decyzja czy wszystkie procesy i przypadki użycia systemu będą implementowane w systemie czy nie, co nazywa się po prostu analizą rentowności projektu.
Patrząc na procesy biznesowe musimy mieć umiar w szczegółowości ich definiowania, tak by nie doprowadzić do próby algorytmizacji firmy. Pamiętajmy, że musimy zawsze bazować na kompetencjach ludzi i ich wiedzy o tym co i jak mają robić. Jeżeli nie weźmiemy tego pod uwagę to stworzymy system przepływu pracy łączący przypadki użycia w ciągi o skończonej liczbie kombinacji. Pozornie jest to skuteczniejsze jednak kluczową wartością firm jest to, że człowiek radzi sobie z nietypowymi sytuacjami co z kolei powoduje, że nie można mu wiązać rąk scenariuszem. Szczegółowe scenariusze mogą mieć zastosowanie tam, gdzie 100% pracy jest opisana np. w KPA (Kodeks Postępowania Administracyjnego dla Urzędów) ale i tak bałbym się je zbyt szczegółowo opisywać. W firmach rynkowych kluczowym elementem są kompetencje i doświadczenie ludzi i tu typowe systemy przepływu pracy (ang. workflow) stwarzają nie raz wiele kłopotów odzierając ludzi z prawa użycia ich własnej inwencji.
System dla ludzi
Dlatego wiele gotowych udanych systemów w efekcie ma postać zbioru usług wspierających zasoby (ludzi) w realizacji ich bieżących prac. Proces to pojęcie w 100% abstrakcyjne nie mające bytów rzeczywistych, jest to abstrakcja łącząca ze sobą pojęcia: produktów, zasobów, reguł, wartości i jakości (dlatego jest tak trudny do zrozumienia jako pojęcie). Próba ich opisu metodami obiektowymi, nie tylko moim zdaniem, jest skazana na niepowodzenie. Opis procesów często bywa przez niektórych analityków dodatkowo komplikowany przepływem samych danych. Prawdopodobnie jest więc tak, że:
- Procesy są łańcuchami tworzącymi wartość dodaną,
- Procesy są fizycznie realizowane przez zasoby (ludzi, systemy),
- Komunikują się z sobą zasoby (ludzie, aktorzy) a nie procesy,
- Przepływ danych nie musi być tożsamy z łańcuchem procesów (nawet rzadko taki jest).
Ostatni a uwaga jest jednym z powodów dla których w literaturze można spotkać się z opiniami, że przyczyną fiaska wielu projektów była analiza wymagań bazująca tylko na Diagramach Przepływu Danych (ang. DFD: Data Flow Diagram). Pominięcie modelu procesowego rodzi ryzyko utraty zrozumienia konstrukcji wewnętrznej organizacji.
Model procesów powinien być uproszczeniem, abstrakcją skupiającą się na celowości działań a nie na szczegółach ich realizacji. Te ostatnie mogę podlegać stałym zmianom w firmie. Należy wręcz unikać na etapie zbierania wymagać zbytniego uszczegóławiania opisu. Powinno się zamiast opisowego precyzowania wymagań dla procesu operować przykładami, wzorami produktów każdego procesu. Minimalizuje to możliwość nieporozumień oraz czyni taki opis bardziej jednoznacznym.
Prawdopodobnie więc na etapie opisu wymagań zupełnie wystarczające jest napisanie, że system powinien wspierać wystawianie faktur i dodać wzór tego dokumentu niż wylistować cechy tego dokumentu takie jak: możliwość wpisania nazwy produktu, liczby sztuk, nazwy jednostki, wartości podatku, automatyczne wyliczanie wartości pośrednich, sum częściowych i summy całkowitej, wypisanie terminu płatności , ?. Wzór dokumentu z jego opisem jest skuteczniejszym i tańszym sposobem specyfikowania wymagań.
(tekst ten to moje przemyślenia po wysłuchaniu referatów na konferencji UML – zastosowania w biznesie http://www.cpi.com.pl/imprezy/2007/uml/index.php ).
Na podstawie tego tekstu powstał artykuł “Za system IT nie odpowiada informatyk”, który ukazał się w numerze 12.2011 pisma Kadra Kierownicza w administracji. Wszelkie prawa do treści artykułu zastrzeżone.