Wprowadzenie

The Unified Modeling Language User Guide” autor­stwa Grady’ego Boocha, Jamesa Rumbaugha i Ivara Jacobsona (Addison-Wesley, 1998) mówi nam, że możesz wyko­nać 80% mode­lo­wa­nia za pomo­cą 20% UML” gdzieś po stro­nie 400. Zaoszczędziliby bran­ży wie­le milio­nów (miliar­dów?) dola­rów i prze­ra­ża­ją­cych przy­pad­ków para­li­żu ana­li­tycz­ne­go [?], gdy­by powie­dzie­li to we Wstępie, ale tego nie zro­bi­li. Aby spo­tę­go­wać prze­stęp­stwo, nigdy nie mówią nam, któ­re 20% UML jest uży­tecz­ną częścią”.

Diagramy UML i spo­sób ich uży­cia, od same­go począt­ku ist­nie­nia tej nota­cji, budzą emo­cje i fale sprzecz­nych komen­ta­rzy. Powodem jest wyso­ki poziom abs­trak­cji eta­pu ana­li­zy i mode­lo­wa­nia jako dys­cy­pli­ny, oraz dość powszech­ne nie­zro­zu­mie­nie isto­ty ten nota­cji. Na to nakła­da się ogrom­na róż­ni­ca mię­dzy tym co nazy­wa­my ana­li­zą i pro­jek­to­wa­niem obiek­to­wym (OOAD) a obiek­to­wo-zorien­to­wa­ny­mi języ­ka­mi pro­gra­mo­wa­nia (OOP).

Notacja UML jest przez wie­lu ludzi błęd­nie trak­to­wa­na jako kolej­ny zestaw sym­bo­li do two­rze­nia ilu­stra­cji. Większość zna­nych mi dewe­lo­pe­rów uwa­ża, że te dia­gra­my im w niczym nie poma­ga­ją i gene­ral­nie mają racje, gdyż jakość i treść znacz­nej czę­ści doku­men­ta­cji powsta­ją­cej z uży­ciem UML, jest niska, i doku­men­ta­cja taka fak­tycz­nie jest nie­przy­dat­na dla dostaw­cy oprogramowania. 

Dlaczego tak jest? Moim zda­niem jest to nie­zro­zu­mie­nie tego czym jest opro­gra­mo­wa­nie, szcze­gól­nie gdy mówi­my o opro­gra­mo­wa­niu wspie­ra­ją­cym tak zwa­ny biz­nes, czy­li sze­ro­ko poj­mo­wa­ne zarzą­dza­nie infor­ma­cją. Na to nakła­da się nie­zro­zu­mie­nie róż­ni­cy mię­dzy onto­lo­gią sys­te­mu a samym sys­te­mem, oraz tego czym tak na praw­dę jest jego mecha­ni­zmem działania.

Notacja UML, podob­nie jak i inne, to meto­da komu­ni­ko­wa­nia wie­dzy, jed­nak komu­ni­ka­cja ta jest sku­tecz­na pod warun­kiem popraw­ne­go sto­so­wa­nia nota­cji. Wspólne sto­so­wa­nie nota­cji to stan­da­ry­za­cja komunikacji:

Standaryzacja jest dobrą prak­ty­ką we wszyst­kim, co robi­my w życiu. Oznacza to zatem, że korzy­sta­nie ze stan­dar­do­wych dia­gra­mów UML pomo­że uspraw­nić two­rze­nie opro­gra­mo­wa­nia ze wzglę­du na łatwe zro­zu­mie­nie mię­dzy pro­gra­mi­sta­mi. Ponadto, zro­zu­mie­nie abs­trak­cyj­ne­go cha­rak­te­ru logi­ki pro­gra­mu jest nie­zbęd­ne przy ryso­wa­niu dia­gra­mów UML. Co wię­cej, koniecz­ne jest szko­le­nie pro­gra­mi­stów, któ­rzy nie są zazna­jo­mie­ni z korzy­sta­niem z narzę­dzi pro­jek­to­wych wspo­ma­ga­nych przez UML. Można z łatwo­ścią stwier­dzić, że dobre dia­gra­my UML poma­ga­ją w dobrym roz­wo­ju opro­gra­mo­wa­nia i moż­na to osią­gnąć, jeśli mode­lo­wa­nie dowol­ne­go sys­te­mu przy uży­ciu pro­jek­tu UML odby­wa się w zro­zu­mia­ły i przej­rzy­sty spo­sób, tak aby każ­dy pro­gra­mi­sta mógł łatwo zro­zu­mieć dia­gra­my UML.

Pisałem bar­dzo dużo o mode­lo­wa­niu i zarzą­dza­niu infor­ma­cją, tu opi­szę pod­sta­wo­we poję­cia doty­czą­ce mode­lo­wa­nia i klu­czo­we dia­gra­my UML od stro­ny ich kla­sy­fi­ka­cji i zastosowania.

Taksonomia diagramów UML

Pojęcie dia­gram w UML” ozna­cza okre­ślo­ny typ sche­ma­tu blo­ko­we­go. Taksonomię tych dia­gra­mów (kla­sy­fi­ka­cja rodza­jo­wa) poka­za­no poniżej:

Klasyfikacja rodza­jo­wa to powyż­szy podział: dia­gra­my dzie­li­my na te, któ­re opi­su­ją struk­tu­ry i te któ­re opi­su­ją­ce zacho­wa­nia. W UML jest jed­nak tak­że wyróż­nio­na kla­sy­fi­ka­cja ze wzglę­du na zasto­so­wa­nie w mode­lo­wa­niu, któ­ra ma trzy głów­ne obsza­ry semantyczne. 

Diagramy

Diagram w nota­cji UML to obszar zawie­ra­ją­cy (gru­pu­ją­cy) ele­men­ty (iko­ny) nota­cji oraz ich związ­ki. Jest obra­mo­wa­ny i zawie­ra fisz­kę z nagłów­kiem, ta zawie­ra sym­bol typu dia­gra­mu i jego tytuł. Pojęcie dia­gram w UML jest ści­śle powią­za­ne z poję­ciem model (repo­zy­to­rium). Notacja wpro­wa­dza róż­ne typy dia­gra­mów UML. Model UML skła­da się z ele­men­tów takich jak pakie­ty, kla­sy i aso­cja­cje. Odpowiadające im dia­gra­my UML to gra­ficz­ne repre­zen­ta­cje czę­ści mode­lu UML, dia­gram – jako ele­ment gru­pu­ją­cy – jest typem pakietu.

Diagramy w UML zosta­ły pogru­po­wa­ne na trzy obsza­ry semantyczne:

  • struk­tu­ry: mamy tu takie poję­cia jak war­to­ści, kla­sy i pakiety
  • zacho­wa­nia: mamy takie poję­cia jak maszy­ny sta­no­we, aktyw­no­ści, inte­rak­cje, zada­nia (akcje),
  • dia­gra­my pomoc­ni­cze: mamy tu takie poję­cia jak przy­pad­ki uży­cia, wdro­że­nie (roz­lo­ko­wa­nie), prze­pływ informacji. 

Modele sys­te­mów słu­żą do wyra­że­nia tego jak sys­tem ma sie zacho­wy­wać (mecha­nizm) w odpo­wie­dzi na okre­ślo­ne bodź­ce. Podstawowe obsza­ry mode­lo­wa­nia sys­te­mów to: wyma­ga­nia, struk­tu­ra (archi­tek­tu­ra) sys­te­mu, oraz zacho­wa­nia sys­te­mu (to jak on i jego ele­men­ty, reagu­je na bodź­ce). Wyodrębnione dia­gra­my pomoc­ni­cze w UML moż­na uznać za meto­dy wyra­ża­nia wymagań. 

Szczególnym i bar­dzo waż­nym dia­gra­mem jest – pomoc­ni­czy – dia­gram przy­pad­ków uży­cia, któ­ry gru­pu­je wyma­ga­nia funk­cjo­nal­ne przy­po­rząd­ko­wu­jąc je do mode­li zacho­wa­nia sys­te­mu, oraz orga­ni­zu­je pozo­sta­łe mode­le: każ­dy przy­pa­dek uży­cia to sce­na­riu­sze opi­su­ją­ce inte­rak­cje i zacho­wa­nia ele­men­tów archi­tek­tu­ry sys­te­mu. Całość moż­na zobra­zo­wać jak poniżej: 

Diagramy wdro­że­nia (roz­lo­ko­wa­nia) i prze­pły­wu infor­ma­cji moż­na potrak­to­wać jako model wyma­gań pozafunkcjonalnych. 

Należy tu pod­kre­ślić, że sło­wo wyma­ga­nia ozna­cza ocze­ki­wa­nia wobec sys­te­mu, cele inte­re­sa­riu­szy to ich potrze­by mapo­wa­ne na model systemu. 

Np. potrze­bą inte­re­sa­riu­sza może być moż­li­wość spraw­dze­nia adre­su kon­tra­hen­ta, jej zaspo­ko­je­niem może być dostęp do histo­rii fak­tur, gdyż na fak­tu­rach są adre­sy kon­tra­hen­tów. Wymaganiem wobec sys­te­mu jest ist­nie­nie tego adre­sy na fak­tu­rach (tego aku­rat wyma­ga tak­że pra­wo, więc jest to tak­że wyma­ga­nie praw­ne). Wymaganie to doku­men­tu­je­my two­rząc struk­tu­ral­ny model fak­tu­ry (dia­gram struk­tur złożonych).

Elementy modeli

Podstawowym poję­ciem w UML jest ele­ment (ele­ment mode­lu) oraz jego spe­cy­ficz­ne typy: zwią­zek, zwią­zek skie­ro­wa­ny oraz komen­tarz. Elementy mogą zawie­rać sie­bie nawza­jem, co do zasa­dy komen­tarz jest zawar­ty w ele­men­cie komen­to­wa­nym (jest jego czę­ścią, rozdz.7, Figure 7.1 Root). [w nawia­sach poda­no nume­ry odpo­wied­nich roz­dzia­łów w spe­cy­fi­ka­cji UML, 2.5.1. z 5 maja 2017 roku), co obra­zu­je poniż­szy diagram:

UML 2.5.1., pod­sta­wo­wy dia­gram profilu

Specjalnym typem kla­sy jest war­tość (Value, rozdz. 8). Jest to kla­sa, któ­rej obiek­ty nie mają toż­sa­mo­ści (odpo­wied­nik value object we wzor­cu DDD). 

Klasa to pod­sta­wo­wy ele­ment mode­lo­wa­nia w UML. Służy do mode­lo­wa­nia struk­tur poję­cio­wych (name­spa­ce) lub struk­tur opi­su­ja­cych archi­tek­tu­ry sys­te­mów na róż­nych pozio­mach abs­trak­cji. Klasa to nazwa­ny ele­ment mode­lu, kla­sy­fi­ka­tor to defi­ni­cja obiek­tów danej kla­sy (tak zwa­na defi­ni­cja real­na) czy­li cechy obiek­tów tej kla­sy: atry­bu­ty i ope­ra­cje (rozdz. 9). 

Klasyfikator może być pro­sty (rozdz. 10). Proste kla­sy­fi­ka­to­ry stan­dar­do­wo są uży­wa­ne do defi­nio­wa­nia struk­tu­ral­nych typów danych. Klasyfikator zło­żo­ny zawie­ra drze­wia­sta struk­tu­rę zagnież­dże­nia. Jeżeli kla­sa repre­zen­tu­je zło­żo­ny wewnętrz­nie ele­ment archi­tek­tu­ry sys­te­mu, moż­na na dia­gra­mach użyć jej uprosz­czo­nej for­my jakim jest kom­po­nent (rozdz. 11).

Pakiet to ele­ment gru­pu­ją­cy. Jego cechą jest to, że nie ma on instan­cji. Pakiet słu­ży do orga­ni­zo­wa­nia ele­men­tów mode­lu. Specjalnym typem pakie­tu jest Model. Jest to pakiet gru­pu­ją­cy wszyst­kie ele­men­ty mode­lu okre­ślo­ne­go sys­te­mu, jego per­spek­ty­wy lub pozio­mu abs­trak­cji (rozdz.12).

Zachowania to opis tego jak zacho­wu­ją się i współ­pra­cu­ją ze sobą ele­men­ty struk­tu­ry sys­te­mu, jego kom­po­nen­ty. Zachowanie okre­ślo­ne­go ele­men­tu sys­te­mu to jego reak­cja na bodź­ce: ope­ra­cje. Operacja to spo­sób jej wywo­ła­nie (nazwa bodź­ca), mecha­nizm two­rzą­cy odpo­wiedź to meto­da ope­ra­cji (pro­ce­du­ra, algo­rytm) (rozdz. 13).

Zachowania ele­men­tu mogą zale­żeć od jego aktu­al­ne­go sta­nu i mogą tak­że powo­do­wać zmia­ny tego sta­nu. Nośnikiem war­to­ści sta­nu są okre­ślo­ne atry­bu­ty (rozdz. 14). Operacje i ich łań­cu­chy moż­na mode­lo­wać na wyż­szym pozio­mie abs­trak­cji jako aktyw­no­ści (rozdz. 15). Na pozio­mie metod są to pro­ce­du­ry i algo­ryt­my zło­żo­ne z ele­men­tar­nych kro­ków (rozdz. 16). Diagramy aktyw­no­ści mogą posłu­żyć tak­że do mode­lo­wa­nia prze­pły­wu danych (obiek­tów nio­są­cych treść). 

Scenariusze opi­su­ją­ce współ­dzia­ła­nie ele­men­tów sys­te­mu (wza­jem­ne wywo­ła­nia ope­ra­cji przez obiek­ty, pro­to­kół komu­ni­ka­cyj­ny) mode­lo­wa­ne są jako inte­rak­cje. Interakcje naj­czę­ściej mode­lu­je­my z uży­ciem dia­gra­mu sekwen­cji, rza­dziej z uży­ciem dia­gra­mu komu­ni­ka­cji (rozdz. 17). 

Kluczową róż­ni­cą mie­dzy aktyw­no­ścią a inte­rak­cją, jest to, że aktyw­no­ści repre­zen­tu­ją odpo­wie­dzial­ność klas i kom­po­nen­tów, a inte­rak­cje repre­zen­tu­ją wywo­ła­nia ope­ra­cji i ich parametry.

W celu poka­za­nia sys­te­mu z per­spek­ty­wy inte­re­sa­riu­szy i bez­po­śred­nie­go oto­cze­nia tego sys­te­mu, sto­su­je­my pomoc­ni­czy dia­gram, jakim jest dia­gram przy­pad­ków uży­cia. Celem two­rze­nia tego dia­gra­mu jest zobra­zo­wa­nie zakre­su (gra­ni­cy) sys­te­mu, jego inte­re­sa­riu­szy (aktor), oraz tego do cze­go sys­tem słu­ży (przy­pa­dek uży­cia). Diagram ten słu­ży do udo­ku­men­to­wa­nia tego CO sys­tem robi, a nie JAK to robi (rozdz. 18). To jak sys­tem to robi opi­su­je­my z pomo­cą innych mode­li (sekwen­cji, aktywności).

Techniczne śro­do­wi­sko sys­te­mu opi­su­je­my jako jego obec­ne, lub pla­no­wa­ne, roz­lo­ko­wa­nie: sprzęt, sys­te­mu ope­ra­cyj­ne, śro­do­wi­ska wyko­naw­cze, fra­me­wor­ki, kom­po­nen­ty apli­ka­cyj­ne (roz­dział 19). Aby poka­zać prze­pły­wy danych na tym pozio­mie moż­na dodat­ko­wo użyć mode­li prze­pły­wu infor­ma­cji (roz­dzał 20).

Modele

Podręcznikowa struk­tu­ra mode­li opi­su­ją­cych sys­tem to struk­tu­ra, któ­rej korze­niem są ofe­ro­wa­ne inte­re­sa­riu­szom usłu­gi sys­te­mu: przy­pad­ki uży­cia. Diagram przy­pad­ków uży­cia to model sys­te­mu wyra­żo­ny jako czar­na skrzyn­ka” .

Architekturę HLD (High Level Design) całe­go sys­te­mu mode­lu­je­my dia­gra­mem kom­po­nen­tów. Wewnętrzną archi­tek­tu­rę kom­po­nen­tów (model struk­tu­ry LLD) reali­zu­ją­cych usłu­gi apli­ka­cji (przy­pad­ki uży­cia) mode­lu­je­my z uży­ciem dia­gra­mów klas (tu wyra­ża­ją one archi­tek­tu­rę a nie pojęcia). 

Współdziałanie kom­po­nen­tów sys­te­mu mode­lu­je­my dia­gra­ma­mi inte­rak­cji. Metody i sce­na­riu­sze ich wywo­ły­wa­nia mode­lu­je­my (jeże­li jest taka potrze­ba) z uży­ciem dia­gra­mów aktyw­no­ści. Automatyczne zmia­ny war­to­ści wybra­nych atry­bu­tów mode­lu­je­my z uży­ciem maszyn sta­no­wych. W uprosz­cze­niu struk­tu­rę tych mode­li moż­na zobra­zo­wać tak:

architektura ICONIX

Powyższy sche­mat pomi­ja bar­dzo waż­ny ele­ment jakim jest prze­strzeń poję­cio­wa. To co nazy­wa­my mode­lem dzie­dzi­ny, to model poję­cio­wy: dia­gram klas, na któ­rym kla­sy repre­zen­tu­ją poję­cia z języ­ka natu­ral­ne­go a aso­cja­cje związ­ki mię­dzy nimi. Nie są to ele­men­ty archi­tek­tu­ry sys­te­mu. Mylenie tych rze­czy: nazwy i ele­men­ty sys­te­mu, to powszech­nie popeł­nia­ny błąd. Prawdopodobnie jest to skut­kiem nale­cia­ło­ści z mode­li ERD opi­su­ja­cych rela­cyj­ne mode­le danych. Jednak nale­ży pamię­tać, że model danych nie jest mode­lem sys­te­mu, i budo­wa­nie dia­gra­mów klas w celu mode­lo­wa­nia danych jest poważ­nym błę­dem .

Spójny pro­ces ana­li­zy i pro­jek­to­wa­nia opi­sa­li Doug Rosenberg i Matt Stephens . Wskazali któ­re dia­gra­my UML, kie­dy i do cze­go należ użyć:

Tu jaw­nie wska­za­no, że koniecz­ny jest model poję­cio­wy (Domain Model), któ­ry dopie­ro zosta­nie wyko­rzy­sta­ny do budo­wy archi­tek­tu­ry kodu obiek­to­we­go (Class Model).

Związki mię­dzy ele­men­ta­mi dia­gra­mów dzie­li­my na dwa rodza­je: związ­ki poję­cio­we i związ­ki archi­tek­to­nicz­ne (rozdz.9). Asocjacje i gene­ra­li­za­cje to związ­ki poję­cio­we (mode­le poję­cio­we, «doma­in model»). Związkami struk­tu­ral­ny­mi na mode­lach archi­tek­tu­ry sys­te­mu, są: zależ­ność, jej szcze­gól­ny typ: zwią­zek uży­cia, oraz realizacja. 

Z uwa­gi na to, że dia­gra­my kom­po­nen­tów i struk­tur zło­żo­nych pozwa­la­ją na bar­dziej intu­icyj­ne umiesz­cza­nie ele­men­tów nie­któ­rych mode­li wewnątrz sie­bie, sto­so­wa­nie związ­ków kom­po­zy­cji i aso­cja­cji na mode­lach archi­tek­tu­ry (struk­tur) powo­li tra­ci zasto­so­wa­nie. Poniższy przy­kład (rozdz.11.) poka­zu­je dwa spo­so­by poka­za­nie tej samej tre­ści na mode­lach struk­tu­ry systemów:

Struktury (UML, rozdz. 11).

Struktura (i) po lewej powsta­ła z uży­ciem klas i związ­ków aso­cja­cyj­nych, w tym kom­po­zy­cji (dia­gram klas). Po pra­wej (ii) mamy to samo, ale wyra­żo­ne z uży­ciem dia­gra­mu struk­tur złożonych. 

Podsumowanie

Celem tego arty­ku­łu jest poka­za­nie UML z per­spek­ty­wy typów dia­gra­mów. Jednak spe­cy­fi­ka­cja UML to opis języ­ka, a nie pod­ręcz­nik ana­li­zy i mode­lo­wa­nia OOAD. Dlatego waż­ne jest nie tyl­ko pozna­nie nota­cji UML, ale tak­że stu­dio­wa­nie para­dyg­ma­tów, wzor­ców archi­tek­to­nicz­nych i dobrych prak­tyk mode­lo­wa­nia systemów. 

Nie przy­ta­cza­łem w tym tek­ście przy­kła­dów dia­gra­mów, jest wie­le publi­ka­cji na ten temat (w tym moja ). Nie opi­sa­łem tu wszyst­kich czter­na­stu typów dia­gra­mów, gdyż sku­pi­łem się na tych, któ­re są wyko­rzy­sty­wa­ne w codzien­nej prak­ty­ce pro­jek­to­wa­nia. Powyższe to nie­ca­łe 10% całej nota­cji UML, wyko­rzy­sty­wa­ne w 99% pro­jek­tów z uży­ciem tej nota­cji (moim zda­niem). Ich sto­so­wa­nie opi­sa­łem w arty­ku­le na temat ICONIX.

Gorąco odra­dzam książ­ki i mate­ria­ły, napi­sa­ne przed 2015 roku (rok publi­ka­cji UML v.2.5), moim zda­niem w więk­szo­ści (poza nie­któ­ry­mi pra­ca­mi ogól­ny­mi) przy­no­szą one wie­le szkód i powo­du­ją ogrom nieporozumień. 

Na koniec: po co nam te mode­le i dokumenty:

Udokumentowanie pro­ble­mu, dostęp­nych roz­wią­zań i pla­nu dostar­cze­nia war­to­ści pozwa­la wszyst­kim osią­gnąć suk­ces. Przynajmniej w ten spo­sób sta­je się jasne, jaki pro­blem ty i twój zespół pró­bu­je­cie roz­wią­zać i jakie roz­wią­za­nia są dostęp­ne – i któ­re z nich wybra­łeś – spra­wia, że jest jasne dla każ­de­go, kto to czy­ta (zespół, inte­re­sa­riu­sze, zarząd, klient), w jaki spo­sób zamie­rzasz dostar­czyć war­tość. Jeśli nie możesz tego zapi­sać i uzy­skać zgo­dy inte­re­sa­riu­szy, i tak musisz wyko­nać tę pra­cę: po pro­stu zanur­ku­jesz w kodo­wa­nie mając nadzie­ję, że wszyst­ko się uło­ży. Jednak nadzie­ja nie jest dobrą strategią.

Z per­spek­ty­wy pro­jek­tów reali­zo­wa­nych w zgo­dzie z MBSE, pro­jek­to­wa­nie opro­gra­mo­wa­nia (apli­ka­cji) zorien­to­wa­ne na przy­pad­ki uży­cia, reali­zo­wa­ne jako mikro-usłu­gi (mikro­ser­wi­sy), a te jako mają­ce kom­po­nen­to­wą archi­tek­tu­re ele­men­ty sys­te­mu, moż­na przed­sta­wić jak poniżej:

Struktura pro­jek­tu reali­zo­wa­ne­go w duchu MBSE (opr. wła­sne autora)

Poster: struk­tu­ra opi­su tech­nicz­ne­go kodu aplikacji:

Struktura kodu apli­ka­cje zorien­to­wa­na obiek­to­wo na przy­pad­ki użycia.

Polecam tak­że cie­ka­wy refe­rat o mode­lo­wa­niu i diagramach:

Software Design: Beyond Boxes & Lines • Jessica Kerr • YOW! 2021

Źródła

Bajaj, M., Cole, B., & Zwemer, D. (2016, September 13). Architecture To Geometry – Integrating System Models With Mechanical Design. AIAA SPACE 2016. AIAA SPACE 2016, Long Beach, California. https://​doi​.org/​1​0​.​2​5​1​4​/​6​.​2​016 – 5470
Dennis, A., Wixom, B. H., & Roth, R. M. (2012). Systems ana­ly­sis and design (5th ed). John Wiley.
Object Management Group. (2017, December). Unified Modeling Language (UML) [OMG​.org]. UML. https://​www​.omg​.org/​s​p​e​c​/​U​ML/
Ogedebe, M., & Silas, F. (2015). Abuse of Unified Modeling Language Diagrams in Software Development. British Journal of Mathematics & Computer Science, 10(1), 1 – 9. https://​doi​.org/​1​0​.​9​7​3​4​/​B​J​M​C​S​/​2​0​1​5​/​1​7​075
Pourdehnad, J., Wexler, E. R., & Wilson, D. V. (2011). INTEGRATING SYSTEMS THINKING AND DESIGN THINKING. 22(9), 5.
Rosenberg, D., & Scott, K. (1999). Use case dri­ven object mode­ling with UML. Springer.
Rosenberg, D., & Stephens, M. (2007). Introduction to ICONIX Process. Use Case Driven Object Modeling with UML: Theory and Practice, 1 – 20.
Sales, D. C., Becker, L. B., & Koliver, C. (2022). The sys­tems archi­tec­tu­re onto­lo­gy (SAO): an onto­lo­gy-based design method for cyber – phy­si­cal sys­tems. Applied Computing and Informatics, ahe­ad-of-print(ahe­ad-of-print). https://​doi​.org/​1​0​.​1​1​0​8​/​A​C​I​-09 – 2021-0249

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 12 komentarzy

  1. Marek

    ?The Unified Modeling Language User Guide by Grady Booch, James Rumbaugh, and Ivar Jacobson (Addison-Wesley, 1998) tells us that ?you can do 80% of your mode­ling with 20% of the UML? some­whe­re after page 400. They would have saved the indu­stry many mil­lions (bil­lions?) of dol­lars and hor­ri­fic cases of ana­ly­sis para­ly­sis [?] if they had said that in the Introduction, but they didn?t. To com­po­und the felo­ny, they never tell us which 20% of UML is the use­ful part.?

    Doug Rosenberg and Matt Stephens

    1. Jarosław Żeliński

      Zgadzam się. Ale na szczę­ście, ktoś od razu napi­sał książ­kę o ICONIX. Szkoda, że mało popularna. 

      Rosenberg, D., & Scott, K. (1999). Use case dri­ven object mode­ling with UML. Springer.
      Rosenberg, D., & Stephens, M. (2007). Introduction to ICONIX Process. Use Case Driven Object Modeling with UML: Theory and Practice, 1?20.
      Rosenberg, D., Stephens, M., & Collins-Cope, M. (2005). Agile deve­lop­ment with ICONIX pro­cess: People, pro­cess, and prag­ma­tism. Apress.
      Rosenberger, P., Gerhard, D., & Dumss, S. (2019). Modelling the Behaviour of Context-awa­re Systems: State-of-the-Art Analysis and Introduction of a Customized UML Profile. MODELSWARD, 519?526.

    2. Jarosław Żeliński

      c.d.
      Dodam, że i spe­cy­fi­ka­cja UML i ww. pod­ręcz­nik jej uży­cia to nie są pod­ręcz­ni­ki ana­li­zy i pro­jek­to­wa­nia a opis języka.
      Booch, G., Jacobson, I., & Rumbaugh, J. (1996). The uni­fied mode­ling lan­gu­age. Unix Review, 14(13), 5.
      Booch, G., Rumbaugh, J., & Jacobson, I. (1999). The uni­fied mode­ling lan­gu­age user guide. Addison-Wesley.
      Booch, G., Rumbaugh, J., & Jacobson, I. (2002). UML prze­wod­nik użyt­kow­ni­ka (dru­gie wyda­nie). WNT.

      Dlatego bar­dzo dobrze, że wie­le lat temu Doug Rosenberg i Matt Stephens uzu­peł­ni­li tę lukę. Pozostaje się zasta­no­wić, dla­cze­go tak mało ludzi z ich dorob­ku korzy­sta (ja robię to nie­mal­że od począt­ku poja­wie­nia sie tego: Rosenberg, D., & Scott, K. (1999). Use case dri­ven object mode­ling with UML. Springer.)

      They would have saved the indu­stry many mil­lions (bil­lions?) of dollars”

      Robię to dla moich klien­tów od same­go począt­ku moje samo­dziel­nej dzia­łal­no­ści eks­perc­kiej, czy­li od ok. 2004 roku, stu­den­tów uczę tego od 2005 roku. 

  2. Uzupełniłem arty­kuł o dia­gra­my uży­wa­ne w pro­ce­sie ICONIX i lite­ra­tu­rę źró­dło­wą z tym związaną.

  3. Marek

    Zgadzam się z myślą, że UML to tyl­ko język, a jego spe­cy­fi­ka­cja to nie pod­ręcz­nik analizy.
    Rodzi się jed­nak pyta­nie, czy UML jest wygod­ną nota­cją do mode­lo­wa­nia zagad­nień JEDNOCZEŚNIE z zakre­su ana­li­zy biz­ne­so­wej i sys­te­mo­wej, a jeśli tak, to do jak upra­wia­nej ana­li­zy, bo szkół jej rozu­mie­nia i prak­ty­ko­wa­nia jest kilka.
    Kiedyś byłem pro­gra­mi­stą i wte­dy też byłem entu­zja­stą UML, ale krót­ko. Szybko zro­zu­mia­łem, że choć wymy­ślo­ny przez pro­gra­mi­stów i dla pro­gra­mi­stów, nie jest zbyt przydatny.
    Potem zosta­łem ana­li­ty­kiem i archi­tek­tem. Próbowałem komu­ni­ko­wać się nim (tzn. mode­la­mi w UML) z biz­ne­sem i pro­gra­mi­sta­mi. Niestety. Zarówno przez biz­nes jak i przez pro­gra­mi­stów był odrzu­ca­ny. Dla biz­ne­su mode­le były zbyt skom­pli­ko­wa­ne, dla pro­gra­mi­stów zbyt uprosz­czo­ne. No i zosta­łem z tym UMLem jak Himilsbach z angielskim.
    A może z moimi mode­la­mi było coś nie tak? Mnie się podo­ba­ły, bo prze­cież moje mode­le były moj­sze” od innych.
    I na tym pole­ga pro­blem. W wie­lu przy­pad­kach model a la obra­zek” nie­sie tyl­ko część infor­ma­cji. Reszta znaj­du­je się w gło­wie jego auto­ra i bez zesta­wu obrazek+autor” nie da się go pojąć. Czytelnik zawsze musi się zasta­na­wiać co poeta chciał w wier­szu powie­dzieć?”. Przy pró­bie jego dopre­cy­zo­wa­nia jed­nak gwał­tow­nie rośnie sto­pień kom­pli­ka­cji mode­lu: coraz wię­cej dia­gra­mów, coraz wię­cej na nich pude­łek”. I tak źle, i tak niedobrze.
    Zatem powróć­my do fun­da­men­tal­ne­go pyta­nia: czy w UML da się opo­wia­dać histo­rie” zro­zu­mia­łe zarów­no dla biz­ne­su, jak i pro­gra­mi­stów? To, że są one zawsze zro­zu­mia­łe dla auto­ra-ana­li­ty­ka to oczy­wi­ste. Tylko czy aby o to cho­dzi w analizie?

    1. Jarosław Żeliński

      Rodzi się jed­nak pyta­nie, czy UML jest wygod­ną nota­cją do mode­lo­wa­nia zagad­nień JEDNOCZEŚNIE z zakre­su ana­li­zy biz­ne­so­wej i sys­te­mo­wej, a jeśli tak, to do jak upra­wia­nej ana­li­zy, bo szkół jej rozu­mie­nia i prak­ty­ko­wa­nia jest kilka.”

      1. jest tyl­ko jed­na szko­ła: ory­gi­nal­na spe­cy­fi­ka­cja. UML to nota­cja do mode­lo­wa­nia sys­te­mów, opro­gra­mo­wa­nie jest jed­nym z typów sys­te­mów, coraz czę­ściej jest czę­ścią cze­goś więk­sze­go (samo­cho­du, samo­lo­tu, pral­ki). To co nazy­wa­my ana­li­zą biz­ne­so­wą wyma­ga innych narzę­dzi (BPMN, regu­ły biz­ne­so­we, sza­blo­ny opi­su­ją­ce doku­men­ty biz­ne­so­we i ich treść)

      Kiedyś byłem pro­gra­mi­stą i wte­dy też byłem entu­zja­stą UML, ale krót­ko. Szybko zro­zu­mia­łem, że choć wymy­ślo­ny przez pro­gra­mi­stów i dla pro­gra­mi­stów, nie jest zbyt przydatny.”

      2. jeże­li jakiś model UML nie jest przy­dat­ny, to zna­czy, że jest nie­po­trzeb­nie albo źle wykonany. 

      Potem zosta­łem ana­li­ty­kiem i archi­tek­tem. Próbowałem komu­ni­ko­wać się nim (tzn. mode­la­mi w UML) z biz­ne­sem i pro­gra­mi­sta­mi. Niestety. Zarówno przez biz­nes jak i przez pro­gra­mi­stów był odrzu­ca­ny. Dla biz­ne­su mode­le były zbyt skom­pli­ko­wa­ne, dla pro­gra­mi­stów zbyt uprosz­czo­ne. No i zosta­łem z tym UMLem jak Himilsbach z angielskim.”

      3. to zna­czy tyl­ko tyle, że te mode­le były złe

      A może z moimi mode­la­mi było coś nie tak? Mnie się podo­ba­ły, bo prze­cież moje mode­le były ?moj­sze? od innych.”

      4. były złe z powo­dów jak wyżej

      I na tym pole­ga pro­blem. W wie­lu przy­pad­kach model a la ?obra­zek? nie­sie tyl­ko część infor­ma­cji. Reszta znaj­du­je się w gło­wie jego auto­ra i bez zesta­wu ?obrazek+autor? nie da się go pojąć. Czytelnik zawsze musi się zasta­na­wiać ?co poeta chciał w wier­szu powie­dzieć??. Przy pró­bie jego dopre­cy­zo­wa­nia jed­nak gwał­tow­nie rośnie sto­pień kom­pli­ka­cji mode­lu: coraz wię­cej dia­gra­mów, coraz wię­cej na nich ?pude­łek?. I tak źle, i tak niedobrze.”

      5. zno­wu jest to przy­kład złych modeli 

      Zatem powróć­my do fun­da­men­tal­ne­go pyta­nia: czy w UML da się opo­wia­dać ?histo­rie? zro­zu­mia­łe zarów­no dla biz­ne­su, jak i pro­gra­mi­stów? To, że są one zawsze zro­zu­mia­łe dla auto­ra-ana­li­ty­ka to oczy­wi­ste. Tylko czy aby o to cho­dzi w analizie?”

      6. Da się, świat robi to od 20 lat. Dobry model to model zro­zu­mia­ły dla adre­sa­ta, inne są złe. Pozostaje popraw­nie okre­ślić adre­sa­ta (podob­nie jak Himilsbach, po angiel­sku mówi­my do Brytyjczyków a nie do Polaków), ale adre­sat tez musi wyka­zać pew­ne mini­mum kom­pe­ten­cji: np. robot­nik na budo­wie musi umieć czy­tać rysun­ki tech­nicz­ne, podob­nie jak tokarz czy sto­larz, rzecz w tym by projk­tant też robił je poprawnie. 

      Podsumuję:
      Największym pro­ble­mem z UML jest to, że pro­ble­mem nie jest UML a brak umie­jęt­no­ści abs­trak­cyj­ne­go mode­lo­wa­nia z uży­ciem tej nota­cji: doku­men­to­wa­nia wyni­ków ana­li­zy lub pro­jek­tu. UML to to samo co rysun­ki tech­nicz­ne w każ­dej innej inży­nie­rii. Jak ktoś nie potra­fi nary­wać sche­ma­tu kopar­ki, rowe­ru, samo­lo­tu czy sza­fy, sys­te­mu w UML też nie udo­ku­men­tu­je. Używanie UML na eta­pie ana­li­zy biz­ne­so­wej jest nie­po­ro­zu­mie­niem, ta nota­cja nie do tego powsta­ła (choć jej ele­men­ty są potrzeb­ne na tym eta­pie do mode­lo­wa­nia struk­tur infor­ma­cyj­nych dokumentów). 

      Na tym blo­gu jest wie­le przy­kła­dów prak­tycz­ne­go uży­cia UML. W 100% są to zano­ni­mi­zo­wa­ne przy­kła­dy real­nych pro­jek­tów, któ­re były zro­zu­mia­łe w 100% przez bines i pro­gra­mi­stów. Wszystkie mia­ły jed­ną wspól­ną cechę: nie były zbyt skom­pli­ko­wa­nie a dzię­ki tym sche­ma­tom blo­ko­wym doku­men­ta­cja mia­ły raczej sto stron a nie tysiąc. Drugą cechą było to, że tam gdzie było to dru­gie podej­ście po poprzed­nim nie­uda­nym, dzię­ki tej doku­men­ta­cji i eta­pom ana­liz, reali­zo­wa­łem te pro­jek­ty nawet 10 krot­nie taniej niż poprzed­ni­cy, głów­nym powo­dem było to, że wszel­kie pro­ble­my z nie­ja­sno­ścią logi­ki biz­ne­so­wej i logi­ki dzia­ła­nia sys­te­mu były roz­strzy­ga­ne w cią­gu poje­dyn­czych godzin na sche­ma­tach UML, a nie cięż­ką wie­lo­dnio­wą pra­cą kode­rów na pro­to­ty­pach kodu i jego testowaniu.

    2. Jarosław Żeliński

      c.d.
      Przytoczony na począt­ku cytat autor­stwa Doug Rosenberg, Matt Stephens, to odpo­wiedź na wszel­kie pyta­nia jakie padły z Pana ust: rzecz w tym uży­wać wła­ści­wych dia­gra­mów, we wła­ści­wym cza­sie i we wła­ści­wy spo­sób. Śledzę ich publi­ka­cje, tak­że te nauko­we na ten temat (szcze­gól­nie Douga Rosenberg’a), i jed­no jest pew­ne: UML jest OK, do tego stop­nia, że jako pro­fil SysML jest uży­wa­ny do pro­jek­to­wa­nia zło­żo­nych urzą­dzeń w prze­my­śle. I ostat­nie lata poka­za­ły, że od kil­ku lat zain­te­re­so­wa­nie UML/SysML rośnie a nie maleje.

  4. Marek

    Cały powyż­szy wywód jest gene­ral­nie ok, pod jed­nym wszak­że warun­kiem, że uzna­my za upraw­nio­ne porów­na­nie mode­lu w UML do rysun­ku tech­nicz­ne­go (na papie­rze lub w CADzie), gdy każ­dy robot­nik na budo­wie […], tokarz czy sto­larz […]” itd.
    Problem w tym, że rysu­nek tech­nicz­ny zawsze jest rysun­kiem rze­czy real­nej, mate­rial­nej, i nie pozo­sta­wia swo­bo­dy inter­pre­ta­cyj­nej. Jeśli rysu­nek jest zły, powsta­je zły przed­miot (albo wca­le nie powstaje).
    Model sys­te­mu (w UML lub w jakiej­kol­wiek innej nota­cji) nato­miast jest mode­lem do pew­ne­go stop­nia abs­trak­cyj­nym i czę­sto na bazie złych mode­li powsta­ją dobre sys­te­my (lub odwrot­nie) gdyż od wro­dzo­nych lub naby­tych zdol­no­ści auto­ra jak i odbiorcy/wykonawcy zale­ży koń­co­wy rezultat.
    Poza tym ostat­nie lata też poka­za­ły, że rośnie zain­te­re­so­wa­nie inny­mi nota­cja­mi, a nawet inny­mi podej­ścia­mi przy ana­li­zo­wa­niu wyma­gań i pro­jek­to­wa­niu sys­te­mów. Oczywiście sta­ry dobry UML zawsze będzie w obie­gu, niczym łaci­na. W pew­nych krę­gach nie wypa­da jej nie znać.

    1. Jarosław Żeliński

      Cały powyż­szy wywód jest gene­ral­nie ok, pod jed­nym wszak­że warun­kiem, że uzna­my za upraw­nio­ne porów­na­nie mode­lu w UML do rysun­ku tech­nicz­ne­go (na papie­rze lub w CADzie),”

      Tak jest trak­to­wa­ny od 20 lat w Siemens czy Boeingu. Dzisiejsze tren­dy: https://​youtu​.be/​a​H​r​5​w​V​R​X​vMc

      Poza tym ostat­nie lata też poka­za­ły, że rośnie zain­te­re­so­wa­nie inny­mi nota­cja­mi, a nawet inny­mi podej­ścia­mi przy ana­li­zo­wa­niu wyma­gań i pro­jek­to­wa­niu systemów. ”

      Jakimi? Bo np. autor dość zna­nej już C4 zale­ca bazo­wa­nie na UML.

      Więcej u UML w przemyśle:
      https://​it​-con​sul​ting​.pl/​2​0​2​0​/​0​5​/​2​5​/​s​y​s​m​l​-​c​o​-​w​a​r​t​o​-​p​r​z​e​c​z​y​t​a​c​-​i​-​m​i​e​c​-​n​a​-​p​o​l​ce/

Dodaj komentarz

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