Archive

Articles taggués ‘UML / Enterprise Architect’

Import en masse d’exigences depuis Excel vers Enterprise Architect avec le module eaXL d’eaDocX

eaDocX

Le module eaXL d’eaDocX permet de synchroniser des informations stockées au format Excel avec un projet de modélisation Sparx Enterprise Architect, par exemple pour importer et exporter des exigences, des classes (avec leurs attributs ou opérations), des cas d’utilisations, etc..

Cet article présente un retour d’expérience (REX) sur l’utilisation d’eaXL dans le cadre d’une réponse à appel d’offre, où les nombreuses exigences du client ont été importées dans un projet Enterprise Architect afin de faciliter l’analyse des besoins et l’élaboration d’une réponse via une approche par les modèles. Les étapes permettant d’importer en masse les exigences du client sont détaillées dans cet article.

Contexte

J’ai récemment travaillé sur l’appel d’offre d’un client comportant plus d’une centaine d’exigences organisées par catégories. La description, référence, et catégorie de chaque exigence ont été fournies au format Excel dans le but de compléter ce document avec nos réponses et propositions (livrable pour le client). Ayant la tâche d’étudier chacune des exigences vis à vis de la faisabilité, des efforts nécessaires, et de solutions à proposer, j’ai naturellement choisi d’effectuer ce travail en m’appuyant sur un projet de modélisation Enterprise Architect.

Une réponse à appel d’offre nécessite de travailler sur un large périmètre de demandes et d’attentes ; une approche par les modèles (model-driven) présente l’avantage de faciliter cette tâche fastidieuse en centralisant l’ensemble des informations, diagrammes et réponses dans un référentiel. L’accès en mode collaboratif permet également à plusieurs collaborateurs de travailler sur cette réponse à appel d’offre.
Lire la suite…

EA User Group 2014 : smart use cases, génération de code, EA11 cloud services, RAS et OSLC

J’ai assisté au mois de Mai dernier à l’EA User Group 2014 où s’est réunie la communauté d’utilisateurs d’Enterprise Architect. Avant d’animer ma présentation sur les alternatives permettant de partager un projet EA pour travailler en mode collaboratif, j’ai pu suivre plusieurs présentations. Voici celles qui ont été retenues pour cet article :

  1. Pragmatic agile model driven development using smart use cases de Sander Hoogendoorn (Capgemini, Pays Bas)
  2. EA Version 11 Cloud Services, OSLC and RAS de Phil Chudley (Dunstan Thomas, UK)

Lire la suite…

Trier les éléments d’un paquetage par alias dans Sparx Enterprise Architect avec un script Project Browser

J’ai récemment travaillé sur un nouveau projet Enterprise Architect dans lequel j’ai importé les exigences initiales à partir d’un fichier Excel avec eaDocX. Chacune des exigences comportait alors les informations suivantes sous Enterprise Architect : titre, référence (importée dans le champ Alias), description. Par défaut, Sparx Enterprise Architect tri le nom des exigences d’un paquetage sélectionné par ordre alphabétique.

Après avoir importé mes exigences, j’avais besoin de les trier par alias (exemple : REQ-TEST-001, REQ-TEST-002, REQ-TEST-003, etc). La capture d’écran suivante illustre sur la partie gauche les exigences affichées dans l’explorateur du projet (Project Browser), et sur la partie droite l’ordre d’affichage souhaité i.e. triées par alias.

Cet article présente l’installation du script SortByAlias pour trier par alias les éléments d’un paquetage sélectionné. 

Lire la suite…

Comment créer simplement un template pour générer un document avec Enterprise Architect

La dernière fois nous avons vu comment utiliser simplement un template pour générer un document avec Enterprise Architect, nous allons voir aujourd’hui comment créer notre propre template.

Les outils de modélisation, dont Enterprise Architect, sont très souvent critiqués sur leur module de génération de documentation (considéré généralement comme complexe, incomplet et peu performant). Nous allons voir en fait que la création et la génération de rapports et autres documents est possible et même assez simple à réaliser avec Enterprise Architect.

(Article réalisé avec la version 10.0.1009 de l’outil.)

 

 

Ouvrons la fenêtre de création de template à l’aide du menu <Project>/<Documentation>/<Document Template Designer>.

La fenêtre de création de template contient un explorateur et un éditeur de texte. L’explorateur contient l’ensemble des éléments structurant un projet Enterprise Architect et l’éditeur va permettre d’insérer du texte et des champs.
 
1ère étape : création du template

Je clique sur l’icône <New Template> pour faire apparaître la boîte de création de template et me permettre de cocher les cases qui jusqu’à présent étaient grisées.

Je donne ensuite un nom à mon template et je valide.
 
2e étape : Insertion de la structure

Je souhaite Créer un document de cas d’utilisation avec leurs scénarios, exigences, pré et post conditions et diagrammes associés.
Je coche alors les cases correspondant aux éléments que je veux incorporer dans mon document.
Je commence par cocher <Package> pour générer l’arborescence des packages

Je constate que quand je coche une case, EA insère un marqueur de début et de fin dans le document. (Pour le marqueur <package>, EA coche automatiquement <Child package> – ce qui permettra une génération récursive-).

package >
[right-click-to-insert-Package-field(s)]
child packages >
< child packages
< package
 

Puis je sélectionne la ligne contenant le texte <[right-click-to-insert-Package-field(s)]> et avec le menu contextuel (clique droit de la souris) <Insert Filed>/…. J’insère le champ qui m’intéresse ; par exemple le nom du package.

Ensuite je peux lui affecter un style, je sélectionne la ligne <Pkg.Name> (en faisant attention de ne pas sélectionner les marqueurs) et dans la liste déroulante des styles je choisis <Heading 1>.

Je rajoute le champ <Notes> sous le <package Name> pour insérer la note du package.
 
Puis je coche <Element,> (nous pouvons constater que la case à cocher <Child Elements> est cochée par défaut)  j’insère le stéréotype, le nom et la note de l’élément comme pour le package.

Je procède ensuite de la même façon pour insérer les diagrammes présents sous les packages.

package >
{Pkg.Name}
{Pkg.Notes}
diagram >
{Diagram.Name}
{Diagram.DiagramImg}
{Diagram.Notes}
< diagram
element>
{Element.Stereotype} {Element.Name}
{Element.Notes}
child elements >
< child elements
< element
child packages >
< child packages
< package

 
3ème étape : Création de tableaux

Pour les pré et post conditions je crée des tableaux. Je coche d’abord <Constraint-Pre> et <Constraint-Post>.

Entre les marqueurs de début et fin à l’aide du menu contextuel je sélectionne le menu <Table> / <Insert Table>.

J’indique 2 lignes et 3 colonnes dans la boite de dialogue <New Table Parameters> et je valide.

Dans la première  ligne j’écris les entêtes Nom, Note et Statut.
Je sélectionne cette ligne d’entêtes et à l’aide du menu contextuel <Table>/<Cell Color…>, je sélectionne un fond gris.

Dans la deuxième ligne j’insère les champs <Name>, <Notes> et <Status>.

Il est impératif de supprimer la ligne ajoutée automatiquement sous le tableau pour éviter d’avoir un espace entre chaque ligne du tableau.

 

constraint-pre >

Nom

Notes

Statut

{ElemConstraintPre.Name} {ElemConstraintPre.Notes} {ElemConstraintPre.Status}

< constraint-pre>

 
Puis je fais de même pour insérer les exigences internes et externes au cas d’utilisation. (Les exigences internes sont créées à partir de la rubrique <Requirements> du cas d’utilisation et les exigences externes sont des éléments de type <Requirement> reliés à l’aide d’un lien de réalisation avec le cas d’utilisation).

Pour les scénarios, si j’utilise l’onglet description, pour écrire mes étapes de scénarios, seuls le nom et la note suffisent ; si par contre j’utilise les scénarios structurés alors je crée de nouveau un tableau dans lequel j’insère principalement les champs <Step> (numéro de l’étape) et <Action>.

Pour les scénarios alternatifs et d’exceptions, je coche la case <Exception>, et j’insère les champs <Step>, <Type> (si je veux préciser alternatif ou exception), <Name> et<Join> (pour indiquer l’étape de retour dans le scénario nominal).

Faire attention au fait que la numérotation des étapes est imposée par EA et que le nom de chaque alternative est inséré dans les étapes du nominal.

scenario >
{ElemScenario.Scenario}
{ElemScenario.Notes}
structured scenarios >

{Scenario_Structured.Step} {Scenario_Structured.Type} {Scenario_Structured.Action}

exception >

({Exception.Type}){Exception.Step} {Exception.Name} (retour étape {Exception.Join})

< exception
< structured scenarios
< scenario

Attention : si vous décochez un élément dans l’explorateur, les marqueurs seront supprimés avec le texte inséré entre eux.

La prochaine fois nous verrons comment insérer des éléments reliés (comme les acteurs par exemple) à l’aide de <Template Fragments>.

Comment utiliser simplement un template pour générer un document avec Enterprise Architect

Vous êtes utilisateurs de l’outil de modélisation Enterprise Architect, je vous propose une petite série d’articles pour vous aider à utilisateur le générateur de documents de l’outil. (Articles réalisés avec la version 10.0.1009 de l’outil.)

Première partie, rappel sur la génération avec un template de document existant.

Si par exemple je souhaite générer un document sur une modélisation de cas d’utilisation.

Je sélectionne le package contenant les cas d’utilisation et accède à la boite de dialogue de génération de documents à l’aide du raccourci F8.

Ensuite je choisis le template qui correspond à ma génération (ici UseCaseTemplate). Je vérifie la destination de mon livrable (dans la partie Output to File) et génère le document en cliquant sur le bouton <Generate>.

Deuxième partie, je filtre ma génération

Dans mon document généré, je constate que les informations détaillées sur des éléments comme des activités et actions sont ajoutées alors que seuls les cas d’utilisation m’intéressent. Je retourne alors dans la boite de génération de documents.

Je sélectionne l’onglet <Options> et puis tous les types d’éléments à exclure, exceptés <Actor> et <UseCase> qui sont les seuls qui m’intéressent.

Je peux aussi filtrer ma génération en fonction d’une phase, d’un statut ou d’une date de création d’élément si besoin.

Troisième partie, je complète les filtres de ma génération

Je souhaite maintenant ne générer que les cas d’utilisation qui possèdent une description. Je souhaite aussi ne générer que les sous packages du package sélectionné.

Il me suffit de cocher les cases correspondantes.

Si je souhaite réaliser un filtrage avancé (par exemple en fonction d’un stéréotype), j’utilise alors l’onglet <Element Filters> pour créer le bon filtre. Nous aborderons cette fonctionnalité plus tard.

Quatrième partie, je paramètre mon template pour ne pas avoir à refaire les manipulations de filtrage à chaque génération.

Si je ferme la boîte de dialogue de génération de documents et que je l’ouvre à nouveau, je constate qu’aucun de mes paramétrages n’a été sauvegardé, alors plutôt que de cocher à chaque génération les cases qui m’intéressent, je choisis de dupliquer le template proposé par sparx pour pouvoir le modifier.

Depuis l’onglet <Generate>, dans la liste déroulante je sélectionne <new template>.

Je sélectionne ensuite le template que je veux dupliquer, je lui donne un nom, puis je valide.

EA ouvre alors un éditeur de texte, contenant tous les éléments du template, nous y reviendrons plus tard.

Pour l’instant à l’aide du menu contextuel dans la page, je sélectionne le menu <File>/<Document Options> et dans cette boîte de dialogue je procède aux filtrages comme fait précédemment.

Je sauvegarde le nouveau template en cliquant sur la petite disquette et je ferme la boîte de dialogue.

Ensuite je sélectionne à nouveau mon package, j’utilise le raccourci F8 et cette fois je sélectionne dans la liste déroulante le template que je viens de créer (au passage je constate que mon template n’est pas entouré de parenthèses contrairement aux templates de sparx). Si je vérifie les onglets <Options> et <Advanced>, je constate alors que mon paramétrage a été sauvegardé.

La prochaine fois nous aborderons la création de notre propre template de document

Les retours de l’EA User Group 2013 à Londres

Je me suis rendu le 15 mai à la première édition de l’EAUG (Enterprise Architect User Group) où s’est réunie à Londres la communauté des utilisateurs d’Enterprise Architect.

Vous trouverez dans cet article la synthèse d’une sélection de présentations auxquelles j’ai assisté :

  1. « Modeling Software Intensive Systems » de Doug Rosenberg d’ICONIX, introduisant le concept de SwissML (SysML + UML) pour obtenir le même niveau de spécifications sur les blocs logiciels et matériels d’un système embarqué. Doug aborde l’incompatibilité des méthodes agiles dans un contexte où le logiciel n’est pas le livrable final, mais fait partie d’un système comprenant un ensemble de blocs matériels et logiciels, avec une forte criticité sur les erreurs possibles en raison des risques liés à la sureté et à la sécurité.
  2. « SysML with EA » de Roman Bretz de Lieber Lieber GmbH nous faisant part de ses retours d’expérience en clientèle sur le langage de modélisation SysML.
  3. « User Story : EA usage at EVRY » de Knut Paulsen d’EVRY, qui nous a présenté l’utilisation d’EA dans son entreprise, impliquant notamment la réalisation d’Add’ins EA (générateur de documentation, export/import Excel) définis selon la méthodologie adoptée en interne.
  4. « User Story: How to do less work, have more fun and become (a bit) famous doing it » d’Ian Mitchell d’Ability Engineering, qui nous a fait part de ses retours d’expérience en tant que BA au sein d’un projet d’envergure à l’échelle européenne. Des conseils et avis très intéressants et pertinents !

Lire la suite…

Astuce EA : regrouper des attributs ou opérations d’une classe avec les stéréotypes

Astuce SparxSystem Enterprise Architect

Il est parfois utile de pouvoir organiser les attributs et/ou opérations d’une classe par groupes. Par exemple, l’on peut avoir besoin d’indiquer des attributs définis par le système étudié d’une part, et les attributs spécifiques (custom) qui ont été rajoutés d’autre part.

L’exemple suivant présente une classe avec des attributs mélangés, puis la même classe où l’on a regroupé ces attributs par stéréotype System & Custom :

Pour obtenir ce résultat, il faut modifier chaque attribut de la classe (ouvrir les propriétés de la classe, puis l’onglet Details -> Attributes), puis définir une valeur (ex: System) dans le champ stéréotype de l’attribut en cours de modification :

L’utilité des diagrammes incomplets : à la recherche d’une vision commune

Ce titre peut susciter des questions : pourquoi chercherait-on à produire quelque chose d’incomplet? Le but n’est-il pas plutôt d’avoir un modèle juste, correct, correspondant à ce que l’on cherche à réaliser?

Cet article présente une notion simple : le but des modèles est de représenter de manière visuelle le problème, ce pour favoriser les échanges entre les participants. Cette notion est compatible avec les méthodes itératives et agiles ; un modèle n’est pas produit pour être figé, mais pour évoluer au fur et à mesure de cycles ou itérations. Dans certains cas, un modèle aura uniquement pour but de se mettre d’accord sur ce que l’on cherche à réaliser, sans pour autant répercuter les changements sur ses diagrammes.

Il est donc fort probable que la première version d’un modèle ou diagramme soit incorrecte ou « fausse ». Lorsque l’on créé puis présente un diagramme, l’on ne cherche pas à avoir tout juste dès le départ ; le but est de susciter des réactions de la part des interlocuteurs MOA ou MOE, pour corriger et affiner les modèles (en direct lors d’un atelier par exemple avec un outil de modélisation comme Enterprise Architect, ou à postériori).

Les modèles nous permettent alors de se rapprocher d’une vision commune et partagée, ce qui va demander plus ou moins d’itérations et d’efforts selon le contexte et les besoins du projet. Une mise à jour itérative des modèles présente l’avantage de capitaliser sur les choix qui ont été pris par rapport aux impacts sur des évolutions et corrections ultérieures, sur de la maintenance, etc.

Retours d’expériences :

Pas plus tard qu’hier, un de mes collègues était ravi de l’utilité de mon diagramme BPMN « faux » dont l’objectif était de formaliser un processus global en vue d’une décision GO/NOGO : « le diagramme a déjà permis de lever des lièvres et de discuter avec le responsable fonctionnel ». A ce stade du projet, les retours des divers responsables peuvent être pris en compte pour arriver vers une vision partagée par tous, ce afin de pouvoir justifier la décision qui sera prise par la suite.

Les exemples sur l’utilité de diagrammes incomplets et non aboutis ne manquent pas ; j’ai eu l’occasion d’établir une cartographie fonctionnelle en travaillant avec deux équipes MOE travaillant sur deux produits en interaction. Chaque équipe m’a décrit et argumenté ses choix d’architecture, identifiant les échanges de données entre leurs applications et systèmes. Chacune de ces équipes avait également un avis plus ou moins abouti sur les choix faits par l’autre équipe. Les modèles UML générés à l’issue de cette étude ont permis non seulement de poser la vision aboutie d’un produit par son équipe de développeurs et d’architectes, mais aussi de mettre à disposition le fonctionnement du produit en interaction avec le leur.

C’est donc en partant d’un diagramme « évidemment » incomplet, que de nombreux échanges constructifs ont donné lieu à la représentation globale et transverse des produits existants, ce en vue de décisions d’architecture pour optimiser et améliorer certains aspects.

Enterprise Architect version 10 disponible

Sparx entreprise architect v10

Sparx Systems a annoncé aujourd’hui la sortie de la dernière version 10 d’Enterprise Architect, outil de modélisation UML, BPMN, SysML.

EA v10 intègre entre autre :

  • plusieurs améliorations liées à l’ergonomie et l’utilisation quotidienne de l’outil,
  • un nouveau module de recherche sur les diagrammes,
  • une nette amélioration sur la fonctionnalité « Add Related Elements »,
  • la possibilité d’appliquer des calques (textual overlays) sur les matrices de relations (par ex CRUD);
  • le support de SysML 1.3 et un outil pour convertir des diagrammes SysML 1.2 en v.1.3,
  • des assistants en appui à la création de Profils UML,
  • le support de standards et modèles dans le domaine géospatial avec Geography Markup Language et ArcGIS;
  • des améliorations sur la simulation des modèles,
  • un débogueur et visualiseur intégrés pour les applications mobiles Android.

Certaines de ces fonctionnalités ont été testées dans l’article Aperçu EA v10 bêta 2.

Aperçu d’Enterprise Architect 10 Bêta 2

Sparx Systems prévoit de sortir prochainement la version 10 d’Enterprise Architect. La liste des évolutions est disponible depuis leur site ici.

Cet article présente un aperçu des nouvelles fonctionnalités et évolutions prévues pour Enterprise Architect v10 suite au test réalisé sur la bêta 2, dont les fonctionnalités peuvent évoluer d’ici la version finale. Les fonctionnalités abordées dans cet article sont les suivantes :

  1. Évolution de la fonctionnalité Insert Related Elements.
  2. Un nouveau module de recherche dans le diagramme : Diagram Search Box.
  3. Une nouvelle fonctionnalité dans les matrices de traçabilité (Relationship Matrix) pour définir et appliquer des calques : textual overlays, par exemple pour définir des associations CRUD entre éléments.
  4. L’accès à la liste des vues à afficher a été modifié dans les menus d’EA; les vues ne sont plus toutes accessibles depuis le menu « View », mais réparties parmi les menus Element, Diagram, Project…
  5. Une amélioration dans le QuickLinker pour créer de nouveaux liens d’agrégation.

Amélioration de la fonctionnalité ‘Insert related elements’

Sparx a nettement amélioré l’ajout des éléments liés sur un diagramme (fonctionnalité Insert Related Elements) comme illustré par les captures d’écran suivantes.

Insert Related Element dans les versions 9.3 et 10 beta

Dans la nouvelle version 10, EA affiche dynamiquement les types d’éléments actuellement liés à l’élément sélectionné, les types de connecteurs/associations entre ces éléments, et enfin la liste des éléments liés selon les critères choisis. On retrouve également les mêmes critères que dans la version actuelle (9.3) : direction de l’association, profondeur de relations (niveau N+1, N+2, etc.), namespace.

Ainsi l’on peut visualiser la liste des éléments liés d’après la sélection des types de connecteurs et des types d’éléments (liste mise à jour via le bouton Refresh), puis sélectionner individuellement les éléments à rajouter au diagramme.

Ces évolutions améliorent grandement l’efficacité de cette fonctionnalité :

  • Il est possible de sélectionner plusieurs types d’éléments au lieu d’un seul.
  • Il est possible de sélectionner plusieurs types de connecteurs au lieu d’un seul.
  • Les types d’éléments et de connecteurs ne faisant pas partie de l’ensemble des éléments liés ne sont plus affichés, ce qui facilite fortement le choix des critères.
  • Un aperçu des éléments liés selon les critères définis est affiché. Il est alors possible de sélectionner depuis cette liste les éléments à rajouter au diagramme.

Nouveau module de recherche ‘Diagram Search Box’

Les filtres de diagrammes d’EA (cf. l’article Appliquer des filtres sur les diagrammes EA) ont été utilisés pour implémenter un module de recherche dans les diagrammes. Lorsque l’on souhaite rechercher un élément dans un diagramme (par exemple lorsque celui-ci contient des dizaines de classes ou composants…), la saisie d’un terme de recherche permet de griser automatiquement les éléments dont le nom ne correspond pas.

Dans l’exemple ci-dessous, tous les éléments affichés y compris les notes sont grisés à l’exception de ceux dont le titre contient le terme recherché, « use case »:

Gestion de calques dans les matrices de traçabilité : ‘Matrix overlay’

La gestion de calques est une nouvelle fonctionnalité qui peut être activée dans les matrices de traçabilité, accessibles depuis le menu View : Relationship Matrix. Cette fonctionnalité permet d’appliquer des valeurs définies dans un calque sur des associations existantes entre éléments.

Par exemple, à l’aide d’un calque CRUD acceptant uniquement des valeurs exclusives pour chaque association, il est possible de définir l’accès en création par la classe Class1 sur la classe Class3, et l’accès en modification par la classe Class5 sur la classe Class3.

Pour cela EA s’appuie sur les ‘tagged value’ pour rajouter des propriétés sur une association existante entre deux éléments. Les captures d’écran suivantes illustrent la création d’un overlay/calque CRUD, et une matrice de traçabilité avec l’utilisation de ce calque.

Accès à la liste des vues à afficher/masquer dans l’environnement EA

Dans la version 9 d’EA, les vues à afficher ou masquer dans l’environnement de travail (EA Workspace), telles que les Notes, Propriétés, Project, Browser, etc., sont toutes accessibles depuis le menu View.  Ces vues sont désormais réparties entre les menus View, Element, Project, et Diagram. Par exemple le menu Diagram permet d’afficher les vues utilisées par les diagrammes : la boite à outil (diagram toolbox), les filtres sur le diagramme (diagram filter), pan and zoom.

Une répartition logique des vues au travers des menus associés devrait les rendre plus faciles à trouver.

Amélioration du QuickLinker pour créer des agrégations

La dernière amélioration retenue dans cet article porte sur la création de liens d’agrégations et de composition en permettant de choisir le sens d’agrégation comme illustré sur la capture d’écran suivante : vers le tout (« to whole ») ou vers une partie (« to part »).

En conclusion

Cet aperçu de la version 10 d’EA présente une nette amélioration apportée sur l’ergonomie et ainsi sur l’utilisation quotidienne de l’outil de modélisation UML, BPMN et SysML de Sparx Systems.

D’autres évolutions qui n’ont pas été abordées dans cet aperçu sont également prévues dans la version 10: support du langage de modélisation SysML 1.3, aide à la création de profiles UML, visualisation et debug d’applications Android, etc.