Module UML vers CSharp

Ce module génère une architecture basique similaire à celle publiée dans "Domain Driven Design principles" d'Eric Evans. “Domain Driven Design - Tackling Complexity in the Heart of Software”.

Le modèle de base est un diagramme de classes UML 1.4. Un certain nombre de stéréotypes, de tags et de pré-suppositions sont également utilisées afin de générer du code C# 2.0, les fichiers de mapping NHibernate v1.2, le fichier DDL de SQL Server et les fichiers de configuration Visual Studio 2005.

Démonstration

Cette démo présente une utilisation basique du générateur ...

Présentation

Architecture Cible

La figure ci-dessous présente l'architecture cible de l'application.

Objets métiers

Les sections suivantes présentent brièvement la transformation effectuée depuis les éléments du modèle UML et les éléments .Net.

Élément Source Élément cible
Modèle UML
  • Package métier
  • Common repository interface (IRepository.cs)
  • Fichier de projet Visual Studio 2005
  • Fichier assemblyinfo Visual Studio 2005
Package racine ayant le stéréotype “domainModule”
  • DomainModel.[DomainModuleName] namespace & package
Class ayant le stéréotype “entityObject”
  • Regular C# class
  • Fichier de mapping NHibernate
  • Si la tagged value “isAggregateRoot” est à vrai, alors génère une interface d'accès pour cette classe
Class ayant le stéréotype “valueObject”
  • Classe C# standard
Class ayant le stéréotype “enumeration”
  • énum C# , ayant pour valeurs les valeurs initiales des attributs de la classes

Persistance des données

Élément Source Élément cible
Modèle UML
  • Domain Persistence Implementation package
  • Implementation de IRepository.cs
  • Fichier de projet Visual Studio 2005
  • Fichier assemblyinfo Visual Studio 2005
Package racine ayant le stéréotype “domainModule”
  • DomainPersistenceImplementation .[DomainModuleName] namespace & package
Class ayant le stéréotype “entityObject”
  • Si la tagged value “isAggregateRoot” est à vrai, alors génère une implémentation de l'interface d'accès pour cette classe.
  • Si la tagged value “isAggregateRoot” est à vrai, alors génère une fabrique pour cette classe.

Couche d'accès aux données

Élément Source Élément cible
Modèle UML
  • SQL Server DDL

Tout élément

Élément Source Élément cible
Modèle UML
  • Package de PresentationConsoleUI
  • Fichier de projet Visual Studio 2005
  • Fichier assemblyinfo Visual Studio 2005
  • Fichier de configuration de l'application
  • Utilitaires NHibernate
  • Programme principal
Class ayant le stéréotype “entityObject”
  • Si la tagged value “isAggregateRoot” est à vrai, génère alors une opération réalisant une interaction très simple avec la console.

Globale

Élément Source Élément cible
Modèle UML
  • Fichier "solution" Visual Studio 2005

L'example SalesAdministration

Ce générateur est fournit avec un modèle UML d'exemple appelé SalesAdministration. Il est stocké dans le fichier "default.uml14". Ce fichier peut être utilisé comme source pour générer tous les éléments cités ci dessus. La génération se base sur un certain nombre d'hypothèses, les voici:

  • Les fichiers de configuration supposent que de manière relative au répertoire contenant SalesAdministration.sln, un degrés plus haut, un répertoire "NHibernate_v1.2" contenant tous les fichiers de configuration NHibernate 1.2. Voici un exemple de la structure:
    [My Documents]\Visual Studio 2005\Projects
                    NHibernate_v1.2
                            bin
                            …
                    SalesAdministration
                            DomainModel
                            …
                            SalesAdministration.sln
                            
    
  • Le code repose sur l'existance d'une base de donnée SQL-Server se nommant SalesAdministration. Si elle n'existe pas, créez la. Une fois créée il est possible d'exécuter le fichier DDL généré pour l'initialiser.

Planning

Status du modules
Objets métiers

100%

Persistance

100%

Couche d'accès aux données

100%

Fichiers de configuration

100%

Installation

L'installation est détaillée sur la page d'installation des modules .