1. Questions de cours [5 Pts] - Master informatique

http://java.sun.com/products/jsp/syntax/1.2/syntaxref12.html ... Ecrire une jsp en
utilisant la JSTL, qui affiche la liste des nombres de 2 à 30 en indiquant pour ...

Part of the document

M1 : Ingénierie du Logiciel Université Pierre & Marie Curie (Paris VI) Examen de décembre 2006 (2 heures avec documents) Questions de cours [5 Pts]
Q1.1 : Quelles sont les différences entre les dépendances structurelles
et les dépendances fonctionnelles ? Les dépendances fonctionnelles apparaissent entre composants, lorsqu'un
composant fait appel à une opération offerte par un autre composant. Il
dépend alors des fonctions fournies par l'autre composant. Il n'a pas
besoin par contre de connaître la structure interne de ce composant. Non, il faut aussi qu'elle soit flexible, performante, robuste,
efficace ... La complétude et la justesse ne sont pas les seuls critères.
Oui, il est par exemple possible de réutiliser un composant qui fait
bien plus que nécessaire. Dans un des TD par exemple, un des composants
utilisait une mémoire cache afin d'aller plus vite. La mémoire cache
n'est pas nécessaire et pourtant elle améliore la conception.
[pic] Ces relations d'inclusion sont tout à fait possible car il est fort à
parier qu'une vérification soit faite avant toute génération de code et
de documentation. De plus, il est tout à fait envisageable de faire en
sorte que l'utilisateur bénéficie de cette fonctionnalité.
La phase de conception permet d'être indépendant d'une plate-forme. Si
l'indépendance n'est pas un objectif, on peut s'en passer.
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. Description des cas d'utilisation : 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): [pic] [pic]
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. [pic] Question 2.1 : Spécifiez les opérations des interfaces IObjet et IEnchère.
Dans IObject, il faut voir apparaître une opération pour ajouter un
objet et deux opérations pour rechercher les objets (par mots clés et par
catégories). Il faut voir les paramètres de ces opérations (pas de
dépendance structurelle !) Il faut voir apparaître au moins une instance pour les composants
(GestionEnchère,GestionObjet et IHM). 10% Idéalement il faut que IHM dépende des autres composants et c'est tout. [pic] 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. L'utilisation de ce pattern est complètement fausse. En effet, il y a
ici une confusion entre la classe Acheteur l'acteur Acheteur. Le réel
besoin est de notifier l'acteur Acheteur (et non pas la classe Acheteur).
Juge doit être associé avec une classe (EnchereEngine) qui hérite de
Thread (30%)
[pic]
Les états d'une enchères sont : ouverte (avec un montant), fermé, élu
[pic]