Résumé du module

Dans ce module, vous avez étudié :

L'ensemble des diagrammes UML

La version actuelle d’UML est constituée de 14 diagrammes, que l’on peut scinder en 3 grands groupes :

Nous avons vu un diagramme de chacun de ces groupes.

Diagrammes structurels ou statiques (UML Structure) :

Diagrammes de comportement :

Diagrammes d'interaction :

Différentes phases de l'élaboration d'une application

On peut décomposer l’élaboration d’une application en 4 grandes phases :

1. L'expression des besoins :

Ici, on s’intéresse au « quoi faire » et non au « comment faire ». Il s’agit donc de déterminer quels sont les acteurs exploitant l’application et, surtout, leur buts. On va ainsi déterminer les grandes fonctionnalités de l’application.

Les diagrammes UML utiles pour cette phase sont, en particulier :

2. L'obtention d'un modèle du système :

Ici, on essaye de déterminer les classes de l’application, leurs relations et leurs attributs. On décrit les abstractions et les informations essentielles du domaine.

Les diagrammes UML utiles pour cette phase sont, en particulier :

3. La conception détaillée :

Ici, on détermine les méthodes, les types, les dépendances entre packages. On décrit les interactions entre objets et les sens de navigabilité (un objet dépend d’un autre mais pas inversement).

Les diagrammes UML utiles pour cette phase sont, en particulier :

4. Le passage au codage

Ici, on s’appuie beaucoup sur les diagrammes de classes et de séquence afin de coder l’application. Attention : on ne débute pas le codage avant de savoir précisément ce que l’on doit coder, autrement dit avant que les diagrammes mentionnés ci-dessus soient bien clairs !

Les design patterns

On peut séparer ces design patterns en plusieurs catégories. Ici, j’en ai choisi 3 :

Les design patterns indiqués en rouge sont ceux décrits dans les séances suivantes.

Une référence utile avec plein d'exemples et d'explications : Refactoring Guru.

Exercice 1 : Héritage multiple   

Soit quatre classes A, B, C, D. On souhaite émuler en Java le fait que D hérite de A, B, C.

Question :

Proposez une solution en UML pour cela. Quel design pattern utiliseriez-vous ?

Exercice 2 : Contrôle technique   

L’ingénieur de votre entreprise a développé un logiciel de contrôle suivant le schéma UML ci-dessous. L’idée est la suivante : on a une classe Streamer qui gère un flux de données. Celles-ci sont traitées via une classe ProcessingUnit qui peut exécuter ses calculs soit sur GPU (CUDA) soit sur CPU. Les données ainsi traitées peuvent être affichées par le centre de contrôle via la méthode displayProcessing().

Plus précisément, lors de sa construction, le ControlCenter exécute une thread timedProcess() qui se réveille toutes les 15ms afin de demander au ProcessingUnit qu’il contient s’il y a eu une update des données, auquel cas ces données sont traitées par la méthode getProcessingUpdate() et affichées via la méthode displayProcessing(). Ce processus n’est pas optimal dans la mesure où les updates apparaissent plutôt toutes les 2 ou 3 secondes, mais le logiciel fonctionne malgré tout correctement.

Centre de contrôle

Question :

Récemment embauché dans l’entreprise, on vous demande de mettre à jour ce schéma UML pour qu’il soit SOLID et efficace. En exploitant les design patterns, quel nouveau schéma UML proposez-vous?

 
© C.G. 2007 - 2025