Business Analysis – diagram klas UML i bazy danych

Regularnie widu­je pyta­nia takie jak to:

I have an assi­gn­ment for deve­lo­ping a hotel rese­rva­tion sys­tem! One of tasks is to deve­lop UML class dia­gram! However, in the task descrip­tion it is writ­ten Class dia­gram sho­uld repre­sent your data­ba­se”. I am a bit con­fu­sed abo­ut the rules, nota­tions and etc… becau­se I can’t find any offi­cial UML class dia­grams spe­ci­fi­cal­ly for data­ba­ses! Could you help me ple­ase? (UML class dia­gram for data­ba­se).

i regu­lar­nie piszę: uży­wa­nie dia­gra­mu klas jako repre­zen­ta­cji [rela­cyj­nej] bazy danych to świa­dec­two kom­plet­ne­go nie­zro­zu­mie­nia ana­li­zy i pro­jek­to­wa­nia zorien­to­wa­ne­go obiek­to­wo (żeby nie powie­dzieć igno­ran­cji). Jest to tak­że świa­dec­two bra­ku zna­jo­mo­ści lite­ra­tu­ry, bo fak­tycz­nie, jak zauwa­ża autor powyż­szych słów, nie ma ofi­cjal­nych mate­ria­łów (orga­ni­za­cja stan­da­ry­zu­ją­ca) mówią­cych o mode­lo­wa­niu danych dia­gra­ma­mi klas nota­cji UML. Do mode­lo­wa­nia danych uży­wa­my nota­cji ERD (ang. [[Entity Relationship Diagram]], dia­gram związ­ków encji). Niestety takie wzmian­ki – jak sto­so­wać dia­gram klas UML do mode­lo­wa­nia danych – moż­na zna­leźć w książ­kach uzna­wa­nych za war­to­ścio­we (okład­ka jed­nej z nich po pra­wej), moż­na usły­szeć na wie­lu szko­le­niach doty­czą­cych nota­cji UML, a nawet usły­szeć o tym moż­na – mode­lo­wa­nie danych w UML – z ust nie­jed­ne­go wykła­dow­cy na uczel­niach wyż­szych tech­nicz­nych (co jest smut­ne, mam na pół­ce pod­ręcz­nik aka­de­mic­ki z opi­sem sto­so­wa­nia klu­czy głów­nych i obcych na dia­gra­mach klas w mode­lo­wa­niu danych).

Przy oka­zji. Książkę tę (okład­ka obok: Business Analysis, Malcolm Eva (Author), Keith Hindle (Author), Craig Rollaston (Author)), mam na pół­ce, prze­czy­ta­łem, i mam oba­wy przez jej pole­ca­niem, mimo, że przez wie­lu jest uwa­ża­na nie­mal­że za biblię ana­li­ty­ka biz­ne­so­we­go (ale jako ogól­ny opis mode­lu kom­pe­ten­cyj­ne­go ana­li­ty­ka moż­na ją uznać).

Krótkie przy­po­mnie­nie pojęć (sł. j. polskiego):

dane
1. ?fak­ty, licz­by, na któ­rych moż­na się oprzeć w wywodach?
2. ?infor­ma­cje prze­twa­rza­ne przez komputer?

obiekt
1. ?przed­miot, któ­ry moż­na zoba­czyć lub dotknąć?
2. ?rzecz abs­trak­cyj­na, np. cecha lub pojęcie?
3. ?coś, cze­go doty­czą czy­jeś dzia­ła­nia, zain­te­re­so­wa­nia lub uczucia?
4. ?budy­nek lub zespół budyn­ków; też: urzą­dze­nia terenowe?

Generalnie dane to zapis fak­tów (infor­ma­cje, wie­dza), obiekt to abs­trak­cyj­ny bądź rze­czy­wi­sty byt, mają­cy okre­ślo­ne cechy i reagu­ją­cy na bodź­ce. To dwa róż­ne świa­ty. Tak zwa­ny [[para­dyg­mat obiek­to­wy]] to mode­lo­wa­nie (trak­to­wa­nie) sys­te­mu jako zbio­ru współ­pra­cu­ją­cych w okre­ślo­nym celu obiek­tów. Model danych zaś, to opis orga­ni­za­cji infor­ma­cji. Model obiek­to­wy to struk­tu­ra współ­pra­cu­ją­cych obiek­tów mają­cych okre­ślo­ne zacho­wa­nia. Nie tyl­ko na uczel­niach nadal poku­tu­je sta­re”: Algorytmy plus struk­tu­ry danych rów­na się pro­gra­my, ale to defi­ni­cja jesz­cze z cza­sów prze­twa­rza­nia wsa­do­we­go. Dzisiaj mamy wokół sie­bie współ­dzia­ła­ją­ce kom­pu­te­ry, smart­fo­ny, linie pro­duk­cyj­ne, a nawet sprzęt AGD, gdzie tu są te oddziel­ne struk­tu­ry danych i algo­ryt­my”? Nie ma, są współ­dzia­ła­ją­ce obiek­ty. Owszem, każ­dy obiekt ope­ru­je okre­ślo­ny­mi dany­mi, ale są one w środ­ku” i nie są jed­ną wiel­ką bazą danych”.

Notacja UML bazu­je na obiek­to­wym para­dyg­ma­cie, dia­gram klas tej nota­cji słu­ży do mode­lo­wa­nia obiek­to­wej struk­tu­ry dowol­ne­go sys­te­mu (obiekt to nazwa, atry­bu­ty i ope­ra­cje jakie wyko­nu­je na żąda­nie). Nie ma tu mowy o żad­nych danych, co naj­wy­żej obiek­ty cechu­ją się okre­ślo­ny­mi atry­bu­ta­mi, te jed­nak nie są współ­dzie­lo­ne a zamknię­te w tych obiek­tach, bo to ich pry­wat­ne” cechy. Gdyby te atry­bu­ty były współ­dzie­lo­ne, sys­tem taki był­by nie­mo­dy­fi­ko­wal­ny, nie­po­dziel­ny i nie­podat­ny na zmia­ny, na wymia­nę w nim jed­ne­go obiek­tu na inny (co obser­wu­je­my nadal w sys­te­mach zin­te­gro­wa­nych meto­dą współ­dzie­le­nia danych, tak jest skon­stru­owa­ne wie­le sys­te­mów ERP!).

Owszem, na pozio­mie tech­no­lo­gicz­nym nadal korzy­sta­my z pli­ków na dys­kach i baz danych (nie zawsze rela­cyj­nych) ale to co inne­go, korzy­sta­my z nich do zapi­su (utrwa­la­nia) sta­nu sys­te­mu, utrwa­la­nia infor­ma­cji (danych). Na sty­ku tych dwóch świa­tów korzy­sta­my (jeże­li jest taka koniecz­ność) z mapo­wa­nia mode­lu obiek­to­we­go na utrwa­la­ne dane i wte­dy korzy­sta­my z nota­cji UML do mode­lo­wa­nia obiek­to­wej stryk­tu­ry apli­ka­cji i np. z nota­cji ERD do mode­lo­wa­nia np. rela­cyj­nej struk­tu­ry danych, łącz­nie nazy­wa się [[mapo­wa­nie obiek­to­wo-rela­cyj­ne (ORM)]]. Tak więc mode­lo­wa­nie danych nota­cją UML to pogwał­ce­nie zasad sto­so­wa­nia tej nota­cji i nie­zro­zu­mie­nie samej nota­cji, poję­cia obiekt i kla­sa. Skąd się bio­rą takie pomy­sły? Bardzo wie­lu ludzi uży­wa nota­cji tyl­ko w cha­rak­te­rze biblio­tek sym­bo­li, zaś nota­cja to sys­tem poję­cio­wy, a to nie jest to samo. A przy oka­zji: two­rze­nie takich mode­li w nota­cji UML, jako pro­jek­ty mode­lu dzie­dzi­ny sys­te­mu (obiek­to­we­go), to kla­sycz­ny antyw­zo­rzec pro­jek­to­wy o nazwie [[ane­micz­ny model dziedziny]].

Inne artykuły na podobny temat

Komentarze

  1. Marcin K. 18 lipca 2014 at 10:09

    Witam,
    Z moje­go doświad­cze­nia (skrom­ne­go jed­nak) wyni­ka, że każ­dy o UML mówi, jed­nak nie­wie­lu widzia­ło. Mam przez to na myśli, że bar­dzo trud­no jest zna­leźć w inter­ne­cie a na więk­szo­ści uczel­ni nie ma chy­ba co pró­bo­wać, przy­kła­dy UML done right” na nie­ba­nal­nych dzie­dzi­nach biz­ne­so­wych. Może Autor tego wpi­su był­by w sta­nie wska­zać tego typu mate­ria­ły? Z pew­no­ścią wnio­sło­by to wie­le war­to­ści edu­ka­cyj­nej do tego, już cie­ka­we­go, posta 😉
    Pozdrawiam

    • Jaroslaw Zelinski 21 lipca 2014 at 15:40

      W inter­ne­cie i nie tyl­ko, jest ich mało, głów­nie z tego powo­du, że fak­tycz­nie mało któ­ry jest dobrze zro­bio­ny”. Czy to zna­czy, że UML jest trud­ny i bez sen­su? To potwier­dza co inne­go: kodu napi­sa­ne­go napraw­dę obiek­to­wo jest rów­nie mało… Trudne jest prze­sta­wie­nie się na myśle­nie obiek­to­we i obiek­to­we pro­jek­to­wa­nie gdy całe stu­dia uczy się metod struk­tu­ral­nych, baz rela­cyj­nych i Pascala (algo­ryt­mi­ka nie ma tu nic do rze­czy). ale ma to – meto­dy obiek­to­we – sens, to te pro­jek­ty o któ­rych wiem, że są dobrze” zro­bio­ne poka­zu­ją, że zasa­dy SOLID wno­szą dużą war­tość doda­ną, ist­nie­nie takich apli­ka­cji jak choć­by WordPress czy MOODLE poka­zu­je, że wzor­ce pro­jek­to­we się spraw­dza­ją, że moż­na pisać opro­gra­mo­wa­nie pozwa­la­ją­ce na roz­sze­rze­nia funk­cjo­nal­no­ści i nie wyma­ga­ją­ce zmian. Paradoksalnie duża pra­co­chłon­ność kodo­wa­nia dzia­ła na korzyść deve­lo­pe­ra więc mamy sytu­ację, w któ­rej rynek dostaw­ców nie ma żad­ne­go inte­re­su w tym by to popra­wiać. Ale niszo­we, nie­ko­mer­cyj­ne pro­jek­ty zysku­ją na tym, że pro­jekt jest lep­szy” bo ma szan­se na zle­zie­nie inwe­sto­ra. W naszym kra­ju dobre pro­jek­ty to nie­ste­ty śla­do­we zja­wi­sko ale są. Z lite­ra­tu­ry z przy­kła­da­mi pole­cam spis zamiesz­czo­ny pod arty­ku­łem o sza­chach (sam arty­kuł tak­że zawie­ra przy­kład). Mało tam lite­ra­tu­ry kra­jo­wej nie­ste­ty. Do tego war­to dodać, że w UML raczej spo­tka­my się z pro­jek­ta­mi kon­cep­cyj­ny­mi i tyl­ko logi­ka biz­ne­so­wa, resz­ta i tak pocho­dzi z fra­me­wor­ków a szcze­gó­ły kodu sa raczej doku­men­to­wa­ne w kodzie a nie poza nim…

  2. Matt 31 lipca 2014 at 10:40

    Na uczel­ni coś wspo­mnie­li o UML’u, wska­za­li soft do jego opra­co­wa­nia i poszło w zapo­mnie­nie. Wielka szko­da bo widzę, że to upro­ści­ło by pre­zen­ta­cję bazy, pro­gra­mu itd.

    • Jaroslaw Zelinski 1 sierpnia 2014 at 00:37

      UML wie­le rze­czy uprasz­cza, ale z tą bazą” to ostrożnie 😉

  3. skobel 8 kwietnia 2015 at 21:08

Dodaj komentarz

Twój adres email nie zostanie opublikowany

Komentuj i zadawaj pytania autorowi.

Identyfikator *
E-mail *
Witryna internetowa

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