retour sommaire des sujets logo ULP

DESS TSI - Première session 2005
Option Mécanique et Matériaux
Informatique Appliquée à la Mécanique

Durée : 2h, documents personnels et calculatrice autorisés. Ce sujet comporte trois pages de texte. En cas d'informations insuffisantes, vous pouvez faire toute supposition qui vous arrange (et ne contredise pas le sujet), à condition de le préciser.

De nombreux problèmes qui se posent dans l'industrie sont en fait surtout un problème de planification, d'organisation et de gestion de nombreuses tâches imbriquées, alors que la réalisation individuelle de chaque tache est bien plus facile à définir. Il est étonnant que dans chaque domaine on ait développé des méthodes spécifiques pour déterminer l'ordre des tâches à effectuer : gamme d'usinage, Grafcet, SADT, gestion de flux, PERT, GANTT,... Pour tous ces outils, on essaie de déterminer l'ordre des tâches à partir d'une définition locale de contraintes d'antériorité (par exemple pour chaque tâche, connaître celles qui doivent être terminées avant). Donc pour la réalisation en C++ d'un de ces outils, on utilisera un objet « tâche » assez similaire. Nous allons dans ce sujet nous intéresser aux diagrammes PERT. Un Diagramme PERT (Program Evaluation and Review Technique) est (d'après le dictionnaire WebNTic) un « diagramme en réseau, lequel est une illustration graphique de la relation entre les activités d’un projet. Un diagramme de PERT résulte de l’application de la méthode du chemin critique et est composé d’activités, de durée d’activité, de date de fin d’activité (date au plus tôt, date au plus tard) ».

Peut-être aimeriez vous un petit dessin ?

Les « étapes » (attention, ce mot ne représente pas la même chose qu'en Grafcet) sont représentées par un cercle. Elles correspondent à un instant au cours du temps (date de début ou de fin d’une tâche). Habituellement on numérote les étapes. On indique aussi leur date de réalisation au plus tôt et au plus tard (dans l'exemple ci dessus on a indiqué les dates par des entiers, en nombre de jours depuis le début du projet).

Une tâche est représentée par une flèche. Toute tâche a une étape de début et une étape de fin. Une tâche suivante ne peut démarrer que si toutes les tâches pointant sur son étape de début sont terminées. Dans l'exemple chaque tâche est nommée par une lettre, mais on peut aussi les numéroter (c'est ce qu'on fera dans la suite du sujet), voire marquer un nom en clair. Chaque tâche a une durée minimale (ou une durée mini et une durée maxi), dans l'exemple on n'a indiqué que la durée mini (un nombre de jours) placé à côté du nom de la tâche.

Le but de ce sujet est donc de représenter de tels diagrammes en C++. Nous n'allons pas nous occuper de la représentation graphique (vous n'avez pas encore terminé votre projet), ni choisir les exactement les mêmes notations. Si ça vous arrange, j'accepte que les attributs des objets soient publics, mais je préfère que vous passiez par des « accesseurs » (nommés get_xxx et set_xxx si un objet a un attribut nommé xxx).

Question 1

Pour commencer, définissez une classe pour les dates.

Question 2

Définissez maintenant la classe « etape ». Une étape contient deux objets de type date, nommés « tot » et « tard ». Pour l'instant, on ne numérote pas encore les étapes. Définissez aussi les méthodes saisie et affichage pour une étape (utilisant celles d'une date).

Question 3

Vous allez maintenant créer un objet contenant un tableau de 100 étapes. Il contiendra également un entier nommé « nb » qui servira à désigner le nombre total d'étapes de notre projet (maximum 100). Il s'appellera « etapes ». Créez ici aussi une méthode de saisie (demande le nombre d'étapes puis saisit toutes les étapes), ainsi que l'affichage. Vous n'avez pas besoin de fignoler, en particulier il n'est pas nécessaire de vérifier qu'on ne dépasse pas les 100 étapes.

Question 4

Passons maintenant aux tâches. Une tâche contient trois entiers : sa durée (un nombre de jours), et les indices dans « etapes » de son étape de début et de celle de fin. Définissez la classe « tache » (avec une méthode de saisie et d'affichage). Définissez également un objet nommé « taches » qui contiendra un tableau de 100 tâches, ainsi qu'un entier nommé « nb » qui désignera le nombre total de tâches.

Question 5

Si nécessaire, pour cette question vous pouvez rajouter des méthodes aux objets précédemment créés (sans avoir besoin de tout réécrire). Ecrivez un programme qui crée deux objets : « taches » et « etapes », qui les saisisse puis teste la validité du diagramme PERT :

Question 6

Dans une gestion de projet, il y a généralement plusieurs intervenants, qui de plus sont souvent dispersés (pas tous au même endroit) et mobiles (pas toujours au même endroit). Il serait bien de disposer d'un diagramme PERT centralisé quelque part et accessible (consultation et modification) via intranet ou internet. Pour cela il faudrait utiliser une architecture « client - serveur ». Expliquez ce que cela signifie, ce que cette architecture peut apporter à ce problème, et quels traitements devraient plutôt être « côté serveur » ou « côté client ». Une gestion de mots de passe semble nécessaire.

Remarques : les figures de ce sujet proviennent de www.transdata.fr/bois/Cours/PERT/PERT.htm Si vous remarquez dans une question qu'il faudrait que vous rajoutiez une méthode à un objet défini dans une question précédente, n'ayez pas peur de le faire. Si dans une question il serait intéressant d'utiliser des choses définies dans les questions précédentes, n'ayez pas peur de le faire (même si vous n'avez pas répondu aux questions précédentes). Les affichages de vos programmes n'ont pas besoin d'être trop nombreux ni trop fignolés, sinon vous n'aurez pas le temps de finir le sujet.


pour quelques pistes de solution, vous pouvez regarder la correction de ce sujet. Pour retourner au sommaire des sujets d'examen, cliquez


retour sommaire des sujetsPatrick TRAU, ULP - IPST mars 05