Dans de nombreuses professions, les gens utilisent des modèles graphiques pour représenter ce qu’ils ont créé ou ce qu’ils sont en train d’étudier. Par exemple, les chimistes font des diagrammes en 2D et 3D pour les modèles de molécules, les cartographes utilisent différents types de cartes pour représenter les multiples aspects géographiques d’une région, d’un pays, du monde.
Si vous êtes un développeur de logiciels, vous avez certainement vu des diagrammes représentant quelques faits sur la conception de logiciels. UML est un langage visuel, couramment utilisé pour créer de tels diagrammes.
UML n’est pas spécifique à un processus de logiciel, au paradigme de programmation (par exemple, la programmation orientée objet), ou de la technologie (par exemple : Java, .NET, PHP, …). Il était axé à l’origine sur les systèmes d’objets, mais a évolué et peut maintenant être utilisé pour modéliser tout type de logiciel.
Récemment, un ami m’a demandé la raison pour laquelle les gens n’aiment pas utiliser UML et pourquoi ce dernier est très peu utilisé dans les phases de conception ? Je lui ai donné mon avis (que je vous partage ici) et même si vous n’aimez pas UML, il y a de bonnes raisons de l’utiliser.
Qu’est-ce que UML ?
UML (Unified Modeling Language, que l’on peut traduire par « langage de modélisation unifié) est une notation permettant de modéliser un problème de façon standard. Ce langage est né de la fusion de plusieurs méthodes existantes auparavant, et est devenu désormais la référence en terme de modélisation objet, à un tel point que sa connaissance est souvent nécessaire pour obtenir un poste de développeur objet. [commentcamarche.net]
Qu’est-ce qu’un modèle ?
La modélisation consiste à créer une représentation simplifiée d’un problème: le modèle.
Grâce au modèle il est possible de représenter simplement un problème, un concept et le simuler. La modélisation comporte deux composantes :
- L’analyse, c’est-à-dire l’étude du problème
- la conception, soit la mise au point d’une solution au problème
- Le modèle constitue ainsi une représentation possible du système pour un point de vue donné
Pourquoi n’utilise-t-on pas UML ?
La notation n’est pas connue
Certaines personnes n’utilisent pas UML tout simplement parce qu’elles ne connaissent pas la notation. Dans de nombreux cas, la personne peut lire des diagrammes UML, mais n’est pas suffisamment en confiance pour les créer. Par analogie, certains développeurs de logiciels peuvent lire l’anglais mais ne sont pas à l’aise à l’écrit. Effectivement je ne suis pas parfait ! 😉
UML est trop complexe
UML a gagné en complexité et en taille au fil des ans. Aujourd’hui il existe 14 différents types de diagrammes ! C’est trop à retenir pour un être humain. Certaines personnes sont dégoutées par l’UML parce qu’elles jugent que l’effort pour gravir la courbe d’apprentissage ne sera pas payant.
Beaucoup ne connaissent pas la notion de classe UML
Beaucoup d’anciens développeurs n’ont jamais appris à l’université l’UML. Personnellement dès l’IUT j’ai appris l’UML avec des cours d’Analyse et conception des systèmes d’information. Ainsi avant chaque phase de développement nous devions réaliser une analyse UML du projet.
De plus, la formation UML n’est pas tellement répandue et les gens en général ne se sentent pas obligés d’acheter et de lire des livres UML, beaucoup n’ont tout simplement jamais appris UML.
Des notations informelles peuvent faire tout aussi bien
Dans de nombreuses situations, les gens ne pensent pas avoir besoin des diagrammes UML pour communiquer leurs idées. Ils vous est possible de créer des diagrammes informels qui sont faciles à créer dans PowerPoint, Visio, ou même pour les amateurs du crayon sur un tableau blanc ! De plus, des outils en ligne existent pour réaliser ce genre de diagramme : Gliffy est un service où il est possible de faire des diagrammes de réseaux informatiques, des plans de salle, des diagrammes de processus et des organigrammes… La version gratuite est limitée à 2Mo de photos, mais le nombre de diagrammes est illimité à partir du moment où ils sont publics. Pour quelque chose de plus confidentiel il faudra passer à la version premium.
Les développeurs de logiciels sont habitués à être formels au niveau du code (après tout, les langages de programmation sont des langages officiels), mais ils n’aiment pas le formalisme au niveau de l’architecture.
La phase d’analyse n’est pas jugée importante
Dans de nombreux projets, l’architecture du logiciel est assez simple car il suit juste une architecture de référence et donc il n’y a pas de besoin important de créer des diagrammes pour représenter et communiquer sur la conception.
Dans certains cas, la conception est communiquée oralement ou en utilisant d’autres notations graphiques, tels que les diagrammes informels et en ligne (comme mentionné ci-dessus).
Conclusion
Que ce soit par un manque de documentation sur la conception ou d’une décision délibérée qui résulte d’un manque de connaissance, de telles situations sont assez fréquentes, et dans ce cas la création de modèles UML est sans importance.
Les raisons d’utiliser UML dans vos phases de développement
Il est facile de dire « Ne pas utiliser UML« , mais l’inverse l’est moins.
Les notations informelles aident à la compréhension dans de nombreux contextes mais dans d’autres, l’ambiguïté nuit à la capacité de comprendre la conception.
Il est vrai que l’on peut se passer d’une documentation de conception dans certains cas, mais le manque de documentation devient un problème quand la conception doit être communiquée à travers le temps (pour un développeur qui se joindra à l’équipe de six mois plus tard) ou de la distance (pour un développeur qui travaille dans un autre pays).
Ainsi, bien que je suis d’accord avec certaines des critiques sur UML, je ne peux pas vous donner une meilleure alternative pour tout faire. Je pense qu’utiliser l’UML est indispensable.
C’est une norme
UML est le langage standard de facto pour la conception de logiciels. En d’autres termes, c’est le seul logiciel de notation de conception donc qu’attendez-vous pour l’utiliser 😉
Outils d’aide
Des outils UML à partir de logiciels libres abondent sur le marché, y compris des plugins pour les IDE les plus populaires. Pour ma part, j’utilise UMLet pour Eclipse. A noter également que ce logiciel est disponible en installation sur votre machine pour éditer directement des diagrammes.
Note : Voici des alternatives pour UMLet.
Outre les diagrammes, certains de ces outils peuvent générer du code, appliquer des modèles de conception, vous vous essaierez également à la pro-ingénierie et à la rétro-ingénierie, refactoring, et l’analyse de la complexité.
La capacité de générer du code depuis la conception dans les nombreux outils UML est une bonne raison d’utiliser UML.
UML est flexible
Les stéréotypes et les profils UML peuvent vous permettre de personnaliser vos besoins. En d’autres termes, vous pouvez avoir des éléments de modélisation et des relations qui sont spécialisés pour votre domaine ou pour les technologies que vous utilisez.
Les modèles UML sont portables
Les modèles UML peuvent être sauvegardés dans le format standard XMI. Ces fichiers XMI peuvent être lus par différents outils UML, bien que certains ont un peu plus de mal que d’autres (c’est souvent le cas avec n’importe quel fichier interchangeable entre différents systèmes).
Inutile de tout connaître
UML dispose de 14 différents types de diagrammes. Vous ne trouverez personne qui ne les utilise pour un système logiciel. Ce n’est pas un objectif de l’essayer 😉
J’avais vu il y a quelques mois (impossible de remettre la main dessus…) une enquête montrant que dans la pratique les développeurs utilisent régulièrement les diagrammes de classe, de séquence et de cas d’utilisation. La loi de Pareto semble s’appliquer : 20% du langage UML peut couvrir 80% de vos besoins de modélisation.
Cela signifie que vous pouvez apprendre un sous-ensemble de la notation et de communiquer efficacement vos conceptions en utilisant UML.
L’architecture est importante
L’architecture logicielle est le modèle pour le système, elle permet d’analyser les performances, la disponibilité, la sécurité, la planification pour un développement incrémental, et des guides pour l’attribution des tâches et le suivi.
Cependant, même la meilleure des architectures créées avec des années d’expérience et dont les modèles ont été conçus avec soin, peut être inutile si elle n’est pas correctement documentée et expliquée aux personnes qui ont besoin de l’utiliser.
Conclusion
Étant donné que la valeur stratégique pour les nombreuses entreprises correspond à l’augmentation de logiciels, les industries cherchent des techniques pour automatiser la production de logiciels et d’améliorer la qualité tout en réduisant les coûts et les délais de mise en service.
Le Unified Modeling Language a été conçu pour répondre à ces besoins.
Conclusion, pourquoi UML ?
De la même façon qu’il vaut mieux dessiner une maison avant de la construire, il vaut mieux modéliser un système avant de le réaliser. L’UML permet :
- Obtenir une modélisation de très haut niveau indépendante des langages et des environnements
- Faire collaborer des participants de tout horizon autour d’un même document de synthèse
- Exprimer dans un seul modèle tous les aspects statiques, dynamiques, juridiques, spécifications, etc…
- Documenter un projet
- Générer automatiquement la partie logiciel d’un système
Quelques livres
Voici une petite liste des livres que j’ai pu lire sur le sujet, que je vous recommande :
- « UML 2 par la pratique » de Pascal Roques chez Eyrolles, livre d’étude de cas et exercices corrigés
- « UML 2 en action » de Pascal Roques chez Eyrolles, livre orienté sur l’analyse des besoins à la conception J2EE
- « Real Time Uml » de Bruce Powel Douglass, disponible gratuitement sur Google Books
Et vous, utilisez-vous UML pendant vos phases de conception ? Si oui, pourquoi ? Si non, pourquoi également ?