Manuel de référence des fichiers au format XML utilisés par les drivers générés par Data Flow Generator V0

De Wikip
Révision datée du 28 décembre 2019 à 18:21 par toross>WikiAdmin (1 révision importée)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Version : 1.36.1 4943 (2019-12-28) 20191228182108

Data Flow Generator (Dfg) est un outil qui a pour but le développement de logiciels en gardant la synchronisation entre les sources (Python et C++) et les modèles utilisant DfgUml(UML) et DfgBehaviour(code Python des méthodes).

Il fait appel aux paradigmes de développement suivants : Round-trip engineering, Object-oriented programming et Model-driven software development.

Dfg offre aussi la possibilité d'écrire ou lire automatiquement la forme persistante des données décrites dans DfgUml.

Il existe deux versions de Dfg : V0 et V1.

Dfg V1 utilise DfgUml et DfgBehaviour et ne génère pour l'instant que du code Python tandis que Dfg V0 n'utilise que DfgUml et génère du code Python et C++.

Dfg V1 peut aussi importer DfgUml depuis les diagrammes de classes contenus dans le fichiers édités par le logiciel Dia.

L'outil est gratuitement utilisable en ligne sur Internet à l'adresse http://dfg.bht.fr pour la version 0 et sur http://dfg1.bht.fr pour la version 1.

Les sources générés par Dfg suivent sous la licence MPL 1.1 et/ou LPGL

Data Flow Generator (Dfg) is a tool that is intended for software development by keeping the synchronization between the sources (PYTHON and C++) and models using DfgUml (UML) and DfgBehaviour (Python codes of methods).

It uses the following paradigms of development: Round-trip engineering, Object-oriented programming and Model-driven software development.

Dfg also offers the ability to automatically read and write the persistent form of data described by DfgUml.

There are two versions of Dfg: V0 and V1.

Dfg V1 uses DfgUml and DfgBehaviour and generates, currently, only Python code while Dfg V0 uses only DfgUml and generates Python and C++ code.

Dfg V1 can also import DfgUml from class diagrams contained in the files edited by the software Dia.

The tool can be used online for free at http://dfg.bht.fr for version 0 and http://dfg1.bht.fr for version 1.

Sources generated by Dfg ar under the license MPL 1.1 and/or LPGL
Dfg1.png
Fig. n°1: Data Flow Generator V1

1 Introduction

Les fichiers XML utilisés par les driver générés par Data Flow Generator ont une structure gramaticale complètement décrite par le modèle (voir modèle des données).

Cependant pour des questions de contrôle, il existent certaines spécificités liés au support XML et la nature de certaines données (exemple polymorphisme).

2 La racine du des données

Le driver a besoin de certaines informations pour gérer ne serait-ce que la gestion des versions. Ces informations sont stockées dans la racine du document :

  • fileformatversion
cardinalité : 1
contient la version de la grammaire décrite par le contenu décrit dans le fichier XML. Sa valeur dépend du contenu.
  • DriverName
cardinalité : ?
est le nom du driver, ce nom est généré par DataFlowGenerator, il est écrit en dur dans le code généré. Par exemple s'il contient "DataFlowGenerator_XERCES_XML", c'est que ce fichier à été généré par du code écrit en c++ utilisant la librairie XERCES.
  • DriverVersion
cardinalité : ?
est la version du driver qui a généré le fichier. Ces numéros sont générés par DataFlowGenerator, ils sont écrits en dur dans le code généré.


3 Polymorphisme

Dans le cas de polymorphisme, le type de classe doit être stocké dans le fichier. L'attribut dfg_classname sert pour stocker cette information.

  • dfg_classname
cardinalité : ?
contient le type de la classe ou structure.

4 Exemple

4.1 Un modèle

<?xml version="1.0" encoding="ISO-8859-1"?>
<grammar type="xml" version="1.0.0" fileformatversion="1.0.0">
    <el name="dessin" type='CDessin' >
        <el name="base" type="CBase"  OnlyDefinition="1"/>
        <el type="CPoint" name="point" heritances="CBase" OnlyDefinition="1">
            <el name="x" type="float"/>
            <el name="y" type="float"/>
        </el>
        <el type="CSegment" name="segment" heritances="CBase" OnlyDefinition="1">
            <el name="A" type="@CPoint"/>
            <el name="B" type="@CPoint"/>
        </el>
        <el type="CCercle" name="cercle" heritances="CBase" OnlyDefinition="1">
            <el name="C" type="@CPoint"/>
            <el name="R" type="float"/>
        </el>
        <el type="CCompound" name="compound" heritances="CBase"  cardinality="*">
            <el  name="elements" type="@CBase" cardinality="*"  accept="CPoint:CSegment:CCercle:CCompound"/>
        </el>
    </el>
</grammar>

4.2 Un exemple de fichier correspondant au modèle

<dessin DriverName="DataFlowGenerator_XERCES_XML" DriverVersion="0.21.0" FileFormatVersion="1.0.0">
        <compound>
                <elements dfg_classname="CCercle">
                        <C>
                                <x>3.000000E+00</x>
                                <y>0.000000E+00</y>
                        </C>
                        <R>4.000000E+01</R>
                </elements>
                <elements dfg_classname="CSegment">
                        <A>
                                <x>5.000000E+00</x>
                                <y>6.000000E+00</y>
                        </A>
                        <B>
                                <x>1.000000E+00</x>
                                <y>-2.000000E+00</y>
                        </B>
                </elements>
                <elements dfg_classname="CCompound">
                        <elements dfg_classname="CCercle">
                                <C>
                                        <x>7.000000E+00</x>
                                        <y>0.000000E+00</y>
                                </C>
                                <R>3.000000E+01</R>
                        </elements>
                        <elements dfg_classname="CCompound">
                                <elements dfg_classname="CCercle">
                                        <C>
                                                <x>1.400000E+01</x>
                                                <y>1.000000E+01</y>
                                        </C>
                                        <R>2.000000E+01</R>
                                </elements>
                        </elements>
                </elements>
        </compound>
        <compound>
                <elements dfg_classname="CCercle">
                        <C>
                                <x>4.000000E+00</x>
                                <y>0.000000E+00</y>
                        </C>
                        <R>2.000000E+01</R>
                </elements>
        </compound>
</dessin>

5 Voir aussi