Wstęp

Mógł by ktoś zapy­tać, po co tu o tym pisze, czy aby nie ocze­ku­je od czy­tel­ni­ka rze­czy mu nie­po­trzeb­nych? Nie, pisze to by wyja­śnić, dla­cze­go tak wie­le doku­men­tów, któ­re audy­tu­ję jako bie­gły, to maku­la­tu­ra. Ale po kolei.

Jak nie raz tu wspo­mi­na­łem, pro­ble­mem w ana­li­zach są nie tyle meto­dy jako takie i ich zna­jo­mość, ale to jak są sto­so­wa­ne. Wspominałem tu już o uży­wa­niu dia­gra­mów przy­pad­ków uży­cia i ich psu­ciu. W czym problem?

UML jako sys­tem poję­cio­wy to pewien słow­nik pojęć. Na czym pole­ga ana­li­za wspie­ra­na nota­cją? Polega na sto­so­wa­niu sys­te­mu poję­cio­we­go danej nota­cji, czy­li na opi­sa­niu pro­ble­mu bez wykra­cza­nia poza tak zwa­ną prze­strzeń nazw i sto­so­wa­niu zasad deduk­cji (rachu­nek zdań, sys­tem dedukcyjny).

Skrajnym przy­pad­kiem jest napi­sa­nie pro­gra­mu kom­pu­te­ro­we­go: dys­po­nu­jąc kon­kret­nym języ­kiem pro­gra­mo­wa­nia pisze­my pro­gram czy­li two­rzy­my jakieś odwzo­ro­wa­nie rze­czy­wi­sto­ści (pro­gram z regu­ły robi coś co myśmy robi­li wczo­raj” wła­sny­mi ręka­mi). Napisanie pro­gra­mu kom­pu­te­ro­we­go to wyra­że­nie naszej wie­dzy o świe­cie z pomo­cą skoń­czo­nej licz­by słów dane­go języ­ka programowania.

Na czym pole­ga dobra np. ana­li­za i opis wyma­gań? Na zapi­sa­niu języ­kiem potocz­nym tego co powie­dział spon­sor pro­jek­tu? Nie! To prze­le­wa­nie z puste­go w próż­ne (język mówio­ny na język mówio­ny). Nie pomo­że tu ani podział tej pro­zy na pod­punk­ty ani dziel­nie jej na wier­sze i kolum­ny tabe­li. Skuteczny opis wyma­gań to spe­cy­fi­ka­cja wyra­żo­na języ­kiem o skoń­czo­nej licz­bie pojęć, pozwa­la­ją­ca pro­gra­mi­stom wlać” ją do kolej­nej for­mal­nej for­my” jaka jest język pro­gra­mo­wa­nia. Takim języ­kiem ana­li­zy są nota­cje i for­mal­ne sys­te­my poję­cio­we. Standardem sta­ły się w ostat­nich latach BPMN do mode­lo­wa­nia pro­ce­sów biz­ne­so­wych oraz UML do mode­lo­wa­nia logi­ki sys­te­mo­wej. Są to sfor­ma­li­zo­wa­ne notacje.

Analiza

To pro­ces podob­ny do sor­to­wa­nia węgla na sitach: na wej­ściu mamy nie­sort, węgiel, nie­zli­czo­ne kawał­ki o dowol­nych roz­mia­rach. Na wyj­ściu np. pięść rodza­jów węgla, roz­miar zia­ren każ­de­go z nich mie­ści się w okre­ślo­nych wideł­kach roz­mia­ru: kost­ka, orzech, gro­szek, miał.

Odpowiednikiem tak zwa­ne­go nie­sor­tu” jest nie­for­mal­na pro­za, user sto­ry, tabel­ki itp. Odpowiednikiem stert kon­kret­nych rodza­jów węgla jest model wyko­na­ny z uży­ciem sfor­ma­li­zo­wa­nej nota­cji, ta zawie­ra skoń­czo­ną licz­bę pojęć (dozwo­lo­ne iko­ny i ich zna­cze­nia). Z pomo­cą tych pojęć opi­sa­na jest rze­czy­wi­stość zawar­ta w pro­zie, user sto­ry itp. Definicja każ­de­go poję­cia (sym­bo­lu nota­cji) to zakres wymia­rów w jakich ma mie­ścić się dany kawa­łek węgla by zakla­sy­fi­ko­wać do kon­kret­ne­go roz­mia­ru: kost­ka lub inne. Poprawnie sfor­ma­li­zo­wa­na nota­cja to prze­strzeń poję­cio­wa zupeł­na, czy­li zestaw pojęć dla danej dome­ny pozwa­la nazwać każ­dy ele­ment, czy­li zali­czyć do okre­ślo­nej kla­sy, i tyl­ko do jednej.

Tak wiec ana­li­za danej dzie­dzi­ny to opra­co­wa­nie jej mode­lu z pomo­cą kon­kret­ne­go sys­te­mu poję­cio­we­go. Czy to łatwe? Niestety nie. Sito jest łatwe w uży­ciu bo jedy­nym kry­te­rium kwa­li­fi­ka­cji jest roz­miar i moż­na to robić mecha­nicz­nie. Analiza tre­ści wyra­żo­nej języ­kiem natu­ral­nym w posta­ci mowy lub pisma jest znacz­nie trud­niej­sza. Jednoznaczne zakwa­li­fi­ko­wa­nie frag­men­tu opi­su do jed­ne­go z kil­ku, góra kil­ku­na­stu dopusz­czal­nych pojęć np, nota­cji BPMN czy UML wyma­ga wie­dzy i duże­go doświad­cze­nia. Czemu? Podstawę sta­no­wi logi­ka i teo­ria komu­ni­ka­cji. Do kwa­li­fi­ko­wa­nia rze­czy (desy­gna­ty) do pojęć danej prze­strze­ni nazw sto­su­je­my pod­sta­wo­we zasa­dy logiki:

System dedukcyjny

Arystoteles upra­wiał przede wszyst­kim filo­zo­fię, logi­kę trak­to­wał jako narzę­dzie (stgr. ??????? orga­non) uży­wa­ne do pro­wa­dze­nia spo­rów reto­rycz­nych głów­nie z sofi­sta­mi, ale tak­że umoż­li­wia­ją­ce wycią­ga­nie wnio­sków za pomo­cą sylo­gi­zmów co było pomoc­ne w zdo­by­wa­niu wie­dzy naukowej. 

sylo­gizm: (w logi­ce tra­dy­cyj­nej) sche­mat wnio­sko­wa­nia, w któ­rym prze­cho­dzi się z dwu prze­sła­nek zawie­ra­ją­cych ten sam ter­min do kon­klu­zji zbu­do­wa­nej z pozo­sta­łych dwóch ter­mi­nów wystę­pu­ją­cych w prze­słan­kach, np. jeśli każ­dy czło­wiek jest ssa­kiem, a każ­dy ssak jest krę­gow­cem, to każ­dy czło­wiek jest kręgowcem

Logika w tam­tych cza­sach nie była trak­to­wa­na jako nauka ani jako sys­tem, jed­nak Arystoteles dał pod­sta­wy do roz­wo­ju logi­ki jako odręb­nej dys­cy­pli­ny badaw­czej, roz­wi­ja­jąc takie zagad­nie­nia jak: defi­nio­wa­nie, kla­sy­fi­ko­wa­nie logicz­ne, wnio­sko­wa­nie induk­cyj­ne, czy poję­cie dowo­du. Podał tak­że trzy zasa­dy, nazy­wa­ne cza­sem naj­wyż­szy­mi pra­wa­mi myśle­nia: zasa­dę toż­sa­mo­ści, zasa­dę sprzecz­no­ści oraz zasa­dę wyłą­czo­ne­go środka. 

  1. Zasada sprzecz­no­ści jako pra­wo logicz­ne mówi, że z dwóch zdań sprzecz­nych co naj­wy­żej jed­no jest prawdziwe.
  2. Zasada toż­sa­mo­ści mówi, że to, co jest praw­dzi­we, musi się pod każ­dym wzglę­dem zga­dzać ze sobą samym (każ­dy przed­miot jest iden­tycz­ny z samym sobą).
  3. Zasada wyłą­czo­ne­go środ­ka mówi, że dla dowol­ne­go zda­nia (w sen­sie logi­ki) albo ono samo jest praw­dzi­we, albo praw­dzi­we jest jego zaprze­cze­nie, dla dwóch zdań sprzecz­nych (p i nie‑p) nie może ist­nieć żad­ne trze­cie zdanie.

Obecnie sto­so­wa­ny w nauce sys­tem deduk­cyj­ny to pod­sta­wo­we zasa­dy wnio­sko­wa­nia dedukcyjnego:

Modus ponen­do ponens: jeże­li z p wyni­ka q oraz p jest praw­dą to q tak­że jest praw­dą, co sym­bo­licz­nie zapi­su­je­my (z praw­dy może wyni­kać tyl­ko prawda): 

[ ( p ? q ) ? p ] ? q     ( reguła derywacji )

Modus tol­len­do tol­lens: jeże­li z p wyni­ka qq nie jest praw­dą to p tak­że nie jest praw­dą, co sym­bo­licz­nie zapi­su­je­my (jeże­li z cze­goś wyni­ka fałsz, to tak­że jest to fałsz):

[ p ? q ) ? ? q ] ? ? p

Modus tol­len­do ponens: jeże­li mamy tyl­ko p lub q, i p jest nie­praw­dą, to q jest praw­dą, co sym­bo­licz­nie zapi­su­je­my (inna postać zasa­dy wyłą­czo­ne­go środka): 

[ ( p ? q ) ? ? p ] ? q

Modus ponen­do tol­lens: jeże­li nie­praw­dą może być p lub qp jest praw­dą, to q jest nie­praw­dą, co sym­bo­licz­nie zapisujemy: 

[ ( ? p ? ? q ) ? p ) ? ? q

Na koniec tej czę­ści war­to jesz­cze dopi­sać pra­wo Dunsa Szkota mówią­ce, że z fał­szu może wyni­ka wszyst­ko, lub bar­dziej for­mal­nie ?z dwóch zdań sprzecz­nych wyni­ka każ­de inne zda­nie?, co sym­bo­licz­nie zapisujemy:

{\displaystyle \lnot p\Rightarrow (p\Rightarrow q)}

Prawo to spro­wa­dza się do tego, że logi­ka nie może tole­ro­wać sprzecz­no­ści, ponie­waż ze sprzecz­no­ści moż­na wnio­sko­wać wszyst­ko. Przykładowo Bertrand Russell, powo­łu­jąc się na to twier­dze­nie, dowo­dził, że jest papie­żem, w spo­sób nastę­pu­ją­cy: ?przyj­mu­jąc, że 2+2=5, zacho­dzi 1=2, a ponie­waż ja i papież jeste­śmy dwie­ma róż­ny­mi oso­ba­mi, więc ja i papież jeste­śmy jed­ną i tą samą osobą?. 

Notacje

Uogólniając nie­co, moż­na powie­dzieć tak: sko­ro każ­de poję­cie w danej nota­cji ma swo­ją defi­ni­cję, popraw­nie zbu­do­wa­na nota­cja to prze­strzeń nazw, w któ­rej poję­cia są spój­ne i wza­jem­nie wyklu­cza­ją się, to zna­czy, że każ­dy ele­ment tego co wie­my o danej dzie­dzi­nie (fir­mie, orga­ni­za­cji itp.) nale­ży zakwa­li­fi­ko­wać do jed­ne­go z pojęć nota­cji lub pominąć. 

W OMG (spe­cy­fi­ka­cja MOF) sys­tem pojęć danej nota­cji i związ­ki mię­dzy tymi poję­cia­mi, to jej pro­fil (dia­gram pro­fi­lu UML). Można roz­sze­rzać nota­cje poprzez roz­bu­do­wę ich pro­fi­lu, jed­nak nie wol­no! zmie­niać już zawar­tych w nich definicji. 

Tak więc chcąc wyra­zić wie­dzę o orga­ni­za­cji w posta­ci mode­lu pro­ce­sów biz­ne­so­wych, nale­ży pozy­ska­ną wie­dzę wyra­zić z pomo­cą sym­bo­li nota­cji BPMN a resz­tę pomi­nąć jako nie­istot­ne w kon­tek­ście mode­lu pro­ce­sów biz­ne­so­wych. Polecam (wytrwa­łym czyt­ni­kom) lite­ra­tu­rę z zakre­su języ­ka i epistemologii.

Swego cza­su pisa­łem o mode­lo­wa­niu orga­ni­za­cji wska­zu­jąc na potrze­bę uży­cia nie tyl­ko nota­cji ale tak­że zbu­do­wa­ne­go dla kon­kret­ne­go mode­lu słownika:

Modelując jaką­kol­wiek fir­mę jaką­kol­wiek nota­cją war­to pro­jekt mode­lo­wa­nia uzu­peł­nić o jego prag­ma­ty­kę, to jest o spe­cy­fi­ka­cję wszel­kich warun­ków two­rze­nia mode­li. Opracowanie takiej doku­men­ta­cji wyma­ga usta­le­nia tych zasad, a tak­że zde­fi­nio­wa­nia słow­ni­ka, skoń­czo­nej prze­strze­ni nazw i defi­ni­cji, któ­ra pozwo­li jed­no­znacz­nie zakla­sy­fi­ko­wać każ­de poję­cie z życia fir­my do wła­ści­we­go, i tyl­ko jed­ne­go, ele­men­tu mode­lu. Projekt mode­lo­wa­nia pro­ce­sów to nie jest pro­ste ryso­wa­nie tego co się dzie­je. Tak powsta­ją naj­czę­ściej nie­przy­dat­ne i kosz­tow­ne zara­zem doku­men­ty. (za RACI, SIPOC i inne czy­li mode­lo­wa­nie orga­ni­za­cji c.d.).

Model pojęciowy

Model poję­cio­wy to abs­trak­cyj­ny opis rze­czy­wi­stych obiek­tów. Pojęcie to odno­si się do pro­ce­sów myślo­wych i wyobra­żeń towa­rzy­szą­cych pra­cy nad opro­gra­mo­wa­niem. Model poję­cio­wy może ist­nieć tyl­ko w gło­wach osób, któ­re komu­ni­ku­ją się mię­dzy sobą słow­nie i czę­sto nie­pre­cy­zyj­nie. Może być rów­nież zapi­sa­ny i prze­cho­wy­wa­ny w celu szer­sze­go roz­po­wszech­nia­nia. Język sche­ma­tu poję­cio­we­go dostar­cza seman­tycz­nych i syn­tak­tycz­nych ele­men­tów ści­śle uży­wa­nych do opi­su mode­lu poję­cio­we­go, aby spój­nie prze­ka­zać zna­cze­nie. Model poję­cio­wy opi­sa­ny za pomo­cą języ­ka sche­ma­tu poję­cio­we­go nazy­wa się sche­ma­tem pojęciowym.

Cechy cha­rak­te­ry­stycz­ne mode­lu pojęciowego.:

  1. two­rzo­ny przez ana­li­ty­ka na pod­sta­wie wywia­dów z użyt­kow­ni­kiem, doku­men­tów itp.
  2. opi­su­je świat w kate­go­riach kon­kret­nych metodyk
  3. sku­pia się na zada­niach sys­te­mu (wyma­ga­niach użytkownika)
  4. abs­tra­hu­je od szcze­gó­łów implementacji
  5. odpo­wia­da na pyta­nie ? co?, a nie ? jak?

(źr. con­cep­tu­al model).

Problem?

W czym pro­blem z kiep­skiej jako­ści ana­li­za­mi i mode­la­mi? W tym, że ich auto­rzy podej­mu­ją pró­by doda­wa­nia nowych sym­bo­li do nota­cji, psu­jąc spój­ność i jed­no­znacz­ność dia­gra­mów, sto­su­ją sym­bo­le nota­cji nie­zgod­nie z nada­ny­mi im zna­cze­nia­mi albo łamią zasa­dę wyłą­czo­ne­go środ­ka mówią­cą w uprosz­cze­niu, że jeże­li coś jest czymś to zna­czy, że nie jest już niczym innym (np. jeże­li coś jest zda­rze­niem to na pew­no nie jest ani czyn­no­ścią, ani dany­mi, ani regu­łą decy­zyj­ną). Innymi sło­wy: jeże­li jakieś ziar­no węgla jest kost­ką to na pew­no nie jest ani grosz­kiem, ani orze­chem ani miałem.

A co jeże­li jed­nak wynik ana­li­zy jest opi­sem w języ­ku natu­ral­nym lub zesta­wem dia­gra­mów łamią­cych zasa­dy nota­cji? Wtedy tak napraw­dę ana­li­ty­ka­mi są pro­gra­mi­ści, bo oni i tak muszą to zamie­nić na kod w języ­ku pro­gra­mo­wa­nia, któ­re­go uży­wa­ją. Czy to dobry pomysł? Pozostawię odpo­wiedź czytelnikowi…

Na zakończenie

Gdzie ma zasto­so­wa­nie ww. opi­sa­na logi­ka? Przede wszyst­kim w sto­so­wa­niu nota­cji i two­rze­niu sfor­ma­li­zo­wa­nych mode­li. Np. jeże­li defi­niu­je­my pro­ces biz­ne­so­wy jako aktyw­ność two­rzą­cą war­tość doda­ną (patrz doda­tek C, spe­cy­fi­ka­cja BPMN), to zna­czy że sto­su­jąc zasa­dę wyłą­czo­ne­go środ­ka (lub regu­łę modus tol­len­do ponens), dana kon­struk­cja (lub opis) albo jest pro­ce­sem biz­ne­so­wym albo nim nie jest. Innymi sło­wy: rysu­jąc model pro­ce­sów biz­ne­so­wych i uzna­jąc, że przy­to­czo­na defi­ni­cja jest praw­dą (bo sto­su­je­my sfor­ma­li­zo­wa­ną nota­cję BPMN), to z zasa­dy każ­da aktyw­ność nie two­rzą­ca war­to­ści doda­nej (nie mają­ca swo­je­go pro­suk­tu), nie jest pro­ce­sem biz­ne­so­wym i nie powin­na się zna­leźć na tak zde­fi­nio­wa­nym dia­gra­mie. Podobnie (ana­lo­gicz­nie) sto­su­je­my każ­dą nota­cję. A jak się do tego ma pra­wo Dunsa Szkota? Jeżeli uzna­my, że pro­ce­sem biz­ne­so­wym może być coś, co nie pasu­je do defi­ni­cji, to może nim być cokol­wiek, co jest nie­praw­dą i co pro­wa­dzi do powsta­wa­nia nie­przy­dat­nych dia­gra­mów, zawie­ra­ją­cych nie­upo­rząd­ko­wa­ne wszyst­ko co wie­my, zwa­nych spa­ghet­ti modeling. 

Jeżeli nie potra­fisz cze­goś popraw­nie nary­so­wać, to zna­czy że nadal tego nie rozumiesz. 

(arty­kuł prze­re­da­go­wa­ny 10 wrze­śnia 2019 r., pole­cam też książ­kę: Logika ogól­na)

Jarosław Żeliński

BIO: Od roku 1991 roku, nieprzerwanie, realizuję projekty z zakresu analiz i projektowania systemów, dla urzędów, firm i organizacji. Od 1998 roku prowadzę także samodzielne studia i prace badawcze z obszaru analizy systemowej i modelowania (modele jako przedmiot badań: ORCID). Od 2005 roku, jako nieetatowy wykładowca akademicki, prowadzę 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. 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. Masz pytania to treści artykułu, potrzebujesz pomocy? Kliknij tu!

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.