TD 1 : Exercice de conception : Modéliser la structure d'une usine robotisée
Projet : Développer un simulateur d’usine de production robotisée

Inspiré du laboratoire de systèmes cyber-physiques de l'institut Hasso Plattner (Potsdam, Allemagne)
Pourquoi ce système ?
Permet de mettre en œuvre les notions essentielles de l’OO.
- Délégation / non-intrusion, héritage, polymorphisme, classes abstraites, etc.
Permet de mettre en œuvre l'utilisation des interfaces pour l'intégration de différents composants logiciels.
- Une interface graphique vous sera fournie et l’intégration de ce composant permettra de visualiser la simulation.
Illustrer quelques patrons de conception (design patterns) et prendre conscience de l’importance de l’architecture logicielle.
Ce système peut être étendu pour mettre en œuvre des aspects avancés (cours de deuxième année) :
- Persistance des données.
- Programmation parallèle et synchronisation des accès aux ressources.
- Applications distribuées orientées services.
- Etc.
Exigences fonctionnelles pour le projet
Modéliser une usine de production robotisée simplifiée contenant les éléments suivants :
- Usine, robots, stations de recharge de robots, salles et portes, aires de travail, machines de production, convoyeur.
Pouvoir simuler le comportement des robots devant transporter les biens produits (rondelles) d’un endroit à l’autre dans l’usine.
- Pour chaque robot, on doit pouvoir donner une liste de positions à visiter dans l’usine et le robot devra se déplacer pour les parcourir successivement.
- Les robots devront contourner les obstacles sur leur parcours.
L’usine et sa simulation devront pouvoir être visualisés via une interface graphique.
Les modèles (données) doivent pouvoir être sauvegardés sur stockage permanent (disque).
L'application doit gérer les exceptions pouvant survenir en cours d'exécution du programme.
- Par exemple, lorsqu’il y a des problèmes lors de l’accès aux données sur stockage permanent.
Optionnel, si vous avez suffisamment de temps :
- Simuler la consommation d'énergie du robot. Si un robot atteint un niveau minimum d'énergie donné, il doit alors se diriger vers une station de recharge et y séjourner pendant un certain temps pour se recharger.
- Les portes s'ouvriront et se refermeront automatiquement lorsqu'un robot devra entrer dans une salle.
Exigences de développement
Mettre en œuvre les bonnes pratiques de programmation vues en classes.
- Définition et organisation des classes.
- Conventions de nommage.
- Commentaires et formatage du code.
L’architecture doit suivre le MVC tel que présenté en classe.
Autres remarques…
Le détail des fonctionnalités précédentes, à implémenter pour le projet, sera donné dans chacun des documents d’instructions des TP.
Étant donné le peu de temps disponible, plusieurs aspects du simulateur ne seront évidemment pas considérés pour le projet ; ils le seront dans le cadre d’un cours de programmation avancée en Java lors de la deuxième année.
- Parallélisme et accès concurrents aux ressources (synchronisation).
- Application distribuée.
- Base de données.
- Etc.
Ce système ne sert qu’à illustrer les notions et les bonnes pratiques de programmation du cours ; il ne s’agit pas d’en faire un simulateur professionnel :).
Exemple de structure d’usine de production robotisée

Importance de la conception : un autre exemple de système très (très) simple
Passerelle de la carrière de la Troche.
- Sur le chemin en allant prendre le RER B à la station du Guichet à partir de l’école.
Trouver deux erreurs de conception.

Réponse

Importance de la conception
"If you fail to plan, you are planning to fail!" -- (Benjamin Franklin peint par Joseph-Siffrein Duplessis)


Exercice de conception dirigé
En groupe de 2 ou 3 élèves, dessiner un diagramme de classe (voir exemple suivant) pour modéliser la structure de l'usine robotisée.
- Dessin sur papier ou autre outil de votre choix.
- 20-30 minutes de travail en équipe.
- Restitution de quelques équipes au tableau.
- Discussions et améliorations itératives du diagramme de classe.
-
Note : ne vous intéressez qu'à la structure de l'usine ; le comportement (modélisé par les méthodes des classes) sera spécifié lors d'un TP suivant.
