====== Opis ====== __**Projekt zakończony**__ Artur Poniedziałek (4AR) 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 ====== *[[pl:miw:miw08_ardcase_uml:projekt|przebieg prac nad projektem]] ====== Projekt ====== *[[pl:miw:miw08_ardcase_uml:aktualnewyniki|opracowanie projektu]] *[[pl:miw:miw08_ardcase_uml:ard|rejestracja studentów w ARD]] *[[pl:miw:miw08_ardcase_uml:ard_diagramy|uzyskane diagramy w ARD]] Gotowe przykłady w UML: * {{:pl:miw:miw08_ardcase_uml:borland.zip|:pl:miw:miw08_ardcase_uml:borland.zip}} * {{:pl:miw:miw08_ardcase_uml:kompletny_prosty_system.zip|:pl:miw:miw08_ardcase_uml:kompletny_prosty_system.zip}} * {{:pl:miw:miw08_ardcase_uml:sparx.zip|:pl:miw:miw08_ardcase_uml:sparx.zip}} * {{:pl:miw:miw08_ardcase_uml:sun_java_-_system_udzielania_pozyczek.zip|:pl:miw:miw08_ardcase_uml:sun_java_-_system_udzielania_pozyczek.zip}} * {{:pl:miw:miw08_ardcase_uml:system_seminariow_dla_studentow.zip|:pl:miw:miw08_ardcase_uml:system_seminariow_dla_studentow.zip}} ====== 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: - System rejestracji studentów to tak naprawdę kilka mniejszych systemów, które ze sobą współpracują. - Pierwszy z podsystemów przedstawia relację, że plan studenta oraz historia jego seminariów są w związku z opłatą oraz terminem seminarium - 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. - 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 [[hekate:bib:hekate_bibliography#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: - atrybut do podziału np. [a,b,c,d,e] - lista nowych atrybutów np. [ [a,b] , [c], [d,e] ] - 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 [[hekate:varda|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 [[hekate:varda|Varda]] ? ====== Materiały ====== ===== Linki do UML i MVC ===== * [[http://www.pst.informatik.uni-muenchen.de/~kochn/pUML2001-Hen-Koch.pdf|ogólnie o modelowaniu webowym]] * [[http://services.eng.uts.edu.au/~dbl/archive/2003-Low02b.pdf|rozrzerzenie UMLa o diagramy potrzebne do modelowania MVC]] ===== ===== === 1. kwietnia 2008 === Do dalszej analizy wybrano diagramy UML z : **System seminariów dla studentów - jeden z lepiej udokumentowanych** * [[http://www.agilemodeling.com/artifacts/|Strona główna ( patrz od pozycji UML )]] * [[http://www.agilemodeling.com/artifacts/systemUseCase.htm|Use Cases Diagrams]] * [[http://www.agilemodeling.com/artifacts/classDiagram.htm|Class Diagrams]] * [[http://www.agilemodeling.com/artifacts/activityDiagram.htm|Activity Diagrams]] * [[http://www.agilemodeling.com/artifacts/sequenceDiagram.htm|Sequence Diagrams]] * [[http://www.agilemodeling.com/artifacts/componentDiagram.htm|Component Diagrams]] ===== ===== === 19. marca 2008 === == PetStore == Ok, this could be //[[hekatedev:hekate_cases|a case]]// allright. See the [[http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/app-arch/app-arch5.html|discussion here]]. It is a example of using the [[http://java.sun.com/blueprints/patterns/MVC.html|MVC pattern in Java]]. General discussion of [[http://java.sun.com/blueprints/patterns/index.html|patterns in Java is here]]. Some classic Smalltalk [[http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html|MVC tips here]]. An idea is to investigate some common MVC frameworks, such as [[http://struts.apache.org/primer.html#mvc|Struts]] (see some [[http://www-128.ibm.com/developerworks/ibm/library/j-struts/|introduction]]). Another example, [[http://www.codeproject.com/aspnet/ModelViewController.asp|warning! ASP.NET]]. For [[wp>yeomens]]: //[[wp>Design Patterns]]// by the Gang'O'Four. **IW**: please evaluate! :-) --- //[[gjn@agh.edu.pl|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 :!: --- //[[wojnicki@agh.edu.pl|Igor Wojnicki]] 2007/01/05 11:59// ===== ===== === 12-13 marca 2008 === Uporządkowanie zasobów: **Przykład systemu udzielania pożyczek (Sun Java)** * [[http://developers.sun.com/jsenterprise/learning/tutorials/index.jsp|Strona główna tutoriala]] * [[http://developers.sun.com/jsenterprise/learning/tutorials/jse8/uml_use_case.html| Use Case]] * [[http://developers.sun.com/jsenterprise/learning/tutorials/jse8/uml_class_diagram.html| Class diagram]] * [[http://developers.sun.com/jsenterprise/learning/tutorials/jse8/uml_collab_diagram.html| Collaboration diagram]] * [[http://developers.sun.com/jsenterprise/learning/tutorials/jse8/uml_sequence_diagram.html| Sequence diagram]] > nice one --- //[[wojnicki@agh.edu.pl|Igor Wojnicki]] 2008/03/17 21:11// > OK! --- GJN **Piggy Bank System - niestety żaden narazie nie działa - napisałem już maila do IBM** * [[http://publib.boulder.ibm.com/infocenter/rsdhelp/v7r0m0/index.jsp?topic=/com.ibm.xtools.modeler.doc/topics/cactd.html|Strona główna tutoriala (IBM)]] * [[http://publib.boulder.ibm.com/help/livehelp/?pluginID=com.ibm.samplegallery&class=com.ibm.samplegallery.SampleGalleryAction&arg=com.ibm.xtools.sample.umlmodels/topics/piggybankusecasediagram.html|Sample: PiggyBank use-case diagram]] * [[http://publib.boulder.ibm.com/help/livehelp/?pluginID=com.ibm.samplegallery&class=com.ibm.samplegallery.SampleGalleryAction&arg=com.ibm.xtools.sample.umlmodels/topics/piggybankactivitydiagram.html|Sample: PiggyBank activity diagram]] * [[http://publib.boulder.ibm.com/help/livehelp/?pluginID=com.ibm.samplegallery&class=com.ibm.samplegallery.SampleGalleryAction&arg=com.ibm.xtools.sample.umlmodels/topics/piggybankclassdiagram.html|Sample: PiggyBank class diagram]] * [[http://publib.boulder.ibm.com/help/livehelp/?pluginID=com.ibm.samplegallery&class=com.ibm.samplegallery.SampleGalleryAction&arg=com.ibm.xtools.sample.umlmodels/topics/piggybanksequencediagram.html|Sample: PiggyBank sequence diagram]] * [[http://publib.boulder.ibm.com/help/livehelp/?pluginID=com.ibm.samplegallery&class=com.ibm.samplegallery.SampleGalleryAction&arg=com.ibm.xtools.sample.umlmodels/topics/compositestructurediagram.html|Sample: Composite structure diagram]] **Inny system** *[[http://www.developer.com/design/article.php/2109801|Creating Use Case Diagrams]] *[[http://www.developer.com/design/article.php/2206791|Creating UML Class Diagrams]] > it's rather a quick howto; out --- //[[wojnicki@agh.edu.pl|Igor Wojnicki]] 2008/03/17 21:11// **System płatniczy - wszystkie rodzaje diagramów (Borland)** * [[http://dn.codegear.com/article/31863#activity-diagrams| Use cases, Class, Activity i Sequence Diagrams]] > looks good --- //[[wojnicki@agh.edu.pl|Igor Wojnicki]] 2008/03/17 21:11// > OK! --- GJN **System płatniczy - niestety nie wszystkie diagramy dotyczą jednego systemu** * [[http://www.visual-paradigm.com/VPGallery/diagrams/index.html|Strona główna]] * [[http://www.visual-paradigm.com/VPGallery/diagrams/UseCase.html| Use Case Diagrams]] * [[http://www.visual-paradigm.com/VPGallery/diagrams/Class.html|Class Diagrams]] * [[http://www.visual-paradigm.com/VPGallery/diagrams/Sequence.html|Sequence Diagrams]] * [[http://www.visual-paradigm.com/VPGallery/diagrams/Activity.html|Activity Diagrams]] * [[http://www.visual-paradigm.com/VPGallery/diagrams/Collaboration.html|Communication Diagrams]] > looks good --- //[[wojnicki@agh.edu.pl|Igor Wojnicki]] 2008/03/17 21:11// > raczej nie! --- GJN **System seminariów dla studentów - jeden z lepiej udokumentowanych** * [[http://www.agilemodeling.com/artifacts/|Strona główna ( patrz od pozycji UML )]] * [[http://www.agilemodeling.com/artifacts/systemUseCase.htm|Use Cases Diagrams]] * [[http://www.agilemodeling.com/artifacts/classDiagram.htm|Class Diagrams]] * [[http://www.agilemodeling.com/artifacts/activityDiagram.htm|Activity Diagrams]] * [[http://www.agilemodeling.com/artifacts/sequenceDiagram.htm|Sequence Diagrams]] * [[http://www.agilemodeling.com/artifacts/componentDiagram.htm|Component Diagrams]] > quite good --- //[[wojnicki@agh.edu.pl|Igor Wojnicki]] 2008/03/17 21:11// > OK! --- GJN **Nieco prymitywny system (Sparx)** * [[http://www.sparxsystems.com/resources/uml2_tutorial/|Strona główna]] * [[http://www.sparxsystems.com/resources/uml2_tutorial/uml2_usecasediagram.html|Use Case Diagrams]] * [[http://www.sparxsystems.com/resources/uml2_tutorial/uml2_activitydiagram.html|Activity Diagrams]] * [[http://www.sparxsystems.com/resources/uml2_tutorial/uml2_sequencediagram.html|Sequence Diagrams]] > simple but I think it can be useful --- //[[wojnicki@agh.edu.pl|Igor Wojnicki]] 2008/03/17 21:11// > ewentualnie OK! --- GJN **Luźne przykłady diagramów sekwencji** * [[http://www.tracemodeler.com/gallery/|Sequence Diagrams + MVC ]] > out, these are just examples not cases --- //[[wojnicki@agh.edu.pl|Igor Wojnicki]] 2008/03/17 21:11// **Kompletny prosty system ( wszystkie istotne diagramy )** * [[http://portal.etsi.org/mbs/Languages/UML/uml_example.htm|Strona główna]] > nice one --- //[[wojnicki@agh.edu.pl|Igor Wojnicki]] 2008/03/17 21:11// > OK! --- GJN === 4 marca 2008 === * [[http://developers.sun.com/jsenterprise/learning/tutorials/jse8/uml_class_diagram.html|UML Modeling: Creating Class Diagrams]] * [[http://developers.sun.com/jsenterprise/learning/tutorials/jse8/uml_sequence_diagram.html|UML Modeling: Creating Sequence Diagrams]] * [[http://developers.sun.com/jsenterprise/learning/tutorials/jse7/narrated/uml/umlflash.html|UML Modeling with Sun Java Studio Enterprise 7 IDE - Flash Video]] * [[http://www.ibm.com/developerworks/rational/library/4697.html|UML Activity Diagrams: Detailing User Interface Navigation - najlepsze jak dotychczas przykłady]] * [[www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/| UML basics: The class diagram]] * [[http://publib.boulder.ibm.com/infocenter/rsdhelp/v7r0m0/index.jsp?topic=/com.ibm.xtools.modeler.doc/topics/cactd.html|Help - do modelowania UML]] * [[http://www.developer.com/design/article.php/10925_2210821_3|The UML Class Diagram: Part II]] * [[http://www.ee.oulu.fi/research/tklab/courses/521464S/ROOPhomework.pdf|projektowania class diagram - opis]] * [[http://www.visual-paradigm.com/VPGallery/| Gallery Home - UML narzędzia i przykłady diagramów ]] ===== ===== === 1 marca 2008 === * [[http://www.agilemodeling.com/artifacts/|Ciekawe przykłady różnego rodzaju diagramów na podstawie książki]] * [[http://www.sparxsystems.com/resources/uml2_tutorial/uml2_activitydiagram.html|Sparx Systems - UML 2 Tutorial - Activity Diagram]] * [[http://www.ibm.com/developerworks/rational/library/3101.html|UML's Sequence Diagram - rozbudowany przykład ze strony IBM]] * [[http://davors.com/articles/turnstile-system-example-use-cases/|Use case - świetny przykład]] * [[http://www.sequencediagrameditor.com/diagrams/AutomatedRegistrationSystem.htm|Sequence diagram - rejestracja studenta przez www ]] * [[http://www.tracemodeler.com/gallery/|Przykłady diagramów sekwencji w jpg-ach]] * [[http://portal.etsi.org/mbs/Languages/UML/uml_example.htm|rózne diagramy]] * [[http://www.objectmentor.com/resources/articles/umlCollaborationDiagrams.pdf|model dynamiczny]] * [[http://www.devx.com/ibm/Article/21623|Tip: Introduction to UML sequence diagrams]] * [[http://www.visual-paradigm.com/VPGallery/diagrams/State.html|Ciekawe przykładziki różnych diagramów]] * [[http://uml.netbeans.org/qa/nb55/StateDiagram/Plan_STD_Usability.html|uml: State Diagram Usability Samples]] * [[http://jeffsutherland.com/oopsla98/pavel.html|Structuring Specification of Business Systems with UML]] ===== Linki do ARD+ oraz XTT ===== * [[https://ai.ia.agh.edu.pl/wiki/hekate:bib:hekate_bibliography#gjn2008flairs-ardprolog|opis ARD+ ]] * [[https://ai.ia.agh.edu.pl/wiki/hekate:bib:hekate_bibliography#ali2008flairs|opis XTT+ ]]