Contexte et objectifs généraux
L'idée du projet est de développer un logiciel permettant
la recherche dans une liste de dossiers, de l'ensemble des
fichiers qui vérifient certains critères donnés. Ces
critères pourront être le type ou la taille du fichier, ou
encore l'apparition d'un mot dans son nom ou son
contenu. Pour celà, deux outils constitueront le
logiciel :
Fonctionnalités demandées
- Le premier parcourra une liste de dossiers spécifiés par l'utilisateur et stockera dans une base de données des informations sur ces arborescences des fichiers.
- Le second proposera plusieurs critères de recherche et effectuera des requêtes sur la base de données pour répondre aux recherches demandées par l'utilisateur.
Un ensemble de fonctionnalités du logiciel seront à
implémenter en priorité dans le logiciel. Quelques
fonctionnalités supplémentaires sont proposées à titre
optionnel, pour enrichir les outils une fois seulement
que la base a été complètement réalisée.
Fonctionnalités de "demon"
- Les informations que l'outil "demon" devra ou pourra
stocker au sujet des fichiers analysés sont :
- le nom du fichier ;
- le type du fichier ;
- la taille du fichier ;
- la date de création ou de dernière modification du fichier (optionnel) ;
- des informations sur son contenu, etc... (optionnel)
- Comme son nom l'indique, l'outil "demon" sera
utilisé exclusivement en ligne de commande. Une
interface graphique est ici inutile. Une utilisation
typique de l'outil sera :
demon <liste_dossiers>
où liste_dossiers est composée d'un ou plusieurs dossiers de la machine locale, séparés par des espaces.
Fonctionnalités de "moteur"
- Dans un premier temps, on développera trois
fonctions de recherche utilisables en ligne de
commande :
- moteur -search_name <mot> recherchera dans la base, tous les fichiers contenant "mot" dans leur nom.
- moteur -search_type <type>
recherchera tous les fichiers du type donné. Vous
pourrez vous limiter dans un premier temps à la
reconnaissance de quelques types seulement, par
exemple :
Texte
,Image JPEG
,Image PNG
etAutre type binaire
. Vous pourrez aussir définir des métatypes, tel queImage
regroupantImage JPEG
etImage PNG
. Pour commencer, aller au plus simple et améliorer ensuite votre analyseur de type.
moteur -list_type fournira la liste des types que reconnaît votre logiciel.
- Une fois votre moteur de recherche fonctionnel, une interface graphique utilisateur pourra être développée.
- Pour améliorer le logiciel, d'autres méthodes de recherche pourront finalement être ajoutées...
Groupes de travail
Le travail se fera exclusivement en
binôme, exception faite du dernier groupe
de MIAGe et du dernier groupe de bioinformatique, si les
effectifs des filières sont impairs. La liste des binômes
devra être fixée pour le jeudi 09 novembre 2006 au
plus tard, chaque groupe m'envoyant un mail à
<tessier_AT_labri_DOT_fr>
Voici la liste actuelle des groupes.
Calendrier
Voici la liste actuelle des groupes.
La projet commence au début du mois de novembre
2006 et s'étale sur une période d'environ un
mois. L'évaluation, dont les critères sont détaillés par
la suite, est marquée par deux dates importantes :
Contraintes de développement
- un point intermédiaire aura lieu le jeudi 23 novembre 2006 à 14h sur le travail rendu à cette date ;
- la remise du travail complet se fera le lundi 04 décembre 2006. L'heure est à préciser.
- Le développement sera réalisé nécessairement en Java, sous l'environnement de votre choix. Toutefois, il devra être testable sur les machines du CREMI. A cet effet, si vos sources ne se trouvent pas toutes dans le même dossier et si la compilation ne s'effectue pas par la simple commande javac *.java, vous devrez fournir un script ou un Makefile pour compiler l'ensemble de votre projet.
- Vous documenterez vos sources à l'aide des
tags de javadoc et vous générerez la
documentation au format
HTML
. - Le système de bases de données utilisé sera MySQL et votre logiciel devra fournir un script ou une classe Java intégrée à "demon", créant les tables nécessaires pour un utilisateur de votre logiciel.
Les évaluations vont reposer sur plusieurs critères.
Une description des principaux problèmes rencontrés au cours du projet est également la bienvenue. Des solutions peuvent alors être proposées, elles sont décrites lorsqu'elles ont été mises en oeuvre. Les principaux modules et tâches à réaliser seront indentifiés. La répartition du travail entre les membres du groupe sera présentée et le rapport dressera un bilan du travail effectué.
Les commentaires du code source sont également très importants. Un commentaire général en en-tête de chaque classe présentera le rôle et le fonctionnement de celle-ci. Puis, pour chaque fonction importante, un commentaire expliquera son exécution, les valeurs attendues pour les éventuels paramètres, les effets de bord possibles... Tous ces commentaires utiliseront le format javadoc pour générer une documentation du programmeur au format
Pour la première évaluation, votre rapport sera d'environ une page, détaillant les points précédemment évoqués. À ce stade, le logiciel ne sera pas nécessairement fonctionnel, l'implémentation de certaines classes pouvant être incomplète ou inexistante.
Conception du programme et rapport du projet
Ces deux aspects sont liés. En effet, vos rapports intermédiaires et finaux devront présenter l'ensemble de la conception du projet. Il s'agit de présenter et de justifier l'organisation des classes des programmes, la conception de la base de données et d'éventuels choix qu'il peut sembler judicieux d'expliquer... Des diagrammes peuvent avantageusement synthétiser des aspects de la conception.Une description des principaux problèmes rencontrés au cours du projet est également la bienvenue. Des solutions peuvent alors être proposées, elles sont décrites lorsqu'elles ont été mises en oeuvre. Les principaux modules et tâches à réaliser seront indentifiés. La répartition du travail entre les membres du groupe sera présentée et le rapport dressera un bilan du travail effectué.
Qualité du code et de sa documentation
La qualité du code est un point crucial pour quelqu'un qui a à maintenir ou faire évoluer un programme. Elle comprend l'indentation, le choix de noms explicites pour les classes, attributs et méthodes.Les commentaires du code source sont également très importants. Un commentaire général en en-tête de chaque classe présentera le rôle et le fonctionnement de celle-ci. Puis, pour chaque fonction importante, un commentaire expliquera son exécution, les valeurs attendues pour les éventuels paramètres, les effets de bord possibles... Tous ces commentaires utiliseront le format javadoc pour générer une documentation du programmeur au format
HTML
.
Compilation et exécution du programme
Un fichier README donnera les commandes de compilation lorsque celles-ci seront simples. Dans le cas contraire, la compilation devra être automatisée à l'aide de scripts de votre choix.Travail à rendre
À chaque évalution, vous fournirez par mail une archive ZIP ou Tar gzippée, contenant le fichier README expliquant les détails essentiels, le rapport et un dossier avec vos sources. Évitez d'ajouter les classes compilées si cela rend l'archive trop volumineuse.Pour la première évaluation, votre rapport sera d'environ une page, détaillant les points précédemment évoqués. À ce stade, le logiciel ne sera pas nécessairement fonctionnel, l'implémentation de certaines classes pouvant être incomplète ou inexistante.