Base de la Modélisation – Création de Modèles de Classe UML avec Enterprise Architect

Webinaire September 2017
Dans ce Webinaire, vous apprendrez comment:
  • Créer un modèle de données simple en utilisant des classes UML
  • Définir des classes à utiliser dans la conception de logiciels
  • Générer automatiquement les produits livrables du projet, comme la documentation et le code

Dans notre deuxième série de la série de webinaires de Modeling Basics, nous vous aiderons à commencer avec la modélisation de classe UML dans Enterprise Architect.

À l'aide d'exemples simples et pratiques, nous explorerons comment les modèles de classe peuvent être appliqués à des modèles d'information de haut niveau et à la conception de logiciels.

Ben Constable
Ben Constable

Explorez le modèle d'exemple

Nous avons fourni l'exemple de modèle Enterprise Architect utilisé dans le webinaire
Example model: webinar-management-class-models.feap Download Example Enterprise Architect Model for the Webinar Management System

Questions de l'auditoire

Cliquez sur une question pour voir la réponse.

Général

Quelle édition d'Enterprise Architect utilisez-vous? J'utilise Professional Edition - dois-je mettre à niveau pour accéder aux mêmes fonctionnalités que vous?

J'ai utilisé l'édition Ultimate d' Enterprise Architect la version 13.5 pendant la présentation. Toutes les fonctionnalités que j'ai démontrées, cependant, sont disponibles dans le Professional (ou plus haut) l'édition. l n'est pas nécessaire de mettre à niveau pour répliquer mon modèle et les sorties que j'ai générées à partir du modèle.

Propriétés de classe (attributs et opérations)

Allez-vous montrer des attributs et des opérations?

Oui. La modélisation d'attributs est démontrée dans la vidéo de présentation à partir de 15:04 des minutes. Les opérations sont seulement discutées brièvement dans la vidéo de 31:52 minutes.

Je ne vois pas de chaîne comme un type disponible à choisir pour mes attributs.

Les types de données disponibles pour les attributs sont déterminés par la langue champ de l'élément de classe qui contient vos attributs. Met la Langue champ dans les Propriétés de classe dialogue à <none>. Ouvrez ensuite la dialogue Fonctionnalités en 'cliquant droit' sur l'élément et en sélectionnantFonctionnalités et Propriétés | Attributs. Vous devriez voir les types de primitives UML disponibles dans le contrôle Type de l'onglet Attributs. Pour une explication détaillée et un exemple de modification de l'option Langue pour un paquetage entier, consultez la vidéo de présentation à partir de 15:37 minutes.

Rubriques d'aide connexes:

Comment utilisez-vous la portée d'un attribut?

La portée ou la visibilité en termes UML est particulièrement utile lors de la définition de modèles logiques, car elle contrôle l'accès aux variables membres de la classe, comme les attributs et les opérations. Par exemple, si un attribut a une visibilité private , sa valeur ne peut pas être directement lue ou mise à jour par une autre classe. En programmation, la visibilité peut être appelée modificateur d'accès, souvent représenté par un ensemble similaire de valeurs de visibilité définies par UML: public, privé, protégé et paquetage.

Des Relations

Pouvez-vous afficher la cardinalité 1 comme 1..1?

Vous pouvez spécifier la multiplicité comme 1..1. Pour ce faire, sélectionnez 1.. dans le Multiplicité contrôle. Saisissez 1 comme valeur de la limite supérieure.

Notez: Un cardinalité spécifie le nombre d'éléments d'une collection donnée, alors qu'un multiplicity dans UML définit les limites supérieure et inférieure du nombre d'éléments qu'une collection peut avoir. Parce qu'une multiplicité est composée de deux valeurs qui définissent ces bornes, une multiplicité de 1 est en fait une abréviation de 1..1, et la cardinalité d'une telle collection doit aussi être 1. La même logique s'applique à toute collection dans laquelle le les limites supérieure et inférieure sont les mêmes.

Dans mon exemple de modèle, j'ai utilisé la notation 0 .. * pour signifier que une session de webinaire peut contenir zéro ou plus de participants . J'aurais plutôt pu utiliser *, qui en UML est l'abréviation de zéro ou plus.

[ Quant à la Succession] j'utilise la convention qui montre des boîtes de sous-type à l'intérieur de la boîte de supertype. Pouvez-vous le faire? Par exemple, le Participant, l'Hôte et le Présentateur (donné votre exemple) être à l'intérieur de la boîte de supertype, la Personne.

Si vous dessinez les Classes d'enfant (des sous-types) comme des boîtes à l'intérieur de la Classe parentale (le supertype), vous représentez une nidification ou une relation dde confinement dans Enterprise Architect et UML.

Structure du Modèle

Comment un projet (.eap) est-il relaté à la vue et au modèle? Quelle est la bonne façon ... la vue a-t-elle des modèles multiples (des diagrammes)?

Un fichier de projet (.eap) consiste en ce quel Enterprise Architect utilise pour physiquement stocker vos données modèles. Dans un fichier seul de projet, vous pouvez avoir un ou plusieurs modèles, chaque représenté par un noeud de Racine. Chaque noeud de Racine peut contenir un ou plusieurs noeuds de Vue. Les noeuds de vue peuvent contenir une combinaison de Paquetages et des diagrammes.

Il n'y a aucune 'bonne façon' seule pour définir votre hiérarchie modèle. En modelant un système seul, une approche populaire est d'utiliser un noeud de Racine seul pour le système et créer des nombreux noeuds de Vue sous cela. Une Vue serait dédiée aux Cas d'Utilisation pour ce système, un autre aux éléments de domaine, un autre aux classes de stockage physiques et cetera. L'idée est que chaque noeud de Vue représente une perspective différente, ou une vue, du même système.

Dans mon projet, j'ai choisi de modéliser l'agenda de ma présentation utilisant une Mind Map. Ceci était un modèle nettement différent au domaine de webinaire réel que j'ai modelé comme un exemple, donc je l'ai placé dans son propre noeud de Racine. J'ai modelé les éléments dans mon domaine utilisant une Vue seule, sous le noeud de Racine nommé le Modèle d'Informations de Webinaire.

Si je devais modeler certains des aspects comportementaux du domaine de webinaire, je pourrais créer des noeuds de Vue supplémentaires sous sous le nœud racine du Modèle d'Information Webinaire. Par exemple, je pourrais capturer les processus métier qui sont intrinsèques au domaine de webinaire et les placent dans une Vue nommée des Processus métier.

Vous avez mentionné votre modèle de Classe comme un Modèle de L'information, bien que son conteneur soit appelé le Modèle de Domaine. Y a-t-il une différence entre votre Modèle de L'information et un Modèle de Domaine normal?

Le Modèle de L'information, à l'heure actuelle, est exempt de n'importe quel détail comportemental. En tant que tel, le modèle fournit seulement un vocabulaire pour ce domaine et définit les relations statiques valables entre les éléments de domaine. C'est particulièrement utile en définissant les données communes qui sont échangées entre les systèmes interopérables.

Dans le contexte de Modélisation de Domaine, cependant, certains renverraient à cette type de Modèle pur de L'information comme 'anémique' - autrement dit un modèle qui fournit peu d'avantage dans l'aide de la conception d'un système spécifique. Particulièrement les Classes dans la Vue nommée le Modèle de Domaine ne contiennent même pas d'opérations. Puisque beaucoup de modeleurs préfèrent ajouter le détail comportemental, comme des opérations UML, aux éléments dans un Modèle de Domaine, la Vue nommée le Modèle de Domaine dans mon modèle d'exemple devrait probablement être rebaptisée à quelque chose comme ' les Classificateurs de Webinaire pour éviter la confusion. J'ai fait cet ajustement au modèle que j'ai affiché dans la section de ressources de cette page.

Le Modèle Logique est-il composé des mêmes éléments que le Modèle de Domaine, avec plus de détail, ou est-il constitué de nouveaux éléments modèles superflus avec le Domaine le Modèle [de L'information]?

Le Modèle Logique est un modèle séparé avec ses propres éléments. Il y a une correspondance forte entre les éléments dans ces modèles - en fait j'ai copié les éléments du Modèle de L'information comme de nouveaux éléments pour accélérer la création du Modèle Logique.

Les différences de tous les deux le but et le détail des modèles, cependant, signifient que l'on ne peut pas simplement ajouter plus de détail au Modèlede L'information existant pour produire le code d'application. Par exemple, les types d'attribut sont significativement différents entre un Modèle Logique PHP et un Modèle L'information pure dans UML.

Pour des informations sur la façon d'automatiser la transition entre les types différents de modèle, comme Logique et des Modèles de Domaine, voir le sujet d'Aide Transformation de Modèle.

Pourquoi ajouter l'énumération à ce diagramme et non aux types de données?

Il serait bon d'ajouter que l'énumération dans le paquetage de Types de Données ou même un autre paquetage dédié spécifiquement aux éléments d'énumération. Quant à dessiner l'énumération sur le diagramme où les éléments de classe ont été dessinés - il peut être utile de montrer des éléments d'énumération sur le même diagramme qu'est près de, les éléments que l'utilisation cela. Ceci fait comprendre la gamme de valeurs autorisées pour des propriétés qui sont tapées par l'énumération.

Existe-t-il une façon de chercher/remplacent la langue de code sur toutes les Classes dans un grand modèle?

Oui. Pour un exemple de modification de l'option Langue pour un paquetage entier et ses sous-paquetages, consultez la vidéo de présentation à partir de 15:37 minutes. Plus d'informations sont également disponibles dans la rubrique d'aide Reset Options.

Quelle est la différence, en termes de types UML, entre URL et SessionStatus?

L'URL a été modelée comme un UML DataType et SessionStatus a été modelé comme une Énumération d’UML. Une Énumération est une sorte spéciale de datatype qui a les littéraux d'Énumération qui définissent ses valeurs possibles. Dans les deux cas, cette définition pour DataType dans la spécification d’UML s'applique : "les cas d'un DataType sont identifiés seulement par leur valeur. On considère tous les cas d'un DataType avec la même valeur sont considérées comme des instances égales.”

Code et Ingénierie de Schéma

Enterprise Architect génère-t-il automatiquement du code Java?

Oui. Pour toutes les langues de programmation supportées, voir le sujet d'Aide Generate Source Code.

Le Javascript est-il supporté comme une langue pour la génération de codes?

Oui, quoique la synchronisation et la rétro-ingénierie de code de Javascript ne soient pas supportés.

La génération de code 'Ruby' est-elle supportée

Pas actuellement

Les classes sont-elles toujours par défaut en Java? Je ne travaille jamais avec Java donc je veux qu'ils toujours manquent à ses engagements à C#. Comment définissez-vous la langue par défaut pour l'ingénierie de code?

Vous pouvez utiliser la barre d'outils de Génération de Codes. Ceci définit la langue de codage par défaut pour le modèle actuel, donc la langue est appliquée à toutes les Classes nouvellement créées dans le modèle. D'autres projets d'Enterprise Architect peuvent avoir associé des langues par défaut différentes avec eux.

Pour des détails, voir le sujet d'Aide La barre d'outils de Génération de Codes.

Pouvons-nous créer un diagramme d'UML seul basé sur un projet Java avec des paquetages multiples quand nous faisons l'ingénierie de codes?

Vous pourriez ceci faire en ingénierie avant, mais ce n'est recommandé que pour le plus petit des projets. Si votre modèle a d'une taille réaliste et vous placez chaque élément sur le même diagramme, il sera difficile de lire et comprendre.

Quand la rétro-ingénierie, Enterprise Architect fournit une option pour créer un diagramme par Paquetage Java. Vous pourriez alors combiner ces diagrammes dans un, en utilisant des Cadres de Diagramme. Pour des détails, voir le sujet d'Aide Cadres de Diagramme.

Le code peut-il être régénéré du modèle sans détruire le code que vous avez manuellement ajouté?

Oui. Pour faire ainsi, vous devez utiliser l'option pour synchroniser le modèle et le code, plutôt que remplacer ou écraser des fichiers existants. Il existe également des options plus spécifiques que vous pouvez utiliser qui détermine, par exemple, si Enterprise Architect supprimera du code existant des Classes ou des fonctionnalités (des variables de membre de Classe ou des méthodes) qui n'est pas trouvé dans le modèle.

En synchronisant le code, Enterprise Architect conserve généralement le code existant dans le corps de la méthode, en mettant à jour sa signature et des commentaires associés.

Sujets d'aide connexes:

Enterprise Architect peut-il le changement - du code crée un diagramme de Classe UML?

Oui, la rétro-ingénierie est supportée Pour des détails, voir le sujet d'Aide Importation de Code source.

Je veux créer par ingénierie inverse le programme de C d'une base de code complexe, un diagramme de Classes. Quels sont les attributs et les opérations dans ce contexte?

Les conventions de modélisation pour C sont décrites dans le sujet d'Aide "C" Conventions. Les conventions pour d'autres langages de programmation sont décrites dans le sujet d'Aide Conventions de Modélisation.

Peut l'utilisation des mêmes noms de rôles créer des conflits dans la génération de schémas XML? (Par exemple, le nom de rôle "des webinaires" est utilisé plus d'une fois dans votre modèle type.)

Ceci ne devrait pas c poser un problème, parce que chaque nom de rôle est généré comme un élément à l'intérieur d'une définition complexType, qui représente la Classe qui possède la Fin d'Association en question. Dans l'exemple de modèle, les fins de relation d'Association qui avaient le même nom de rôle appartenait aux Classes différentes. Les éléments XML de Schéma correspondants sont donc générés dans différentes définitions complexType.

Génération de rapports

Avez-vous un webinaire spécifiquement sur la génération de document?

Est-ce possible d'avoir un modèle pour créer le document qui inclut un en-tête d'entreprise ou une norme de document d'entreprise?

Est-ce que Sparx prévoit de supporter Chrome pour des exportations de HTML?

Vous pouvez voir les pages de HTML générées dans le Chrome, mais à cause des restrictions de sécurité le Javascript pour charger des fichiers supplémentaires du système de fichiers local est bloqué. La vue de HTML fournie par Pro Cloud Server est recommandée si le support complet pour voir le modèle dans le Chrome est exigé. Pour des détails, voir notre Webpage de Pro Cloud Server.

Diagrammes

Est-il planifié d'avoir une exportation au graphiques vectoriels évolutifs (SVG)?

Il n'y a pas de plans immédiats pour l'exportation vers SVG.