Od czasu do czasu jestem pytany czy UML, BPMN, itp.. to notacje czy języki, a padają nawet pytania czy to metody. Otóż metody na pewno nie… (np. mamy dwie metody modelowania procesów biznesowych: z użyciem notacji BPMN i notacji eEPC). A pozostałe dwa?
Nie jest to proste. Dzisiaj pójdę może nieco na skróty dlatego wnikliwym polecam lekturę przede wszystkim na temat semiotyki, logiki i rachunku zdań.
Język i znaczenie
Na początek kilka definicji ogólnych (wszystkie sł. j. polskiego PWN):
język
5. ?utrwalony społecznie zespół znaków dotyczących jakichś działań człowieka lub wyrażających jego emocje oraz każdy układ elementów rzeczywistości, któremu człowiek nadał jakąś treść?
Język jest więc określonym zespołem norm, są nimi jednak nie tylko znaki ale także to, co znaczą i jaką treść niosą. Wyrażanie emocji czy myśli w ogóle, rzadko jest możliwe z użyciem tylko jednego znaku. Dlatego w toku ich wyrażania operujemy raczej zdaniami:
zdanie
1. ?myśl wyrażona słowami?
4. log. ?sensowne wyrażenie oznajmiające podlegające falsyfikacji?
Tu zaczynamy powoli iść w porządkowanie tego o czym piszę. Każde zdanie (w logice) może być prawdziwe lub nie (tautologia jest zdaniem zawsze prawdziwym, czyli jest znany fakt je falsyfikujący ale wiemy, że nigdy taki nie wystąpi). Jeżeli więc, że treść najczęściej wyrażamy słowami (a raczej rzadko nie jednym słowem) to znaczy, że należy umieć odczytać znaczenie złożenia wielu słów w jednym zdaniu. Jak wiemy o zrozumiałości (zrozumiałość oznacza, że zdanie ma dla czytającego określone znaczenie) decyduje układ słów w zdaniu, znaki interpunkcyjne itp.
Nawet przecinek ma znaczenie (jest on elementem języka) w zdaniu złożonym.
Jednoznaczność (zrozumiałość, znaczenie) zdań jest także efektem kontekstu:
kontekst
1. ?fragment tekstu potrzebny do dokładnego rozumienia danych wyrazów lub wyrażeń?
3. ?zespół jednostek językowych, które stanowią otoczenie danej jednostki?
4. ?zespół odniesień niezbędnych do zrozumienia utworu literackiego, dzieła naukowego itp.?
Jeżeli napiszę “Te dwie krowy są paskudne” to nadal nie ma pewności o czym mowa. Bez wiedzy o tym, czy to rozmowa dwóch rolników o inwentarzu, czy też dwóch koleżanek o dwóch innych, nie wiemy. Słowo “palant” także ma więcej niż jedno znaczenie i bez kontekstu jego użycia nie wiemy o jakie znaczenie chodzi (kolega czy mało już popularna gra) :). Bardzo często to właśnie kontekst nadaje znaczenie.
Jak widać zrozumienie przekazu nie musi być proste, a komunikacja prosta i łatwa (każdy kto się choć raz pokłócił z powodu nieporozumień o tym wie). Kontekstem zajmuje się:
pragmatyka
1. ?dział językoznawstwa, którego przedmiotem są społeczne i sytuacyjne warunki funkcjonowania języka oraz cele, jakie mówiący chce osiągnąć przez użycie określonych wyrazów i wyrażeń?
Należy pamiętać, że znaczenie mają nie tylko pojedyncze słowa (znaki) ale także ich złożenia (“proces biznesowy” to jedno pojęcie ale dwa słowa). Innymi słowy konkretne pojęcie może być zapisane z użyciem jednego lub więcej znaków.
słowo
1. ?znak językowy mający jakieś znaczenie?
Dlatego złożenie kilku znaków (słów) także jest znakiem (definicja słowa i słowo/pojęcie przez nią definiowane, niosą tożsame znaczenie). Słowo (rozumiane jako zapis: złożenie liter) można zastąpić symbolem graficznym (ikona). O tym traktuje
semiotyka
1. ?ogólna teoria znaku w procesie porozumiewania się ludzi?
w tym:
semantyka
1. ?dział językoznawstwa, którego przedmiotem jest analiza znaczeń wyrazów?
2. ?dział semiotyki zajmujący się badaniem związków, jakie zachodzą między wyrażeniami języka a przedmiotami, do których się one odnoszą?
syntaktyka
2. ?dział semiotyki badający wzajemne stosunki i właściwości budowy wyrażeń języka w procesie porozumiewania się ludzi?
Zapisując coś: treść, w celu przekazania jej drugiej osobie komunikujemy się:
komunikacja
2. ?przepływ informacji między urządzeniami, np. telefonami lub komputerami?
3. ?przekazywanie i odbieranie informacji w bezpośrednim kontakcie z drugą osobą?treść
1. ?to, co jest zawarte w czyjejś wypowiedzi; też: to, co przekazuje odbiorcy dzieło sztuki, w przeciwstawieniu do formy?
2. ?to, co stanowi istotę, sens czegoś?
Do komunikacji używamy znaków:
znak
1. ?kształt, któremu przypisuje się określone znaczenie?
2. ?dźwięk, spojrzenie, gest itp. służący do przekazania informacji?
Znak znaczy, czyli ma określone znacznie (pamiętamy o kontekście). Znakiem może być wiele rzeczy (także gest). Znak ma (niesie) znaczenie, znak lub ich złożenie także, przekazuje określoną treść:
znaczenie
1. ?myśl zawarta w czyjejś wypowiedzi, w czyimś zachowaniu itp.?
3. ?treść, której znakiem jest wyraz lub wyrażenie?znaczyć
1. ?być znakiem czegoś?
3. ?umieszczać na czymś lub na kimś znak?
4. ?zostawiać na czymś znak, ślad?
Na koniec zostawiłem, sporne słowo:
notacja ?oznaczenie czegoś umownymi znakami; też: zbiór takich znaków?
Notacja to zbiór znaków. Przypomnę też, że język to miedzy innymi określony zbiór znaków wraz z opisem ich znaczeń (semantyka) oraz tym, jakie mają znaczenia ich określone złożenia (syntaktyka). Wiemy już, że znaczenie (treść) mają nie tylko pojedyncze słowa (to rzadko) ale ich konkretne złożenia (zdania). Przekazanie konkretnych, jednoznacznych treści, poza rzadkimi wyjątkami, wymaga więc zbudowania konkretnych zdań czyli “złożeń słów (znaków)”. Innymi słowy, nikt chyba nie powie, że “książka jaką jest słownik języka polskiego, wraz z zasadami gramatyki, to jest język polski”. Język to jednak “coś więcej”. Słowo język jest dość nieprecyzyjne i oznacza wręcz pewien zespół norm i sposobów porozumiewania się (w tym idiomy, zespoły słów mająca inne znaczenie niż każde z nich z osobna). Poprawne (skuteczne) posługiwanie się danym językiem oznacza, że adresat “zrozumiał” treść nadawcy (mówiącego).
Porządkujemy to wszystko
Zrobiło się ciężko :). Poniżej model pojęciowy: diagram w notacji SBVR pokazujący pojęcia i związki między nimi. Jednym z kluczowych narzędzi w analizie jest własnie analiza pojęciowa i budowanie słownika pojęć dla określonej dziedziny (tu więcej o tym czy jest diagram faktów opisany w notacji SBVR).
Powyższy model obrazuje związki pomiędzy opisanymi wyżej pojęciami, precyzuje także ich znaczenia. Model pojęciowy dla danej dziedziny (tu mowa o językach i notacjach) powinien się cechować między innymi tym, że znaczenia poszczególnych pojęć powinny być rozłączne, czyli spełniać arystotelesowską “zasadę wyłączonego środka” w logice, brzmiącą: “jeżeli coś jest czymś, to nie jest niczym innym”. Dla zachowania jednoznaczności zdań, definicje pojęć muszą się więc wzajemnie wykluczać, tak zbudowany słownik nazywamy “przestrzenią nazw” (ang. namespace).
UML i BPMN to język czy notacja?
Skrót UML zawiera w sobie słowo “language” (ang. język). Historycznie tłumaczyć to można tym, że obecne 14 typów diagramów to konkretne konteksty oraz narzucone konstrukcje, które można nazwać “zdaniami” (widać to szczególnie w przypadku diagramów Przypadków użycia czy Rozlokowania). Jednak obecna specyfikacja UML 2.5 porządkuje i to, słowo “language” w zasadzie nie jest w niej stosowane wobec tego co nazwano tam mianem UML (W zasadzie dzisiaj mogła by nosić nazwę Object-oriented Modeling and Notation 🙂 ).
Tak więc język czy notacja? To zależy od tego czy dana “specyfikacja” opisuje wyłącznie symbole czy też ich określone, i zalecane w określonych sytuacjach, konstrukcje oraz ich znaczenie. OMG (chyba) stara się to ostatnio jasno sygnalizować: UML to jeszcze “language” ale BPMN to już “notation”. Specyfikacja UML zawiera określone, semantyczne (nazwane) konstrukcje, mające określone znaczenia, związane z konkretnymi diagramami (nazwa diagramu nadaje kontekst użytym na nich symbolom, jest to potrzebne bo pamiętajmy, że w UML wszystko jest “klasą”). W BPMN nie ma czegoś takiego (nawet pojęcie “proces biznesowy” nie jest częścią BPMN, jest ono zdefiniowane dopiero w Dodatku A jako objaśnienie i dodatkowy kontekst, w notacji zaś BPMN nie ma symbolu “proces biznesowy” 🙂 ). To czy dana specyfikacja to tyko opis notacji czy także języka, zależy więc od konkretnego przypadku.
Niewątpliwie UML, BPMN, CMMN, SBVR, BMM itp., to wszystko są notacje, bo są to specyfikacje symboli, ich znaczeń oraz określona syntaktyka. Natomiast o tym co i jak wyrażają (i czy w ogóle ;)) tworzone z ich pomocą diagramy, to już inna kwestia… To leży w gestii twórcy diagramów. A testem jest miedzy innymi skuteczność komunikacji: porównanie tego jaką konkretną treść chciał przekazać twórca danego diagramu i jaką treść odebrał czytający… Analityk zaczyna od analizy pojęciowej by uniknąć niejednoznaczności w samym przekazie. Potem dopiero dokumentuje, z użyciem modeli tworzonych z pomocą notacji, to co zastał oraz projektuje to, co chciałby by, by powstało sposób rozwiązanie problemu (tu polecam lekturę artykułu gdzie pisałem o tym, że wymagania to projekt).
Niewątpliwie więc wszystkie “języki programowania” są językami: mają składnię i każde zdanie coś wyraża (rozumie to i kolega programista i kompilator). Wiele notacji jednak językiem nie jest. O języku można mówić tylko wtedy, gdy jest samowystarczalny do wyrażania określonych myśli i treści, do komunikowania ich. Nie możemy tego raczej powiedzieć o notacjach. Diagramy i modele wykonane z pomocą w. notacji wymagają stosowania np. “języka” polskiego, do nadawania nazw symbolom i diagramom, bez czego diagramy te były by niezrozumiałe. Uważam więc, że używanie wobec notacji obligatoryjnie nazwy język, jest poważnym nadużyciem… Niektóre notacje mają swoją wersję wykonywalną (tu nawiązuje do tego że języki programowania są” językami”) o czym niedawno pisałem (Analityczne i wykonywalne modele) jednak pamiętać, należy notacja jako taka nie jest językiem “programowania”, jest tu raczej formą budowania mechanizmu (modelowanie), który dopiero po dodaniu wielu parametrów (czyli wprowadzeniu wielu “słów” z poza notacji) pozwala taki model “uruchomić”.