E. Renaux

Hors les cours BLOG

Apprentissage du langage UML

without comments

[Massis KABAKDJIAN – Coralie MUSIELAK – Valentin PREVOST]

Le langage UML (Unified Modeling Language) s’est imposé en tant que standard dans la modélisation des systèmes informatiques, permettant de visualiser et de modéliser les divers éléments d’une application. Grâce à une gamme de diagrammes spécifiques, les différentes facettes d’un projet peuvent donc être détaillées et suivies, avec une méthodologie bien précise.

Cependant, bien que l’UML soit un langage relativement facile à lire et à comprendre, il est plus difficile d’en concevoir les diagrammes sans omettre le moindre élément. En effet, ce langage étant relativement flexible, les solutions pour un même problème sont multiples. De plus, la difficulté de ce langage réside dans sa pratique.

Nous en venons donc à nous poser cette question : à cause de la difficulté d’apprentissage de l’UML et donc de son utilisation concrète, comment déterminer le niveau de complexité nécessaire à son utilisation dans un contexte projet ?

Constat de la difficulté d’apprentissage de l’UML

Comment est enseigné l’UML et à qui ?

Avant toute chose, il est nécessaire de se demander de quelle manière est enseigné l’UML de nos jours et à qui s’adresse cet enseignement. En effet, selon les métiers et les personnes concernées, il peut être nécessaire d’étudier l’UML et son concept de façon pratique et approfondie ou bien être simplement d’un point de vu théorique.

En référençant quelques cours disponibles sur internet, il est possible de distinguer deux grandes catégories de personnes apprenant l’UML : les étudiants et les personnes travaillant sur des projets en entreprise.

En effet, la plupart des étudiants s’approchant de près ou de loin à la programmation objet sont à un moment confrontés à l’UML, de par des cours relatifs à ce sujet, ou par la réalisation de projets ayant attrait à la programmation objet. Ils suivent alors des cours et des travaux pratiques, leur permettant d’acquérir des bases théoriques solides et une première expérience pratique. Cependant, ce ne sera qu’une fois en entreprise et confrontés à de réels enjeux qu’ils développeront une réelle maîtrise du langage.

Les personnes travaillant sur des projets en entreprise, analystes comme développeurs, ont également souvent à faire avec le langage UML. Une partie d’entre eux, grâce à leurs études, ont déjà acquis des compétences en la matière. Mais certains autres se sont auto-formés, et ne disposent pas toujours des bons outils. C’est pourquoi les entreprises leur offrent souvent l’opportunité de suivre des formations afin d’acquérir ces compétences. Cependant, ces formations sont souvent réalisées en quelques jours, n’offrant ainsi aux personnes formées qu’un bref aperçu de ce langage, sans leur permettre d’en maîtriser tous les concepts. Toutefois, ces formations dispensent des cours et des travaux pratiques, ce qui permet d’appréhender rapidement le langage.

Apprendre l’UML, c’est un mélange équitable entre la théorie et la pratique : Force est de constater que les deux sont indissociables pour un bon apprentissage du langage. Certes, les autodidactes pourront lire des livres pour se documenter et en apprendre plus mais pour acquérir une réelle maîtrise de l’UML, il faut également le pratiquer.

Avantages : pourquoi choisir l’UML ?

Si l’UML est devenu un standard, c’est qu’il offre de nombreuses possibilités pour mettre en place un projet.

En effet, les avantages de son utilisation sont importants : ce langage offre un aspect visuel clair, synthétique permettant un pré-découpage des étapes de réalisation d’un projet (use cases). La vision d’ensemble du projet est donc bien définie, et tous les participants en ont la même vision. De plus, ce langage étant composé de plusieurs types de diagrammes indépendants les uns des autres, il est facile de pouvoir modéliser uniquement ceux jugés nécessaires par le concepteur pour les besoins du projet. Enfin, le grand nombre de logiciels disponibles pour modéliser ces diagrammes fait d’UML un outil fiable de modélisation de conception logiciel. Avec certains de ces logiciels de modélisation, il est même possible de générer le code équivalent à la représentation des éléments du diagramme ce qui permettra un gain de temps pour l’équipe de programmation en charge du projet.

Apprentissage facile mais utilisation plus complexe

Explication du phénomène

Grâce aux différents outils le composant, notamment ses différents diagrammes, UML est surement le moyen le plus efficace pour avoir une vision d’ensemble sur un projet de conception logiciel. En effet, à l’aide d’une standardisation des différents concepts visuels d’UML, toute personne ayant ou non des notions en informatique, peut facilement comprendre les mécanismes du système logiciel et discuter sur leurs interactions après avoir suivit une formation minimum à ce langage. Cependant, la lecture des différents diagrammes n’est possible qu’après une première ébauche de conception de ces schémas. En effet, s’il est raisonnablement facile de pouvoir lire ces diagrammes, leur modélisation nécessite réflexion et pragmatisme afin de représenter au mieux les besoins client du système logiciel. Or, la maniabilité des outils UML est telle qu’il est impossible de modéliser un unique diagramme pour une situation donnée : Au même titre que la rédaction de cet article est influencée par les styles de ses auteurs, un diagramme UML est façonné selon la vision de son concepteur qui ne correspond sans doute pas à celle de ses collaborateurs ou de ses clients.

De plus, la complexité de conception de ces diagrammes dépend grandement de l’ampleur des projets à mener. Par exemple, un diagramme UML pour un site de e-commerce sera  beaucoup plus simple à modéliser que celui permettant de créer un jeu Bomberman. Jugez-en par vous-même :

schema_simple

schema_complique

Diagrammes de classes respectifs d’un site de e-commerce et d’un jeu Bomberman

Dans un cas comme dans l’autre, il n’est pas forcément judicieux de concevoir de tels diagrammes s’ils ne permettent pas de simplifier la conception de ces systèmes logiciels. Enfin, tout au long de la conception du logiciel, des modifications parfois majeures seront à effectuer selon les besoins mis en avant par le client. De ce fait, certains considèrent UML comme étant une perte de temps moins efficace que d’autres outils plus simples car les diagrammes UML périment assez facilement si les développeurs ne veillent pas à garder leurs documents de conception à jour.

Un paradoxe ce crée alors : Si la conception d’un diagramme UML est simple dans le cadre de projets courts mais non essentiel à l’aboutissement de la conception logiciel et qu’à l’inverse il peut être primordiale d’en modéliser un dans le cadre de projets plus longs rendant de ce fait sa conception longue et complexe, doit-on vraiment utiliser UML dans le cadre d’un projet ?

Hiérarchisation de la complexité

La réponse à cette question dépend grandement du contexte projet. En effet, plus le niveau d’utilisation de ce langage est élevé et plus cela devient chronophage, aussi bien en terme de création de diagrammes que de synthétisation des informations liées au projet. Bien que cela soit très utile, il faut d’abord déterminer s’il est vraiment nécessaire de passer du temps sur des diagrammes UML avant de commencer à développer un projet, notamment s’il s’agit d’un projet de petite envergure : il est parfois plus raisonnable de ne pas utiliser l’UML, par risque de pertes de temps.

Dans ce cas, la meilleure solution ne serait-elle pas de trouver un compromis ? Fondamentalement, l’utilisation de tels diagrammes doit permettre de réduire la complexité des besoins client : En modélisant des diagrammes reposant uniquement sur l’essentiel du fonctionnement du logiciel à concevoir tout en éliminant les détails non influents, le concepteur met en avant ce qu’il pense être important pour la compréhension du système à modéliser. De ce fait, il est préférable de réaliser un modèle simple afin de mieux comprendre le fonctionnement du système tout en maitrisant sa complexité et de maintenir sa cohérence. En faisant d’un tel diagramme un référentiel pour toute l’équipe de développement, il permettra une compréhension commune du logiciel à créer et donc un gain de temps pour la réalisation du projet.

Savoir s’arrêter

Analyse du contexte projet

Comme nous venons de le voir, l’apprentissage d’UML est utilisé dans de nombreux métiers de l’informatique. Mais une autre question se pose dès lors : quand estime-t-on avoir appris suffisamment pour réaliser le projet qui nous a été confié ?

Pour répondre à cela, il est préférable de réaliser une analyse du contexte projet. Par cela, nous entendons la réalisation d’une étude approfondie, si possible avec le client, pour déterminer l’ensemble des besoins précis et pour savoir si le projet va beaucoup évoluer dans le temps.

Un projet avec un client rigoureux voulant chaque diagramme, pour réutilisation future, engendrera nécessairement un apprentissage de l’ensemble d’UML. Donc beaucoup d’argent et de temps à prévoir pour le projet. Mais si nous prenons l’exemple d’un projet de moyenne ampleur dont le client ne veut aucune spécification, alors on pourra se contenter de l’essentiel pour ce projet.

Il faut savoir également que la partie conception du projet prend environ 50% du temps total. Il faut donc aussi prévoir le temps nécessaire à la réalisation de la partie UML pour ne pas accumuler un retard conséquent sur le reste du projet.

Bien entendu, en prenant compte de l’évolution des besoins d’un projet, l’UML va sûrement être modifié sans cesse. Il est préférable d’utiliser un logiciel de reverse engineering pour faire évoluer l’UML en fonction des modifications dans la partie conception. Ceci requiert forcément des fonds supplémentaires, donc pour les petits projets ce n’est pas forcément nécessaire, mais pour les projets de longue durée et amenés à être beaucoup modifié c’est conseillé.

Une donnée importante, à prendre également en compte lors de l’analyse, est le domaine du projet. En effet, selon les métiers requis, les diagrammes UML à produire ne seront pas les mêmes et ne demanderont pas le même apprentissage, la même durée et le même coût.

Best practice de l’utilisation d’UML selon le contexte

Utiliser UML parait être une bonne chose selon les éléments précédents mais il ne faut pas que cela soit une perte de temps par ailleurs. Nous avons donc établi le récapitulatif suivant pouvant aider à déterminer le temps et l’utilité d’apprendre et de concevoir les diagrammes UML pour votre projet :

Durée ↓ / Restriction →

Faible

Modérée

Importante

Courte (< 1 an)

Apprentissage court (est-ce vraiment nécessaire?)

Apprentissage modéré / à évaluer selon la durée du projet

Inapproprié, apprentissage trop long

Moyenne (de 1 à 2 ans)

Apprentissage court / vraiment utile?

Apprentissage moyen et à envisager

Apprentissage long, à étudier selon le temps accordé

Longue (> à 2 ans)

Apprentissage court / vraiment utile?

Solution convenable

Apprentissage long mais solution convenable

 

 

Finalement, l’apprentissage de l’UML est non négligeable dans le cas de longs projets, regroupant un certain nombre de personnes. Ainsi, la rentabilité est améliorée, et les résultats sont visibles. En revanche, il faut éviter de se former à ce langage si nous ne travaillons que sur des projets courts, ou à petite envergure. Le coût de la formation est également un point important : il faut peser le pour et le contre afin de définir s’il est vraiment utile d’apprendre l’UML (cf. tableaux ci-avant).

Durant notre module de CASI, nous avons eu l’occasion de découvrir et d’apprendre à utiliser l’UML. Nous nous sommes rendu compte de l’importance de maîtriser ce langage pour la réalisation de projets informatiques. En tant qu’élèves, nous avons donc pu expérimenter une formation sur l’UML, au travers de nos cours et des séances de travaux pratiques. C’est ainsi que nous avons approuvé le fait qu’il est indispensable de lier la théorie à la pratique de ce langage.

Cependant, nous nous sommes posé une dernière question : est-ce qu’une utilisation très poussée d’UML garantie réellement la réussite d’un projet ?

Bibliographie

http://uml.free.fr/cours/p5.html

http://laurent-audibert.developpez.com/Cours-UML/html/Cours-UML.html

http://www.siteduzero.com/informatique/tutoriels/apprenez-a-programmer-en-java/presentation-d-uml

http://fr.softuses.com/259871

http://www.alcyonix.com/articles/du-bon-usage-de-labstraction-2-les-difficultes-liees-a-uml/

http://www.dawan.fr/formations/formations/genie-logiciel?gclid=COz9mPjftLkCFQKWtAodPTsAUQ

http://www.miura-conseil.com/UML-analyse-et-conception.html

http://udp.vilaboa.cl/ramos/dsi2/cd/%28eBook%29%20Martin%20Fowler%20-%20UML%20Distilled.pdf

http://www.tutorialspoint.com/uml/index.htm

http://www.agilemodeling.com/essays/umlDiagrams.htm

http://www.ehow.com/how_7513810_learn-uml-20-online.html

http://www.centre-formation-entreprise.fr/uml-r10935.html

Written by

septembre 26th, 2013 at 7:29 pm

Posted in CASI'13