L3 - Génie Logiciel – Projet 2018-2019

Programming, Software Engineering · notes

Browse all génie logiciel documents

L3 - Génie Logiciel – Projet 2018-2019 – version révisée

Objectif du projet

Ce projet est à faire en binôme. Vous devez réaliser une application qui permet de consulter, et

d’éditer des données provenant d’une base de données au format H2, Northwind, fournie.

Votre application doit être programmée suivant le modèle MVVM et comporter des tests

unitaires (JUnit). Elle va comporter 5 projets Eclipse au total. Basez-vous sur les projets de

démarrage qui vous sont fournis.

Le projet infrastructure

Le premier projet Eclipse comporte le code d’infrastructure permettant de faire fonctionner

l’application. C’est lui qui contient la fonction main(), point d’entrée du programme. Il est

recommandé d’étudier brièvement le fonctionnement de ce projet.

Le projet Vues

Le projet Vues contient les vues (le V de MVVM). Les vues sont automatiquement créées par

le projet d’infrastructure après exécution d’un contrôleur. Ce projet a une dépendance vers le

projet contrôleur. En l’état actuel du code de démarrage qui vous est fourni, il a également une

dépendance sur le projet Modèle (cela ne contrevient pas aux principes de base).

Le projet Contrôleurs

Le projet Contrôleurs contient les différents traitements réalisés par votre application. Chaque

Contrôleur a une classe Vue correspondante dans le projet Vue. La correspondance est faite en

remplaçant (exactement) la chaine Contrôleur par la chaine Vue dans le nom canonique des

classes. Ainsi :

fc.Application.MVC.Controllers.SomeController

a une vue correspondante dont le nom est figé :

Advertisement

fc.Application.MVC.Views.SomeView

Le projet Contrôleur référence le projet Modèle, défini ci-après, et aucun autre. Il n’a pas

connaissance des vues. De même le projet Contrôleur n’utilise pas de dépendance vers les

bibliothèques SWT. Seul le projet Vues a une dépendance.

Le projet Modèle

Le quatrième projet contient le Modèle (le M de MVVM). Ce modèle doit intégrer notamment

un modèle fortement typé JPA, généré à partir de la base de données Northwind, en utilisant le

noyau d’accès Hibernate, comme nous l’avons vu en TP.

Le projet Modèle ne doit se lier à aucun autre projet Eclipse.

[email protected] - 2019

Si vous effectuez vos requêtes avec JPQL, votre projet Modèle devra contenir des fonctions

d’accès explicitement écrites par vos soins et le projet Modèles-de-Vue ne devra utiliser que ces

fonctions explicitement écrites. Les fonctions d’accès accèderont, à leur tour, au modèle-objet

JPA généré par Hibernate. Les requêtes JPQL doivent être écrites dans un fichier XML de

requêtes nommées, comme vu en cours.

Si vous effectuez vos requêtes avec la Criteria API, votre projet Modèle n’aura pas à contenir

des fonctions explicites en dehors d’un moyen de donner l’accès à la base de données. Les

Modèles-de-Vue pourront faire les requêtes directement avec la Criteria API.

Des points supplémentaires seront attribués en passant par la Criteria API.

Vous ne devez pas utiliser des requêtes natives SQL (créées via createNativeQuery).

Le projet de tests unitaires

C’est à vous de créer ce projet. Ce projet JUnit va tester les méthodes des Contrôleurs et, si

vous faites vos requêtes en JPQL, des méthodes sur le Modèle lui-même. Vous n’avez pas

Advertisement

besoin de tester le Modèle si votre code des Contrôleurs fait ses requêtes avec la Criteria API.

Ce projet est lié aux deux projets correspondants. Il n’est pas lié au projet infrastructure. Pour

tester, fournissez une infrastructure différente du projet infrastructure, qui ne créé pas de Vues

en réponse à l’exécution d’un contrôleur notamment.

Prérequis d’installation

Les outils de conception Eclipse SWT doivent être installés pour réaliser ce projet. Pour savoir

s’ils sont installés, aller dans File > New > Other…, et dans le texte de filtrage,

entrer « SWT ». Si vous ne voyez pas de catégorie nommée « SWT Designer » en dessous,

c’est que les outils ne sont pas encore installés.

Pour les installer, aller dans Help > Install New Software. Dans le champ Work with,

sélectionner :

2018-12 - http://download.eclipse.org/releases/2018-12

Si cette URL n’est pas visible/disponible, il se peut que vous ayez à ajouter un nouveau dépôt

au préalable (bouton Add, puis Name : 2018-12, Location:

http://download.eclipse.org/releases/2018-12, cliquer sur Add à la fin)

Pour installer les outils de conception SWT, aller dans la section General Purpose Tools et

sélectionner tous les items commençant par « SWT Designer » et « WindowBuilder », au total

au nombre d’une douzaine.

Application à réaliser

L’application que vous devez réaliser va comporter 1 fenêtre par vue. Chaque vue devra être

créée avec le wizard « Dialog » (pas Application Window ) d’SWT :

[email protected] - 2019

Voici la vue associée au contrôleur de démarrage (notez dans le code de l’infrastructure l’appel

Advertisement

au contrôleur de démarrage, sans paramètre additionnel) :

Cette dialog affiche la liste des clients de la base de données dans la liste déroulante du haut.

La table du bas affiche la liste des commandes (orders en anglais) du client sélectionné. La

dialog comprend en outre 2 boutons :

Voir détails commande permet de consulter les détails de la commande actuellement

sélectionnée dans la table, en basculant sur une autre vue :

[email protected] - 2019

Dans cette vue, cliquer sur l’entête de chaque colonne doit permettre de trier les détails de la

commande avec cette colonne. Le tri ne doit pas se faire avec le tri intégré du widget Table

d’SWT. Le tri doit se faire soit

 avec une requête Criteria API fortement typée . C’est le scénario préférable.

 avec une requête textuelle JPQL, à condition qu’une fonction proxy fortement typée

soit introduite sur la classe Modèle

Editer permet d’éditer le client sélectionné dans la liste déroulante en haut de la fenêtre. Ce

bouton permet de basculer vers une nouvelle vue :

Vous devez coder enfin une autre vue qui valide la mise à jour d’un client.

Pour basculer dans une nouvelle vue, vous devez interagir avec le projet infrastructure et lui

indiquer quelle est le nouveau Contrôleur qui prend la main. De là, le code d’infrastructure va :

créer le Contrôleur et l’exécuter avec les paramètres que vous avez spécifié dans

runController().

 afficher la vue correspondante au modèle de vue en lui donnant le modèle de vue

retourné par le contrôleur.

Advertisement

Tests unitaires

[email protected] - 2019

Les méthodes de

 vos Contrôleurs

 votre Modèle

doivent être testées. Les méthodes explicitement écrites de votre Modèles seront testées. Cela,

seulement si vous avez choisi JPQL comme langage de requête (si vous avez choisi Criteria API

pour faire vos requêtes, vous n’aurez pas de méthodes explicites sur votre classe Modèle ; par

conséquent, il n’est pas nécessaire de faire des tests unitaires dessus).

Remise du projet

L’ensemble de votre Workspace Eclipse devra être envoyé sur l’espace de dépôt communities

(https://community-sciences.unilim.fr, rubrique Génie Logiciel) au plus tard le dimanche 19

mai 2019, sous forme d’une archive ZIP. Le modèle JPA doit être pré-généré dans votre projet

Modèle (c’est absolument capital, car votre projet doit compiler en l’état), mais les

configurations JPA et Hibernate doivent être valides pour permettre une génération manuelle

au moment de la correction. Le chemin de la base de données, à l’évidence non identique d’une

machine à l’autre, sera changée lors de la correction.

[email protected] - 2019