Wstęp
Mógł by ktoś zapytać, po co tu o tym pisze, czy aby nie oczekuje od czytelnika rzeczy mu niepotrzebnych? Nie, pisze to by wyjaśnić, dlaczego tak wiele dokumentów, które audytuję jako biegły, to makulatura. Ale po kolei.
Jak nie raz tu wspominałem, problemem w analizach są nie tyle metody jako takie i ich znajomość, ale to jak są stosowane. Wspominałem tu już o używaniu diagramów przypadków użycia i ich psuciu. W czym problem?
UML jako system pojęciowy to pewien słownik pojęć. Na czym polega analiza wspierana notacją? Polega na stosowaniu systemu pojęciowego danej notacji, czyli na opisaniu problemu bez wykraczania poza tak zwaną przestrzeń nazw i stosowaniu zasad dedukcji (rachunek zdań, system dedukcyjny).
Skrajnym przypadkiem jest napisanie programu komputerowego: dysponując konkretnym językiem programowania piszemy program czyli tworzymy jakieś odwzorowanie rzeczywistości (program z reguły robi coś co myśmy robili “wczoraj” własnymi rękami). Napisanie programu komputerowego to wyrażenie naszej wiedzy o świecie z pomocą skończonej liczby słów danego języka programowania.
Na czym polega dobra np. analiza i opis wymagań? Na zapisaniu językiem potocznym tego co powiedział sponsor projektu? Nie! To przelewanie z pustego w próżne (język mówiony na język mówiony). Nie pomoże tu ani podział tej prozy na podpunkty ani dzielnie jej na wiersze i kolumny tabeli. Skuteczny opis wymagań to specyfikacja wyrażona językiem o skończonej liczbie pojęć, pozwalająca programistom “wlać” ją do kolejnej “formalnej formy” jaka jest język programowania. Takim językiem analizy są notacje i formalne systemy pojęciowe. Standardem stały się w ostatnich latach BPMN do modelowania procesów biznesowych oraz UML do modelowania logiki systemowej. Są to sformalizowane notacje.
Analiza
To proces podobny do sortowania węgla na sitach: na wejściu mamy niesort, węgiel, niezliczone kawałki o dowolnych rozmiarach. Na wyjściu np. pięść rodzajów węgla, rozmiar ziaren każdego z nich mieści się w określonych widełkach rozmiaru: kostka, orzech, groszek, miał.
Odpowiednikiem tak zwanego “niesortu” jest nieformalna proza, user story, tabelki itp. Odpowiednikiem stert konkretnych rodzajów węgla jest model wykonany z użyciem sformalizowanej notacji, ta zawiera skończoną liczbę pojęć (dozwolone ikony i ich znaczenia). Z pomocą tych pojęć opisana jest rzeczywistość zawarta w prozie, user story itp. Definicja każdego pojęcia (symbolu notacji) to zakres wymiarów w jakich ma mieścić się dany kawałek węgla by zaklasyfikować do konkretnego rozmiaru: kostka lub inne. Poprawnie sformalizowana notacja to przestrzeń pojęciowa zupełna, czyli zestaw pojęć dla danej domeny pozwala nazwać każdy element, czyli zaliczyć do określonej klasy, i tylko do jednej.
Tak wiec analiza danej dziedziny to opracowanie jej modelu z pomocą konkretnego systemu pojęciowego. Czy to łatwe? Niestety nie. Sito jest łatwe w użyciu bo jedynym kryterium kwalifikacji jest rozmiar i można to robić mechanicznie. Analiza treści wyrażonej językiem naturalnym w postaci mowy lub pisma jest znacznie trudniejsza. Jednoznaczne zakwalifikowanie fragmentu opisu do jednego z kilku, góra kilkunastu dopuszczalnych pojęć np, notacji BPMN czy UML wymaga wiedzy i dużego doświadczenia. Czemu? Podstawę stanowi logika i teoria komunikacji. Do kwalifikowania rzeczy (desygnaty) do pojęć danej przestrzeni nazw stosujemy podstawowe zasady logiki:
System dedukcyjny
Arystoteles uprawiał przede wszystkim filozofię, logikę traktował jako narzędzie (stgr. ??????? organon) używane do prowadzenia sporów retorycznych głównie z sofistami, ale także umożliwiające wyciąganie wniosków za pomocą sylogizmów co było pomocne w zdobywaniu wiedzy naukowej.
sylogizm: (w logice tradycyjnej) schemat wnioskowania, w którym przechodzi się z dwu przesłanek zawierających ten sam termin do konkluzji zbudowanej z pozostałych dwóch terminów występujących w przesłankach, np. jeśli każdy człowiek jest ssakiem, a każdy ssak jest kręgowcem, to każdy człowiek jest kręgowcem
Logika w tamtych czasach nie była traktowana jako nauka ani jako system, jednak Arystoteles dał podstawy do rozwoju logiki jako odrębnej dyscypliny badawczej, rozwijając takie zagadnienia jak: definiowanie, klasyfikowanie logiczne, wnioskowanie indukcyjne, czy pojęcie dowodu. Podał także trzy zasady, nazywane czasem najwyższymi prawami myślenia: zasadę tożsamości, zasadę sprzeczności oraz zasadę wyłączonego środka.
- Zasada sprzeczności jako prawo logiczne mówi, że z dwóch zdań sprzecznych co najwyżej jedno jest prawdziwe.
- Zasada tożsamości mówi, że to, co jest prawdziwe, musi się pod każdym względem zgadzać ze sobą samym (każdy przedmiot jest identyczny z samym sobą).
- Zasada wyłączonego środka mówi, że dla dowolnego zdania (w sensie logiki) albo ono samo jest prawdziwe, albo prawdziwe jest jego zaprzeczenie, dla dwóch zdań sprzecznych (p i nie-p) nie może istnieć żadne trzecie zdanie.
Obecnie stosowany w nauce system dedukcyjny to podstawowe zasady wnioskowania dedukcyjnego:
Modus ponendo ponens: jeżeli z p wynika q oraz p jest prawdą to q także jest prawdą, co symbolicznie zapisujemy (z prawdy może wynikać tylko prawda):
[ ( p ? q ) ? p ] ? q ( reguła derywacji )
Modus tollendo tollens: jeżeli z p wynika q i q nie jest prawdą to p także nie jest prawdą, co symbolicznie zapisujemy (jeżeli z czegoś wynika fałsz, to także jest to fałsz):
[ p ? q ) ? ? q ] ? ? p
Modus tollendo ponens: jeżeli mamy tylko p lub q, i p jest nieprawdą, to q jest prawdą, co symbolicznie zapisujemy (inna postać zasady wyłączonego środka):
[ ( p ? q ) ? ? p ] ? q
Modus ponendo tollens: jeżeli nieprawdą może być p lub q i p jest prawdą, to q jest nieprawdą, co symbolicznie zapisujemy:
[ ( ? p ? ? q ) ? p ) ? ? q
Na koniec tej części warto jeszcze dopisać prawo Dunsa Szkota mówiące, że z fałszu może wynika wszystko, lub bardziej formalnie ?z dwóch zdań sprzecznych wynika każde inne zdanie?, co symbolicznie zapisujemy:
Prawo to sprowadza się do tego, że logika nie może tolerować sprzeczności, ponieważ ze sprzeczności można wnioskować wszystko. Przykładowo Bertrand Russell, powołując się na to twierdzenie, dowodził, że jest papieżem, w sposób następujący: ?przyjmując, że 2+2=5, zachodzi 1=2, a ponieważ ja i papież jesteśmy dwiema różnymi osobami, więc ja i papież jesteśmy jedną i tą samą osobą?.
Notacje
Uogólniając nieco, można powiedzieć tak: skoro każde pojęcie w danej notacji ma swoją definicję, poprawnie zbudowana notacja to przestrzeń nazw, w której pojęcia są spójne i wzajemnie wykluczają się, to znaczy, że każdy element tego co wiemy o danej dziedzinie (firmie, organizacji itp.) należy zakwalifikować do jednego z pojęć notacji lub pominąć.
W OMG (specyfikacja MOF) system pojęć danej notacji i związki między tymi pojęciami, to jej profil (diagram profilu UML). Można rozszerzać notacje poprzez rozbudowę ich profilu, jednak nie wolno! zmieniać już zawartych w nich definicji.
Tak więc chcąc wyrazić wiedzę o organizacji w postaci modelu procesów biznesowych, należy pozyskaną wiedzę wyrazić z pomocą symboli notacji BPMN a resztę pominąć jako nieistotne w kontekście modelu procesów biznesowych. Polecam (wytrwałym czytnikom) literaturę z zakresu języka i epistemologii.
Swego czasu pisałem o modelowaniu organizacji wskazując na potrzebę użycia nie tylko notacji ale także zbudowanego dla konkretnego modelu słownika:
Modelując jakąkolwiek firmę jakąkolwiek notacją warto projekt modelowania uzupełnić o jego pragmatykę, to jest o specyfikację wszelkich warunków tworzenia modeli. Opracowanie takiej dokumentacji wymaga ustalenia tych zasad, a także zdefiniowania słownika, skończonej przestrzeni nazw i definicji, która pozwoli jednoznacznie zaklasyfikować każde pojęcie z życia firmy do właściwego, i tylko jednego, elementu modelu. Projekt modelowania procesów to nie jest proste rysowanie tego co się dzieje. Tak powstają najczęściej nieprzydatne i kosztowne zarazem dokumenty. (za RACI, SIPOC i inne czyli modelowanie organizacji c.d.).
Model pojęciowy
Model pojęciowy to abstrakcyjny opis rzeczywistych obiektów. Pojęcie to odnosi się do procesów myślowych i wyobrażeń towarzyszących pracy nad oprogramowaniem. Model pojęciowy może istnieć tylko w głowach osób, które komunikują się między sobą słownie i często nieprecyzyjnie. Może być również zapisany i przechowywany w celu szerszego rozpowszechniania. Język schematu pojęciowego dostarcza semantycznych i syntaktycznych elementów ściśle używanych do opisu modelu pojęciowego, aby spójnie przekazać znaczenie. Model pojęciowy opisany za pomocą języka schematu pojęciowego nazywa się schematem pojęciowym.
Cechy charakterystyczne modelu pojęciowego.:
- tworzony przez analityka na podstawie wywiadów z użytkownikiem, dokumentów itp.
- opisuje świat w kategoriach konkretnych metodyk
- skupia się na zadaniach systemu (wymaganiach użytkownika)
- abstrahuje od szczegółów implementacji
- odpowiada na pytanie ? co?, a nie ? jak?
(źr. conceptual model).
Problem?
W czym problem z kiepskiej jakości analizami i modelami? W tym, że ich autorzy podejmują próby dodawania nowych symboli do notacji, psując spójność i jednoznaczność diagramów, stosują symbole notacji niezgodnie z nadanymi im znaczeniami albo łamią zasadę wyłączonego środka mówiącą w uproszczeniu, że jeżeli coś jest czymś to znaczy, że nie jest już niczym innym (np. jeżeli coś jest zdarzeniem to na pewno nie jest ani czynnością, ani danymi, ani regułą decyzyjną). Innymi słowy: jeżeli jakieś ziarno węgla jest kostką to na pewno nie jest ani groszkiem, ani orzechem ani miałem.
A co jeżeli jednak wynik analizy jest opisem w języku naturalnym lub zestawem diagramów łamiących zasady notacji? Wtedy tak naprawdę analitykami są programiści, bo oni i tak muszą to zamienić na kod w języku programowania, którego używają. Czy to dobry pomysł? Pozostawię odpowiedź czytelnikowi…
Na zakończenie
Gdzie ma zastosowanie ww. opisana logika? Przede wszystkim w stosowaniu notacji i tworzeniu sformalizowanych modeli. Np. jeżeli definiujemy proces biznesowy jako aktywność tworzącą wartość dodaną (patrz dodatek C, specyfikacja BPMN), to znaczy że stosując zasadę wyłączonego środka (lub regułę modus tollendo ponens), dana konstrukcja (lub opis) albo jest procesem biznesowym albo nim nie jest. Innymi słowy: rysując model procesów biznesowych i uznając, że przytoczona definicja jest prawdą (bo stosujemy sformalizowaną notację BPMN), to z zasady każda aktywność nie tworząca wartości dodanej (nie mająca swojego prosuktu), nie jest procesem biznesowym i nie powinna się znaleźć na tak zdefiniowanym diagramie. Podobnie (analogicznie) stosujemy każdą notację. A jak się do tego ma prawo Dunsa Szkota? Jeżeli uznamy, że procesem biznesowym może być coś, co nie pasuje do definicji, to może nim być cokolwiek, co jest nieprawdą i co prowadzi do powstawania nieprzydatnych diagramów, zawierających nieuporządkowane wszystko co wiemy, zwanych spaghetti modeling.
Jeżeli nie potrafisz czegoś poprawnie narysować, to znaczy że nadal tego nie rozumiesz.
(artykuł przeredagowany 10 września 2019 r., polecam też książkę: Logika ogólna)
Wykład o tym, że świat jest jednak czarno-biały i każde coś jest albo nie jest prawdą:
https://youtu.be/in4u2i9v4vg