générer du code à partir des diagrammes de classes uml

Upload: nissam72

Post on 07-Apr-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 Gnrer du code partir des diagrammes de classes UML

    1/8

    Important

    ommen : g n rer u co e par r esdiagrammes de classes UMLVisual Studio 2010

    Ce Feature Pack Visual Studio 2010 vous permet de crer du code partir des lments UML dansVisual Studio 2010 Ultimate l'aide de la commande Generate Code. Par dfaut, la commandegnre un type C# pour chaque type que vous slectionnez sur un diagramme de classes UML.

    Vous pouvez modifier et tendre ce comportement en modifiant ou en copiant les modles de textequi gnrent le code. Vous pouvez spcifier un comportement distinct pour les types contenus dansles diffrents packages de votre modle. Pour plus d'informations, consultez Packs defonctionnalits Visual Studio.

    La commande Generate Code est particulirement adapte la gnration de code partir de laslection d'lments de l'utilisateur, et la gnration d'un fichier pour chaque classe UML ouautre lment. Par exemple, la capture d'cran prsente deux fichiers C# gnrs partir de deuxclasses UML.

    Si, en revanche, vous voulez gnrer du code dans lequel les fichiers gnrs n'ont pas derelation 1:1 avec les lments UML, vous pouvez envisager d'crire des modles de texte appelsavec la commande Transformer tous les modles. Pour plus d'informations sur cette mthode,consultez Comment : gnrer des fichiers partir d'un modle UML.

    Vous devez installer un pack Visual Studio 2010 Feature Pack pour utiliser cette fonctionnalit.

    Si vous avez remplac Visual Studio 2010 Visualization and Modeling Feature Pack par VisualStudio 2010 Feature Pack 2, vous devez remapper tous les modles personnaliss pour les

    projets de gnration de code l'emplacement suivant :

    \Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\\

    Pour plus d'informations, consultez Personnalisation de la commande Generate Code.

    mment : gnrer du code partir des diagrammes de classes UML http://msdn.microsoft.com/fr-fr/l ibrary/ff657795.asp

    r 8 22/10/2011 11:0

  • 8/3/2019 Gnrer du code partir des diagrammes de classes UML

    2/8

    Utilisation de la commande Generate Code

    Transformations de gnration de code par dfaut

    Pour plus d'informations sur les diagrammes de classes UML dans Visual Studio Ultimate, consultezles rubriques suivantes :

    Diagrammes de classes UML : rfrence

    Diagrammes de classes UML : indications

    La procdure suivante dcrit le comportement par dfaut de la commande Generate Code :

    Pour gnrer un fichier spar pour chaque lment

    Crez un modle UML qui contient des classes. Vous pouvez appliquer des strotypes aux

    lments de modle.Pour plus d'informations, consultez Transformations de gnration de code par dfaut.

    1.

    Sur un diagramme de classes ou dans l'Explorateur de modles UML, slectionnez leslments partir desquels vous voulez gnrer le code. Vous pouvez slectionner l'un deslments suivants :

    Un ensemble spcifique d'lments.

    Un package ou le modle, pour gnrer le code partir de son contenu.

    Le diagramme, pour en slectionner tous les lments.

    2.

    Cliquez avec le bouton droit sur un lment slectionn, puis cliquez sur Generate Code.

    La premire fois que vous utilisez la commande Generate Code dans un modleparticulier, une bote de dialogue s'affiche. Cette bote de dialogue vous permet de modifierles paramtres de gnration de code du modle.

    Cliquez sur OK, sauf si vous voulez modifier ces paramtres.

    Pour retourner ultrieurement cette bote de dialogue, cliquez avec le bouton droit sur lediagramme, puis cliquez sur Configure Default Code Generation Settings (Configurerles paramtres de gnration de code par dfaut). Pour plus d'informations, consultezPersonnalisation de la commande Generate Code.

    3.

    Les fichiers qui contiennent le code C# sont gnrs. Dans le cas par dfaut, un fichier estgnr pour chaque type, et les fichiers sont gnrs dans un projet de bibliothque declasses C#. Vous pouvez toutefois personnaliser ce comportement. Pour plus d'informations,consultez Personnalisation de la commande Generate Code.

    Certains tests de validation sont appliqus au modle pour vrifier qu'il peut tre traduit en C#.Si ces tests chouent, un message d'erreur est affich et la gnration de code n'est pasexcute. Si vous avez cr une commande de menu de validation, le code n'est pas gnrpour tout lment pour lequel votre commande de validation choue. Pour plus d'informations,consultez Comment : dfinir des contraintes de validation pour les modles UML.

    Cette section rsume les rsultats produits par la commande Generate Code, sauf si vouspersonnalisez la commande. Pour plus d'informations, consultez Personnalisation de lacommande Generate Code.

    Un t e C# est roduit our cha ue t e ue vous avez slectionn dans le modle UML.

    mment : gnrer du code partir des diagrammes de classes UML http://msdn.microsoft.com/fr-fr/l ibrary/ff657795.asp

    r 8 22/10/2011 11:0

  • 8/3/2019 Gnrer du code partir des diagrammes de classes UML

    3/8

    Conseil

    Variation du code gnr

    Chaque type est plac dans un fichier de code spar dans le dossier GeneratedCode.

    Si le type UML est contenu dans un package, le type C# gnr est plac l'intrieur d'unespace de noms et le fichier est gnr dans un dossier portant le mme nom que l'espacede noms.

    Une proprit C# est gnre pour chaque Attribute d'une classe UML.

    Une mthode C# est gnre pour chaque Operation d'un type UML.

    Un champ C# est gnr pour chaque association navigable laquelle la classe participe.

    En ajoutant un strotype chaque type UML, vous pouvez contrler un plus grand nombre deproprits du type C# gnr.

    Pour crer ce type C# Dessiner ce type UML Appliquer ce strotype

    Pour dfinir un strotype sur un type ou un autre lment

    Cliquez avec le bouton droit sur l'lment sur un diagramme ou dans l'Explorateur demodles UML, puis cliquez sur Proprits.

    1.

    Dans la fentre Proprits, cliquez sur la flche de droulement dans la propritStrotypes, puis activez la case cocher pour le strotype que vous voulez appliquer.

    2.

    Dveloppez la proprit Strotypes pour voir les proprits supplmentaires que vouspouvez dfinir.

    3.

    Les proprits Description de types, d'attributs, d'oprations et d'associations sont crites dansles commentaires dans le code gnr. Les lments de commentaire lis aux typessont crits dans les commentaires .

    Classe Classe ou

    C# class

    Interface Interface ou

    C# interface

    numration numration ou

    C# enum

    Dlgu Classe C# delegate

    Struct Classe C# struct

    Si les strotypes C# ne s'affichent pas, activez le profil C# pour le modle ou pour unpackage qui contient les lments de modle auxquels vous vous intressez.Slectionnez le package ou la racine du modle dans l'Explorateur de modles UML.Ensuite, dans la fentre Proprits, cliquez sur Profil, puis activez le profil C#.

    mment : gnrer du code partir des diagrammes de classes UML http://msdn.microsoft.com/fr-fr/l ibrary/ff657795.asp

    r 8 22/10/2011 11:0

  • 8/3/2019 Gnrer du code partir des diagrammes de classes UML

    4/8

    Personnalisation de la commande Generate Code

    Remarque

    Le code gnr varie en fonction des proprits de chaque type, attribut ou opration. Parexemple, si vous affectez la proprit Is Abstract d'une classe la valeur true, le mot clabstract s'affichera sur la classe gnre. Si vous affectez la proprit Multiplicit d'unattribut la valeur 0..*, le type de la proprit gnre sera IEnumerable.

    De plus, chaque strotype fournit plusieurs proprits supplmentaires que vous pouvez dfinir.Ces valeurs sont traduites en mots cls appropris dans le code C#. Par exemple, si vousdfinissez la proprit Is Static sur une classe, la classe C# sera static.

    Pour dfinir ces proprits supplmentaires, slectionnez la classe ou un autre lment dans lediagramme. Dans la fentre Proprits, dveloppez Strotypes, puis dveloppez lestrotype C#, tel que Classe C#. Pour les classes, ces proprits supplmentaires incluent :

    CLR Attributes

    Is Partial

    Is Static

    Is Unsafe

    Package Visibility

    Chaque attribut et opration dispose galement de proprits de strotype que vous pouvezdfinir. Si vous ne voyez pas les proprits sur un nouvel attribut, excutez la commandeGenerate Code.

    La commande Generate Code transforme vos lments de modle l'aide d'un ensemble demodles de texte. Pour plus d'informations sur les modles de texte, consultez Gnration decode et modles de texte T4.

    Les modles sont spcifis dans un ensemble de liaisons de modles de texte. Une liaison de

    modle de texte spcifie quel modle doit tre appliqu, o la sortie gnre doit tre place,ainsi que d'autres paramtres de la commande Generate Code.

    Lorsque vous excutez pour la premire fois la commande Generate Code sur un modleparticulier, elle joint un ensemble par dfaut de liaisons de modles la racine du modle. Cesliaisons s'appliquent tous les lments du modle.

    Toutefois, vous pouvez effectuer des substitutions et des ajouts pour ces liaisons par dfaut, enjoignant vos propres liaisons des packages, des classes ou d'autres lments. Une liaisons'applique tous les lments contenus dans l'lment auquel elle est jointe. Par exemple, sivous voulez que tous les types d'un package particulier soient transforms par un ensemble demodles diffrent ou soient sortis dans un dossier distinct, vous pouvez joindre des liaisons demodles au package.

    Pour inspecter les liaisons de modles jointes un lment de modle, cliquez sur les points desuspension [...] dans la proprit Text Template Bindings dans la fentre Proprits.

    La commande Generate Code applique des modles chaque lment de modle que vous avezslectionn. Pour chaque lment, l'ensemble de modles appliqu est l'ensemble combin desmodles joints ses conteneurs, jusqu' la racine du modle incluse.

    Si deux liaisons de modles dans cet ensemble ont le mme nom, la liaison dans le plus petitconteneur substitue celle dans le plus grand conteneur. Par exemple, la racine modle a uneliaison avec le nom Class Template. Pour que votre propre modle soit appliqu au contenud'un package particulier, dfinissez votre liaison de modle avec le nom Class Template.

    Plusieurs modles peuvent tre appliqus un lment de modle. Vous pouvez gnrer

    plusieurs fichiers partir de chaque lment de modle.

    Les liaisons jointes la racine du modle agissent comme des valeurs par dfaut pour tous

    mment : gnrer du code partir des diagrammes de classes UML http://msdn.microsoft.com/fr-fr/l ibrary/ff657795.asp

    r 8 22/10/2011 11:0

  • 8/3/2019 Gnrer du code partir des diagrammes de classes UML

    5/8

    Pour joindre des liaisons de modles de texte un package ou un autre lment de modle

    Dans l'Explorateur de modles UML, cliquez avec le bouton droit sur un lment demodle, puis cliquez sur Proprits. En gnral, vous joignez des liaisons de modles detexte un package ou la racine du modle.

    1.

    Dans la fentre Proprits, cliquez sur le bouton de slection ([...]) dans la propritText Template Bindings.

    La bote de dialogue Liaisons de modles de texte s'affiche.

    2.

    Cliquez sur Ajouter pour crer une liaison de modle de texte.

    - ou -

    Cliquez sur une liaison existante pour la modifier.

    Chaque liaison de modle dfinit la manire dont un modle spcifi doit tre appliqu l'lment de modle que vous avez slectionn, et aux autres lments de modle qu'ilcontient.

    3.

    Dans la bote de dialogue, dfinissez les proprits de la liaison de modle de texte.

    Proprit Description

    Important

    L'expression {Nom} ou {Nom.Propritaire} ne peut tre utilise que dansla proprit Target Name.Pour modifier le nom de la classe gnre, vousdevez modifier le modle.Pour plus d'informations, consultez criture d'unmodle de texte.

    4.

    les lments du modle. Pour afficher ces liaisons par dfaut, cliquez avec le bouton droit surla surface de diagramme, puis cliquez sur Configure Default Code Generation Settings(Configurer les paramtres de gnration de code par dfaut). Vous pouvez galementslectionner la racine du modle dans l'Explorateur de modles UML, puis cliquer sur [...]dans la proprit Text Template Bindings. Les liaisons ne s'affichent pas tant que vousn'avez pas utilis la commande Generate Code au moins une fois. Les liaisons de modlesne peuvent pas tre jointes un diagramme.

    Nom Nom pour cette liaison. Pour substituer une liaison hrite d'un modle oud'un package contenant, utilisez le mme nom que la liaison substituer.

    Overwrite Si la valeur est true, tout code existant est remplac.

    Nom de lacible

    Nom du fichier gnr.

    Vous pouvez insrer des expressions dans cette chane, telles que {Nom} ou{Nom.Propritaire}. Par exemple, vous pouvez crire :

    {Nom.Propritaire}_{Nom}. L'expression est value sur l'lment demodle. Elle peut utiliser des proprits d'lments, mais pas de mthodes.Pour trouver les proprits pouvant tre utilises, recherchez les propritsde types dans Microsoft.VisualStudio.Uml.*.

    Chemind'accs auprojet

    Spcifie le chemin d'accs au projet Visual Studio qui contiendra les fichiersde sortie de la transformation. Utilisez des valeurs types pour crer unprojet. Cliquez sur le bouton de slection ([...]) pour slectionner un projetexistant.

    mment : gnrer du code partir des diagrammes de classes UML http://msdn.microsoft.com/fr-fr/l ibrary/ff657795.asp

    r 8 22/10/2011 11:0

  • 8/3/2019 Gnrer du code partir des diagrammes de classes UML

    6/8

    criture d'un modle de texte

    Conseil

    Important

    {PackageStructure} peut tre utilis uniquement dans la proprit Target

    Directory.

    Conseil

    %LocalAppData% est en gnral NomLecteur:\Users\NomUtilisateur\AppData\Local.Sous Windows XP et Windows 2003, utilisez%AppData% au lieu de %LocalAppData%.

    Vous pouvez joindre un lment le nombre de liaisons de votre choix.5.

    Vous pouvez crire vos propres modles de texte. Les modles de texte peuvent gnrer un codeprogramme ou tout autre type de fichier texte.

    Nous vous recommandons de commencer par modifier des copies des modles standard. Vouspouvez copier les modles partir des emplacements suivants :

    Visual Studio 2010 Visualization and Modeling Feature Pack :%LocalAppData%\Microsoft\VisualStudio\10.0\Extensions\Microsoft\\1.0\Templates\Text\

    Un projet est cr s'il n'existe pas. Il s'agit d'un projet de bibliothque declasses C#.

    Pour ce faire, vous devez taper le projet directement. Vous pouvez incluredes macros de variables d'environnement telles que %ProgramFiles% ou%LocalAppData%.

    Rpertoirecible

    Dossier dans lequel le fichier cible est gnr. Le chemin d'accs est relatifau dossier du projet.

    Vous pouvez utiliser l'expression {PackageStructure} pour insrer unchemin d'accs qui correspond aux noms des packages contenants. La valeurpar dfaut est \GeneratedCode\{PackageStructure}. Vous pouvez galementinclure des variables d'environnement telles que %TEMP% ou%HomePath%.

    Nom defichier dumodle

    Modle qui excutera la transformation.

    Vous pouvez utiliser les modles fournis ou crer le vtre. Les modlesfournis se trouvent dans les emplacements suivants :

    Visual Studio 2010 Visualization and Modeling Feature Pack :

    %LocalAppData%\Microsoft\VisualStudio\10.0\Extensions\Microsoft\\1.0\Templates\Text\

    Visual Studio 2010 Feature Pack 2 : \Microsoft Visual Studio10.0\Common7\IDE\Extensions\Microsoft\Modeling\\

    %LocalAppData% est en gnral NomLecteur:\Users\NomUtilisateur\AppData\Local.

    mment : gnrer du code partir des diagrammes de classes UML http://msdn.microsoft.com/fr-fr/l ibrary/ff657795.asp

    r 8 22/10/2011 11:0

  • 8/3/2019 Gnrer du code partir des diagrammes de classes UML

    7/8

    Visual Studio 2010 Feature Pack 2 : \Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Modeling\\

    Pour comprendre les modles de texte, reportez-vous aux rubriques suivantes.

    Un modle de texte est un prototype du fichier rsultant et contient la fois le textersultant et le code de programme qui lit le modle. Pour plus d'informations, consultezGnration de code et modles de texte T4.

    Pour naviguer dans le modle UML dans le code de programme, vous devez utiliser l'APIUML. Pour plus d'informations, consultez Comment : naviguer dans le modle UML etRfrence des API pour l'extensibilit de la modlisation UML.

    Pour utiliser les modles avec la commande Generate Code, vous devez inclure la directive demodlisation. Par exemple :

    L'attribut ElementType dfinit le type d'lment UML auquel ce modle s'applique.Dans le modle, this appartient une classe temporaire qui a les proprits suivantes :

    Element = IElement UML auquel le modle est appliqu.

    Errors: CompilerErrorCollection

    Host: ITextTemplatingEngineHost

    ModelBus: ModelBus. Pour plus d'informations, consultez Comment : intgrer des modlesUML d'autres modles et outils.

    ProfileName = "C#Profile"

    ServiceProvider: IServiceProvider

    Session: TextTemplatingSession.

    Store: Store. Il s'agit du Magasin du kit de dveloppement logiciel Visualization andModeling SDK sur lequel ModelStore UML est implment. Pour obtenir le IModelStoreUML, utilisez this.Element.GetModelStore().

    Les points suivants peuvent vous tre utiles lorsque vous crivez un modle de texte. Cesinformations sont dcrites en dtail dans Gnration de code et modles de texte T4.

    Pour dboguer un modle de texte, insrez ce qui suit dans un segment d'instruction :System.Diagnostics.Debugger.Launch() ;

    Vous pouvez dfinir l'extension de nom de fichier du rsultat dans la directive Output. Unedirective Output est obligatoire dans chaque modle de texte.

    Certains assemblys sont rfrencs automatiquement par le modle. Ces assemblysincluent par exemple System.dll et Microsoft.VisualStudio.Uml.Interfaces.dll.

    Pour util iser d'autres assemblys dans votre code de programme de gnration, vous devezutiliser une directive Assembly. Par exemple :

    Certains espaces de noms tels que System sont imports automatiquement dans votrecode de programme. Pour d'autres espaces de noms, vous pouvez utiliser la directiveImport de la mme manire que vous utiliseriez une instruction using. Par exemple :

    ous n ows et n ows , ut sez pp ata au eu e oca pp ata .

    mment : gnrer du code partir des diagrammes de classes UML http://msdn.microsoft.com/fr-fr/l ibrary/ff657795.asp

    r 8 22/10/2011 11:0

  • 8/3/2019 Gnrer du code partir des diagrammes de classes UML

    8/8

    Voir aussi

    Utilisez la directive Include pour rfrencer le texte d'un autre fichier.

    Les parties du modle places entre crochets sont excutes par la commandeGenerate Code. Les parties du modle l'extrieur de ces crochets sont copies vers lefichier de rsultats. Il est important de distinguer le code de gnration et le texte gnr.Le texte peut tre gnr dans n'importe quel langage.

    sont values et converties en chanes.

    Concepts

    Diagrammes de classes UML : rfrenceDiagrammes de classes UML : indications

    Autres ressources

    Comment : gnrer des fichiers partir d'un modle UML

    mment : gnrer du code partir des diagrammes de classes UML http://msdn.microsoft.com/fr-fr/l ibrary/ff657795.asp