De nombreux programmeurs, confrontés à une tâche difficile, négligent la phase de conception, se référant au fait que la conception est une perte de temps, et dans ce cas, cela ne fera que me déranger.
Souvent, cette affirmation s'avère vraie si la tâche est vraiment petite et que les qualifications du programmeur sont suffisantes pour déterminer la solution la plus optimale.
Les programmeurs qui n'utilisent pas UML sont divisés en plusieurs groupes:
- Je vais commencer à écrire du code et, ce faisant, je comprendrai quoi et comment;
- J'ai lu des forums, Habr, medium, débordement de pile, un livre, des notes sur les murs, des panneaux dessus ...;
- Je demande à mes collègues, peut-être que quelqu'un sait comment résoudre un problème similaire;
- Je vais commencer à dessiner de petits carrés et montrer schématiquement quelle vision du problème s'est formée dans mon esprit.
Mais lors de la résolution de problèmes plus complexes, la planification et la modélisation avancées simplifient considérablement la programmation. En outre, il est plus facile de modifier le diagramme de classe que de créer le code source.
Vous pouvez faire une analogie avec la construction d'une maison. Quand quelqu'un veut construire une maison, il ne se contente pas de frapper avec un marteau et se met au travail. Il doit avoir un plan - un plan de conception, afin qu'il puisse analyser et modifier son système.
Si vous avez déjà commencé à décrire votre tâche sur papier, c'est déjà un énorme avantage.
Qu'est-ce que l'UML?
La définition officielle de Wikipedia.
UML - Unified Modeling Language - est un système de notation qui peut être utilisé pour l'analyse et la conception orientées objet. Il peut être utilisé pour la visualisation, la spécification, la conception et la documentation de systèmes logiciels.
Autrement dit, si vous regardez des images dans les moteurs de recherche, il deviendra clair que UML est quelque chose de schémas, de flèches et de carrés.
Il est important que UML se traduise en langage de modélisation unifié. Le mot principal ici est Unifié. Autrement dit, nos images seront comprises non seulement par nous, mais aussi par ceux qui connaissent UML. Il s'avère que c'est un tel langage international pour dessiner des circuits.
Avantages et inconvénients de la conception UML
Inconvénients:- perte de temps;
- la nécessité de connaître les différents diagrammes et leurs notations.
Avantages:- l'occasion d'examiner une tâche de différents points de vue;
- d'autres programmeurs trouvent plus facile de comprendre l'essence de la tâche et comment la mettre en œuvre;
- les diagrammes sont relativement faciles à lire après s'être familiarisés rapidement avec leur syntaxe.
Afin de déterminer si vous devez utiliser UML, vous devez considérer les diagrammes principaux. Grâce à eux, l'image globale est formée, donnant une idée des possibilités d'exprimer des idées architecturales dans le cadre de tâches commerciales.
Tous les schémas ci-dessous sont interconnectés. En les combinant, nous pouvons atteindre le niveau de décomposition requis des tâches individuelles.
Je propose de vous familiariser avec certains des graphiques les plus utiles et les plus fréquemment utilisés.
Nous parlerons de diagrammes de séquences, d'états, d'activités et des plus complexes d'entre eux - les diagrammes de classe.
D'abord je <...>, puis <...>, puis ... Diagramme de séquence
Imaginez que vous devez décrire la séquence d'actions pour commander des marchandises dans une boutique en ligne. Qui devrait être impliqué dans le processus? Quelles phases une commande traverse-t-elle avant d'être passée?
Habituellement, nous écrivons une longue liste d'étapes que l'application doit franchir pour recevoir le statut fier de «Décoré». Ensuite, nous décrivons qui exactement effectuera l'action spécifique. Et ce n'est qu'après cela que nous commençons à programmer.
Quel est l'inconvénient de cette approche? Il n'est pas visuel.
Imaginez, avant de vous trouver une longue liste des étapes décrites précédemment et des commentaires à leur sujet. À quel point sera-t-il facile pour vous de le comprendre? Combien de temps cela peut-il prendre? Je suppose que ça suffit.
Une alternative à cette approche consiste à utiliser le diagramme de séquence illustré dans la figure ci-dessous.
Diagramme de séquenceLes acteurs sont affichés en haut, et chaque flèche est une action spécifique qui leur est associée. En savoir plus sur ce tableau
ici.Diagramme d'état. Nous configurons les anciennes horloges électroniques
Le diagramme d'état vous permet de décrire le comportement d'un objet individuel sous certaines conditions. Elle nous montrera également tous les états possibles dans lesquels l'objet peut être, ainsi que le processus de changement d'états suite à une influence extérieure.
Supposons que nous programmions une horloge électronique soviétique.
Pour configurer, on ne nous donne que quelques boutons. Assez clairsemé. En même temps, nous savons que l'un des boutons change le mode de réglage de l'horloge. Un autre bouton du premier mode change les minutes et les secondes.
L'instruction de configuration est déjà assez petite, mais grâce au diagramme d'état, elle est perçue visuellement beaucoup plus facilement.
Diagramme d'étatEn savoir plus sur le diagramme d'état
ici .
Diagramme de classe, ou comment parler de votre code sans code
Les diagrammes de classes sont utilisés le plus souvent dans la modélisation PS. Ils sont une forme de description statique du système du point de vue de sa conception. Le diagramme de classes n'affiche pas le comportement dynamique des objets des classes qui y sont représentées. Les diagrammes de classes montrent les classes, les interfaces et les relations entre elles.
Dans diverses documentations, la description des modèles de conception, ainsi que la lecture du Habr, nous rencontrons tous souvent un diagramme de classes. Pourquoi est-il utilisé si souvent?
Supposons que vous ayez besoin de concevoir un système. Avant de vous lancer dans la mise en œuvre de plusieurs classes, vous voudrez avoir une compréhension conceptuelle du système - de quelles classes ai-je besoin? Quelles fonctionnalités et informations ces classes auront-elles? Comment interagissent-ils entre eux? Qui peut voir ces cours? Et ainsi de suite.
C'est là que les diagrammes de classes apparaissent. Les diagrammes de classes sont un excellent moyen de visualiser les classes sur votre système avant de commencer à les coder. Ils sont une représentation statique de la structure de votre système.
C'est le diagramme de classes qui nous donne l'idée la plus complète et la plus détaillée de la structure et des relations dans le code du programme. Comprendre les principes de construction de ce diagramme vous permet d'exprimer brièvement et de manière transparente vos pensées et vos idées.
Voyons comment décrire le modèle de conception bien connu «Visiteur» à l'aide du diagramme de classe.
«Visiteur» est un modèle de conception comportementale qui vous permet d'ajouter de nouvelles opérations au programme sans changer les classes d'objets sur lesquelles ces opérations peuvent être effectuées.
Diagramme de classeLes avantages les plus importants de ce graphique sont:
- gagner du temps lors de l'explication de la tâche à d'autres programmeurs;
- représentation plus précise et visuelle de la structure des principaux éléments du système.
Les inconvénients incluent des coûts de temps importants, à condition qu'il y ait un manque d'expérience avec ce diagramme.
Vous pouvez en savoir plus sur le diagramme de classe
ici et sur le modèle de visiteur
ici .
Tableau d'activité
Un diagramme d'activité est une technologie qui vous permet de décrire la logique des procédures, des processus métier et des workflows. Dans de nombreux cas, ils ressemblent à des organigrammes, mais la différence fondamentale entre les diagrammes d'activité et la notation des organigrammes est que les premiers prennent en charge les processus parallèles.
En bref, le diagramme d'activité nous aide à décrire la logique du comportement du système. Il est possible de construire plusieurs diagrammes d'activités pour le même système, chacun se concentrant sur différents aspects du système, montrant différentes actions qui sont effectuées à l'intérieur.
C'est sur le diagramme d'activité qui montre les transitions d'une activité à l'autre. En fait, il s'agit d'une sorte de diagramme d'état, où tous ou la plupart des états sont des activités, et la totalité ou la plupart des transitions fonctionnent lorsqu'une certaine activité est terminée et vous permettent de passer à la suivante.
Tableau d'activitéLa signification du diagramme est compréhensible. Il montre comment travailler avec une application Web qui résout un certain problème dans une base de données distante. Faites attention à la disposition des activités dans ce diagramme: elles sont, pour ainsi dire, dispersées dans trois colonnes, chacune correspondant au comportement de l'un des trois objets - le client, le serveur Web et le serveur de base de données. Grâce à cela, il est facile de déterminer lequel des objets exécute chacune des activités.
Vous pouvez en savoir plus sur le diagramme d'activité
ici .
Conclusion
J'espère qu'après cet article, vous jeterez un regard différent sur UML. Maintenant, lors de la lecture de la littérature ou des sites consacrés à ce sujet, il vous sera plus facile de comprendre quel est le but d'UML et de trouver des opportunités pour son application. Essayez de commencer à l'appliquer et vous sentirez toute la force et la puissance cachées derrière un ensemble de flèches et de carrés.
Laissez un commentaire si vous pensez (ou savez) que quelque chose ne va pas ou pourrait être mieux décrit.