Architecture BD Récif
Architecture globale Une partie serveur : Une partie cliente Connectée à la base de données Quadrige² Module d’authentification Module de synchronisation Une partie cliente Base de données locale (modèle Quadrige) Interfaces graphiques Module d’import/export de données par fichiers License Open Source (Modules complémentaires avec validation par le comité de pilotage)
Architecture matérielle simplifiée
Architecture logicielle
Architecture – partie cliente Trois couches logicielles : DAO : accès aux données Service : codes métier + transactions UI : interfaces graphiques Interfaces graphiques Va l u e Ob j e c t Couche service : - Service definition Business rules execution Transaction managment (database) BDD locale (HsqlDB v2.3.2) Couche d’accès aux données - Data Access as Object (DAO) : read/insert/update/delete database independent
Architecture – partie cliente Java 7 (1.7.51) Frameworks Java : Hibernate (4.3.8.Final) - DAO Spring (4.2.1.RELEASE) – DAO et Service Nuiton – internationalisation, configuration et validation des saisies JaxX (2.28.2) – UI compatibles Swing Base de données locale : HsqlDB (2.3.2) - base embarquée Java Liquibase (3.2.3) - mises à jour du schéma BDD
Architecture – partie serveur Trois couches logicielles : DAO : accès aux données Service : codes métier + transactions Web services (REST / JSON)
Architecture – partie serveur Webapp JEE (WAR - compatible Tomcat 6) Module d’authentification Une authentification LDAP puis obtention d’un ID de session limité dans le temps Puis communication utilisant uniquement l’ID de session Module de synchronisation Reprise du module de synchro du SIH Adaptations nécessaire sur : Les éventuelles particularités du modèle Q² La gestion des droits sur les données
Approche MDA (1/4) Model Driven Architecture Modélisation UML : Architecture dirigée par les modèles Approche pragmatique : Modélisation UML : Spécifications (CU, Processus, etc.) Modèle de données (Classes + stéréotype) DTO pour les interfaces graphiques
Approche MDA (2/4) Modèle de données Modélisation sous MagicDraw Reprise du modèle de Quadrige² Plugin AndroMDA pour l’ajout de champs techniques : Identifiant distant de l’entité (une colonne REMOTE_ID avec la valeur de l’ID sous Oracle) Etat de synchronisation de l’entité (synchronisée / modifiée / en attente de synchronisation) Ajout de tables techniques (si besoin) Tables dénormalisées en cas de requêtes couteuses (référentiels hiérarchiques, etc.)
Approche MDA (3/4) Pour les couches DAO + service: Magicdraw (17.0.4) (License flottante) + plugin « AndroMDA » + rapports au format Ifremer AndroMDA (3.4) Avec templates surchargés En entrée : modèle de données au format EMF/XMI v3 Génération des couches : Entitée Mapping Objet / Relationnel + configuration DAO générique (type CRUD)
Approche MDA (4/4) Pour la couche UI : ArgoUML (0.34) Nuiton-Eugene (2.14) En entrée : Modélisation des DTO au format ArgoUML Génération des couches : DTO + Factory
Compilation et déploiement Maven (3.1) Tests unitaires : Junit 4 Base de données de tests Déploiement Nexus (EIS et/ou Altran) Repository Maven Ifremer : www.ifremer.fr/maven/repository/ Code source : sous SVN Ifremer
Tests fonctionnels Cahier de test : Gestionnaire de bug : Rédaction Ifremer sous TestLink Gestionnaire de bug : Mantis Ifremer Base de données de tests : Copie de la base d’exploitation