Opis

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)

Spotkania

Projekt

Sprawozdanie

1. Cel projektu

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.

2. Wykonanie projektu i wnioski

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:

  1. System rejestracji studentów to tak naprawdę kilka mniejszych systemów, które ze sobą współpracują.
  2. Pierwszy z podsystemów przedstawia relację, że plan studenta oraz historia jego seminariów są w związku z opłatą oraz terminem seminarium
  3. Drugi z podsystemów przedstawia dwie relacje, że student jest w związku z prowadzącym, a prowadzący musi uwzględniać fakt czy student brał wcześniej udział w seminarium, i czy są np. wolne miejsca aby zapisać studenta.
  4. Trzeci podsystem przedstawia relację, że potwierdzenie zapisu jest dokonywane przez prowadzącego na podstawie utworzonej przez niego listy studentów.

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 ?

3. Napotkane problemy

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:

  1. atrybut do podziału np. [a,b,c,d,e]
  2. lista nowych atrybutów np. [ [a,b] , [c], [d,e] ]
  3. lista list połączeń między nowymi atrybutami np. [ [ [a,b], [c] ], [ [c], [d,e] ] ].

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 ?

Materiały

Linki do UML i MVC

1. kwietnia 2008

Do dalszej analizy wybrano diagramy UML z :

System seminariów dla studentów - jeden z lepiej udokumentowanych

19. marca 2008

PetStore

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 =

  • example seems to be comprehensive
  • mistake: class diagram is showed in a very early development stage – v.good example how it should not be done :-) :!:
  • mistake: activity diarams are placed toward the end of the design process, should be just oppisite :-) :!:
  • mistake: physical diagram is placed after the class diagram should be before :!:
  • some diagrams are UML based some are not, i.e. DFD at the very beginning, it's not named DFD though and it is not complete
  • quite nice example of the MVC approach
  • an example how the design process should not be conducted, could be reworked with Hekate approach :!:

Igor Wojnicki 2007/01/05 11:59

12-13 marca 2008

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

4 marca 2008

1 marca 2008

Linki do ARD+ oraz XTT

pl/miw/miw08_ardcase_uml.txt · ostatnio zmienione: 2019/06/27 15:50 (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