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

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 nieetatowy wykładowca akademicki, 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).

Ten post ma jeden komentarz

Dodaj komentarz

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