• Aucun résultat trouvé

Réalisation d'un logiciel de calcul d'indices de vulnérabilité.

N/A
N/A
Protected

Academic year: 2021

Partager "Réalisation d'un logiciel de calcul d'indices de vulnérabilité."

Copied!
44
0
0

Texte intégral

(1)

HAL Id: hal-02810755

https://hal.inrae.fr/hal-02810755

Submitted on 6 Jun 2020

HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Réalisation d’un logiciel de calcul d’indices de

vulnérabilité.

Marwane Erradja, Yassir Hafidi

To cite this version:

Marwane Erradja, Yassir Hafidi. Réalisation d’un logiciel de calcul d’indices de vulnérabilité.. [Stage] 2013, 43 p. �hal-02810755�

(2)

Rapport de projet de 2

ème

année

Filière 2 – Génie Logiciel et Systèmes Informatiques

Réalisation d'un logiciel de calcul d'indices de

vulnérabilité

Présenté par : Marwane Erradja Yassir Hafidi

Responsable ISIMA : Claude Mazel Responsable entreprise : Romain Lardy Responsable entreprise : Raphaël Martin Institut Supérieur D'Informatique

De Modélisation et de leurs Applications Complexe des Cézeaux

24 avenue des Landais BP 10125

63173 Aubière Cedex.

INRA Site de Crouël 234 avenue du Brézet 63100 CLERMONT-FERRAND

(3)

Remerciement

Nous remerciement principalement nos tuteurs de projet, Monsieur Raphaël Martin et Monsieur Romain Lardy et notre tuteur de l’ISIMA Monsieur Claude Mazel pour nous avoir aidés avec leurs précieux conseils tout au long de la réalisation du projet.

Nos remerciements s’adressent également à Murielle Mouzat, notre professeur de communication pour nous avoir appris à bien rédiger le rapport et à faire une bonne présentation orale.

Enfin, nous remercions nos professeurs de l’ISIMA, plus spécialement notre responsable de filière, pour leurs enseignements sur les méthodes et outils de conception, de modélisation et de développement logiciel qui nous ont permis de mener à bien notre projet.

(4)

Résumé

Dans le cadre de notre deuxième année au sein de l’ISIMA, nous avons réalisé un projet proposé par l’INRA UREP intitulé : « Réalisation d'un logiciel de calcul d'indices de vulnérabilité ».

L’objectif était de réaliser une application intuitive qui va permettre de calculer des indices de vulnérabilité d’agro-écosystèmes dans un contexte de changements climatiques (augmentation de la température moyenne, recrudescence des évènements extrêmes type sécheresse, …).

Ce projet a été réalisé en utilisant le langage JAVA et la bibliothèque graphique SWING. Les graphiques sont quant à eux généré via la bibliothèque JFreeChart.

Mots-clés : calcul d'indices de vulnérabilité, agro-écosystèmes, JAVA, SWING, JFreeChart.

Abstract

In order to complete our second year at ISIMA, we carried out a project for INRA UREP which consists in the conception and implementation of a software for the calculation of vulnerability indices.

The aim was to develop an application, easy to use, which will calculate five vulnerability indices of agro-ecosystems in a context of global warming (increase of the average temperature, drought...).

This project was implemented using JAVA language and SWING graphics library, and charts were implemented thanks to JfreeChart library.

(5)

Table des matières

Remerciement ... Résumé ... Abstract ... Table des illustrations ...

Introduction ... 1

I. Introduction ... 2

1. Présentation de l’entreprise ... 2

a. INRA ... 2

b. UREP ... 3

c. Activité de recherche de l’UREP ... 3

2. Objectif du projet ... 3

3. Connaissance et analyse du problème ... 6

II. Conception ... 7

Diagramme des cas d’utilisation ... 7

1. ... 7

2. Scénarios des cas d’utilisations ... 8

3. Diagramme d’activité ... 8

4. Mise en œuvre du projet ... 10

5. Outils utilisés ... 12 a. Environnement de conception ... 12 b. Environnement de développement ... 12 c. Le langage de programmation ... 13 d. Swing ... 13 e. JFreeChart ... 16 III. Réalisation ... 18

1. Réalisation du premier outil ... 18

2. Réalisation du deuxième outil ... 26

Conclusion ... 31

Glossaire ... 32

Bibliographie ... 35

(6)

Table des illustrations

Figure 1: Logo Inra Urep ... 2

Figure 2: maquette de l'interface initialization ... 4

Figure 3: maquette des interfaces results et charts ... 5

Figure 4: Résumé des indices de vulnérabilité ... 6

Figure 5: Diagramme des cas d'utilisations ... 7

Figure 6: Diagramme d'activité ... 9

Figure 7: Diagramme de Gantt ... 11

Figure 8: Logo Entreprise Architect ... 12

Figure 9: Logo de l'IDE Eclipse ... 12

Figure 10 : Modèle MVC ... 14

Figure 11 : Exemple de code de FlowLayout ... 15

Figure 12 : Résultat de l'exécution d'un FlowLayout ... 15

Figure 13: Exemple de code de GroupLayout ... 16

Figure 14: Résultat de l'exécution d'un FlowLayout ... 16

Figure 15: Histogramme Jfreechart ... 17

Figure 16: Radar(SpiderwebPlot) JfreeChart ... 17

Figure 17: Interface d'initialisation de l’outil ... 18

Figure 18: chargement de fichier... 19

Figure 19: chargement de fichier et activation des onglets ... 20

Figure 20: interface Result ... 21

Figure 21: interface Chart ... 22

Figure 22: Interface initialization finalisée ... 23

Figure 23: choix de la couleur des fichiers ... 24

Figure 24: L'export des résultats ... 25

Figure 25: Contenu du fichier Excel exporté ... 26

Figure 26: maquette outil NetCDF ... 27

Figure 27: première interface ... 28

Figure 28: deuxième interface ... 28

Figure 29: la carte de résultats pour la première période ... 29

(7)

1

Introduction

Dans le cadre de notre deuxième année d’étude au sein de l’Institut Supérieur d’Informatique, de Modélisation et de leurs Applications, nous avons effectué un projet de cent heures, encadré par Romain Lardy (INRA UREP), Raphaël Martin (INRA UREP) et Claude Mazel (ISIMA).

Le calcul de la vulnérabilité des agro-systèmes face aux changements climatiques s’inscrit dans les axes prioritaires de l’INRA. Dans ce cadre, l’Unité de Recherche sur les Ecosystèmes Prairiaux cherche à évaluer l’impact de tels changements (accroissement de la température, baisse de la pluviométrie, augmentation du taux de CO2 dans l’atmosphère, recrudescence des évènements de sécheresse, …) sur les écosystèmes prairiaux en cherchant à évaluer certains indicateurs relatifs aux flux de Gaz à Effet de Serre, à la productivité, etc.

Le but du projet est donc de réaliser une application permettant de calculer des indices de vulnérabilité à partir d’une série de données et de présenter les résultats avec des tableaux et des graphes.

Dans une première partie nous allons donc expliquer les objectifs du projet en détaillant le contexte et les fonctionnalités demandées. Ensuite, nous détaillerons la conception et les outils utilisés pour développer notre application. Enfin, nous présenterons l’outil obtenu.

(8)

2

I.

Introduction

1. Présentation de l’entreprise

a. INRA

L’institut National de la Recherche Agronomique, fondé en 1946 est un établissement public à caractère scientifique sous tutelle du ministère de la Recherche et du ministère de l’Agriculture. L’INRA est le premier institut de recherche agronomique en Europe, et le deuxième mondial en nombre de publications.

Les missions de l’INRA visent à améliorer la gestion des ressources naturelles de notre environnement, la valorisation des territoires, comprendre l’influence des changements climatiques sur notre société, diriger notre agriculture vers une alimentation saine et de qualité, inscrite dans une optique de développement durable. Plus globalement, l’INRA apporte ses connaissances à la recherche fondamentale dans le milieu agronomique, afin de contribuer à l’amélioration de notre société. Il peut également être questionné en tant qu’expert pour l’aide à la prise de décision publique.

Pour obtenir ces résultats, l’INRA engage actuellement plus de 1800 chercheurs et presque autant de doctorants. Plus de 1000 chercheurs étrangers participent également aux projets de recherche dirigés par les équipes de l’institut. En plus de ce personnel dédié à la recherche plus de 2400 ingénieurs et 4200 techniciens ou administratifs œuvrent au service de la Recherche.

(9)

3

b. UREP

Rattachée au département Ecologie des Forêts, des Prairies et des milieux Aquatiques (EFPA), l'Unité de Recherche sur l'Ecosystème Prairial est située sur le site de Crouël, même si nombre de ses dispositifs expérimentaux sont positionnés sur les domaines de Theix ou de l'Unité Expérimentale des Monts d'Auvergne (UEMA). L'UREP possède une expertise internationale dans le domaine de l'écologie prairiale et plus particulièrement sur l'impact du changement climatique, les bilans de gaz à effet de serre, la séquestration de carbone, les cycles carbone et azote, les interactions plantes-sol (microorganismes) et herbe-animal, ou encore les effets des pratiques de gestion sur la dynamique prairiale.

c. Activité de recherche de l’UREP

Le projet de l'Unité de Recherche sur l'Ecosystème Prairial (UREP) porte sur l'écologie, le fonctionnement et les services de la prairie permanente dans un contexte de changement global. Il se positionne dans un contexte porteur et permet de répondre à la fois à des attentes en matière de travaux cognitifs (front de science) et finalisés (demande sociétale).

L'enjeu est de contribuer à une gestion durable de l'écosystème prairial dans un contexte changeant (climat et multifonctionnalité de l'agriculture). Pour cela une démarche intégrative et prédictive combinant observation, expérimentation et modélisation est utilisée.

2. Objectif du projet

L’objectif est de réaliser une application, facile d’utilisation, qui va calculer des indices relatifs à la vulnérabilité des agro-écosystèmes dans un contexte de changements climatiques (augmentation de la température moyenne, recrudescence des évènements de sécheresse, …).

(10)

4

Afin de réaliser cela, nos tuteurs nous ont fourni :

une librairie (.jar) contenant les fonctions mathématiques développées par Romain Lardy dans le cadre de sa thèse pour le calcul des indices de vulnérabilité.

 une maquette des interfaces à réaliser (cf Figure 2 et 3).

(11)

5

Figure 3: maquette des interfaces results et charts

Les fichiers d’initialisation qui vont servir de base au calcul seront dans un premier temps des fichiers ASCII de la forme :

Proba1,valeur1_1,valeur1_2,valeur1_3,…,valeur1_i Proba2,valeur2_1,valeur2_2,valeur2_3,…,valeur2_j …

ProbaN,valeurN_1,valeurN_2,valeurN_3,…,valeurN_k

Il est prévu dans un second temps de développer un même type d’outils permettant d’exploiter des fichiers au format NetCDF.

Ce projet sera réalisé en utilisant le langage JAVA et la bibliothèque graphique SWING. Pour générer les graphiques, la bibliothèque JFreeChart sera utilisée.

(12)

6

3. Connaissance et analyse du problème

L’entreprise INRA UREP avait besoin d’une application dotée d’interfaces ergonomiques, développée en JAVA pour calculer les indices de vulnérabilité au changement climatique des écosystèmes prairiaux. Le développement de cette application se basera sur la thèse du doctorant M. Romain Lardy. Le JAVA a été choisit pour sa portabilité (i.e. indépendance de la plate-forme), mais également pour pouvoir facilement utiliser la bibliothèque de calcul des indices de vulnérabilité précédemment écrite en JAVA. Cette bibliothèque permet le calcul de cinq indices quantitatifs présentés dans le tableau suivant (cf. Figure 4) :

L’interprétation de ces indices étant compliquée, il nous a semblé intéressant que les deux applications (version ASCII et version NetCDF) contiennent des tableaux, des graphiques et même des cartes géographiques, pour faciliter l’interprétation des indices.

(13)

7

II.

Conception

Pour la conception UML nous avons choisi deux diagrammes, le diagramme des cas d’utilisations pour exprimer les actions qu’un utilisateur peut effectuer et le diagramme d’activité pour représenter graphiquement le comportement séquentiel du calcul des indices de vulnérabilité

1. Diagramme des cas d’utilisation

Ce diagramme sera utilisé pour donner une vision globale du comportement fonctionnel de l’application et pour présenter les actions qu’un utilisateur peut effectuer (cf. Figure 5).

(14)

8

2. Scénarios des cas d’utilisations

L'utilisateur lance l’application : 1. Il ajoute des fichiers

2. Il choisit le fichier de référence

3. Il choisit des couleurs pour chaque fichier

4. Il choisit les délimiteurs qui servent à l’extraction des données des fichiers 5. Il choisit la valeur de seuil (Threshold)

6. Il calcule les indices en cliquant sur le bouton « Compute » 7. Il affiche les résultats sous forme de tableaux et de graphes 8. Il exporte les résultats des tableaux en format Excel

3. Diagramme d’activité

Ce Diagramme (cf. Figure 6) décrit le comportement séquentiel de notre application. Tout d’abord l’ajout de fichier, le choix du délimiteur et la saisie du seuil peuvent se faire en parallèle. Après l’ajout des fichiers deux taches seront possibles : le choix des couleurs des fichiers et du fichier référence. Ensuite le clic sur le bouton « compute » est accessible. Finalement l’affichage des résultats sous forme de graphe et de tableaux est possible.

(15)

9

(16)

10

4. Mise en œuvre du projet

La réalisation de ce projet a duré 120 heures. Pendant cette période, la documentation, la conception et la réalisation se faisaient en équipe.

Pendant chaque réunion nos tuteurs valident l’avancement de l’application et nous donnent leur avis sur ce que nous devons modifier, amélioré voire supprimer de la version courante de l’application. Nous fixons ensuite les objectifs à atteindre pour la réunion qui suit. Et après chaque réunion nous étions tenus de réaliser un compte rendu dans lequel nous résumons ce que nous avons compris. Ces comptes rendu sont ensuite corrigés par nos tuteurs ce qui nous amène à une version finale des objectifs de la prochaine réunion.

Nous avons modélisé avec le diagramme de Gantt (cf. Figure7), réalisé en utilisant l’application Gantt Project, les différentes taches et leurs avancements dans le temps pendant toute la duré du projet.

(17)

11

(18)

12

5. Outils utilisés

a. Environnement de conception

Nous avons utilisé l’outil Entreprise Architect pour la conception des diagrammes des cas d’utilisation et d’activité. Il s’agit d’un atelier de Génie Logiciel pour le langage UML (Unified Modeling Language). Son interface graphique, facile d’utilisation, aide à structurer les besoins des utilisateurs recueillis par l’analyste.

b. Environnement de développement

Pour développer notre application, on a choisit d’utiliser l’IDE Eclipse. Eclipse (http://www.eclipse.org/) permet d’avoir un environnement de développement facile d’utilisation, extensible. Il propose des outils pour réaliser les différentes phases de développement logiciel (conception, modélisation, implémentation, tests et même reporting). Il permet de supporter tous les langages de programmation.

Figure 9: Logo de l'IDE Eclipse Figure 8: Logo Entreprise Architect

(19)

13

c. Le langage de programmation

Pour réaliser ce projet, notre choix technique s’est porté sur Java.

Le langage Java est un langage de programmation informatique orienté objet créé par James Gosling et Patrick Naughton, employés de Sun Microsystems, avec le soutien de Bill Joy (cofondateur de Sun Microsystems en 1982), présenté officiellement le 23 mai 1995 au SunWorld. La société Sun a été rachetée en 2009 par la société Oracle qui possède et maintient désormais Java.

La première caractéristique de ce langage, son caractère orienté objet (« OO »), fait référence à une méthode de programmation et de conception du langage et au fait qu'un programme écrit en Java ressemble assez fort à un programme écrit en C++.

Ce langage est doté en plus d’un mécanisme de gestion de la mémoire automatisée appelé « ramasse-miettes » (Garbage Collector). Cet élément contribue à la robustesse et à la performance des programmes, le ramasse-miettes est appelé régulièrement et automatiquement pendant l'exécution du programme.

Le langage java se différencie des autres langages en ajoutant une indépendance de l’exécution vis-à-vis de la plateforme. Cela signifie que les programmes écrits en Java fonctionnent de manière parfaitement similaire sur différentes architectures matérielles. On peut effectuer le développement sur une architecture donnée et faire tourner l’application sur toutes les autres.

d. Swing

Swing est une bibliothèque graphique pour le langage Java. Elle fait partie du package Java Foundation Classes (JFC).

Swing offre la possibilité de créer des interfaces graphiques qui sont indépendantes de la plateforme d’exécution. Il utilise le patron de conception MVC (Model Vue Contrôleur). Le schéma ci-dessous (cf. FSigure10) explique le fonctionnement de ce patron.

(20)

14

Figure 10 : Modèle MVC

Ce patron permet de séparer les donnés (le Modèle), l’interface Homme-Machine (la Vue) et la logique de control (le Contrôleur).Il impose donc une séparation en 3 couches.

 Le modèle : Il représente les données de l’application

 La vue : Elle représente l’interface utilisateur qui n’effectue aucun traitement et se contente d’afficher les données du modèle.

 Le contrôleur : Il fait l’intermédiaire entre la vue et le modèle

Plus concrètement dans notre application on a utilisé le composant JComboBox qui met en évidence l’utilisation de ce patron de conception.

En effet pour l’utiliser on a besoin de trois composants Swing :

Le modèle : on le choix entre l’utilisation de DefaultComboBoxModel qui est le modèle par défaut de Swing et qui contient une liste d’ « Object » ou bien la création d’un nouveau modèle en héritant de la classe AbstractComboBoxModel.

(21)

15

Le contrôleur : c’est un écouteur de type ActionListener qui va exécuter un traitement sur le modèle à chaque changement de la vue.

Swing utilise des « Layouts Managers » qui sont des gestionnaires de placement qui permettent de disposer les composants dans un panneau (panel) en fonction des caractéristiques qui leurs sont propres. Il existe plusieurs gestionnaires de placement qui rendent l’interface plus ergonomique. Dans notre application on utilisé les layouts managers suivants :

 FlowLayout : Dans ce gestionnaire les composants sont placés horizontalement les uns après les autres avec un retour à la ligne quand il n’y a plus de place. Il y a plusieurs options, parmi lesquels on trouve notamment :

 FlowLayout.CENTER : pour centrer les composants.  FlowLayout.RIGHT : pour aligner à droite.

 FlowLayout.LEFT : pour aligner à gauche

GroupLayout : est un LayoutManager crée tout spécialement pour faciliter la tâche de construction des interfaces utilisateurs. Sa particularité réside dans un groupement vertical et horizontal des composants.

Figure 11 : Exemple de code de FlowLayout

(22)

16

Ce gestionnaire de placement était très utile pour la conception de notre interface.

e. JFreeChart

JFreeChart est une API Java, Open Source, qui permet de créer des diagrammes et des graphiques ergonomiques. En revanche la documentation est payante ce qui nous a pousser à faire des recherches plus approfondies sur le net. Exemples de graphiques disponibles sous JFreeChart :

 Diagramme camembert

 Diagramme de Gantt

 Histogrammes

Figure 13: Exemple de code de GroupLayout

(23)

17

 Radar

 Thermomètres, compas, compteur de vitesse, etc…

Dans notre application on a utilisé deux types de graphiques :

 les histogrammes ;

 et les radars

Pour ces deux types de graphe il faut remplir un DataSet avec les données que l’on souhaite représenter graphiquement. Ensuite on fait appel à la fonction de création de chaque graphe, createBarChart3D pour l’histogramme (cf. Figure 15) et SpiderWebPlot pour le Radar (cf. Figure 16).

Figure 15: Histogramme JFreeChart

(24)

18

III.

Réalisation

1. Réalisation du premier outil

Lors de la première réunion, nous avions fixé comme objectif la création des 3 onglets de l’interface (Initialization, Results et Charts). Nous allons donc commencer par présenter ces 3 onglets.

 Onglet initialisation

Figure 17: Interface d'initialisation de l’outil

Cet onglet permet le chargement (upload) des données (stockées dans des fichiers ASCII au format csv). Une fois les calculs lancés via l’appui sur le bouton « Compute », les onglets « Results » et « Charts » sont activés.

(25)

19

Nous avons utilisé, pour organiser les composants de cette interface, le Layout Manager : GroupLayout qui permet une très grand flexibilité de disposition des composants et permet de les grouper horizontalement et verticalement.

Le chargement du fichier (cf. Figure 18) se fait par l’intermédiaire du bouton ‘Add File’, qui fait appel au composant JFileChooser pour choisir le fichier à charger :

Figure 18: chargement de fichier

La capture d’écran (cf. Figure 19) ci-dessous montre le chargement de 2 fichiers et l’activation des deux onglets après l’appui sur le bouton ‘Compute’ qui va charger chacun des fichiers grâce à la fonction loadFile (cf annexe) et calcule les cinq variable de vulnérabilité en utilisant la fonction calculateVulnerability (cf annexe).

(26)

20

Lors de la deuxième réunion, nous avions fixé comme objectif la création de l’interface ‘Results’ (cf. Figure 20) :

« Cette interface comportera deux composants JTable, le premier tableau affichera le calcul des 5 indices pour chacun des fichiers chargés dans la première interface. Le deuxième tableau affichera ces mêmes valeurs normalisées. »

(27)

21

Onglet Results :

Figure 20: interface « Result »

Pour le calcul de ces indices nous avons utilisé la bibliothèque vulnerability.jar développé par notre tuteur Romain Lardy.

Après la troisième réunion, nous avions comme tâche la création des composants de l’interface Chart. Cette interface (cf. Figure 21) devait comporter deux graphiques: un histogramme et un graphe de type Radar.

(28)

22

Onglet Chart :

Pendant la quatrième réunion, nos tuteurs nous ont donné les dernières directives pour finaliser l’application. Nous devions commencer par l’ajout de la fonctionnalité d’ajout multiple de fichiers, du choix des couleurs (cf. Figure 22 et 23) qui vont les représenter sur les graphes dans l’interface Chart, et enfin l’ajout d’un bouton « Export » qui va permettre d’enregistrer, sous format Excel, les résultats des tableaux de l’interface Result (cf. Figure 24).

(29)

23

(30)

24

Cette interface affecte à chaque fichier une couleur aléatoire et donne également à l’utilisateur le choix de changer cette couleur avec le composant JColorChooser.

(31)

25

Dans l’onglet « Results » nous avons ajouté un bouton « Export » qui permet d’enregistrer les résultats dans un fichier de format Excel (cf. Figure 25).

(32)

26

2. Réalisation du deuxième outil

Le deuxième outil que nous avons développé permet de calculer les mêmes indices de vulnérabilité que le premier outil, mais il incorpore en plus une dimension spatiale. En effet, maintenant, on prend en entrée non plus des données à l’échelle d’un site mais des données sur un ensemble de sites (i.e. des données par latitude, longitude et par unité de temps). . Au lieu des fichiers ASCII nous avons utilisé le format NetCDF pour le chargement et l’enregistrement des résultats. Le format NetCDF permet facilement de tracer les données dans une carte, nous apportant une plus grande flexibilité et une meilleure capacité à analyser les résultats ainsi obtenus.

Tout comme pour la première application, nos tuteurs nous ont fournis des maquettes d’écran pour la réalisation des interfaces (cf. Figure 27).

(33)

27

La première interface (cf. Figure 28) permet de charger le fichier NetCDF source, d’en extraire les dimensions (la longitude, la latitude, la période) dans le ComboBox « work dimension », l’utilisateur choisit le nom du fichier NetCDF de destination, il ajoute ensuite les variables grâce au bouton « add variable », ce qui lui permet d’accéder à une deuxième fenêtre où il va choisir le seuil « Threshold » de vulnérabilité, exprimé en pourcentage. Enfin, cela va lui permettre de calculer les cinq variables de vulnérabilité grâce au bouton « compute »

(34)

28

La deuxième fenêtre (cf. Figure 29) permet de choisir une variable à partir du fichier NetCDF source et donne la possibilité à l’utilisateur de choisir la période concernée par les calculs en choisissant l’année de départ et l’année de fin.

Figure 28: première fenêtre

(35)

29

Après les calculs, cette application génère un fichier NetCDF que l’on peut lire et exploiter à l’aide du logiciel Panoply. Ce fichier contiendra le résultat des calculs des indices de vulnérabilité pour chaque variable. A l’ouverture de ce fichier, Panoply va afficher une carte géographique pour chaque variable, les pixels représentant les indices de vulnérabilité.

A titre d’exemple nous avons choisi deux périodes pour lesquelles nous allons calculer les indices de vulnérabilité. Ci-dessous nous présentons les deux cartes résultats ainsi obtenues et tracé à l’aide de l’outil Panoply.

(36)

30

Figure 31: la carte de résultats pour la deuxième période

À partir de ces deux cartes nous pouvons remarquer que dans la deuxième période l’Espagne est devenu plus vulnérable au réchauffement climatique.

(37)

31

Conclusion

L’objectif de notre projet était la création de deux applications permettant à partir des données en entrée (fichiers ASCII et NetCDF) de calculer des indices de vulnérabilité et de les présenter d’une façon ergonomique sous forme de tableaux, de graphes et de cartes géographiques. Tous ces objectifs ont été atteints.

Par ailleurs, nous avons rencontré quelques difficultés lors de la réalisation de ce projet. En effet, la compréhension de ces indices de vulnérabilité a été difficile à assimiler d’une part, d’autre part la documentation de l’API « JfreeChart » était faiblement accessible (car payante) et celle de « NetCDF » était très limitée par rapport à notre besoin. De plus, il était indispensable de comprendre le mécanisme de l’outil « Panoply » pour la lecture des données, ce qui s’est avéré une tâche laborieuse.

Lors de la réalisation de la deuxième application (celle prenant en entrée des fichiers NetCDF), nous avons calculé les indices de vulnérabilité en considérant chaque pixel comme une entité indépendante. Nous pourrions proposer comme amélioration de l’outil de prendre en compte les pixels voisins lors des calculs, ce qui donnerait des résultats de meilleure qualité.

Ce projet nous a permis d’approfondir nos connaissances en JAVA et en réalisation d’interfaces graphiques en SWING. Cette application va être utilisée par les chercheurs de l’INRA UREP pour l’interprétation des indices de vulnérabilité pour une meilleure compréhension des répercussions du changement climatique sur les agro-écosystèmes.

(38)

32

Glossaire

API

Application Programming Interface est un ensemble de fonctions, procédures ou classes mises à disposition par une bibliothèque logicielle, un système d'exploitation ou un service.

ASCII

American Standard Code for Information Interchange C'est une norme de codage de caractères en informatique, ancienne et connue pour son influence incontournable sur les codages de caractères qui lui ont succédé. Elle était la plus largement compatible pour ce qui est des caractères latins non accentués.

Garbage Collector

Un ramasse-miettes, ou récupérateur de mémoire, ou glaneur de cellules est un sous-système informatique de gestion automatique de la mémoire. Il est responsable du recyclage de la mémoire préalablement allouée puis inutilisée.

Gantt

Le diagramme de Gantt est un outil utilisé en ordonnancement et gestion de projet et permettant de visualiser dans le temps les diverses tâches liées composant un projet. Il permet de représenter graphiquement l'avancement du projet.

IDE

Un environnement de développement intégré est un programme regroupant un ensemble d'outils pour le développement de logiciels.

(39)

33 Jar

En informatique, un fichier JAR (Java ARchive) est un fichier ZIP utilisé pour distribuer un ensemble de classes Java. Ce format est utilisé pour stocker les définitions des classes, ainsi que des métadonnées, constituant l'ensemble d'un programme.

JFC (Java Foundation Classes)

Java Foundation Classes (JFC) est un framework graphique pour Java composé de AWT, Swing et Java2D.

Listener

Le listener, en français écouteur, est un terme anglais utilisé de façon générale en informatique pour qualifier un élément logiciel qui est à l'écoute d'évènements afin d'effectuer des traitements.

Netcdf

NetCDF (Network Common Data Form) est constitué, d'une part, d'un ensemble de bibliothèques logicielles et d'autre part, d'un format de données « auto-documenté », indépendant de l'architecture matérielle qui permet la création, l'accès et le partage de données scientifiques stockées sous la forme de tableaux.

Panoply

Panoply est un visualisateur de cartes géographiques à partir de fichiers NetCDF développé par le Goddard Institute for Space Studies de la NASA. Il a été développé en Java.

(40)

34 POO

La programmation orientée objet est un paradigme de programmation informatique, Il consiste en la définition et l'interaction de briques logicielles appelées objets, un objet représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou encore une page d'un livre. Il possède une structure interne et un comportement, et il sait communiquer avec ses pairs. Il s'agit donc de représenter ces objets et leurs relations ; la communication entre les objets via leurs relations permet de réaliser les fonctionnalités attendues, de résoudre le ou les problèmes.

UML

Unified Modeling Language est un langage de modélisation graphique. Il est apparu dans le monde du génie logiciel, dans le cadre de la « conception orientée objet ». UML est couramment utilisé dans les projets logiciels.

(41)

35

Bibliographie

[Emmanuel Puybaret 2006] « Les cahiers du programmeur Swing », édition EYROLLES.

[Hugues Bersini, 2007] « L’orienté objet, Cours et exercices en UML2 », édition EYROLLES.

[Romain Lardy 2013] Calcul intensif pour l’évaluation de la vulnérabilité en utilisant une approche d’Ingénierie Dirigée par les Modèles. Application à la vulnérabilité des prairies au changement climatique sous contraintes de plans d’expériences. Université Blaise Pascal, thèse de doctorat, 254p.

Webographie

[INRA] : INRA UREP, Site officiel de l'INRA UREP, https://www1.clermont.inra.fr/urep/ [WIKIPEDIA] : WIKIPEDIA, Site officiel de WIKIPEDIA, http://fr.wikipedia.org/ [JFreeChart] : JfreeChart, site officiel de l’api JfreeChart, http://www.jfree.org

[NetCDF] : NetCDF, site officiel d’UNIDATA, http://www.unidata.ucar.edu/software/netcdf-java/tutorial/index.html

(42)

i

Annexe

La fonction du parsing du fichier pour le premier outil, cette fonction permet de charger un fichier grâce à son emplacement sur le disque dur et transformer ses données en un ArrayList<double[]>.

public ArrayList<double[]> loadFile(String file) {

ArrayList<double[]> list = new ArrayList<double[]>(); RandomAccessFile f;

if (file != null) { try {

f = new RandomAccessFile(file, "r"); String line = "";

String fileDelimiter = (String) txtFileDelimiter .getSelectedItem();

fileDelimiter = fileDelimiter.trim();

String decimalDelimiter = (String) txtDecimalDelimiter .getSelectedItem();

decimalDelimiter = decimalDelimiter.trim(); while ((line = f.readLine()) != null) {

String[] tab = line.split(fileDelimiter); double[] values = new double[tab.length]; for (int i = 0; i < values.length; i++) {

values[i] = Double.parseDouble(tab[i].replace(",", ".")); } list.add(values); } ; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return list; }

(43)

ii

La fonction de calcul des indices de vulnérabilité s’appuie sur la fonction de parsing du fichier pour charger les données, ensuite elle crée une instance de la classe Vulnerability après il suffit d’injecter à chaque fois la fonction de calcule de vulnérabilité dont on a besoin.

public void calculateVulnerability(String path, ArrayList<double[]> vulnerabilities) { DecimalFormat df = new DecimalFormat("0.000");

/*calcule des different vulnerabilité à partir du chemin du fichier*/

IFoncVulnerability vulnerabilityFunction = new InfiniteVulnerability(); Vulnerability vulnerability = new Vulnerability(loadFile(path),

Double.parseDouble(txtThreshold.getText())); vulnerability.setVulnerabilityFunction(vulnerabilityFunction); double[] values = new double[5];

try { values[0] = df.parse(df.format(vulnerability.getVulnerability())).doubleValue(); } catch (Exception e) { }

/*injection de la fonction VulnerabilitySeverity()*/

vulnerabilityFunction = new VulnerabilitySeverity();

vulnerability.setVulnerabilityFunction(vulnerabilityFunction); try { values[1] = df.parse(df.format(vulnerability.getVulnerability())).doubleValue(); } catch (Exception e) { }

/* injection de la fonction VulnerabilityGap()*/

vulnerabilityFunction = new VulnerabilityGap();

vulnerability.setVulnerabilityFunction(vulnerabilityFunction); try {

values[2] = df.parse(df.format(vulnerability.getVulnerability())).doubleValue(); } catch (Exception e) {

}

/*injection de la fonction ProportionalVulnerability()*/

vulnerabilityFunction = new ProportionalVulnerability(); vulnerability.setVulnerabilityFunction(vulnerabilityFunction);

try{

values[3] = df.parse(df.format(vulnerability.getVulnerability())).doubleValue(); } catch (Exception e) {

(44)

iii }

/*injection de la fonction Luers0()*/

vulnerabilityFunction = new Luers0();

vulnerability.setVulnerabilityFunction(vulnerabilityFunction) ; try{ values[4] = df.parse(df.format(vulnerability.getVulnerability())).doubleValue(); } catch (Exception e) { } vulnerabilities.add(values); }

Figure

Figure 2: maquette de l'interface initialization
Figure 3: maquette des interfaces results et charts
Figure 6: Diagramme d'activité
Figure 7: Diagramme de Gantt
+7

Références

Documents relatifs

1 -a – Compléter le schéma suivant avec les noms des changements d’état physique convenable ( fusion – vaporisation – solidification – liquéfaction ). 1 –b- donner le

Conserver les chutes de 15 cm pour les pose-pieds (cette dimension correspond approximativement à la largeur d’un pied). Coller-pointer les 2 triangles de chaque côté du

En comparaison avec le lancer de marteau, quel type d’action doit exercer le Soleil sur une planète pour l’empêcher de s’échapper dans l’espace?. (figures 1 et

Le soumissionnaire remet, comme pièce constitutive de son offre, un document par lequel il marque son engagement à mettre en œuvre

A control input also allows interface from CMOS to CMOS at one logic level to another logic level: Either up or down level translating is accomplished by selection of power

Certains résultats permettent de vérifier la lecture graphique. La fonction f est

Donner la mesure de l’angle marqué en justifiant

(1 pt) Quelle sont les points de similarité entre les individus de la même classe et les points de dissimilarité entre les individus de classes