Système de sécurité maritime

Commentaires

Transcription

Système de sécurité maritime
RAPPORT DE MISSION EN ENTREPRISE POUR L’OBTENTION DE LA
LICENCE PROFESSIONNELLE
SYSTEMES INFORMATIQUES ET LOGICIELS, OPTION
INFORMATIQUE DISTRIBUEE ET SYSTEMES D'INFORMATION
D’ENTREPRISE
SESSION 2009 - 2010
Systèmes de sécurité maritime
Présenté par Axel BERGER
THALES UNDERWATER SYSTEMS
525 route des Dolines BP 157
06560 Sophia Antipolis
Sous la direction de :
M. Patrice MISTRETTA, responsable entreprise
M. Nhan LE THANH, tuteur IUT
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Remerciements
Je commencerai par remercier mon tuteur en entreprise M. Patrice MISTRETTA ainsi que mon tuteur
à l’IUT M. Nhan LE THANH qui m’ont soutenu et aidé durant la totalité de cette année passée en
alternance.
Je souhaite également remercier l’ensemble de l’équipe du projet SECMAR avec laquelle j’ai eu la
chance d’évoluer, pour son accueil, le soutien et les conseils que ses membres m’ont apportés tout
au long de ces douze mois passés avec eux. Ils m’ont permis de m’intégrer facilement et rapidement
chez Thales Underwater Systems ainsi qu’au projet SECMAR, me permettant ainsi d’être à l’aise et de
donner le meilleur de moi-même.
J’espère que le travail que j’ai fourni sera à la hauteur, et que tous garderont, comme moi, un bon
souvenir de mon passage.
Je remercie aussi tout le personnel, enseignant ou non, du département informatique de l’IUT Nice
Côte d’Azur, qui m’a permis, durant cette année d’acquérir le savoir et les compétences nécessaires à
l’obtention de la licence professionnelle SIL IDSE.
Axel BERGER
Page 2
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Sommaire
Introduction............................................................................................................................................. 5
Abstract ................................................................................................................................................... 6
1 Présentation de l’entreprise ................................................................................................................. 7
1.1 Le groupe THALES .......................................................................................................................... 7
Historique ........................................................................................................................................ 7
Situation géographique ................................................................................................................... 7
1.2 THALES UNDERWATER SYSTEMS................................................................................................... 8
2 Le projet SECMAR ................................................................................................................................. 9
Présentation .................................................................................................................................... 9
Identification des risques .............................................................................................................. 10
Architecture ................................................................................................................................... 10
Organisation .................................................................................................................................. 11
Planification ................................................................................................................................... 11
3 Environnement de développement ................................................................................................... 12
3.1 Eclipse IDE.................................................................................................................................... 12
Présentation .................................................................................................................................. 12
Utilisation ...................................................................................................................................... 12
3.2 Gestion du code source ............................................................................................................... 13
Subversion ..................................................................................................................................... 13
Subclipse ........................................................................................................................................ 13
4 Réalisation .......................................................................................................................................... 14
4.1 Intégration d’un senseur météo .................................................................................................. 14
MODBUS ........................................................................................................................................ 14
Résumé .......................................................................................................................................... 15
4.2 Création d’un système de distribution de données .................................................................... 16
Problématique ............................................................................................................................... 16
Principe de fonctionnement .......................................................................................................... 16
Mise en œuvre............................................................................................................................... 17
Problèmes rencontrés ................................................................................................................... 21
4.3 Résolution de bug ........................................................................................................................ 21
5 Avancement........................................................................................................................................ 22
Conclusion ............................................................................................................................................. 23
Axel BERGER
Page 3
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Glossaire ................................................................................................................................................ 24
Bibliographie.......................................................................................................................................... 26
Axel BERGER
Page 4
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Introduction
Ma mission en entreprise, effectuée dans le cadre ma licence professionnelle SIL IDSE en alternance
s’est déroulée chez Thales Underwater Systems (TUS), qui est l’un des leaders mondiaux des
systèmes d’informations critiques sur les marchés de l’aéronautique, de l’espace, de la défense et de
la sécurité. Ce fut pour moi un réel plaisir d’intégrer un établissement de cette envergure et
d’évoluer au sein de l’équipe SECMAR1 (systèmes de sécurité des biens, des personnes et des
installations présents dans une zone maritime sensible).
Le projet étant déjà dans une phase avancée à mon arrivé chez TUS, ma mission principale était au
départ d’identifier les anomalies puis de traiter et déboguer les différents programmes jusqu’alors
développés. Il m’a ensuite été demandé, afin de palier à certains problèmes et également dans un
souci de planning de développer et d’intégrer certains composants du système. Les derniers mois de
ma mission, qui devrait normalement s’étendre jusqu'au mois de décembre, porteront plutôt sur des
aspects systèmes et réseaux puisque je serai en charge de maintenir opérationnelle la plateforme de
référence du système durant sa phase de test.
J’ai choisi d’effectuer mon alternance dans cette entreprise pour différentes raisons : la principale
étant le domaine d’activité de celle-ci car étant relativement curieux, j’ai très vite été séduit par
l’idée d’évoluer dans la section navale d’une multinationale comme Thales. Le fait que le
développement demandé soit en Java m’a également attiré car je connaissais déjà ce langage même
s’il ma fallu me perfectionner pour mener à terme ma mission.
Ce document est organisé de la façon suivante : la première partie présentera mon entreprise
d’accueil, le projet dans lequel j’ai évolué ainsi que les missions qui m’ont été confiées durant cette
année d’apprentissage. La deuxième partie, plus courte, décrira brièvement l’environnement dans
lequel j’ai travaillé (logiciels, langages...). C’est dans la troisième partie que j’exposerai le travail que
j’ai effectué, les problèmes rencontrés ainsi que les solutions que j’ai pu y apporter.
1
Les sigles utilisés tout au long de ce document sont répertoriés et expliqués dans le glossaire. Seront décrit sur
la page courante uniquement ceux dont la compréhension est jugée capitale. Les termes suivis d’un * seront
également classés dans le glossaire.
Axel BERGER
Page 5
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Abstract
My mission in business, conducted through my LP SIL IDSE alternately held at Thales Underwater
Systems (TUS), which is a global leader in critical information systems on the aerospace, space,
defense and security. It was a real pleasure for me to integrate a facility of this scale and grow within
the team SECMAR (security systems for goods, people and facilities present in a sensitive maritime
zone).
The project already was in an advanced stage when I came to TUS, my main mission was initially to
identify anomalies and debugging process of the various programs previously developed. Then it was
asked to step to some problems and also for the sake of planning to develop and integrate some
components of the system. The last month of my mission, which should normally be extended until
December, will focus instead on aspects of systems and networks since I'm in charge of maintaining
the operational platform reference system during its testing phase.
I chose to make my internship in that firm for several reasons: the main one being the domain
activity because it is relatively interesting, I was quickly seduced by the idea of change in the naval
section of a multinational like the Thales group. The fact that the development called was in Java also
attracted me because I already knew this language even if I had to improve myself to make it
correctly.
This document is organized as follows: the first part introduces THALES, the project in which I evolved
and the objectives of my internship. The second part briefly describes the technical environment in
which I have worked (software, languages…). In the third part, I detail the work carried out, the
encountered problems as well as the solutions that I proposed.
Axel BERGER
Page 6
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
1 Présentation de l’entreprise
Le nom de l’entreprise THALES fait référence au mathématicien et philosophe grec de l’école
ionienne, né en 625 et mort en 547 avant Jésus Christ.
1.1 Le groupe THALES
Historique
Les origines de THALES correspondent à la fusion en 1968 de la Compagnie Générale de Télégraphie
sans Fil, pionnier des transmissions hertziennes, créée en 1918, et de Thomson-Brandt, créée en
1893, œuvrant pour la production et le transport de l’électricité. Cette fusion donne ainsi naissance à
Thomson-CSF.
En 1982, suite à une situation financière difficile, la société est nationalisée.
Elle acquiert par la suite, en 1989, les activités d’électronique de défense du groupe Philips et
continuera d’acheter d’autres entreprises afin de se positionner sur le marché international.
En 1996 commence la privatisation de l’entreprise. Peu à peu, elle regroupe les activités
d’électronique spatiale, de défense et de communications militaires d’Alcatel, les activités
d’électronique professionnelle et de défense de Dassault Electronique, ainsi que les activités
satellites d’Aérospatiale.
Thomson-CSF rachète le britannique Racal Electronics en 2000 se propulsant ainsi au rang de
multinationale avant de changer de nom en fin d’année pour devenir THALES.
Depuis, le groupe THALES renforce ses compétences ainsi que son engagement dans les domaines
technologiques et industriels de défense.
Situation géographique
THALES dans le monde
La société est aujourd’hui une multinationale présente sur tous les continents avec une présence
majoritaire en Europe. Cette représentation à l’international permet une proximité avec ses
différents clients et lui permet également d’avoir une forte compétitivité. THALES est actuellement
représenté dans le monde par 335 implantations et plus de 68000 collaborateurs.
THALES en France
La France, siège social de l’entreprise, représente 53% du chiffre d’affaire global de la société.
THALES est à la tête du marché de la défense nationale française. Elle emploie 34300 collaborateurs
sur 70 sites principaux et 7 bassins d’emplois : la Bretagne, l’Ile de France, la région Centre, les Pays
de la Loire, le Sud Ouest, la région Provence-Alpes-Côte-d’Azur et Rhône-Alpes.
Axel BERGER
Page 7
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
1.2 THALES UNDERWATER SYSTEMS
Thales Underwater Systems est une filiale du groupe Thales. Avec plus de quarante ans d’expérience
en lutte anti-sous-marine, elle s’est imposée comme un leader mondial dans ce domaine. Elle est la
première exportatrice de sonars et de systèmes associés pour les forces navales et aériennes.
Implantée en France, au Royaume Uni et en Australie, elle emploie plus de 2100 personnes dans le
monde et a réalisé un chiffre d’affaire supérieur à 400 millions d’euros en 2005.
Figure 1 : Les différents sites de Thales Underwater Systems
Thales Underwater Systems possède quatre domaines d’activités : la guerre des mines, la lutte antisous-marine, les sous-marins et les services pour la marine.
Thales Underwater Systems conçoit une large gamme de produits pour sous-marins, bâtiments de
surface, navires de lutte contre les mines, avions et hélicoptères. Ce sont par exemple des sonars,
des bouées, des autodirecteurs de torpille, ainsi que tous les services associés (formation,
maintenance, entrainement...).
Figure 2 : Activités de Thales Underwater Systems
Axel BERGER
Page 8
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
2 Le projet SECMAR
Présentation
SECMAR signifie « systèmes de sécurité des biens, des personnes et des installations présents dans
une zone maritime sensible ».
Ce projet, labellisé en novembre 2007, fédère des moyens de détection sonar, radar et optronique
qui sont étudiés et développés par les industriels et laboratoires de la région PACA, au sein d’une
architecture matérielle et logicielle ouverte, modulaire et générique.
Ces moyens de détection sont connectés au Centre à Terre (CAT) en charge des traitements innovant
de rassemblement et de détection des comportements anormaux.
Le Port Autonome de Marseille (PAM) a été choisi comme site pilote pour une expérimentation
longue durée de six mois.
Figure 3 : Représentation de la zone à protéger
L’image ci-dessus est une représentation de la zone à protéger qui n’est autre que l’ensemble des
quais de déchargement des pétroliers et méthaniers du port de Fos-sur-Mer.
On peut y voir les premières règles de navigation (chenal, zone restreinte) auxquelles viendra
s’ajouter toute la réglementation imposée par le port (zone de mouillage, vitesse...).
C’est ce « code maritime » qui a servit de cadre pour la création des algorithmes de détection des
comportements anormaux.
Axel BERGER
Page 9
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Identification des risques
Afin d’établir les procédures de détection, un cabinet d’étude des risques, associé au port de
Marseille a été chargé d’identifier les différents risques encouru sur le site de Fos-sur-Mer.
Figure 4 : Analyse des risques encourus à Fos-sur-Mer
Architecture
A partir de cette étude, une architecture matérielle a été définie afin de pouvoir détecter toute
anomalie et d’y répondre efficacement.
Figure 5 : Architecture du projet SECMAR
Axel BERGER
Page 10
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Organisation
Une fois cette architecture arrêtée, différents acteurs des hautes technologies de la région PACA ont
été choisi afin de fournir et de gérer les différents équipements retenus.
Figure 6 : Organisation des partenaires du projet SECMAR
Le schéma ci-dessus présente les acteurs intervenant sur chacun des sous systèmes du projet.
Planification
Un planning a ensuite été définit, dont voici la partie correspondant à mon séjour dans l’entreprise.
2009
Nov.
Déc.
Jan.
Fév.
Mars
Avril
Mai
2010
Juin
Juillet
Aout
Sept.
Oct.
Nov.
Sonar
Acoustique
Electronique
Logiciel
Intégration usine
Installation site
Intégration site
Centre à terre
Logiciel VTS
Logiciel CA
Logiciel SUP/BAM
Electronique
Intégration usine
Installation
Intégration site
Système
Intégration système
Expérimentation
3
1
A
O
U
T
2
0
1
0
Figure 7 : Fragment du planning du projet SECMAR
Axel BERGER
Page 11
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
3 Environnement de développement
3.1 Eclipse IDE
Présentation
Eclipse IDE est un environnement de développement intégré libre, extensible, universel et
polyvalent, permettant potentiellement de créer des projets de développement mettant en œuvre
n’importe quel langage de programmation. Eclipse IDE est principalement écrit en Java (à l’aide de la
bibliothèque graphique SWT d’IBM), et ce langage, grâce à des bibliothèques spécifiques, est
également utilisé pour écrire des extensions.
La spécificité d’Eclipse IDE vient de son architecture totalement développée autour de la notion de
plugin (en conformité avec la norme OSGi). Toutes les fonctionnalités supplémentaires développées
dans cet atelier logiciel sont des plugins.
Plusieurs logiciels commerciaux sont basés sur ce logiciel libre, comme par exemple IBM Lotus Notes
8, IBM Symphony ou WebSphere Studio Application Developer.
La base de cet environnement de développement intégré est l’Eclipse Platform, composé de :
-
Platform Runtime démarrant la plateforme et gérant les plugins.
SWT, la bibliothèque graphique de base de l’EDI.
JFace, une bibliothèque graphique de plus haut niveau basée sur SWT.
Eclipse Workbench, la dernière couche graphique permettant de manipuler des
composants, tels que des vues, des éditeurs et des perspectives.
Ces composants de base peuvent être réutilisés pour développer des clients lourds indépendants
d’Eclipse grâce au projet Eclipse RCP.
L’ensemble des outils de développement Java est ensuite ajouté en tant que plugin, regroupés dans
le projet Java Development Tools (JDT).
Utilisation
Bien que très complet, Eclipse reste cependant un logiciel très facile à prendre en main et à utiliser. Il
offre de nombreuses options au programmeur et permet d’automatiser certaines taches comme la
gestion et l’organisation des « import », l’auto-indentation ou la génération de code comme pour les
« getters » et les « setters » par exemple.
La fonction que j’ai le plus apprécié et qui m’a surtout bien rendu service et m’a fait gagner un temps
considérable est le mode « debug » qui permet, sous certaines conditions, de modifier le code durant
son exécution, les modifications étant prise en compte instantanément sans avoir à recompiler ni
même à relancer le programme en cours de modification.
Axel BERGER
Page 12
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
3.2 Gestion du code source
Le code source du projet étant modifié par plusieurs personnes simultanément, un logiciel de gestion
de version doit être utilisé afin de gérer, contrôler et synchroniser ces modifications.
La solution adoptée par l’équipe de développement est le logiciel Subversion, associé au plugin
Subclipse qui permet sa prise en charge dans Eclipse.
Subversion
Subversion, également appelé SVN, est un système de gestion de versions, distribué sous licence
Apache et BSD. Il a été conçu pour remplacer CVS. Ses auteurs s’appuient volontairement sur les
mêmes concepts (notamment sur le principe du dépôt centralisé et unique) et considèrent que le
modèle de CVS est le bon, et que seule son implémentation est en cause dans l’échec de CVS. Le
projet a été lancé en février 2000 par CollabNet, avec l’embauche par Jim BLANDY de Karl FOGEL, qui
travaillait déjà sur un nouveau gestionnaire de versions.
Subclipse
En ce qui concerne Subclipse, c’est un petit plugin, développé par CollabNet lui aussi, permettant de
contrôler les différentes fonctionnalités de SVN au sein même d’Eclipse.
Synchronisation avec un répertoire.
Soumettre ses modifications au gestionnaire
de version.
Mettre à jour ses fichiers.
Afficher des informations sur les versions.
Ajouter des fichiers au contrôle de versions.
Retirer des fichiers du contrôle de versions.
Figure 8 : SVN sous Eclipse
La figure 2 décrit le menu contextuel de SVN ainsi que les actions possibles sur les fichiers en cours
de développement.
Axel BERGER
Page 13
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
4 Réalisation
Comme je l’ai expliqué précédemment, une grosse partie de ma mission a consisté a faire du
débogage logiciel mais je ne détaillerai cependant pas cette aspect de mon travail dans ce rapport,
pour la simple raison que cela représente un travail relativement brouillon et décousu de « sens »
(difficile à mettre en forme pour présenter quelque chose de « propre »), j’insisterai plutôt sur
d’autres travaux qui m’ont été confiés comme par exemple la conception et le développement d’un
service de distribution de données (DDS).
4.1 Intégration d’un senseur météo
La première chose qui m’a été demandé de réaliser, afin de me plonger dans le projet et surtout dans
la quantité de lignes de code que j’allais devoir assimiler, fût l’intégration au système d’une station
météo de type girouette-anémomètre.
La première étape que je me suis fixé pour cela a été une période d’investigation, car bien qu’ayant
une bonne connaissance du java, je n’avais encore jamais rien programmé qui ait à interagir avec du
matériel de ce type.
Je me suis donc rendu sur le site du fabricant et j’ai lu et téléchargé à peu près tout ce qui s’y
trouvait. Et parmi tout cela, une « notice », très brève certes, mais dans laquelle figurait un tableau
qui m’a été très utile par la suite. J’ai également appris le renseignement que je cherchais : le
protocole de communication utilisé par l’appareil.
MODBUS
Le langage utilisé par la girouette était donc MODBUS, un protocole de communication utilisé pour
les réseaux d’automates programmables.
Celui-ci fonctionnant sur le mode « master / slave », je décidais de m’orienter sur un développement
client / serveur utilisant des sockets afin de communiquer avec elle.
Il ne me restait donc plus qu’à trouver les détails du protocole afin de pouvoir générer correctement
des trames, et les envoyés a la girouette via mon programme. Et c’est ici qu’intervient le tableau cité
précédemment.
Axel BERGER
Page 14
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Figure 9 : Tableau de synthèse des communications avec la girouette
Ce tableau résume donc deux chose, premièrement, la syntaxe des trames à envoyer à la girouette
afin de récupérer les informations météo et deuxièmement, la syntaxe de la trame reçu en réponse.
Résumé
Finalement, la méthode gérant cette station météo peut donc se résumer à cela :
Une tâche chargée d’envoyer une requête à la station afin de récupérer les informations souhaitées.
Celle-ci est exécutée périodiquement grâce à un timer.
socket = new Socket(remote_adrs, remote_port);
byte[] req = new byte[]{0x01, 0x04, 0x00, 0x00, 0x00, 0x0F, 0x85, 0x65} ;
OutputStream out = socket.getOutputStream();
out.write(req, 0, 8);
out.flush();
Exemple d’implémentation de l’envoi d’une requête à la girouette
Une méthode chargée de récupérer les données météo et de les remonter dans le reste du
programme.
byte[] meteo = new byte[33];
InputStream in = socket.getInputStream();
in.read(meteo);
remonterMeteo(new MeteoMsg(meteo));
Exemple de récupération des données météo
Remarque : les deux exemples ci-dessus ne représentent en rien le code réel de l’application qui est
lui relativement plus long et complexe. Ceux-ci sont uniquement destinés à expliciter la logique
utilisée.
Axel BERGER
Page 15
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
4.2 Création d’un système de distribution de données
Un DDS (Data Distribution Service) est de type middleware, il favorise les interactions entre des
applications à travers un réseau. Les applications disposent d’API leur assurant l’utilisation des
services offerts. Il est basé sur un mécanisme de publication et souscription.
Il m’a été demandé durant ma présence dans l’équipe SECMAR de créer un tel soft afin de remplacer
une solution tiers jusqu’alors utilisé mais devenu beaucoup trop instable et contraignante.
Problématique
La raison d’être d’un DDS est de permettre à n machines,
situées sur un même réseau, de communiquer entre
elles, sous forme d’échanges de données.
Ce type de middleware étant souvent destiné à
l’industrie, il doit prendre en compte de fortes
contraintes de performance et de fiabilité.
Principe de fonctionnement
Un service de distribution de données, fonctionne autour d’un schéma basé sur trois entités
principales :
-
Les domaines, représentés en orange sur la figure 10, peuvent être assimilés à des
canaux de discutions, auxquels vont venir se joindre des participant.
Les participants (encadrés sur la figure 10) sont en fait les machines (ou programmes) qui
souhaitent échanger des données sur le réseau.
Les topics, en pointillé sur la figure 10, sont une description basique des types de
données échangées sur les domaines. Ils facilitent la publication et souscription des
participants aux données souhaitées.
Figure 10 : Principe de fonctionnement d'un DDS
Axel BERGER
Page 16
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
L’exemple suivant représente une application possible d’un système de DDS au cas de l’IUT Nice Côte
d’Azur.
Figure 11 : Exemple d'utilisation de DDS
Dans celui-ci, trois domaines serait utilisés, pour les notes, les emplois du temps, et les réunions de
l’IUT. Dans le cas du domaine « Notes », chaque participant souhaitant publier / souscrire à des
données doit rejoindre le domaine ; c’est le cas des professeurs, pour le rendu des notes, et du
secrétariat, pour la communication aux étudiants. Une fois le domaine rejoint, le participant
s’abonne à un topic, c'est-à-dire, un sujet qui le concerne (dans notre exemple ce sera des matières
enseignées) ; celui-ci peut maintenant partager et recevoir des données, concernant le topic qu’il
souhaite, sur le domaine joint2.
Mise en œuvre
Concept
Afin de réaliser cet outil, j’ai eu recours à différents concepts essentiels au bon fonctionnement de
l’application :
Premièrement, le multithreading : le multithreading est un mode de programmation qui consiste à
répartir l’exécution de tâches en parallèle (de manière simultanée). Dans notre cas, impossible de
s’en passer. On ne peut effectivement pas imaginer que l’envoi de données ou l’exécution de
traitement soit bloquant (donc plus de réception) pour le reste du programme.
La diffusion multicast : le terme multicast (ou multidiffusion) est utilisé pour désigner une méthode
de diffusion efficace de l’information d’un émetteur vers un groupe de récepteur. L’avantage qui
nous intéresse pour un système de DDS est que dans le cas de nombreux abonnées, l’information
2
Le nombre de domaines / topics n’est évidement pas limité. Chaque participant peut suivre autant de topics
qu’il le souhaite sur autant de domaines voulus.
Axel BERGER
Page 17
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
n’est envoyée qu’une seul et unique fois, vers l’ensemble des participants, libre à eux ensuite de la
réceptionner ou pas.
Le troisième point essentiel est la notion de synchronisation. Celle-ci consiste à conserver la
cohérence des données dans un environnement multitâches. En effet, les données étant manipulée
par plusieurs entités, il nécessaire de contrôler leurs accès afin d’éviter toutes pertes.
Schéma de fonctionnement
Le système de DDS et donc la mise en œuvre de ces principes est effectuée par trois entités
principales.
Figure 12 : Fonctionnement du DDS
La première est appelée « Manager », c’est elle qui va gérer les domaines, au sens réseau. C'est-àdire qu’elle va contrôler les accès des différents participant aux domaines, leurs communiquer les
informations (adresse ip, port...) afin de les utiliser.
Axel BERGER
Page 18
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Voici, pour exemple, la méthode subscribe, appelée par un participant souhaitant joindre un
domaine.
public AxlSniffer subscribe(String pPartition) {
AxlSniffer sniffer;
String[] cnx;
sniffer = mSniffer.get(pPartition);
if (sniffer == null) {
if (!mPartitions.containsKey(pPartition)) {
sniffer = null;
} else {
cnx = mPartitions.get(pPartition).getChannel().split(":");
sniffer = new AxlSniffer(new AxlPartition(pPartition, cnx[0],
Integer.parseInt(cnx[1])));
mSniffer.put(pPartition, sniffer);
sniffer.start();
}
}
return sniffer;
}
Méthode subscribe de la classe Manager
Son rôle est tribal, elle se contente de récupérer les informations de connexion au canal lié à une
partition (à condition qu’elle existe), puis elle renvoi un objet de la classe « Sniffer » lié à la partition.
La seconde gère quant à elle l’écoute de l’activité sur les différent domaines (elle veille si des données
circulent), auquel cas, elle va filtrer les topics selon les choix du participant, afin que celui-ci ne
récupère pas toutes les informations ne l’intéressant pas.
C’est également elle qui va permettre la publication de données dur le réseau au travers d’une
méthode « broadcast ».
Dans le cadre du multithreading, la méthode d’écoute, qui doit fonctionner en permanence, est donc
effectuée parallèlement aux autres. Le mécanisme java utilisé est l’implémentation de l’interface
Runnable qui contrairement à l’autre solution fournit pas java, la classe Thread, permet de résoudre
le problème de l’héritage multiple.
@Override
public void run() {
mRunner.start();
while (true) {
try {
byte[] buff = new byte[AxlParameters.MESSAGE_MAX_SIZE];
DatagramPacket packet = new DatagramPacket(buff, buff.length);
mSocket.receive(packet);
space_free(packet.getLength());
ByteArrayInputStream bis = new ByteArrayInputStream(packet.getData());
ObjectInputStream ois = new ObjectInputStream(bis);
AxlMessageHeader header = (AxlMessageHeader) ois.readObject();
synchronized (checker) {
Axel BERGER
Page 19
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
checker.checkpacket(header);
}
Tracer.trace(this, “recu “ + header + “ | “ + packet.getLength() + “ octets”);
String topic = header.mTopic;
if (mRunner.getTopicListener().containsKey(topic)) {
Object data = ois.readObject();
AxlAMessage message = new AxlAMessage(header, data);
mRunner.offer(message);
}
} catch (IOException e) {Tracer.exception(this, e);
} catch (ClassNotFoundException e) {Tracer.exception(this, e);}
}
}
Méthode run de la classe Sniffer
La troisième entité s’appelle le Runner, son rôle est de vérifier en permanence l’arrivée de messages
et de déclarer au besoin les actions associées. Afin de ne pas être bloquant pour le reste de
l’application, il est lui aussi exécuté en parallèle aux autres.
Une file d’attente (FIFO)3 est utilisé afin de ne pas déclencher trop de traitement simultanément. Les
messages entrant sont ainsi stockés dans la FIFO et utilisés chacun leur tour.
@Override
public void run() {
AxlAMessage msg;
while (true) {
try {
msg = take();
AxlMessageHeader header = msg.getHeader();
String topic = header.mTopic;
if (mTopicListener.containsKey(topic)) {
Integer code = header.mCode;
switch (code) {
case AxlMessageHeader.MESSAGE :
for (AxlMessageListener l : mTopicListener.get(topic))
l.onReceive(msg);
break;
case AxlMessageHeader.REFILL :
for (AxlMessageListener l : mTopicListener.get(topic))
l.onRefill();
break;
case AxlMessageHeader.CLEAR :
for (AxlMessageListener l : mTopicListener.get(topic))
l.onClear();
break;
}
3
La classe utilisée est LinkedBlockingQueue, c’est une file dite bloquante, au sens ou si un élément est
demandé mais que la file est vide, la demande sera mise en attente, et l’élément fournit dès son arrivé dans la
FIFO.
Axel BERGER
Page 20
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Méthode run de la classe Runner
Problèmes rencontrés
Le développement de ce système de distribution de données m’a posé plusieurs problèmes.
Premièrement le multithreading, car en effet la programmation répartie n’est pas chose facile, et
notamment lorsqu’il s’agit de débugger d’éventuels problèmes ou comportement anormaux. La
recherche de « bonnes pratiques » sur le web ainsi que d’exemples m’a été d’une grande aide et m’a
probablement évité de nombreuses heures d’impasses.
La synchronisation a également été au cœur de mes soucis car l’intégrité des données ainsi que leur
cohérence sont essentiels dans ce type d’application.
Les autres éléments qui m’ont pris également du temps sont des exigences liés aux performances et
à la fiabilité du système, ainsi que des limitations matérielles impactant la quantité de données
pouvant être transmises dans un message.
4.3 Débogage
Outre la résolution de bug « normaux » liés à la programmation elle-même, j’ai également eu à
travailler sur des problèmes matériels. L’un d’entre eux concernait le module GPS du système ; En
effet, il arrivait que celui fournisse de temps en temps et pour une raison totalement inconnue une
trame erronée, entrainant une mise à jour aberrante des dates systèmes.
La solution mise en place afin de contourner ce problème a été de baser cette mise a jour sur deux
trames consécutives du GPS, effectuant donc la mise à jour si celles-ci étaient cohérentes entre-elles.
private long delta_last = 0;
private void checkGpsDate(byte[] bmsg, int size) {
long date_pc = System.currentTimeMillis();
long date_gps = parseGpsMessage(bmsg, size);
long delta_current = date_pc - date_gps;
if(delta_last == 0) delta_last = delta_current;
else {
if ((date_pc - lastGPSTimeUpdate) > (1000 * 3600))
if (Math.abs(delta_last - delta_current) < 2000) {
mettreAJourDateSnode(date_gps);
lastGPSTimeUpdate = date_pc;
}
}
}
Mise à jour de la fonction de vérification de l’heure GPS
Axel BERGER
Page 21
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
5 Avancement
A l’heure actuelle, une grande majorité des bugs identifiés sur la partie TUS du projet est corrigé et le
software développé fonctionne correctement.
Le système de distribution de données que j’ai développé a été retravaillé puis intégré au projet ; Il
remplace actuellement l’ancienne solution de DDS.
Au 31 aout 2010, le système devrai normalement être installé son site d’expérimentation et intégré
avec les composants livrés par les autres acteurs du projet, conformément au planning définit et
présenté dans la partie 2 de ce rapport.
La phase d’expérimentation devrai normalement durer jusqu'à décembre 2010, date à laquelle
prendra également fin ma mission chez TUS. Cette phase sera également l’occasion de
démonstration « publique » réservées à la presse spécialisée, notamment dans le cadre du salon
Euronaval.
Axel BERGER
Page 22
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Conclusion
Cette année passée en licence professionnelle, la première pour moi en alternance, a été une
expérience très enrichissante, non seulement sur le plan professionnel mais également sur le plan
personnel puisque le fait d’évoluer dans un milieu relativement « expérimental » a modifié mon
point de vue sur la recherche et m’a aussi donné d’avantage confiance en moi.
J’ai pu acquérir durant cette année passée chez Thales Underwater Systems une expérience concrète
du métier de développeur et plus généralement, du monde du travail et de la vie en entreprise.
Cette expérience sur le projet SECMAR m’a également permis de réellement m’apercevoir de l’utilité
du travail en équipe et j’ai pu mettre en évidence tant mes connaissances informatiques que
relationnelles afin de répondre à de nombreux problèmes.
Bien que mon année universitaire se termine ici, le projet SECMAR continu pour moi étant donné que
mon contrat se prolonge encore pendant quelques mois. Ce sera pour moi l’occasion de participer à
la phase d’expérimentation du système, qui est en quelques sortes un premier aboutissement, et qui
nous apportera à tous j’en sûr, une grande satisfaction.
Axel BERGER
Page 23
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Glossaire
AIS : Automatic Identification System
API : Application Programming Interface
AUV : Autonomous Underwater Vehicle
BSD : Berkeley Software Distribution
CAT : Centre A Terre
CSF : Compagnie Générale de Télégraphie sans Fil
CVS : Concurrent Versions System
DDS : Data Distribution Service
DOP : Détection OPtronique
DRA : Détection RAdar
DSF : Détection Sous-marine Fixe
EDI / IDE : Un IDE (Environnement de Développement Intégré / Integrated Development Environment)
est un programme regroupant un ensemble d’outils pour le développement de logiciels.
FIFO : First In First Out (premier entré premier sorti)
GPS : Global Positioning System
IBM : International Business Machines Corporation
IDSE : Informatique Distribuée et Systèmes d'information d’Entreprise
IUT : Institut Universitaire de Technologie
ISD : Intervention Support Device
JDT : Java Development Tools
OSGi : Open Services Gateway Initiative
PACA : Provence-Alpes-Côte-D’azur
PAM : Port Autonome de Marseille
SECMAR : Systèmes de sécurité des biens, des personnes et des installations présents dans une zone
maritime sensible.
SIL : Systèmes Informatiques et Logiciels
SNODE : Sensors NODE
Axel BERGER
Page 24
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
SVN : Diminutif de Subversion
SWT : Standard Widget Toolkit
TUS : Thales Underwater Systems
Axel BERGER
Page 25
Systèmes de sécurité des biens, des personnes et des installations présents dans une zone maritime sensible
Bibliographie
Sites web
THALES
Thales group : http://www.thalesgroup.com
Thales Underwater Systems : http://www.thalesgroup.com/naval/
Pole mer PACA
SECMAR : http://www.polemerpaca.com/fr/domaines-d-activite/securite-et-suretemaritimes/secmar-44.html
Wikipedia
Eclipse : http://fr.wikipedia.org/wiki/Eclipse_(logiciel)
Subversion : http://fr.wikipedia.org/wiki/Subversion_(logiciel)
Axel BERGER
Page 26