Archive

Archives pour la catégorie ‘UML’

Formation à Paris : Modéliser avec Enterprise Architect – 3 jours

Vous souhaitez utiliser efficacement Enterprise Architect (EA) et tirer parti de toutes les fonctionnalités requises sur vos projets ? Vous souhaitez apprendre à modéliser, gérer et tracer vos exigences ? Vous souhaitez créer des modèles d’analyse parlants, et des modèles de conception directement exploitables par vos équipes ? Vous souhaitez configurer EA pour qu’il soit strictement adapté à vos besoins de modélisation ?

Ce cours remplit chacun de ces objectifs, dans un format pédagogique qui va à l’essentiel et enrichi par les bonnes pratiques d’utilisation de cet outil, issues de l’expérience des consultants Objet Direct au quotidien avec EA.

    Vous allez acquérir la maîtrise d’EA pour :

  • Gérer des projets et des modèles
  • Faire de la modélisation métier (BPM)
  • Gérer et suivre les exigences
  • Faire de l’analyse et de la conception de vos systèmes
  • Gérer de la traçabilité entre modèles
  • Réaliser des analyses d’impact


Prochaine session à Paris : du 19 au 21 septembre – voir le programme complet

Contactez Laurence Perret pour obtenir toutes les informations et réserver votre formation :
lperret@objetdirect.com – Tel : 04 72 13 35 84

Nouveautés EA 9.1 : exécuter vos modèles

Sparx Systems vient d’annoncer dans sa dernière version d’Enterprise Architect (v.9.1), une nouvelle fonctionnalité de simulation pour exécuter vos modèles d’état et d’activité UML afin par exemple de valider chacune des étapes et transitions spécifiées, ou de mieux comprendre la complexité de vos diagrammes. Cette fonctionnalité permet ainsi d’exécuter pas à pas les étapes d’un modèle .

La version 9.1 d’EA s’ouvre également au domaine SIG (Système d’Information Géographique) par le support d’un nouveau profile UML et technologie MDG dédié à la plateforme ArcGIS.

Quel acteur pour un cas d’utilisation déclenché périodiquement?

Cet article traite d’une question récurrente lorsque l’on modélise un cas d’utilisation dont la particularité est son lancement automatique et périodique. En support des explications apportées, j’ai utilisé comme exemple la mise à jour quotidienne des données clients en prenant en compte les transactions effectuées depuis la dernière mise à jour, objectif du cas d’utilisation Mettre à jour les encours clients.

Pour modéliser ce cas de figure, il est courant d’utiliser l’horloge du système (timer) comme acteur primaire, celui-ci représentant le déclencheur du cas d’utilisation. Est-ce la meilleure méthode pour modéliser un cas d’utilisation déclenché périodiquement? C’est ce que cet article va tenter de clarifier par la présentation de trois approches différentes :

Approche 1 : le cadenceur est un acteur primaire

Une tache périodique étant effectuée en interne par le système, elle ne porte pas de comportement visible d’un point de vue analyse boite noire. Comme cette tache porte une fonctionnalité du système, elle fait partie du périmètre étudié.

Dans cette approche de modélisation, le cadenceur est une fonction interne que l’on sort du système (d’un point vue boite noire), et que l’on identifie comme acteur primaire basé sur le raisonnement suivant : le cadenceur déclenche le cas d’utilisation de façon périodique. Le cadenceur ne porte pas la définition d’un acteur primaire car il n’a pas d’objectif dans l’exécution du cas d’utilisation. En effet, d’un point de vue UML, un acteur primaire est un utilisateur du cas d’utilisation ayant un but visible dans son exécution. Néanmoins dans le cas où aucun évènement déclencheur (trigger) n’est défini, la première action de l’acteur primaire peut être vue comme l’évènement déclencheur (ou trigger) du cas d’utilisation, d’où la modélisation du cadenceur comme acteur primaire.

Cette approche, couramment pratiquée en UML, permet d’indiquer sans équivoque que chacun des cas d’utilisations associés à un Cadenceur décrivent une fonctionnalité déclenchée de façon cyclique par le système. Le choix du terme « cadenceur » permet de rester au niveau de l’analyse n’indiquant pas la solution pour le réaliser. Lors de la conception, il sera alors possible de répondre à la spécification fonctionnelle par exemple en utilisant une horloge système.

Approche 2 : l’acteur primaire doit avoir un objectif dans l’exécution du cas d’utilisation

Cette approche alternative consiste à utiliser un acteur primaire ayant un but visible dans l’exécution du cas d’utilisation.

Dans l’exemple de mise à jour des encours clients, l’acteur primaire est le Comptable car celui-ci a un objectif dans l’exécution du cas d’utilisation ‘Mettre à jour les encours clients’ : obtenir un état à jour des encours de chacun des comptes clients.

La particularité porte sur le fait qu’il n’y a pas d’interaction entre l’acteur primaire et le système étudié. L’évènement déclencheur (trigger) du cas d’utilisation est représenté par l’acteur secondaire « Cadenceur  » dans le souci de présenter visuellement le fonctionnement cyclique de ce cas d’utilisation – cela est optionnel mais il est recommandé de conserver le Cadenceur sur ce diagramme permettant d’indiquer cette particularité au lecteur.

Si l’on ne souhaite pas représenter l’acteur secondaire Cadenceur, il est également possible de définir un évènement déclencheur (trigger) dans le cas d’utilisation, par ex : « Le cadenceur du système déclenche ce cas d’utilisation ».

Approche 3 : aucun acteur

La dernière approche proposée consiste à n’associer aucun acteur à ce cas d’utilisation. D’un point de vue UML, cela est tout à fait correct car l’on représente un cas d’utilisation ne comportant pas d’interaction avec un acteur externe. Il est alors possible de spécifier comment le cas d’utilisation est déclenché par son trigger.

Un cas d’utilisation sans acteur risque de susciter des difficultés de compréhension et des questions.

Conclusion

J’ai personnellement toujours appliqué la première approche pour différents projets en modélisant le Cadenceur (ou utilisant une variante de ce terme selon le contexte) comme acteur primaire. J’ai trouvé l’exercice d’identification et d’évaluation des approches alternatives utile pour mieux comprendre comment l’approche retenue parait la plus appropriée.

Commit Monitor pour SVN/EA

logo commit monitorCommit Monitor : outil de notification et de surveillance de dépôts SVN, dans le cadre d’une utilisation avec l’outil de modélisation UML Enterprise Architect

Commit Monitor est un outil gratuit (licence GPL) très simple d’utilisation. Il permet de surveiller des dépôts SubVersion pour être notifié de nouvelles modifications.
Cet outil réside dans la barre de tâches et utilise très peu de ressources du système.
Commit Monitor consulte les logs du serveur SVN pour détecter de nouvelles versions et en afficher les détails.

Cet outil peut être très utile lorsqu’un projet de modélisation UML Enterprise Architect, dont les modèles sont gérés par un serveur SVN, est utilisé en mode collaboratif par plusieurs utilisateurs.

Après installation, l’icône de Commit Monitor apparaît dans la barre de tâches :

Commit Monitor permet de rajouter chacun des projets SVN à surveiller par la saisie des informations suivantes :

  • Username / password : l’identifiant et le mot de passe du compte SVN
  • Check every xxx minutes : par défaut Commit Monitor va interroger le serveur SVN toutes les 90 minutes ; cette valeur peut être modifiée dans ce champ
  • Project : nom du projet surveiller, par exemple Projet1 EA
  • URL : url du dépôt SVN, par exemple https://11.22.33.44/svn/Projet1/

Commit Monitor notifie l’existence de nouvelles versions lorsque son icône animé apparait :

A l’ouverture de Commit Monitor, les projets surveillés sont affichés en gras – par exemple Projet1 EA (4) dans la capture d’écran ci-dessous – lorsque de nouvelles versions restent marquées en non lues (chacune des lignes correspond à une nouvelle version) :

Le tableau affiché comprend les colonnes et informations suivantes :

  • Numéro de révision
  • Date et heure
  • Auteur (compte utilisateur SVN)
  • Contenu du message saisi dans le log

En cliquant sur une ligne, la version correspondante est marquée comme « lue » et automatiquement cette ligne n’apparaît plus en gras. Il est aussi possible dans cette fenêtre ou via l’icône de la barre des taches de marquer toutes les nouvelles lignes en lues (« Mark all as read »).

Commit Monitor permet d’appliquer un filtre, par exemple pour restreindre les logs à un terme donné comme « Ajout Modèle” en saisissant ce texte libre dans le champ Filter :

A noter que cet outil peut être également utilisé pour surveiller les projets de développement, de la même façon que les fichiers XMI d’un projet UML EA utilisé en mode collaboratif et présenté dans ce post.

Commit Monitor est disponible en téléchargement depuis le lien suivant : http://code.google.com/p/commitmonitor/downloads/list

Enterprise Architect 9.0

Sparx a sorti cette semaine la version 9 beta 1 de son outil de modélisation Enterprise Architect, présentant entre autre les améliorations suivantes :

  • Support de nouveaux langages de modélisation OMG : BPMN 2.0, SysML 1.2 (06/2010), et SOMF 2.1 (2011)
  • Amélioration des outils de modélisation et de maquettage IHM
  • Affichage de diagrammes dans un mode « dessinés à la main » en vue de réaliser des schémas et brouillons pour provoquer la discussion
  • Nouvelles fonctionnalités du module de recherche avec l’exécution de requêtes SQL
  • Support de nouveaux formats pour l’export des modèles : OMG XMI 2.1, Ecore (lien avec EMF – Eclipse Modelling Framework)
  • Améliorations en mode collaboratif avec les contrôles de sources (ex : SVN) : support de paquetages partagés par plusieurs projets et de leurs inter-relations, possibilité d’exécuter un « branch check in » tout en conservant les paquetages en édition (« checked out »)
  • Conception avancée du modèle documentaire et génération au format PDF
  • Support de valeurs taggées dans la « vue liste » pour un diagramme (cette vue est utilisée pour visualiser les éléments d’un diagramme dans une liste; il est possible dans la v9 d’ajouter les valeurs taggées comme colonnes)
  • Support de tests model-driven par la définition de « test cases » indépendants de la technologie et du language utilisés
  • Prototypage model-driven pour applications win32

On retrouve également les améliorations de la version 8.0, à savoir :

  • Duplication de paquetages (copier/coller l’intégralité des éléments et diagrammes d’un paquetage dans le modèle)
  • Scénarios structurés pour les cas d’utilisations
  • Surlignage des termes du glossaire avec un affichage automatique de leur définition

Voici une brève présentation de quelques nouvelles fonctionnalités d’EA v9 :

Propriétés

Sparx a changé la présentation des propriétés de tous les éléments du modèle : paquetages, cas d’utilisations, classes, opérations, attributs etc. afin de fonctionner sur un style arborescence.

Voici un exemple pour le paquetage :

propriétés paquetage EA v9

propriétés paquetage EA v9

Voici un exemple pour le cas d’utilisation où l’on retrouve les scénarios structurés, exigences associées, et contraintes (invariants, pre-conditions, post-conditions) :

propriétés use case EA V9

propriétés use case EA V9

Maquettage IHM

EA permet de modéliser des écrans et vues IHM, dont la version 9 a grandement amélioré les éléments disponibles comme illustré ci-dessous :

diagramme maquettage IHM EA v9.0

diagramme maquettage IHM EA v9.0

De nouvelles propriétés sont disponibles pour les éléments IHM:

propriétés élément IHM EA v9

propriétés élément IHM EA v9

Nouveaux diagrammes « génériques »

Sparx a défini des éléments visuels génériques à rajouter sur un diagramme, similaires à certains éléments graphiques sous Word et PowerPoint :

EA v9 diagramme whiteboard

Recherche avancée avec SQL

EA permet de lancer des recherches par l’exécution de requêtes SQL afin d’interroger directement la base de données interne d’Enterprise Architect comme illustré ci-dessous :

Génération de documents

Afin de produire des livrables, il peut être nécessaire de générer des documents à partir des modèles, par exemple pour produire la liste des cas d’utilisations et de leurs descriptions complètes.

Dans sa version 9, EA fournit de nouvelles fenêtres d’options propres à la génération de documents, et permet par des règles de substitution de mieux supporter d’autres langues que l’anglais. Il est également possible d’inclure des matrices de traçabilité dans le document généré.

En conclusion Sparx Systems nous fournit de nouvelles propriétés sur les éléments de modélisation, une nette amélioration de la modélisation IHM, et un support des dernières versions de langages de modélisation émergents tels que BPMN 2.0, SysML 1.2 (présenté en Octobre sur notre Wiki), et SOMF 2.1.

  • Prototypage « model-driven » pour applications win32

Modélisation de systèmes avec SysML

Suite à la formation donnée il y a quelques mois sur « UML2 et SysML pour modéliser des systèmes complexes », j’ai posté un article sur le Wiki d’Objet Direct pour présenter le langage de modélisation SysML (Systems Modeling Language), dérivé de l’UML.
SysML est destiné aux domaines d’activité industrielle, par exemple les systèmes embarqués impliquant la réalisation de solutions logicielles et matérielles.
Ainsi il propose un vocabulaire plus adapté à l’Ingénierie Système, à savoir la modélisation de blocs plutôt que de classes. SysML adapte et ne réutilise qu’une partie des diagrammes UML2, évitant ainsi d’être trop vaste.

Ce langage, maintenu par l’OMG, est en constante évolution (adopté en 2006, la version 1.2 est sortie en Juin 2010). Il  est aussi supporté par la plupart des outils UML via un plugin (ex: Enterprise Architect version Ultimate ou avec le plugin SysML).

Article Wiki « Présentation du langage SysML »

Enterprise Architect 8.0

Ça y est. La version officielle est sortie :-)

Comme le dit Estelle Gleeson, la responsable marketing de Sparx System : « Please visit the release page below to learn more and take advantage of this major milestone release : http://www.sparxsystems.com/products/ea/8 » .

A noter que cette version s’accompagne également d’une nouvelle version de l’outil de gestion des licences.

En cas de soucis, et/ou pour débattre des nouvelles fonctionnalités en français, le forum des utilisateurs francophones d’Enterprise Architect (animé par Objet Direct) se trouve là : http://www.enterprisearchitect.fr

Categories: UML Tags: ,

QCon, Modèles et Intégrisme

This post is available in english on my personal blog.

QConJe rentre juste de trois jours aux QCon de Londres. C’est comme toujours un grand moment permettant une véritable prise de recul. Je peux respirer, ouvrir les yeux sur ce que font les autres et comment ils travaillent, sentir quelles sont les tendances et surtout, tenter d’appréhender ce que sera mon job dans un an, voire, plus loin.

Promis, je vous ferai, dans les jours qui viennent, une compilation des meilleurs moments de la conférence et des points les plus marquants. Mais avant tout, je voulais vous faire une réaction à chaud sur quelque chose qui me semble important.

Je reviens aujourd’hui avec un goût désagréable dans la bouche (non ce n’était pas la bière qui était, comme toujours, excellente). Un goût amer et un peu de colère aussi.

En deux mots : la modélisation n’est plus simplement absente (comme c’était pratiquement le cas lors des deux dernières éditions), c’est devenu un gros mot.

Que le code soit à l’honneur, c’est bien naturel dans une conférence consacrée au développement. Que l’on fustige les erreurs commises par le passé (en particulier la “sur modélisation” symptomatique d’un déficit de confiance dans les processus de développement) me semble aussi plutôt sain.

Mais que l’on entende des sentences définitives du genre “comme chacun le sait, les modèles ne servent absolument à rien” dans la bouche de stars comme Robert C. Martin, alias Uncle Bob (qui a pourtant écrit en 2003 un remarqué “UML for Java Programmers” !), qu’un Dan North (par ailleurs excellent, je vous en reparlerai) considère l’usage d’un modeleur comme une inutile “complification”, relève de l’hypocrisie, de la démagogie ou de l’intégrisme (voire de la simple bêtise, indissociable du dernier).

La seule conférence à laquelle j’ai assisté qui faisait encore la part belle aux modèles était celle d’Eric Evans qui parlait de conception agile. Encore avait-il rayé le mot Modèle du titre, pour celui de Design plus consensuel. C’est lui qui a, d’ailleurs, eu le mot juste : en abandonnant la modélisation, la communauté du développement a, un peu trop rapidement “jeté le bébé avec l’eau du bain” (sic).

En fait, j’ai eu l’impression d’être dans le domaine du religieux et d’assister à des professions de foi.

Il y a, d’un côté, les fondamentalistes du code, pure monothéistes, nostalgiques d’un âge d’or mythique où le développeur était le seul maître de sa production, en relation directe avec Dieu (le Product Owner), dépositaires d’un savoir millénaire (le Software Craftsmanship) qui se transmet de bouche de gourou à oreille de disciple.

Et il y a la secte des UMListes, vus comme de dangereux illuminés schismatiques, dont les délires auraient corrompus le monde parfait des précédents et qu’il faut exterminer par tous les moyens. J’ai eu l’impression d’être soumis à une fatwa.

Comme toujours lorsqu’il y a des problèmes, il faut trouver des boucs émissaires. Les modèles (et ceux qui les font) semblent jouer ce rôle aujourd’hui : symboles du “Big Upfront Design”, c’est eux qui portent la responsabilité des échecs des grands projets. Les modèles sont vus comme des artefacts de pure documentation : modéliser serait une activité chronophage et inutile (voire perverse), en particulier dans un monde agile.

Dans un tel environnement, impossible de sortir ma carte de visite : sous mon nom, il y a marqué “MDA business line manager”. Comme une maladie honteuse.

Pourtant, il me semble que modéliser, au contraire de développer, permet :

  • d’analyser un problème,
  • de compresser sa complexité,
  • d’appréhender sa globalité,
  • de s’abstraire de contingences techniques,
  • de communiquer.

Mon cerveau n’est pas suffisant pour faire tout ça sans assistance. J’ai besoin d’UML (ou de tout autre formalisme), à la fois comme d’une béquille, d’un tableau blanc, d’une extension de mémoire et d’un formulaire de maths.

Modéliser n’est pas antagoniste de développer (sans parler de MDA qui combine les deux activités) : modéliser permet simplement de mieux développer.

Et d’ailleurs, le code EST un modèle (“système d’abstractions qui décrit des aspects sélectionnés d’un domaine”), au même titre qu’un diagramme UML. Juste un peu plus verbeux (et un peu plus facilement exécutable).

Pour conclure, il me semble que ce hiatus est, avant tout, très représentatif de modes de pensées différents : une pensée analytique “à la française” (après tout, Descartes et Merise sont des créations bien de chez nous) face à une pensée pragmatique anglo-saxonne.

J’aime à penser qu’il y a du bon dans les deux mondes et que les deux se complètent agréablement. C’est même ce qui, à mon avis, constitue l’intérêt principal de notre métier : analyser des problèmes pour informatiser leur résolution. C’est ce qui quotidiennement renouvelle ma motivation : comment faire rentrer dans un (bon) programme la complexité du monde réel.

Séminaires Enterprise Architect

3 nouveaux événements techniques organisés et animés par Objet Direct, en avril : « Enterprise Architect, outil stratégique du dialogue entre le métier, l’IT et les applications »
… Pour des modèles UML utiles, à jour et partagés.

Quels sont les scénarios qui favorisent une utilisation pragmatique des modèles au sein des projets, petits, grands, agiles ou en cascade ? Quels sont les atouts d’Enterprise Architect ?
Réponses et démos lors de ces séminaires Objet Direct, avec les retours d’expérience projets menés chez PSA, EDF, au Conseil d’Etat et au CHU de Grenoble.

=> le 7 avril à Lyon, le 8 avril à Grenoble, le 14 avril à Paris, 9h-11h (accueil petit déjeuner)
Evénements gratuits, sur réservation ferme.
En savoir plus et s’inscrire en ligne sur le site d’Objet Direct.

1ère soirée du Domain Driven Design Users’ Group

LogoDDDFR_thumb

Cet article est un résumé de la première soirée du Domain Driven Design Users’ Group Paris (lancé le 17 février dernier), avec une présentation de Greg Young sur le « Command and Query Responsability Segregation ».
Greg Young commence à nous présenter une architecture très classique dans les développements actuels.

GregYoung1
L’ensemble de cette architecture se base sur une omniprésence de Data Transfert Objects sur l’ensemble des couches. Le comportement de l’application se retrouve dans le client. La montée en charge de l’application est très vite reportée sur la base de données. De plus on arrive très vite à parler avec des verbes techniques (Request DTO, Send DTO). Il n’y pas de modèle du domaine.

GregYoung2GregYoung3

La première étape est de faire la transition entre les deux schémas ci-dessus. Le client ne doit plus travailler uniquement avec des DTOs.
Il doit communiquer au client avec le serveur à travers des commandes. Le service applicatif gère l’objet du domaine.
Cet objet encapsule son état et offre des comportements. On peut ainsi remettre en place les cas d’utilisation ou « user stories ».
L’étape suivante consiste à séparer l’écriture de la lecture car ces deux chemins représentent deux cas d’utilisation différents, avec leurs propres contraintes et besoins.

GregYoung4

Dans le cas de la lecture, il est intéressant de remplacer l’accès à la base de données par un accès rapide et simple à la base de données (direct to DTO). Il reste maintenant le problème de la base de données. Avoir une seule base de données pour les deux cas d’utilisation est une solution simple dans le cas d’un système existant.
Cependant dans la majorité des applications (sauf peut-être certains systèmes financiers), il y a énormément plus de lecture que d’écriture. Il peut être alors très intéressant d’avoir deux bases de données avec un système de duplication maintenant la consistence des données entre les deux bases.

GregYoung5

La base de données en écriture peut être normalisée et la base en lecture dénormalisée.
C’est une très bonne solution quand on pense au problème des rapports qui sont faits sur les bases.

Categories: Actualités, UML Tags: ,