Ingénierie du Logiciel
Après leur partiel de IL, des étudiants de master ont décidé de réaliser la phase de conception du logiciel eB6. Ils ont décidé de ne pas refaire une analyse et de ne se baser que sur les diagrammes suivants.1. S’inscrire comme acheteur : un utilisateur peut s’inscrire comme acheteur. 2. S’inscrire comme vendeur : un utilisateur peut s’inscrire comme vendeur. 3. Regarder les objets mis en vente : un utilisateur ou un acheteur peuvent regarder tous les objets mis en vente. 4. Poser une enchère sur un objet mis en vente aux enchères : un acheteur peut poser une enchère sur un objet qui a déjà été mis en vente et qui n’est pas encore vendu. 5. Acheter directement un objet mis en vente directement : un acheteur peut acheter directement un objet si celui-ci a été mis en vente directement. Le premier acheteur a acheter directement l’objet peut alors traiter avec le vendeur. 6. Mettre un objet en vente : un vendeur peut mettre un objet en vente soit aux enchères soit en vente directement. Diagramme de cas d’utilisation d’analyse et diagrammes de classes d’analyse (ne représentant que les classes métiers):Les étudiants proposent la découpe en composants suivantes : • Un composant GestionUtilisateur responsable des inscriptions des utilisateurs (en tant qu’acheteur et vendeur) et responsable de l’authentification des utilisateurs. • Un composant GestionObjet responsable de la gestion des objets mis en vente par les vendeurs. Ce composant est aussi responsable de la recherche des objets en fonction catégories ou de mots clé.
Un composant GestionEnchère responsable de la gestion des enchères. Ce composant enregistre les enchères et sélectionne la meilleure enchère lors de l’échéance de la vente. • Un composant IHM qui représente l’interface homme machine de l’application. Le diagramme suivant ne représente que les interfaces offertes des composants.: Réalisez un diagramme de séquence de conception pour la mise en vente par enchère d’un objet par un vendeur ainsi que l’achat par deux acheteurs. Il est demandé de ne montrer que les interactions entre composants. Question 2.3 : Définissez les interfaces requises des composants et précisez leurs dépendances (justifier vos choix). Question 2.4 : On considère que le composant GestionEnchère contient une classe représentant les enchères (Enchere) et que le composant GestionUtilisateur contient une classe représentant les acheteurs (Acheteur). Pour gérer la résolution des enchères, c’est-à-dire l’élection de l’enchère la plus haute, les étudiants proposent la conception suivante :La classe Juge est la classe qui contient l’algorithme d’élection des enchères (dans l’opération jugerEnchèresCourantes). Cette classe référence un unique chronomètre qui lui permet de connaître le temps écoulé et ainsi d’élire les enchères dont la date limite de la vente est arrivée à échéance. Une enchère est ouverte tant que la date limite de la vente n’est pas arrivée à échéance, après cela le juge ferme l’enchère (grâce à l’opération fermer). Ensuite, le juge élit uniquement l’enchère la plus haute (grâce à l’opération elir). Afin de notifier l’acheteur que son enchère a été élue, les étudiants proposent d’appliquer le pattern Observer. L’enchère est ainsi considérée comme un sujet alors que l’acheteur est considéré comme un observeur. Expliquez pourquoi cette conception ne suit pas les principes de conception énoncés en cours puis corrigez-la.
Les étudiants souhaitent maintenant effectuer la réalisation de la classe Juge sur la plate-forme Java (vous pouvez faire cette question que vous ayez corrigé ou pas la conception lors de la question 2.4). Etant donné que l’élection des enchères doit s’effectuer tout le temps, les étudiants souhaitent utiliser la classe Java Thread. La classe Thread permet de construire un nouveau processus et de lui affecter un traitement (dans l’opération run() de la classe Thread). Les étudiants souhaitent que le juge construise un nouveau Thread (dès l’instanciation du juge) et que ce Thread réalise en continu l’opération jugerEnchèresCourantes(). De plus, les étudiants souhaitent utiliser la classe Java Calendar qui permet d’obtenir, grâce à l’opération int getTime(), la date précise du moment (en milliseconde). Proposez un diagramme de classe illustrant la réalisation de la classe Juge (en ajoutant le code Java des méthodes que vous jugerez utiles de préciser). Question 2.6 : Etant donné qu’une enchère passe par plusieurs états, définissez la machine à état de la classe Enchère puis identifiez une faute et réalisez un diagramme de séquence de test visant à révéler cette faute.