Académique Documents
Professionnel Documents
Culture Documents
Analyse
Analyse
établissement
Florent Kaisser
Sandrine Phcar
Yong Li
Introduction
Le projet à pour but de réaliser un logiciel qui permet de stocké des notes d'un établissement
scolaire, et d'obtenir divers information sur ces notes (statistique, classement,...). On a alors séparé
le logiciel en deux grande partie :
• le système : C'est le noyau du logiciel, il permet de stocker et de récupérer les données entrées
par l'utilisateur.
• L'interface homme machine (IHM) : C'est l'interface graphique du noyau, il commande le
système.
Avant d'implémenter le système, on a ajouter une phase préliminaire, qui permettra de modéliser
le système, avant de l'implémenter.
I Modélisation UML
Avant d'écrire le programme nous avons tout d'abord modélisé le problème en UML.
L'organisation de cette tache s'est faite en plusieurs étapes, dans un premier temps, chacun de nous
trois a exposé son diagramme de classe UML, lors de la première réunion. On a ensuite donnée
notre avis sur ces diagrammes. On à alors abouti à la première version du diagramme. Pour savoir si
notre diagramme été correctes nous avons envisagé l'ensemble des cas d'utilisation, ainsi que les
différents acteurs du systèmes.
a)Acteurs
Les acteurs jouant un rôle dans le systèmes sont au nombre de cinq : Une Personne, un étudiant,
la scolarité, le jury, un examinateur :
1. Une personne
C'est un étudiant qui n'est pas encore inscrit à l'établissement.
2. Un étudiant
Acteur représentant une personne inscrit à l'établissement.
3. La scolarité
Personnel de l'établissement, qui à pour rôle de rentrer l'ensemble des données dans le système.
Elle peux aussi communiquer ces données à un autre acteur
4. le jury
Il peux modifier une moyenne d'un module.
5. Un examinateur
C'est lui qui détermine les notes des étudiants
2.Diagramme de classes
Le diagramme de classes à permis de modéliser notre problème, sous forme de classe. Les
attributs et les méthodes sont volontairement omis dans les première version, car il semblait plus
important de bien définir les classes et les association être elle avant d'allé plus loin. Les diagramme
de classe qui suivent sont aussi disponible au format GIF dans le répertoire doc/analyse
a)1er Versions
Dans la première réunion, nous avons définie une 1er version d'un diagramme de classes,
comportant les classes suivantes:
• Établissement
• Personne
• Règle : Ensemble de valeurs définissant les règles d'obtention d'un diplôme en fonction des
moyennes obtenues aux modules.
• Matière : Une matière enseigné
• Étudiant : Personnes inscrits à u moins une promotion.
• Promotion : Représentes l'ensemble des étudiants inscrits à un diplôme pour une années.
• Diplôme : Diplôme enseigné par l'établissement.
• Modules : Matière coefficienté, enseigné dans un diplôme
• épreuve : Epreuve d'un module. Possède un coefficients.
• Note : Classes association entre un Étudiant et une épreuve.
• RelevéDeNotes : Ensemble de moyenne de chaque module, fixé à partir des moyennes
calculé. Un objet de cette classe est créé après que le jury a défini les moyennes finals des
modules. Cette classes permet aussi de calculer la moyenne au Diplôme, ainsi que de savoir si
le diplôme est validé, et quel mention est attribué.
• Moyenne : Association entre une relevée de note et un module. Définie une note moyenne
pour un module donnée.
Les associations entre les classes sont :
• Établissement/promotion: Permet de définir les promotions de l'établissement.
• Étudiant/Note: Notes qu'a obtenues l'étudiant
• Promotion/ReleveDeNote : Relevés de notes pour chaque Étudiant inscrit à une promotion.
Elle bidirectionnel, car le Relevée de note doit pouvoir consulter les règles associé au
diplôme de la promotion.
• Promotion/diplôme : Diplôme associé à la promotion
• Diplôme/Module : Modules enseigné dans le diplôme
• Épreuve/Module : Épreuves qui sanctionnes un module.
• Note/Épreuve : Épreuve associé à la note.
• ReleveDeNote/Moyenne : Ensemble des moyenne du relevée de note.
• Moyenne/Module : Module associé à la moyenne.
• Diplôme/Règle : Règle associé au diplôme
Sur cette version on peux noter plusieurs point litigieux. ReleveDeNotes est associé à une
promotion, mais aussi à un Étudiant, car il possède son numéro, hors on a pas mis d'association
entre ReleveDeNotes et Étudiant. La classes note doit-elle être associé directement à un Étudiant ?
Ca pose problème car on demande pas à un Étudiant d'enregistrer sa note, puis quand on en à
besoin, de lui redemander. Le redoublement est difficilement gérable, car on peut pas conserver un
éventuelle module qu'il a déjà validé.
b)Seconde version
On essayé de résoudre le problème des redoublements en se disant, qu'il faut faire apparaître les
inscription à un module, au lieu des inscriptions à un diplôme. La classes Promotion est retiré pour
ajouter une classes InscriptionModule, qui represente une inscription d'un Étudiant à un module,
pour une année donnée (ce qui permet le redoublement). Comme on à liées les note à l'etudiant, on
décide de faire de même pour le RelevéedeNote. On ajoute aussi une association entre
Établissement et Étudiant pour matérialiser un inscription à l'établissement.
c)Troisième version
On s'est dit, que puisque qu'on à matérialisé une inscription à un module , on pourrai faire de
meme pour un Diplôme avec une classe InscriptionDiplome. Ce qui est plus logique,car un
Étudiant, s'inscrit, et un diplôme, puis à des modules. Si les notes serai associer à l'inscription
module, au lieu d'un étudiant, on à plus besoin de relevée de note, car InscripltionModule peut
calculer la moyenne, ou la fixer. On a alors retiré la classe RelevéeDeNote et la classe moyenne.
Pour qu'un Étudiant puisse s'inscrire à un diplôme on le demande à la classe Diplôme, qui crée un
objet de la classe InscriptionDiplome qui matérialise son inscription. Ensuite on peut demander a
InscriptionDiplome, de s'inscrire à un module du diplôme, elle crée alors un objet
InscritptionModule. Ces deux inscriptions sont toujours liée à une année (Promotion) car, si un
Étudiant veut conserver les notes obtenu à un module, il se réinscrit au diplôme pour l'année
suivante, et ajoute à cette inscription, certaines des inscriptions aux modules de l'année précédente.
On peut remarquer une sipulitude entre le groupe de classes Diplôme/Module/Epreuve et le groupe
InscriptionDiplome/InscriptionModule/Note . Le premier groupe décrit les entités liées à
l'établissement. Et le second des associations entre les classes (Classe d'association) :
• InscriptionDiplome : Association entre un Étudiant et un diplôme pour une année donnée
• InscriptionModule : Association entre une inscription à un diplôme et un Module, pour une
années données.
• Note : Association entre une InscriptionModule et des Épreuve, pour une valeur de note
donnée.
Après avoir vérifié, si les différent scénarios peuvent être accompli pas se diagramme, nous
avons décidé qu'elle serai la version finale.
d)Version finale
Dans cette version finale nous avons ajouté les principales méthodes et attributs des classes. Les
méthode qui permettent de naviguer entre les classes ont été volontairement omis, en considérant
qu'il sont déjà représenté par les associations du diagramme. Chaque attributs de classes sur le
diagramme sont publique et peuvent être obtenu en lecture seul par une méthode de même nom.
II Implémentation du système
Pour implémenter le système on à choisi Java. L'implémentation en Java suivra scrupuleusement
le diagramme de classe. L'IHM utilisera les objets des classes pour interagir avec le système.
Dans un premier temps, nous avons implémenté le système en stand-alone (les objets etant
stockés dans des vecteurs, et sans possibilité de sauvegarde des données), sans base de donnée pour
effectuer des teste (sans l'IHM). Une fois les testes concluant nous avons intégrer le système de
dialogue avec la base de données (interaction avec le JDBC).
1.Implementation des classes
Pour chaque classe du diagramme, on écrit une classe Java correspondante. Chacun des attributs
de classe peut être obtenue en lecture seul à partir d'une méthode de même nom. Pour chaque
association entre 2 classes, on crée un méthode pour obtenir une Collection d'objet de la classe
opposé. Si cette classe (celle opposé) à une clé, on peux obtenir un seul objet correspondant à cette
clé. La méthode pour obtenir cette objet aura alors comme paramètre la clé et retournera une
instance de la classe correspondante. En résumé si on à 2 classe A et B
A->B : A possédera une méthode : Collection b()
Si B à une clé c ; A possédera en plus la méthode B b(c)
En plus de ces méthodes, la classe A doit posséder une méthode du type ajouterB(B b) pour
ajouter une association entre un objet de A et l'objet b. Selon la situation « ajouter » peux être
nommer « inscrire », si B est une classe d'association. Dans ce cas l'objet à passer en paramètre n'est
plus une instance de classe opposé, mais une instance d' une des classe associer à cette association.
La méthode retourne alors l'instance de la classe d'association crée. Par exemple pour inscrire un
étudiant à un diplôme, on utilise la méthode InscriptionEtudiant inscrireEtudiant(Etudiant e) de la
classe diplôme. InscriptionEtudiant sert de classe d'association entre Etudiant et Diplôme.
InscrireEtudiant n'a donc besoin que d'une instance de la classe Etudiant pour créer une association.
Pour chaque méthode ajouterX on à aussi une méthode supprimerX pour supprimer une
association.
Pour une description plus détaillé sur chacune des méthodes de classes, se référer à la
documentation JavaDoc.
La classes promotion est implémenté comme un entier, représentant l'année de l'inscription. La
classes Mention et implémenté comme un type énuméré, qui est en faite un entier, qui peu prendre
comme valeur une constante défini dans la classe Règle.
2.Base de données
Pour conserver toutes les données rentrées dans le système, elle devront être enregistré sur un
support de sauvegarde. 2 cas ont été envisagé :
• Les données sont enregistré dans un fichier, créer par java, en utilisant le système de
Sérialisation. Dans ce cas la base de donnée ne peux être consulter qu'a partir de l'ihm java
associé, et seulement sur un seul poste.
• Les données sont enregistré sur un serveur de base de données. N'importe quel logiciel peux
accéder à cette base de données, pourvu qu'il respecte le protocole imposé.
Les deuxième solution à été retenue, pour pouvoir utiliser avec l'IHM n'importe où, du moment
qu'elle peux accéder au serveur. Une interface web pourra aussi être ajouté facilement. Pour éviter
de « réinventer la roue » on choisi d'utiliser un serveur de base de donnée existant de type
PostgresSQL ou MySQL.
Dés la deuxième réunion de projet, des idées pour l’interface graphique ont été évoquées. Ces
idées consistaient à n’avoir pour un utilisateur éventuel qu’une seule fenêtre de gestion des actions
et des données à saisir ou à vérifier !
De plus, seule une personne de l’administration sera apte à utiliser ce logiciel.
Pour ces deux actions : suppression et recherche, nous avons choisi d’élaborer une sorte de
« questionnaire ». En effet nous avons dit plus haut qu’il suffisait de connaître le numéro d’étudiant
pour retrouver la personne qu’il caractérise. Ainsi nous avons choisit de commander ces deux
actions par uniquement la valeur de celui-ci.
Au niveau graphique, nous obtenons deux panneaux presque identiques à un bouton près !
Ce panneau d’affichage d’information a été construit sur une JTable dont les champs ne sont en
aucun modifiable puisqu’il s’agit d’une simple vérification pouvant, par exemple, être de la forme
suivante dans le cas d’une inscription :
A tout instant, cette configuration permet de voir quel(s) module(s) a (ont) déjà été sélectionné(s),
il suffira de lire la liste de droite ! Un module choisit consiste en un ajout dans la liste de droite et à
une suppression dans la liste de gauche.
Mais plus on descend dans l’arbre (au niveau de la hauteur), plus les choses se corsent. Et c’est
notamment le cas pour l’insertion des notes.
Conclusion:
A la fin de ce projet, on s'est demandé si ça valait vraiment la peine de conserver le concept objet
stricte, pour implémenter le système. Les données aurai pu être obtenue directement par l'ihm
(comme avec le site). Mais la maintenance du logiciel aurai été d'autant plus difficile, car pour
modifier l'IHM il aurai fallu que le programmeur s'intéresse aux requêtes à utiliser, ce qui n'est pas
le cas avec notre système, qui cache toutes les requêtes.
On a aussi remarqué certain problème d'intégrité des données, par exemple si on oublie d'entrée
une note pour un étudiant, la moyenne sera calculé seulement à partir des notes entrées, et la
moyenne sera faussé. On peux résoudre le problème en vérifiant combien il y a d'épreuve, dans le
module. Des règles aurai pu être également ajouté, comme par exemple le nombre minimum de
module, auxquels l'étudiant doit être inscrit.
La réalisation du diagramme de classe, nous a permis de mieux comprendre la manière de penser
pour modéliser le monde réel en UML. La remise en question permanente de notre schéma nous à
sans doute permis d'aboutir à un modèle qui se rapproche de ce que doit remplier le système.
Néanmoins on se rend compte qu'il est difficile d'être sur à 100 % que notre diagramme colle bien à
la réalité. La réalisation par la suite de la base de données, nous a amené à utiliser les driver JDBC,
et à essayé d'intégrer au Modèle objet les requêtes pour récupéré les données dans la base.
La deuxième partie, qui est la réalisation de l'IHM, nous a pousser à utiliser les composant
SWING, et à mieux appréhender la réalisation d'une interface utilisateur, et à mieux comprendre les
liens qui peuvent exister être les données que l'utilisateur souhaite connaître, et leurs représentations
dans celle-ci.
Nous avons sous estimé le temps qu'on allé passer sur l'IHM, sans doute à cause du manque
d'expérience dans ce domaine. Elle n'est donc par terminé, et de nombreux bug de placement reste à
corriger. L'affichage des statistique reste très succin, et est seulement présent dans le site web. Le
site web aurai pu être agrémenter d'information sur l'établissement (diplôme enseignée,
renseignement divers). Il n'est également pas possible de gérer les rattrapage et le redoublement à
partir de l'IHM.
Annexe
Outils utilisés:
ArgoUML 0.16.1 : Logiciel libre prometeur pour la réalisation de diagramme UML. Il nous à pas
permis d'indiquer les attributs clés d'une classe.
Eclipse 2.1.2 : Environnement intégré, permettant, les principales fonctionnalité qu'on attend
d'un IDE. Le mode debugage est très pratique (-;
JDK 1.4 : Indispensable pour programmer en JAVA
OpenOffice 1.1.0 : Pour réaliser ce présent document.
JCreator : Autre Environnement intégré.
Références:
P. -A. MULLER, N. GAERTNER, Modélisation objet avec UML, Eyrolles 2004
Laura LEMAY, Rogers CADENHED Java 2 en 21 jours , Campus Presse 2002