ToPIA

Présentation

ToPIA, pour Tools for Portable and Independant Architecture, est un framework d'abstraction des plateformes techniques.

C'est à dire ?

Le cycle de développement en Y traditionnel peut être représenté de la manière suivante :

Les deux branches, la branche fonctionnelle, porteuse de la solution logique, et la branche technique, qui définit la plateforme technique sur laquelle la solution sera implantée, se rejoignent en amont de la conception détaillée et du codage. Cette projection peut être accompagnée de génération de code, mais il reste toujours une certaine quantité de code écrite à la main.

Cette séparation des responsabilités et ce processsus donne pleine satisfaction lors du développement initial d'un logiciel. La vie d'un logiciel commence toutefois au moment de sa mise en production et les évolutions qui y seront apportées sont de deux natures :

System Message: ERROR/3 (line 53)

Unexpected indentation.
  • Évolutions fonctionnelles : Ajout de fonctionnalités, correction de bugs, ...
  • Evolutions techniques : Changement de bases de données, changement de techno sur les UI, nouveaux accès (SOAP ?), ...

Si les évolutions fonctionnelles sont prises en compte par la nature itérative des processus de développement, les évolutions techniques sont elles difficiles.

Comment passer d'hibernate à JDO, de Swing au client léger, des EJB aux conteneurs légers ? En supprimant les dépendances de votre code sur les briques techniques, en codant sur une plateforme technique abstraite, interfaces et facades au travers desquels vous pourrez manipuler les différentes solutions techniques que vous retiendrez. Hibernate et JDO ne sont que deux API d'accès aux données; Swing et client léger, des UI; les EJB et les conteneurs légers, des logiques métiers déportées...

Et ToPIA alors ?

ToPIA propose une telle plateforme. Vous codez en regard d'une API qui abstrait la distribution (1-tiers ?, 2-tiers ?, 3-tiers ?, n-tiers ? quels protocoles d'accès ?), la persistence (quelles bases bien sûr, mais également quel framework ?, quelle API de requètage (EJB-QL, JDO-QL, ... ?), quel méchanisme transactionnel ?), quelle UI ? Puis vous projettez votre application sur la palteforme de votre choix.

Fonctionnement classique

Le framework ToPIA permet dans un projet de générer la partie métier de l'application, c'est à dire les classes JAVA ainsi que le mapping Hibernate pour la persistance. Cela représente un travail considérable en moins pour le développeur et une flexibilité importante dans les évolutions futures de la parties métier.

L'utilisation du framework ToPIA se découpe en plusieurs phases, elles sont itératives :

System Message: ERROR/3 (line 88)

Unexpected indentation.
  1. Création du diagramme de classe sur ArgoUML par exemple
  2. Exportation du modèle en XMI
  3. Génération des fichiers JAVA et Hibernate par Eugene
  4. Implentation des méthodes

ToPIA-service

Le framework ToPIA peut être complèté par une multitude de services. Il existe actuellement trois :

  • service pour la sécurité : permet la gestion des authentification et des autorisations. Il repose sur le mécanisme de JAAS.
  • service pour la gestion des mises à jour : permet de mettre à jour une version de base à partir d'un modèle versionné.
  • service de réplication : permet de répliquer des données de base à base.
  • service pour la gestion d'un historique : permet de conserver l'ensemble des actions réalisées sur la base de données (plus maintenu depuis la 2.3.3).
  • service pour la recherche : permet de rechercher un mot clé parmis les entités de l'application. Il repose sur la librairie lucene d'apache (plus maintenu depuis la 2.3.3).