• Aucun résultat trouvé

Validation des mod`eles XML par rapport `a leur XML sch´ema

Les descriptions XML sch´ema (XSD) sont enregistr´ees dans un dossier de l’outil FU-JABA. Pour montrer la validit´e d’une description XML par rapport `a son XML sch´ema, nous utilisons des outils XML afin de v´erifier la bonne formation de la description XML et pour montrer la conformit´e du mod`ele (description XML) par rapport `a son m´eta-mod`ele

(description XML sch´ema). Il faut v´erifier que la description XML est une instance de son XML sch´ema correspondant.

Dans l’entˆete de chaque description XML g´en´er´e, le chemin permettant d’acc´eder au fichier XSD correspondant est ajout´e d’une fac¸on automatique dans l’attribut

xsi :noNamespaceSchemaLocation(ligne 3).

1 <?xml version="1.0" encoding="UTF-8"?> <ArchitecturalStyleM-M

2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

3 xsi:noNamespaceSchemaLocation="ArchitecturalStyleMM.xsd">

4 ...

Le plug-in, grˆace `a des modules Java, permet aussi de v´erifier les r`egles intra-mod`ele tels que l’unicit´e des noms des composants, des noms des connecteurs, des noms des ports, etc. Il automatise aussi les r`egles inter-mod`eles permettant le passage d’un mod`ele `a un autre.

6.3.3 Transformation vers Z

Apr`es la validation, nous passons `a la phase de transformation des mod`eles XML vers le langage Z. Cette transformation est r´ealis´ee d’une fac¸on automatique grˆace `a notre plug-in en cliquant sur le bouton UML to Z.

Afin d’impl´ementer le module UML to Z et de l’int´egrer dans l’outil FUJABA, nous avons suivi les ´etapes suivantes :

– D´eveloppement des fichiers n´ecessaires : programmes java et classes d’action : “plug-in.xml” et “stable.xml”.

Le fichier “plug-in.xml” contient des informations g´en´erales sur le plug-in tels que son nom et sa version. Le fichier “stable.xml” d´efinit les ´el´ements `a ajouter dans l’interface graphique de l’outil FUJABA.

– D´eploiement des fichiers d´evelopp´es et cr´eation du fichier JAR qui encapsule les classes JAVA, ainsi que les classes d’action.

– Installation du plug-in.

Nous pr´esentons ici, le fichier “stable.xml”. Il permet de d´efinir la barre des menus, les sous-menu, les menus flottants ainsi que les actions `a ex´ecuter.

1

2 <UserInterface>

3 <!-- **************************** List Actions here ********************** -->

4 <Action id="MyPlugin.newMyDiagram" class="de.upb.myplugin.actions.

5 NewArchitecturalDiagramAction" enabled="true">

6 <Name>New Architectural Diagram</Name>

7 <Mnemonic>w</Mnemonic>

8 <ToolTip>Create a new Architectural Diagram</ToolTip>

9 <Icon>de/upb/myplugin/images/none.gif</Icon>

10 </Action>

11 <Action id="MyPlugin.newMyComponent" class="de.upb.myplugin.actions.

12 NewMyComponentAction" enabled="true">

14 <Mnemonic>C</Mnemonic>

15 <ToolTip>Create a new Component</ToolTip>

16 <Icon>de/upb/myplugin/images/compo.gif</Icon>

17 </Action>

18 <Action id="MyPlugin.newMyConnection" class="de.upb.myplugin.actions.

19 NewMyConnectionAction" enabled="true">

20 <Name>Create an Assembly Connector</Name>

21 <Mnemonic>O</Mnemonic>

22 <ToolTip>Create an Assembly Connector</ToolTip>

23 <Icon>de/upb/myplugin/images/assembly.gif</Icon>

24 </Action>

25 <Action id="MyPlugin.newMyDelegation" class="de.upb.myplugin.actions.

26 NewMyDelegationAction" enabled="true">

27 <Name>Create a Delegation Connector</Name>

28 <Mnemonic>g</Mnemonic>

29 <ToolTip>Create a Delegation Connector</ToolTip>

30 <Icon>de/upb/myplugin/images/delegation.gif</Icon>

31 </Action>

32 ...

33 <Action id="umltoz_id" class="de.upb.umltoz.actions.ShowUMLTOZDialog"

34 enabled="true">

35 <Name>UML to Z</Name>

36 <Mnemonic>m</Mnemonic>

37 <ToolTip>UML to Z</ToolTip>

38 </Action>

39 <!-- **************************** Define MenuBar here ********************** -->

40 <MenuBar id="mainMenuBar"> 41 <MenuSection id="diagramsMenuSection"> 42 <Menu id="diagramsMenu"> 43 <MenuSection id="newDiagramSection"> 44 <MenuItem actionId="MyPlugin.newMyDiagram"/> 45 </MenuSection> 46 </Menu> 47 </MenuSection> 48 <MenuSection id="diagramSpecificSection">

49 <Menu id="MyPlugin.myDiagramMenu" visible="false">

50 <Name>Architectural Diagram</Name> 51 <Mnemonic>M</Mnemonic> 52 <MenuSection id="MyPlugin.myDiagramMenu.newSection"> 53 <MenuItem actionId="MyPlugin.newMyComponent"/> 54 <MenuItem actionId="MyPlugin.newMyConnection"/> 55 <MenuItem actionId="MyPlugin.newMyDelegation"/> 56 ... 57 </MenuSection> 58 </Menu> 59 <MenuSection id="diagramSpecificSection">

60 <Menu id="Ztools_id" visible="true">

61 <Name>Z tools</Name> 62 <Mnemonic>z</Mnemonic> 63 <MenuSection id="Ztools_id.umltoz"> 64 <MenuItem actionId="umltoz_id"/> 65 </MenuSection> 66 </Menu> 67 </MenuSection> 68 </MenuBar>

69 <!-- **************************** List PopupMenus here ********************** -->

70 <PopupMenu class="de.upb.myplugin.metamodel.MyComponent"> 71 <MenuSection id="de.upb.myplugin.menusection"> 72 <MenuItem actionId="MyPlugin.newMyComponent"/> 73 <MenuItem actionId="MyPlugin.newMyPort"/> 74 <MenuItem actionId="MyPlugin.newMyConstraint"/> 75 <MenuItem actionId="MyPlugin.EditComponent"/> 76 </MenuSection> 77 </PopupMenu> 78 <PopupMenu class="de.upb.myplugin.metamodel.MyConnection"> 79 <MenuSection id="de.upb.myplugin.bendmenusection"> 80 <MenuItem actionId="MyPlugin.newBend"/> 81 <MenuItem actionId="MyPlugin.AddToInsert"/>

82 <MenuItem actionId="MyPlugin.AddToDelete"/>

83 <MenuItem actionId="deleteBend"/>

84 </MenuSection>

85 </PopupMenu>

86 ...

87 <!-- **************************** List ToolBars here ********************** -->

88 <ToolBar id="MyPlugin.myDiagramToolBar" rolloverButtons="true" visible="false">

89 <ToolBarSection id="MyPlugin.myDiagramToolBar.newSection"> 90 <Button actionId="MyPlugin.newMyComponent"/> 91 <Button actionId="MyPlugin.newMyPort"/> 92 <Button actionId="MyPlugin.newMyInterfaceRequired"/> 93 <Button actionId="MyPlugin.newMyInterfaceProvided"/> 94 <Button actionId="MyPlugin.newMyConnection"/> 95 <Button actionId="MyPlugin.newMyDelegation"/> 96 <Button actionId="exportoXML"/> 97 ... 98 </ToolBarSection> 99 </ToolBar> 100 </UserInterface>