Alexandre ARTAUD Classe 31

publicité
Alexandre ARTAUD Classe 31
Antoine ARTAUD Classe 32
Yannick DELBEZ Classe 33
Jean-Jacques FONTANA Classe 33
23 Mars 2007
Rapport Intermédiaire de PSI
(Projet des Sciences de l’Ingénieur)
Sujet : Création d’une BDD Image
Suiveur : M Djebali
Sommaire
I. Introduction
II. Rappel des objectifs
III. Résultats obtenus
 III.1 Délimitations du projet
o III.1.1 Bilan de la première réunion
o III.1.2 Bilan de la seconde réunion
 III.2 Répartition des tâches et caractéristiques techniques du projet
 III.3 Réalisation du projet
o III.3.1 Réalisation de l’application Web

III.3.1.1 La fonction insertion

III.3.1.2 La fonction recherche

III.3.1.3 La fonction affichage

III.3.1.4 La fonction modification
o III.3.2 Réalisation de l’application locale
IV. Analyses critiques des membres du groupe
Table des annexes
I. Introduction
Le projet scientifique et technique de la troisième année : le PSI, Projet des Sciences de
l’Ingénieur. Celui-ci nous permet de mettre en pratique les notions étudiées en classe.
Nous avons porté notre choix sur un thème récurent des technologies actuelles de
l’information : les bases de données.
Une base de données est un ensemble structuré et organisé permettant le stockage de grandes
quantités d'informations afin d'en faciliter l'exploitation.
II. Rappel des Objectifs
Ce projet a pour but la conception d’une base de donnés, et plus spécifiquement une base
de données d’images (BDI). La réalisation d’une interface spécifique permettra à l'utilisateur
d’extraire facilement les informations voulues depuis la base de données.
III. Résultats Obtenus
III.1 Délimitations du projet
III.1.1 Bilan de la première réunion
Le 23 Janvier 2007 nous avons effectué une première réunion entres les membres du
groupe afin d’évaluer la faisabilité du projet. Cette étude nous a permis d’éclaircir les
contraintes technologiques et temporelles liées à la réalisation du projet.
III.1.2 Bilan de la seconde réunion
Le 30 Janvier 2007 nous nous sommes réunis une deuxième fois. Lors de cette seconde
réunion nous avons exposé l’ensemble des possibilités, des langages informatiques qui
s’offraient à nous. Les technologies et langages informatiques suivants ont été évoqués :
GTK, langage C, SQL, Java, PHP, Bash.
Nous avons essayé de comparer les différentes approches du projet : pourquoi utiliserait-on ce
langage plutôt qu’un autre ? Quels sont ses avantages ? Ses inconvénients ?
A la suite de cette seconde réunion, nous avons décidé de réaliser deux applications
distinctes eu sein du projet : Une application Web et une application locale.
- L’application Web permet de gérer une base de données à distance via une interface
programmée en langage PHP.
- L’application locale permet de gérer une base de données uniquement sur une seule
machine via une interface programmée an langage JAVA.
- Dans les deux cas les bases de données sont programmées en langage SQL (avec
MySQL).
Lors de cette réunion nous avons également segmenté le projet en plusieurs parties afin de
pouvoir répartir plus facilement les tâches au sein du groupe.
III.2 Répartition des tâches et caractéristiques techniques du projet
Application Web
Langages
Informatiques
utilisés
Partie I
Partie II
Partie III
PHP et SQL
Application Locale
JAVA et SQL
Récupérer les informations des images
-nom du fichier
-nom du fichier
-Format de l’image (GIF, JPEG,
-Format de l’image (GIF, JPEG,
PNG etc.)
PNG etc.)
-taille de l’image (En Octets)
-taille de l’image (En Octets)
-dimension de l’image (En Pixels)
-dimension de l’image (En Pixels)
-date de création
-date de modification
-date de modification
-Conversion de l’image en BLOB*
-date de dernière consultation
-Conversion de l’image en BLOB*
Communiquer les informations récupérées à la base de données
-Etablir une connexion avec le
-Etablir une connexion avec le
SGBD**
SGBD**
-Récupérer les résultats des requêtes -Installation du driver de SGBD**
-Insertion
sur Netbeans 5.0***
-Modification
-Récupérer les résultats des
-Suppression
requêtes sur une IHM (Interface
-Recherche
Homme Machine)
-Insertion
-Modification
-Suppression
-Recherche
Gestion de la base de données
-Effectuer les requêtes SQL
-Effectuer les requêtes SQL
-Interface pour sortir le résultat en
-Interface en Java (Utilisation de
fonction des critères.
Swing****) pour sortir le résultat
(Web/interface graphique, boutons)
en fonction des critères.
(interface graphique, agencement
graphique, boutons)
* : BLOB : format de fichier permettant le stockage de données binaires
** : SGBD : système de gestion de base de données
*** : Netbeans : environnement de développement pour le langage JAVA
**** : Swing : bibliothèque graphique pour le langage JAVA
La répartition des tâches a été effectuée de la manière suivante :
 Alexandre était chargé des Parties I et II
 Yannick était chargé de la Partie III
 Antoine était chargé de la Partie II
 Jean-Jacques était chargé de la Partie I
III.3 Réalisation du projet
Dans un premier temps nous nous sommes concentrés sur la partie Web du projet.
Ne connaissant pas du tout le JAVA en début d’année il nous a semblé plus judicieux de
procéder ainsi.
Le PHP ne nous était pas non plus familier, mais nous semblait plus accessible.
Le SQL ayant été appris lors du premier semestre, nous avons approfondi nos connaissances.
III.3.1 Réalisation de l’application Web
Dans un premier temps nous avons réalisé une segmentation de l’ensemble des fonctions
de l’application. (Insertion, Recherche, Modification, Suppression).
III.3.1.1 La fonction insertion
Nous avons tout d’abord réalisé l’insertion des images. Cette opération insère dans la base
de données toutes les images d’un dossier prédéfinis. Ce dossier doit être nommé image pour
être compatible avec notre code source PHP.
 Voir annexe 2 et 3
III.3.1.2 La fonction recherche
Nous avons ensuite conçut la fonctionnalité de recherche. Celle-ci a été la partie la plus
difficile à implémenter. En effet le nombre de critères de recherche d’une image ayant
considérablement augmenté au fur et à mesure de l’avancement du projet, cela à augmenter le
nombre de requêtes SQL à programmer.
 Voir annexe 4, 5 et 6
III.3.1.3 La fonction affichage
La problématique de l’affichage des résultats s’est ensuite posée. Nous avons tout d’abord
réussit à récupérer le résultat des requêtes sous formes de texte brut. Cependant nous avons
pensé qu’il serait plus parlant de représenter les résultats des images recherchées par l’image
elle-même. Nous nous sommes interrogés sur la manière de stocker l’image sur la base de
données. Le BLOB (Binary Large Object) nous a permis de stocker l’image au format BLOB,
c'est-à-dire de convertir l’image en données binaires brutes. La restitution de l’image dans son
format d’origine (JPEG, GIF etc.) étant réalisée par le biais d’un code PHP.
Afin de pouvoir stocker nos images au format BLOB dans la base de données nous avons dus
insérer un nouveau champ BLOB dans celle-ci.
 Voir annexe 5 et 6
III.3.1.4 La fonction modification
Nous nous sommes ensuite penchés sur la partie modification des fichiers image. Nous
avons réalisé les modifications possibles suivantes : modification de la dimension du fichier et
modification du nom du fichier et suppression d’un fichier.
En ce qui concerne la modification des dimensions, les dimensions de l’image sont
modifiées dans la base de données sans pour autant modifier l’image en elle-même car cela
impliquerait une modification du format BLOB de l’image dans la base de données.
A ce jour nous n’avons pas trouvé le moyen de modifier à la fois le BLOB du fichier et les
dimensions de l’image dans la base de données.
 Voir annexe 7
La partie de suppression de fichier permet de supprimer une image à partir de son nom de
fichier.
 Voir annexe 8
 Voir annexe 20 pour la base de données.
III.3.2 Réalisation de l’application locale
Nous avons utilisé la librairie graphique Swing pour l’interface de l’IHM (Interface
Homme Machine).
Il a été très difficile à l’ensemble du groupe d’implémenter cette partie de l’application car
nous commencions tout juste à apprendre le langage JAVA au travers du cours de GLPOO de
troisième année (Génie Logiciel et Programmation Orientée Objet).
Nous avons donc du approfondir nos connaissances en matière d’interfaces graphiques en
utilisant la librairie Swing. Malheureusement, à l’époque nous ne connaissions pas encore la
fonctionnalité Matisse de Netbeans qui permet de dessiner à la main des interfaces
graphiques.
Nous avons par ailleurs réussi à faire communiquer la base de données et notre application
JAVA en installant le driver SGBD fournit par MySQL et en implémentant des classes de
connexion. Par la suite nous avons réussi à programmer des fonctions d’insertions simples
(une seule image est insérée dans la base de données) et multiples (plusieurs images son
insérées en même temps).
L’insertion dans la base de données ouvre une nouvelle fenêtre affichant l’ensemble des
informations insérées dans une JDialog. Cependant nous n’avons pas réussi à récupérer les
dates de créations et les dates de derniers accés de l’image sous JAVA.
Nous pensons que cela est dû à un problème de portabilité du langage (compatibilité sur
plusieurs systèmes d’exploitation). A la place, nous avons choisi d’insérer la date du jour pour
éviter de récréer la table de la base de données.
Les champs de recherches ont été plus faciles à implémenter.
Les champs de modifications et suppressions se comportent comme dans l’application Web
avec les mêmes problématiques sur la modification de l’image.
 Voir annexe 9 à 19
IV. Analyses critiques des membres du groupe
 Alexandre :
J’ai au cours de ce projet mieux appréhendé l’organisation qu’un projet à l’année
impliquait. Notamment lors des premières réunions où l’on a réfléchi sur les avantages et les
faiblesses que pouvaient représenter les choix technologiques. Cette confrontation m’a donné
un autre point de vue sur l’informatique.
L’esprit d’équipe est l’un des moments fort de cette activité. Les personnes de l’équipe
communiquaient régulièrement sur l’avancement du projet. Dès qu’une personne était en
difficulté nous avons essayé de l’aider au maximum pour essayer de la « débloquer ». C’est ce
que représente l’esprit d’équipe une entraide pour la réussite du projet.
Je tire donc à ce jour un autre point de vue sur la notion d’esprit d’équipe. Le projet m’a aussi
permis d’approfondir les cours de cette année, en cherchant à aller toujours plus loin.
 Yannick :
Depuis mon arrivée à l’école ce projet est sans conteste le plus important que j’ai eu à
traiter. Une des principales difficultés a été de synthétiser les connaissances globales du
groupe afin de savoir ce qu’il était possible de faire. Pour ma part, durant ce projet, je
considere que l’entraide continuelle au sein du groupe a été l’avancée la plus majeure en
matiere de relations humaines.
D’un point de vue technique, ce projet m’a permis d’approfondir mes connaissances sur
les bases de données, mais aussi l’occasion de mettre en pratique un nouveau langage : le
JAVA.
D’une manière générale ce projet a amélioré ma capacité à aller chercher les informations
par moi-même et a respecter les plannings que nous avions fixé au sein de l’équipe.
 Jean-Jacques :
Pour ma part, ce projet m’a permis d’apprendre énormément de choses tant sur le plan
techniques que sur le plan humain.
En effet, concernant le plan technique, j’ai dû apprendre très rapidement différents langages
de programmation que je ne connaissais pas tels que XHTML/CSS et PHP indispensable pour
pouvoir déployer notre projet sur l’internet. Le groupe ayant ensuite décidé de passer d’une
interface web à une interface Java, j’ai appris le langage Java ainsi que l’utilisation de l’IDE
NetBeans.
Contrairement au module de cours, nous devons rechercher et apprendre les connaissances par
nous même, ce qui demande énormément de patience et de rigueur. Il m’a donc fallu
organiser mon travail pour être le plus efficace possible.
Sur le plan humain, j’ai pu aussi améliorer ma communication au sein d’un groupe que ce soit
lors les différentes phases d’élaboration du projet où nous étions tous réuni que lors des
phases de conception où il fallait communiquer pas courriel.
 Antoine :
Ce Psi m’a permis d’appréhender, de comprendre des nouvelles technologies et à
apprendre à répartir le travail au sein d’une équipe lors de la phase de conception du projet.
Une phase de conception, nous a permis de choisir les technologies appropriées pour répondre
aux cahiers des charges fixés par le sujet. Il a donc fallu choisir les technologies adéquates
aux problèmes, et la faisabilité de celui-ci vis-à-vis de la technologie concernée.
Nous nous sommes par la suite, auto formée aux différentes technologies, notamment le PHP
le Java ce qui a constitué le plus gros du travail. Nous avons donc appris à être plus rigoureux
et organiser notre travail ; ce qui nous a permis de migrer l’application en PHP (web) à une
application système en Java de deux niveau (logiciel, BDI sur MySQL).
Table des annexes
Annexes des diagrammes UML
Annexes de l’application Web
Annexe 1……………
Annexe 2
Annexe 3
Annexe 4
Annexe 5
Annexe 6
Annexe 7
Annexe 8
Annexe 9
Annexes del’application Locale
Annexe 10
Annexe 11
Annexe 12
Annexe 13
Annexe 14
Annexe 15
Annexe 16
Annexe 17
Annexe 18
Annexe 19
-Annexe MySQL
Annexe 20
Annexe 1 :
Annexe 2:
Annexe 3 :
Annexe 4 :
Annexe 5 :
Annexe 6 :
Annexe 7 :
Annexe 8 :
Annexe 9 :
Annexe 10 :
Annexe 11 :
Annexe 12:
Annexe 13:
Annexe 14:
Annexe 15:
Annexe 16:
Annexe 17:
Annexe 18:
Annexe 19:
Annexe 20:
Téléchargement