Analyse et Conception » History » Version 3

Charles Neau, 03/28/2013 01:32 AM

1 1 Charles Neau
h1. Analyse et Conception
2 1 Charles Neau
3 1 Charles Neau
Quand nous avons fait un état des lieux de l'existant en début de projet, nous nous sommes rendu compte qu'il n'y avait pas d'application pour afficher en temps réel les informations de vol du drone.
4 1 Charles Neau
5 1 Charles Neau
Ainsi, nous nous sommes réunis pour définir les fonctionnalités que l’IHM déporté devait comporter. Nous avons utilisé le langage de modélisation UML, car celui-ci nous a été enseigné lors de nos deux années dans l'enseignement supérieur.
6 1 Charles Neau
7 1 Charles Neau
UML est utilisé pour spécifier, visualiser, modifier et construire les documents nécessaires au bon développement d'un logiciel orienté objet. UML offre un standard de modélisation, pour représenter l'architecture logicielle. Ainsi, ce langage nous a paru une bonne solution pour bien démarrer le projet et pour que toute l'équipe puisse se comprendre. 
8 1 Charles Neau
9 1 Charles Neau
Nous avons établi un diagramme d'activité pour savoir comment implémenter les fonctionnalités. Nous avons choisi de ce type de diagrammes d’activités, car ils permettent de modéliser un comportement tout en mettant l’accent sur les traitements. Ils sont donc particulièrement adaptés à la modélisation du cheminement de flots de contrôle (séquence, choix, itération, parallélisme) et de flots de données entre activités.
10 1 Charles Neau
11 1 Charles Neau
Ils permettent ainsi de représenter graphiquement le comportement d’une méthode ou le déroulement d’un cas d’utilisation.
12 1 Charles Neau
13 1 Charles Neau
Voici le diagramme d'activité de la réception de trame. La réception est la base de cette IHM, car c'est avec ceci que l'interface graphique reçoit les informations du drone.
14 1 Charles Neau
15 3 Charles Neau
!UML1.png!
16 3 Charles Neau
17 1 Charles Neau
Le reste de l'application est basé sur de la programmation événementielle pour réagir aux demandes de l'utilisateur (boutons appuyés...).
18 3 Charles Neau
19 1 Charles Neau
Nous avons mis en place un protocole réseau très simple de communication entre le simulateur et l'interface homme-machine. Après cette mise en commun, nous avons pu réaliser le code coté IHM du client UDP avec l'implémentation d'un parseur. Nous nous sommes vite rendu compte qu'il fallait découper l'application en plusieurs sous-tâches pour éviter de commencer certaines fonctionnalités et de se laisser déborder par le temps. Ainsi nous avons dressé un diagramme de classe pour permettre de découper en différentes classes selon ce qu'elles devaient faire pour une meilleure implémentation.
20 1 Charles Neau
21 1 Charles Neau
Il y a plusieurs zones qui comportent une ou plusieurs classes chacune qui ont été marquées. Ces zones ont permis une meilleure implémentation pour bien architecturer notre application.
22 1 Charles Neau
23 3 Charles Neau
!UML2.png!
24 3 Charles Neau
25 1 Charles Neau
Cette zone permet de recevoir une trame, de la parser et d'appeler les méthodes pour chaque type de trame reçue.
26 1 Charles Neau
27 1 Charles Neau
h2. Horizon Artificiel
28 1 Charles Neau
29 3 Charles Neau
!UML3.png!
30 3 Charles Neau
31 1 Charles Neau
Cette zone s'occupe de dessiner l'assiette (altimètre, curseur, fond, angulaire …) mais aussi permet de recalculer la position de chaque élément lorsque l'assiette reçoit l'ordre de monter l'altimètre, ou d’incliner le fond, etc.
32 1 Charles Neau
C'est cette zone qui rafraichit l'assiette 33 fois par seconde.
33 1 Charles Neau
34 1 Charles Neau
h2. Graphique 	
35 1 Charles Neau
36 3 Charles Neau
!UML4.png!
37 3 Charles Neau
38 1 Charles Neau
Cette zone s'occupe de sauvegarder toutes les informations de vol du drone. Lorsque l'utilisateur clique sur un bouton de l'IHM, la Vue de la classe statistique est instanciée et permet de voir les 10 dernières informations de vol du drone (altitude, rotation X Y Z) mais aussi de tracer la courbe de l'altitude.
39 1 Charles Neau
40 2 Charles Neau
h2. GPS
41 1 Charles Neau
42 3 Charles Neau
!UML5.png!
43 3 Charles Neau
44 1 Charles Neau
Cette unique classe permet soit d'interpoler des données en mètres en coordonnées GPS, soit d'utiliser directement des coordonnées GPS et ainsi afficher la carte dans l'IHM.
45 1 Charles Neau
46 1 Charles Neau
La classe principale de l'application se nomme IPV, elle est le centre de l'application, elle coordonne toutes les flux, mais aussi les interactions avec l'utilisateur.
47 1 Charles Neau
48 3 Charles Neau
!UML6.png!
49 3 Charles Neau
50 1 Charles Neau
Comme nous pouvons voir sur ce diagramme de classe, cette classe contient de nombreuses relations avec les différentes zones de l'application que l'on a précédemment définies.
51 1 Charles Neau
52 1 Charles Neau
Nous pouvons voir, qu'il possède un client UDP pour la communication réseau qui lui-même possède un IParseur.
53 1 Charles Neau
54 1 Charles Neau
IPV contient aussi une instance du canevas de l'assiette pour pouvoir dessiner dessus, elle possède aussi une instance de statistique pour dessiner la courbe de l'altitude et remplir les différents tableaux de vol du drone, une instance de la FORM pour rafraichir la location du drone avec une vue satellite de son environnement.
55 1 Charles Neau
56 1 Charles Neau
Ainsi toutes ces interactions ont permis d'avoir une classe qui va jouer le rôle du patron pour dire quelles actions doivent être exécutées lorsque celle-ci reçoit un message. Ainsi, imaginons que le parseur ait reçu une trame d'affichage GPS, il va envoyer un signal à IPV qui va le rediriger vers l'instance de FORM qui va savoir quoi en faire. Cette classe s'occupe donc de savoir quelles actions lancer lorsqu'une trame est émise, mais elle sert aussi d'interaction avec l'utilisateur. Ainsi lorsque ce dernier va cliquer sur un bouton par exemple le changement de couleur de l'assiette, c'est cette méthode qui va être appelée openColorWindow1() pour la couleur du ciel ou openColorWindow2() pour la terre, etc. Elle répond aux demandes de l'utilisateur.
57 1 Charles Neau
58 1 Charles Neau
Voici une capture d'écran de l'IHM dans sa version finale :
59 3 Charles Neau
60 3 Charles Neau
!screen_IHM.png!