IFT 3913 – Qualité du logiciel et métriques UdeM/DIRO, Hiver 2007
Travail pratique #1 1. Introduction
Conception et implantation d’un parseur d’un langage d’expression de schémas d’entrepôts de données (data warehouses).
2. Conditions de réalisation
Groupe de deux au maximum. Travail à remettre au plus tard jeudi, le 15 février lors de la séance de demo pour les rapports et à 23h59 pour le code via le programme ‘remise’.
Aucun retard ne sera accepté.
3. Travail à réaliser
Implanter un programme en Java permettant de charger un schéma d’entrepôt de données à partir d’un fichier. Le schéma est décrit selon la syntaxe décrite dans la section 5. Ce programme doit offrir une interface graphique permettant de choisir le fichier à parser et de pouvoir visualiser le résultat du parsing (voir un exemple d’interface graphique dans la section 6). Le logiciel doit être entre mesure de rouler à partir de la ligne de commande sur les ordinateurs linux qu’on trouve dans les laboratoires du DIRO. Vous devez aussi remettre un rapport de 3 à 5 pages décrivant le logiciel implanté et la conception du programme (diagramme de classe UML commenté). Il doit aussi contenir les lignes de compilation et d’exécution du programme. La qualité du français sera prise en compte dans la correction.
4. Barème
1. Rapport incluant la conception du programme 30%
2. Interface usager 20%
3. Logique (programme) 50%
5. Syntaxe et exemple
Un schéma d’entrepôt de données est défini dans un format textuel. La grammaire BNF suivante décrit un tel format.
<dw_schema> ::= ‘Schema’ IDENTIFIER ‘{’ <specification> ‘}’
<specification> ::= <star_schema>
| <star_schema> <specification>
<Star_schema> ::=‘Star {’ <fact_table_dcl> <ne_dim_table_dcls>
‘}’
<fact_table_dcl> ::= ‘Fact Table’ IDENTIFIER ‘{’ <fact_table_body>
‘}’ ‘;’
<fact_table_body> ::= <ne_foreign_key_list> <fact_list>
<ne_foreign_key_list> ::= <foreign_key_dcl> <foreign_key_list>
<foreign_key_list> ::= <foreign_key_dcl> ‘,’
| <foreign_key_dcl> ‘,’ <foreign_key_list>
<foreign_key_dcl> ::= IDENTIFIER ‘(FK)’
<fact_list> ::= <attribute_list>
<attribute_list> ::= IDENTIFIER
|IDENTIFIER ‘,’ <attribute_list>
<ne_dim_table_dcls> ::= <dim_table_dcl> <dim_table_dcls>
<dim_table_dcls> ::= <dim_table_dcl>
|<dim_table_dcl> <dim_table_dcls>
<dim_table_dcl> ::= ‘Dimensional Table’ IDENTIFIER [‘{’
<dim_table_body> ‘}’] ‘;’
<dim_table_body> ::= <primary_key_dcl> ‘,’ <dimension_list>
<primary_key_dcl> ::= IDENTIFIER ‘(PK)’
<dimension_list> ::= <attribute_list>
IDENTIFIER est un symbole terminal
Un exemple de description de schéma est donné dans le fichier Exemple.dws.
6. Exemple d’interface usager
La figure suivante donne, à titre d’indication seulement, un exemple d’interface graphique permettant de naviguer dans le schéma parsé. Tout autre conception graphique de l’interface est possible à la condition de permettre cette navigation.