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>