Projekt zakończony
Artur Poniedziałek (4AR) arturponiedzialek@gmail.com
Design ARD+, XTTv2: UML cases
UML + MVC Cases – A search for design examples made with UML with MVC approach, esp. behavior diagrams are needed; examples should be complete and well documented in UML; evaluation of the existing cases; modelling selected examples with ARD+/XTT+(v2)
Gotowe przykłady w UML:
Celem projektu było stworzenie diagramu ARD w oparciu o diagramy UML/MVC pewnego systemu. W czasie prac związanych z wyszukiwaniem właściwych systemów uzgodniono, że projekt będzie dotyczył systemu rejestacji studentów na seminaria.
Naczelnym zadaniem w projekcie było uzyskanie diagramu ARD wybranego systemu, poprzez przedstawienie sposobu translacji diagramów UML. Kluczem do rozwiązania problemu było odnalezienie istotnych diagramów UML, istotnych czyli takich co w pierwszym przybliżeniu pasowałyby do właściwości „prostych” oraz „złożonych” (tzw. atrybuty fizykalne oraz konceptualne) funkcjonujących w terminologi ARD.
Można zadać pytanie czy w ogóle istnieje funkcja przejścia (translacji) diagramów UML do ARD ? Na powyższe pytanie nie można tak po prostu odpowiedzieć. Jedno jest natomiast pewne diagramy w UML tworzy się od najbardziej ogólnych (przypadki użycia, diagramy klas dla dziedziny) po bardziej szczegółowe (diagramy klas w analizie, diagramy sekwencji i kooperacji). Nie inaczej jest w przypadku ARD: zaczynamy od pewnych ogólnych pojęć (atrybuty konceptualne) i poprzez ich podział lub zamianę osiągamy na najbardziej szczegółowym poziomie atrybuty fizykalne oraz operacje jakie można na nich wykonać.
Temat projektu sugeruje wykorzystanie diagramów behawioralnych UML'a. Jest to sensowne podejście, ale wydaje się, że nie w początkowej fazie projektu. Skoro ARD to zbiór atrybutów i operacji to powinniśmy najpierw ustalić czym się zajmujemy a dopiero potem jak tego używamy. Nasuwa się pomysł, że powinniśmy zacząć od struktury, czyli od diagramów klas w UML'u.
Diagramy klas na wczesnym etapie projektu mają specyfikowany zbiór atrybutów i prostych operacji jakie zmieniają stan poszczególnych instancji (obiektów wspomnianych klas). Taki tok myślenia został właśnie przyjęty w projekcie. Na wstępie został wybrany zbiór najbardziej podstawowych właściwości z diagramów klas systemu UML, a następnie zaczynając od atrybutu konceptualnego zaczęto tworzyć system w ARD.
Wygenerowany diagram w ARD przedstawia kilka istotnych informacji na temat modelowanego systemu:
W tym momencie pozornie prosty system nieco się skomplikował. W istocie mamy teraz trzy mniejsze podsystemy, które pracują w pewien określony sobie sposób. Nasuwa się pytanie czy te systemy są niezależne ? Czy w ogóle mogą być niezależne skoro wszystkie dotyczą systemu rejestracji studenta ?
Te i wiele innych pytań z całą pewnością mogą posłużyć za temat kolejnego projektu. Trzeba przeanalizować co nam daje informacja, że początkowo jeden system stał się nadsystemem w stosunku do nowych trzech systemów. Jak ten fakt dalej wykorzystać ? Czy jest to jedyny sposób realizacji rejestracji studentów ? Czy inne diagramy uml dałyby zbliżony diagram ARD analizowanego systemu ?
Trzeba powiedzieć na wstępie, że ARD jest stosunkowo słabo udokumentowane a przynajmniej niewłaściwie. Przykład termostatu jest specyficzny i nie objaśnia dobrze składni dla split'a dla atrybutów konceptualnych. Oficjalne dokumenty opisujące ARD jak choćby gjn2008flairs-ardprolog w prawdzie podają wiele przykładów split ( podziału ), ale nigdzie nie jest podany jeden kompleksowy przykład opisujący listy jakie trzeba podać jako „argumenty” split'a. Byłoby dobrze przedstawić podział dla przykładowego atrybutu [ a , b , c ], który ma zostać podzielony na inne atrybuty np. [a,b] oraz [c] czy też [c] i [a,b] odpowiednio zależnościami [a,b] → [c] ( [a,b] zależy od [c]) oraz [c] → [a,b] ( [c] zależy od [a,b] ). Krótko mówiąc opisać parametry splita:
Brak powyższego opisu sprawił, że godziny spędzone nad próbą tworzenia diagramu ARD w systemie Varda przeszły do historii jako „źle wykorzystane”.
Druga kwestia jest związana z wykorzystaniem środowiska Varda. Na stronie Varda w prawdzie rozdzielono przykład użycia Vardy w systemie Unix/Windows, ale nie wyjaśniono choćby co robią komendy:
?- sar('therm-ard.dot'). ?- shi('therm-tph.dot'). ?- gax. ?- sxt('therm-xtt.dot').
Wspomniano tylko, że służą do generowania diagramów w Graphizie nie wyjaśniając, że tworzą one kod rozumiany przez Graphiza, który trzeba „skompilować” w Graphizie aby otrzymać plik bitmapy, png czy jpg. Na temat Graphiza wiadomo tylko, że jest „needed to build visual models”.
Tych kilka „komend” prologu wywoływanych z Vardy to chyba niepełny potencjał. W zasadzie co robi sar, shi, gax ? Nie napisano choćby jak wywołać helpa w Vardzie (oczywiście można powiedzieć, że doświadczony użytkownik metodą prób i błędów dojdzie to tego). Może warto przedstawić wynik działania helpa w Vardzie na stronie Varda ?
Do dalszej analizy wybrano diagramy UML z :
System seminariów dla studentów - jeden z lepiej udokumentowanych
Ok, this could be a case allright.
See the discussion here.
It is a example of using the MVC pattern in Java. General discussion of patterns in Java is here.
Some classic Smalltalk MVC tips here.
An idea is to investigate some common MVC frameworks, such as Struts (see some introduction).
Another example, warning! ASP.NET.
For yeomens: Design Patterns by the Gang'O'Four.
IW: please evaluate!
— Grzegorz J. Nalepa 2006/12/30 23:06
= Evaluation =
— Igor Wojnicki 2007/01/05 11:59
Uporządkowanie zasobów:
Przykład systemu udzielania pożyczek (Sun Java)
nice one — Igor Wojnicki 2008/03/17 21:11
OK! — GJN
Piggy Bank System - niestety żaden narazie nie działa - napisałem już maila do IBM
Inny system
it's rather a quick howto; out — Igor Wojnicki 2008/03/17 21:11
System płatniczy - wszystkie rodzaje diagramów (Borland)
looks good — Igor Wojnicki 2008/03/17 21:11
OK! — GJN
System płatniczy - niestety nie wszystkie diagramy dotyczą jednego systemu
looks good — Igor Wojnicki 2008/03/17 21:11
raczej nie! — GJN
System seminariów dla studentów - jeden z lepiej udokumentowanych
quite good — Igor Wojnicki 2008/03/17 21:11
OK! — GJN
Nieco prymitywny system (Sparx)
simple but I think it can be useful — Igor Wojnicki 2008/03/17 21:11
ewentualnie OK! — GJN
Luźne przykłady diagramów sekwencji
out, these are just examples not cases — Igor Wojnicki 2008/03/17 21:11
Kompletny prosty system ( wszystkie istotne diagramy )
nice one — Igor Wojnicki 2008/03/17 21:11
OK! — GJN