Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_umlandardxtt [2008/04/27 22:14]
miw
pl:miw:miw08_umlandardxtt [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +__**Projekt zakończony**__
 +
 Krzysztof Kluza (4AR) <​krzysztof.kluza@uj.edu.pl>​ Krzysztof Kluza (4AR) <​krzysztof.kluza@uj.edu.pl>​
  
Linia 11: Linia 13:
  
 ====== Spotkania ====== ====== Spotkania ======
-===== 08.02.26 ===== +[[pl:miw:​miw08_umlandardxtt:​spotkania]]
-===== 08.03.04 ===== +
-[[hekate:hekate_case_thermostat]]+
  
-===== 080318 ​===== +===== 080527 ​===== 
-[[hekate:​hekate_case_thermostat]] +  * cvs
-  * połączenia między diagramami+
  
 +==== CVS ====
  
-===== 080401 ===== +Some docs: a sane [[http://​furryland.org/​~mikec/​cvs.html|CVS Howto]], ​ 
-  * próba modelowania ARDsar, shi, sha.+[[http://​badgertronics.com/​writings/​cvs/​|MarkD]], 
 +[[http://​ximbiot.com/​cvs/​manual/​|CVS Manual]].
  
 +  export CVSROOT=:​ext:​charon.ia.agh.edu.pl/​mnt/​cvs/​cvs-hekate
 +  export CVS_RSH=ssh
  
-===== 080415 ===== +Naming convention for CVS modules:
-  * model ard, use, trace+
  
 +  p_papername_conferenceYYYY
 +  p_papername
 +  epp_name
 +  hexor_name
 +  mirella_name
 +  xtt_name
 +  ard_name
  
-===== 080429 ​===== +=== Examples ​===
-  * podsumowanie +
-  * http://​www.knowgravity.com/​eng/​index.htm +
-  * http://​home.agh.edu.pl/​~mszpyrka/​index.php?​s=CSLTR+
  
-na przyszłość+Checking out
-  * http://en.wikipedia.org/wiki/Model-driven_architecture +    cvs -d :ext:charon.ia.agh.edu.pl/mnt/cvs/cvs-hekate co p_mypaper_fancyconferece2007 
-  * http://www.omg.org/mda/+Updating: 
 +    cd p_mypaper_fancyconferece2007 
 +    cvs update -Pd 
 +Commiting:​ 
 +    cd p_mypaper_fancyconferece2007 
 +    cvs commit 
 +Importing (creating a new module): 
 +    cd p_otherpaper 
 +    cvs -d :ext:charon.ia.agh.edu.pl/mnt/cvs/​cvs-hekate import -m initial p_otherpaper hekate start
  
-====== Projekt ====== +=== Bibliography ​===
-===== Szkice nad diagramami behawioralnymi (08.02.26, 08.03.04, 08.03.18) =====+
  
-Wobec tego postanowiłem na początek spróbować zamodelować osobno 2 reguły z przykładu w udostępnionej specyfikacji XTT:+Hekate bibliography BibTeX database is available as hekatebib cvs module, to checkout type:
  
-|{{:pl:miw:​miw08_umlandardxtt:​xtt_dt.png|:​pl:​miw:​miw08_umlandardxtt:​xtt_dt.png}}|{{:​pl:​miw:​miw08_umlandardxtt:​xtt_th.png|:pl:​miw:​miw08_umlandardxtt:​xtt_th.png}}|+    cvs -d :ext:charon.ia.agh.edu.pl/​mnt/​cvs/​cvs-hekate co hekatebib
  
-raz przy użyciu diagramów aktywności, ​raz przy użyciu diagramów stanów.+There is main file called ''​hekate.bib''​. 
 +Check it out within your paper directory. 
 +DO NOT REMOVE any entries, please.
  
-Za [[http://​www.borland.pl/​tech/​poradnik_uml.shtml#​Diagramy_aktywnosci]]: +**Warning**:​ ''​hekate.bib''​ is NOT in sync with [[hekatedev:bibliography]] for now :!
-> Diagramy aktywności i diagramy stanów są powiązane. Diagram aktywności skupia się na obiekcie przechodzącym pewien proces  +Hopefully one day will be as soon as we have a sane BibTeX plugin for dokuwiki :-)
-> (albo na procesie traktowanym jak obiekt), natomiast diagram stanów skupia się na operacjach związanych z jednym procesem. ​+
  
-Poniższe podstrony przedstawiają próby modelowania powyższych diagramów XTT: +TODO 
-  ​- [[pl:miw:​miw08_umlandardxtt:​activity_diagrams|za pomocą diagramów aktywności]] ([[pl:​miw:​miw08_umlandardxtt:​activity_diagrams#​section|08.02.26]],​ [[pl:​miw:​miw08_umlandardxtt:​activity_diagrams#​section1|08.03.18]]),​ +  ​* keyformatAuthorLastNameYearConf[-something]
-  ​[[pl:​miw:​miw08_umlandardxtt:​state_diagrams|za pomocą diagramów stanów]] ([[pl:​miw:​miw08_umlandardxtt:​state_diagrams#​section|08.02.26]],​ [[pl:​miw:​miw08_umlandardxtt:​state_diagrams#​section|08.03.04]]).+
  
-==== Zagadnienia problematyczne ==== 
  
-:!: Zgodnie ze specyfikacją XTT wiersze w tabelach są interpretowane z góry na dół. W tym momencie  ​ 
-diagramy aktywności czy stanów zamodelowane jak wyżej nie dają możliwości oddania tych zależności. 
  
-Możliwości rozwiązania problemu: +====== Projekt ======
-  * numeracja krawędzi i w ten sposób utrzymywanie kontroli przepływu - komplikuje to diagram, prawdopodobnie nie będzie zgodne ze specyfikacją UML. +
-  * oddanie tych specyficznych zależności na innym rodzaju diagramu.+
  
 +==== 08.02.26 ====
  
 +Próby modelowania diagramów XTT:
 +  * [[pl:​miw:​miw08_umlandardxtt:​activity_diagrams#​section|za pomocą diagramów aktywności]],​
 +  * [[pl:​miw:​miw08_umlandardxtt:​state_diagrams#​section|za pomocą diagramów stanów]]. ​
  
-===== Szkice nad modelem ARD w UMLu (08.03.04, 08.04.01) ===== 
  
-Podczas konsultacji 08.02.26 zwróciłem uwagę na podobieństwo diagramu [[hekate:​hekate_concepts#​ard|ARD]] do diagramu aktywności ze złączeniem (na podstawie diagramu z książki [[pl:​miw:​miw08_umlandardxtt#​literatura|Pilone 2007]] s. 143). Stąd jako osobny temat do rozważenia jest: [[pl:​miw:​miw08_umlandardxtt:​umlandard| hipotetyczny model diagramu ARD w UMLu]] (08.03.04).+==== 08.03.04 ​====
  
-Po zapoznaniu się z ARD (sar, shi, sha) postanowiłem ​jednak ​użyć diagramów klas do ich przedstawienia ​(08.04.01)+Dalsze próby modelowania diagramów XTT [[pl:​miw:​miw08_umlandardxtt:​state_diagrams#​section1|za pomocą diagramów stanów]].\\  
 +Propozycja [[pl:​miw:​miw08_umlandardxtt:​umlandard| hipotetycznego modelu diagramu ARD w UMLu]]. 
 + 
 +==== 08.03.18 ==== 
 + 
 +Sforumułowanie [[pl:​miw:​miw08_umlandardxtt:​activity_diagrams#​section1|algorytmu przejścia z diagramu XTT na diagram aktywności UML]]. 
 + 
 +==== 08.04.01 ==== 
 + 
 +Po zapoznaniu się z ARD (sar, shi, sha) postanowiłem użyć ​jednak ​diagramów klas do ich przedstawienia: ​
   * [[pl:​miw:​miw08_umlandardxtt:​umlandard:​approach1| Pierwsze podejście do problemu]]   * [[pl:​miw:​miw08_umlandardxtt:​umlandard:​approach1| Pierwsze podejście do problemu]]
-  * [[pl:​miw:​miw08_umlandardxtt:​umlandard:​approach2| Drugie podejście do problemu (bazujące na pierwszym)]] ​([[pl:​miw:​miw08_umlandardxtt:​umlandard:​approach2#​zaleznosci_trace_use_i_derive|08.04.15]])+  * [[pl:​miw:​miw08_umlandardxtt:​umlandard:​approach2| Drugie podejście do problemu (bazujące na pierwszym)]] ​ 
 + 
 + 
 +==== 08.04.15 ==== 
 + 
 +Propozycja wykorzystania ​[[pl:​miw:​miw08_umlandardxtt:​umlandard:​approach2#​zaleznosci_trace_use_i_derive|zależności trace i derive]].\\  
 +Opracowanie krótkiego [[pl:​miw:​miw08_umlandardxtt:​notatki|opisu specyfikacji MOF i standardu XMI]]. 
 + 
 +==== 08.04.29 ==== 
 + 
 +Zmodyfikowane [[pl:​miw:​miw08_umlandardxtt:​umlandard:​approach3|podejście do problemu modelu ARD]].\\  
 +Podsumowanie projektu w części Sprawozdanie.
  
 ====== Sprawozdanie ====== ====== Sprawozdanie ======
  
 Niniejszy projekt przedstawia próbę zamodelowania zarówno diagramów XTT, jak i ARD przy pomocy języka UML. Niniejszy projekt przedstawia próbę zamodelowania zarówno diagramów XTT, jak i ARD przy pomocy języka UML.
 +
 +
  
 ===== Diagramy XTT w UML ===== ===== Diagramy XTT w UML =====
Linia 87: Linia 120:
 > Takie diagramy mogą być efektywnie stosowane w przypadkach,​ gdy mamy do czynienia ​ > Takie diagramy mogą być efektywnie stosowane w przypadkach,​ gdy mamy do czynienia ​
 > tylko z kilkoma regułami. Nie są jednak odpowiednie dla rzeczywistych systemów regułowych. ([[hekate:​bib:​hekate_bibliography#​gjn2007kese-keuml]] s. 7) > tylko z kilkoma regułami. Nie są jednak odpowiednie dla rzeczywistych systemów regułowych. ([[hekate:​bib:​hekate_bibliography#​gjn2007kese-keuml]] s. 7)
 +
 +> Diagramy aktywności i diagramy stanów są powiązane. Diagram aktywności skupia się na obiekcie ​
 +> przechodzącym pewien proces (albo na procesie traktowanym jak obiekt), natomiast diagram stanów skupia się na 
 +> operacjach związanych z jednym procesem.\\ ([[http://​www.borland.pl/​tech/​poradnik_uml.shtml#​Diagramy_aktywnosci]])
 +
 +==== Zaniechane próby modelowania przy pomocy diagramów stanów ====
 +
 +Pierwsze próby modelowania XTT prowadzone były na diagramach stanów. ​
 +Przykładowe podejścia do zamodelowania jednej z reguł XTT:
 +
 +=== Fragment diagramu XTT ===
 +{{:​pl:​miw:​miw08_umlandardxtt:​xtt_th.png|:​pl:​miw:​miw08_umlandardxtt:​xtt_th.png}}
 +
 +=== Podejście pierwsze ===
 +{{:​pl:​miw:​miw08_umlandardxtt:​th_state1.png?​450|:​pl:​miw:​miw08_umlandardxtt:​th_state1.png}}
 +
 +Problem: brak jednoznaczności,​ które z parametrów przekształcać w stany, a które w warunki dozoru.
 +
 +=== Podejście drugie ===
 +{{:​pl:​miw:​miw08_umlandardxtt:​th_state2a.png?​450|:​pl:​miw:​miw08_umlandardxtt:​th_state2a.png}}
 +
 +Problem: przy niewiele większej tablicy XTT diagram staje się słabo czytelny.
 +
 +=== Podejście trzecie ===
 +{{:​pl:​miw:​miw08_umlandardxtt:​th_state2b.png?​450|:​pl:​miw:​miw08_umlandardxtt:​th_state2b.png}}
 +
 +Problem: we wszystkich trzech powyższych podejściach brak nazwy atrybutu wyjściowego,​ zaś by uzyskać nazwy atrybutów wejściowych należałoby wyszukiwać ich w warunkach dozoru.
 +
 +
 +
 +==== Proponowany model XTT przy pomocy diagramów aktywności (czynności) ==== 
 +
 +> Diagramy aktywności mają związek z diagramami przepływu i służą do ilustrowania działań zachodzących w systemie. (...)\\
 +> W diagramach aktywności można zaprezentować zdarzenia zachodzące równolegle. ([[pl:​miw:​miw08_umlandardxtt#​literatura|Graessle 2006]], s. 66)
 +
 +Rezultatem projektu jest poniższy algorytm przekształcania diagramów XTT na diagramy aktywności (czynności) UML:  ​
 +
 +=== Algorytm przejścia z diagramów XTT na diagram UML ===
 +
 +^ Opis kroku algorytmu ^ Przykładowe przekształcenie ^
 +|**1)** Wszystkie atrybuty wejściowe stają się parametrami wejściowymi czynności, zaś atrybut wyjściowy staje się parametrem wyjściowym czynności (dla rozgraniczenia można podzielić diagram na partycje).\\ \\ \\ \\ \\ \\ |  {{:​pl:​miw:​miw08_umlandardxtt:​algorithm_step1.png|:​pl:​miw:​miw08_umlandardxtt:​algorithm_step1.png}} ​ |
 +|**2)** Dla każdego takiego atrybutu (parametru czynności),​ jeśli w XTT istnieje więcej niż 1 unikalna jego wartość dodajemy węzeł decyzyjny oraz dla każdej unikalnej wartości atrybutu:\\ **a)** prowadzimy z niego przepływ sterowania opatrzony warunkiem w postaci tej unikalnej wartości,​\\ **b)** jeśli dana wartość występuje wielokrotnie kończymy przepływ rozgałęzieniem z liczbą wyjść równą liczbie krotności występowania danej wartości w tablicy XTT.|  {{:​pl:​miw:​miw08_umlandardxtt:​algorithm_step2.png|:​pl:​miw:​miw08_umlandardxtt:​algorithm_step2.png}} ​ |
 +|**3)** Dla każdej reguły (wiersza w XTT) rysujemy złączenie o liczbie wejść równej liczbie parametrów wejściowych i jednym wyjściu. Każdemu złączeniu:​\\ **a)** do wejść doprowadzamy odpowiednie przepływy sterowania (zgodnie z wartościami atrybutów w danej regule),\\ **b)** z wyjścia prowadzimy przepływ sterowania do  akcji odpowiadającej wartości atrybutu wyjściowego w danej regule:\\ **-** bezpośrednio,​ jeśli wartość atrybutu występowała w XTT tylko raz,\\ **-** poprzez węzeł łączący (scalenie) w przeciwnym wypadku.\\ |{{:​pl:​miw:​miw08_umlandardxtt:​algorithm_step3.png|:​pl:​miw:​miw08_umlandardxtt:​algorithm_step3.png}}|
 +|**4)** Wyjścia z wszystkich akcji scalamy w węźle łączącym (scalającym) i doprowadzamy przepływ sterowania do parametru wyjściowego czynności.\\ \\ \\ \\ \\ \\ \\ |  {{:​pl:​miw:​miw08_umlandardxtt:​algorithm_step4.png|:​pl:​miw:​miw08_umlandardxtt:​algorithm_step4.png}} ​ |
 + 
 +=== Poszczególne diagramy dla fragmentów XTT ===
 +
 +Diagramy aktywności skonstruowane powyższym algorytmem dla termostatu będą wyglądały następująco:​
 +
 +^Diagram aktywności dla diagramu XTT ms:^^
 +|{{:​pl:​miw:​miw08_umlandardxtt:​xtt_ms.png|:​pl:​miw:​miw08_umlandardxtt:​xtt_ms.png}}|{{:​pl:​miw:​miw08_umlandardxtt:​ms_3.png?​427|:​pl:​miw:​miw08_umlandardxtt:​ms_3.png}}|
 +
 +^Diagram aktywności dla diagramu XTT dt:^^
 +|{{:​pl:​miw:​miw08_umlandardxtt:​xtt_dt.png?​300|:​pl:​miw:​miw08_umlandardxtt:​xtt_dt.png}}|{{:​pl:​miw:​miw08_umlandardxtt:​dt_3.png?​400|:​pl:​miw:​miw08_umlandardxtt:​dt_3.png}}|
 +
 +^Diagram aktywności dla diagramu XTT th:^^
 +|{{:​pl:​miw:​miw08_umlandardxtt:​xtt_th.png?​300|:​pl:​miw:​miw08_umlandardxtt:​xtt_th.png}}|{{:​pl:​miw:​miw08_umlandardxtt:​th_3.png?​400|:​pl:​miw:​miw08_umlandardxtt:​th_3.png}}|
 +
 +^Diagram aktywności dla diagramu XTT os:^^
 +|{{:​pl:​miw:​miw08_umlandardxtt:​xtt_os.png?​300|:​pl:​miw:​miw08_umlandardxtt:​xtt_os.png}}|{{:​pl:​miw:​miw08_umlandardxtt:​os_3.png?​400|:​pl:​miw:​miw08_umlandardxtt:​os_3.png}}|
 +
 +=== Diagram dla całego XTT termostatu ===
 +
 +Dla przejrzystości,​ modelując diagram całego termostatu, powyższe aktywności przedstawiamy jako zagnieżdżone (aktywność przedstawiona w postaci zagnieżdżonej odwołuje się do szeregu akcji tej aktywności,​ których jednak w celach przejrzystości nie przedstawia się bezpośrednio na danym diagramie).
 +
 +^Diagram dla całego termostatu:​^
 +|{{:​pl:​miw:​miw08_umlandardxtt:​uml_activity_xtt_3.png?​700|:​pl:​miw:​miw08_umlandardxtt:​uml_activity_xtt_3.png}}|
 +
 +
 +
 +===== Diagramy ARD w UML =====
 +
 +Diagram ARD (Atribute Relationship Diagram) identyfikuje atrybuty systemu i ukazuje zależności funkcjonalne pomiędzy nimi.
 +
 +Przykładowy diagram ARD na niskim poziomie dla termostatu:​\\ ​
 +<​graphviz file="​hekate:​therm-a8.dot"></​graphviz>​
 +
 +W czasie procesu projektowania diagram ARD rozrasta się. Rozrost taki można przedstawić przy pomocy modelu hierarchicznego TPH (Transformation Process History). Dla powyższego diagramu, diagram TPH wygląda następująco:​\\ ​
 +<​graphviz file="​hekate:​therm-t8.dot"></​graphviz>​
 +
 +
 +==== Zaniechane próby modelowania przy pomocy diagramów aktywności (czynności) ====
 +
 +
 +=== Podejście pierwsze ===
 +
 +{{:​pl:​miw:​miw08_umlandardxtt:​ard_scalenie1.png|Ryc:​ Diagram aktywności ze scaleniami.}}
 +
 +Problem: Gdy zostanie np. ustalona tylko jedna z wartości //today// albo //hour// sterowanie zostałoby przekazane do //​operation//​. Takie rozwiązanie **nie wydaje się zgodne** z działaniem termostatu.
 +
 +
 +=== Podejście drugie ===
 +
 +{{:​pl:​miw:​miw08_umlandardxtt:​ard_zlaczenie1.png|Ryc:​ Diagram aktywności ze złączeniami.}}
 +
 +Problem: W tym wypadku przekazywanie sterowania byłoby zgodne z diagramem ARD. Występuje jednak znaczna różnica semantyczna:​ w diagramie UML aktywności reprezentują czynności, zaś na tym diagramie mają reprezentować cechy (atrybuty) systemu.
 +
 +
 +
 +
 +
 +
 +
 +
 +==== Proponowany model ARD przy pomocy diagramu komponentów UML ====
 +
 +=== Użyte rodzaje powiązań ===
 +
 +W proponowanym modelu zostały użyte następujące rodzaje powiązań:
 +
 +^ UML ^ Nazwa powiązania ^ Znaczenie powiązania ^
 +| {{:​pl:​miw:​miw08_umlandardxtt:​umlandard:​dependency_derive.png|:​pl:​miw:​miw08_umlandardxtt:​umlandard:​dependency_derive.png}} | Zależność \\ <<​derive>>​ | Określa związek pochodzenia między elementami, będącymi często (ale nie koniecznie) tego samego typu. Związek pochodzenia specyfikuje,​ że klient (B) może być wyznaczony (obliczony) na podstawie dostawcy (A). |
 +| {{:​pl:​miw:​miw08_umlandardxtt:​umlandard:​dependency_refine.png|:​pl:​miw:​miw08_umlandardxtt:​umlandard:​dependency_refine.png}} | Zależność \\ <<​refine>>​ | Specyfikuje zależność usczegółowienia między elementami modelu na różnych poziomach znaczeniowych. B jest uszczegółowioną wersją A. |
 +| {{:​pl:​miw:​miw08_umlandardxtt:​umlandard:​dependency_trace.png|:​pl:​miw:​miw08_umlandardxtt:​umlandard:​dependency_trace.png}} | Zależność \\ <<​trace>>​ | Definiuje związek trace pomiędzy elementami modelu (lub zbiorami elementów),​ które reprezentują to samo pojęcie (tę samą abstrakcję) w różnych modelach. Głównie używane dla śledzenia zmian między modelami. |
 +
 +=== Model diagramu ARD ===
 +
 +Proponowany model diagramu ARD bazuje na diagramach komponentów. W części projektowej znajdują się [[pl:​miw:​miw08_umlandardxtt:​umlandard:​approach3#​proponowany_model_diagramow|diagramy dla całego termostatu]]. Poniżej prezentuję diagramy najbardziej szczegółowego poziomu:
 +
 +^  diagram ARD  ^ model UML diagramu ARD ^
 +| <​graphviz file="​hekate:​therm-a8.dot"></​graphviz> ​ | {{:​pl:​miw:​miw08_umlandardxtt:​umlandard:​approach3_ard_8.png|:​pl:​miw:​miw08_umlandardxtt:​umlandard:​approach3_ard_8.png}} |
 +
 +^ diagram TPH  ^ model UML ^
 +| <​graphviz file="​hekate:​therm-t8.dot"></​graphviz>​ | {{:​pl:​miw:​miw08_umlandardxtt:​umlandard:​approach3_tph_8.png|:​pl:​miw:​miw08_umlandardxtt:​umlandard:​approach3_tph_8.png}} |
 +
 +^ diagram ARD ^ diagram TPH ^ model UML diagramu THP + ARD ^
 +| <​graphviz file="​hekate:​therm-a8.dot"></​graphviz> ​ | <​graphviz file="​hekate:​therm-t8.dot"></​graphviz>​ | {{:​pl:​miw:​miw08_umlandardxtt:​umlandard:​approach3_shi_8.png|:​pl:​miw:​miw08_umlandardxtt:​umlandard:​approach3_shi_8.png}} |
 +
 +Zależność //trace// w naszym modelu zachodzi między elementami reprezentującymi tę samą abstrakcję na różnych poziomach szczegółowości np.\\
 +
 +^ Przykładowy fragment diagramu ukazujący zależność trace w modelu TPH ^
 +|{{:​pl:​miw:​miw08_umlandardxtt:​umlandard:​trace_example.png|Przykład występowania zależności trace w modelu TPH}} |
 +
  
  
pl/miw/miw08_umlandardxtt.1209327299.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0