Architecture globale

Isis-Fish est composé de trois modules:

  • Les données et leurs persistences
  • Les interfaces utilisateurs
  • Le moteur de simulation

Les données et leurs persistences

Le domaine est d'abord décrit (modélisé) en UML. A partir de cette modélisation un générateur de code est utilisé pour la création de toutes les classes représentant le métier. Seules les méthodes métiers ne sont pas générées, elles sont alors écrites en héritant des classes générées. Dans ISIS-Fish le code des méthodes représente 15% du code des classes métiers et des classes de persistance.

La persistance s'appuie sur ToPIA qui permet d'abstraire l'application des librairie de persistance choisie. Actuellement nous utilisons Hibernate comme OMR et H2 comme base de données embarquée.

Des librairies ont été écrites pour la gestion des fichiers textes tel que les scripts. Toutes les données peuvent être synchronisées avec un serveur (Région, Simulation, Script) pour cela nous utilisons une librairie SVN Java (svnkit).

Les interfaces utilisateurs

Les interfaces utilisateurs s'appuient sur la librairie Java Swing. Pour simplifier l'écriture et la maintenance ainsi que pour avoir un découpage propre entre le code des interfaces et le code métier nous utilisons la librairie Jaxx qui nous permet de décrire les interfaces utilisateur en XML. L'avantage est qu'il est possible d'utiliser des fichiers CSS pour modifier l'aspect de l'interface. Auparavant nous utilisions la librairie SwiXAT, l'avantage de Jaxx sur SwiXAT est qu'il est compilé et produit des fichiers Java directement réutilisable dans du code traditionnel.

De nombreux composants graphiques sont utilisés dans les interfaces.

La plupart des interfaces utilisateurs ne sont pas spécifiques ISIS-Fish et pourraient facilement être réutilisées dans d'autres projets de simulateur. Seules les interfaces de saisie des données du modèle métier sont spécifiques, ainsi qu'un petit nombre d'onglets du lanceur de simulation.

Le moteur de simulation

Le simulateur est lui aussi non spécifique ISIS-Fish. Tout le code spécifique ISIS-Fish est en fait écrit en Script (Java) et modifiable via les interfaces de saisie des scripts de l'application.

Les autres composants peuvent être directement réutilisés.