Projet de programmation
Accueil
Sujet du projet

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 :
  • 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.
On appellera "demon" l'outil de collecte et de stockage des informations et "moteur" de recherche, celui qui répondra aux requêtes de l'utilisateur.
Fonctionnalités demandées
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"
  1. 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)
    La liste des informations optionnelles est non exhaustive. Il est possible de la compléter si celà s'avère nécessaire pour un certain type de recherche.
  2. 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"
  1. 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 et Autre type binaire. Vous pourrez aussir définir des métatypes, tel que Image regroupant Image JPEG et Image 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.
  2. Une fois votre moteur de recherche fonctionnel, une interface graphique utilisateur pourra être développée.
  3. Pour améliorer le logiciel, d'autres méthodes de recherche pourront finalement être ajoutées...
Instructions sur le déroulement

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
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 :
  • 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.
Contraintes de développement
  • 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.
Évaluations
Les évaluations vont reposer sur plusieurs critères.
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.

Valid XHTML 1.1 Valid CSS!