Optimisation des performances

Slides:



Advertisements
Présentations similaires
Architecture de machines Le microprocesseur
Advertisements

Eléments de Génie Logiciel
Le programme Evolution
1/22 Présentation Dechou & CO Développement dun programme de gestion dascenseurs Spécifications fonctionnelles générales.
1/22 Présentation Dechou & CO Développement dun programme de gestion dascenseurs Spécifications fonctionnelles générales.
Virtualisation dorchestration de services TER Master 1 Infomatique 4 Avril 2008 Encadrant : Philippe Collet.
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Informatique parallèle hautes performances
Architecture de machines Principes généraux
Conception d’une application de gestion de fiches études
Maîtrise des données et des métadonnées de l’ODS
Présentation d’un design de carte vidéo
| Project Ways Exia A2 Groupe Carles – Corbisier – Juzanx - Pareil.
MIAGE MASTER 1 Cours de gestion de projet
Projet .NET : Projet GEn A4RIL
Tice (logiciels) et aide personnalisée.
Algorithmique et Programmation
Réalisation Gestionnaire de Stock
Le projet en STI2D Initier le projet Délimiter les champs du possible
DeltaPROD Suivi des interventions Gestion de configuration
ALGORITHMIQUE en classe de seconde
Programme et Langage C++
SYSTEMES D’INFORMATION
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
De l’UML aux agents répartis
SIDENA BTS IRIS Session 2008 CARME Arnaud.
Systèmes Superscalaires et VLIW
Projet JSimula.
Projet de Master première année 2007 / 2008
Réalisé par Mr CALVO du Lycée Bon Secours à PERPIGNAN
Démarche Qualité Logicielle
Soutenance de stage 16 Mai au 5 Août 2011
Soutenance de stage 16 Mai au 5 Août 2011
Lycée ELKHAWARIZMI De SAFI
Smart sensors and ubiquitous applications
Fiabilité des composants électroniques
Soutenance de stage 16 Mai au 5 Août 2011
Introduction aux systèmes d’exploitation
Outil de volumétrie pour Quadrige² 20 mars 2009 – O. CatryDUT Informatique.
Quel est l’intérêt d’utiliser le diagramme de Gantt dans la démarche de projet A partir d’un exemple concret, nous allons pouvoir exploiter plusieurs parties.
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
Logiciel de modélisation Janvier /2014 M3I – S1 2 I Historique II Fonctionnalités III Démonstration IV Conclusion.
KF-RAY Raytracer parallèle Projet long d’informatique
Présentation rapide d’
Supports de formation au SQ Unifié
8INF856 Programmation sur architectures parallèles
Jeu de Librairies Virtuelles « DLL » Windows pour la réalisation de programmes informatiques.
PRESTO Programme d’étude de séries temporelles Projet 4 ème année Jean-Frédéric Berthelot Paul-Alain Bugnard Camille Capelle Sébastien Castiel.
JULIEN Phillipe & BAPTISTE Julien
Réalisé par : Mr IRZIM Hédi Mr JRAD Firas
Introduction au Génie Logiciel
ARPO: architecture des processeurs superscalaires,VLIW et optimisation André Seznec et François Bodin.
L’Audio sur PC Comparaison Numérique vs Analogique Comparaison Audio sur PC vs Hardware dédié (DSP) Rmq: beaucoup de simulitudes avec la vidéo, mais débit.
Projet de Fin d’Etudes – Optimisation SSE 1/28. 1) Présentation du Stage 2) Les instructions SSE 3) Algorithme DSP Audio Conclusion 2/28 Projet de Fin.
Visualisation d’un entrepôt de données Pré soutenance technique
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
PSPA : une plateforme de simulation en physique des accélérateurs Les journées informatique de l’IN2P3-IRFU octobre.
Simulateur de microcontrôleur Intel 80C51
Développement d’un Web Service
Projet de Maîtrise Simulation 3D d’atomes robotiques Detanger Pierre-Gilles He Xue Feng Mauny Stéphane Villers Julien.
Rampart Projet de développement Sommaire  Présentation générale  Architecture & Modélisation  Environnement de travail  Démonstration.
IMFELD Stanley. I. Contexte II. Evolution du diagramme de GANTT III. Cahier des Charges IV. Evolution du projet V. Logiciel Utilisés ou abandonnés VI.
Création et Optimisation de Modules Audio avec les instructions SSE
POIRIER Kévin (Chef de projet) HUCHEDÉ Cédric BEUTIER Kévin LEBRUN Jérémy BESNIER Richard Simulation de décisions de Jury 1.
31/05/2007Projet Master 11 Présentation ludique de la recherche opérationnelle à la fête de la science Année universitaire 2006/2007 Sylvain FIX Julien.
Comment choisir son MCU (ou autre DSP, FPGA …) ?
Ingrid Fontaine – Dimitri Sandron | BTS SIO – PPE 1ère année
1 Monopalme Projet 4 Info Présentation finale LE LAY Olivier MAHE Jocelyn FORM Nicolas HENRY Gurvan BONNIN Thomas BASSAND Guillaume Décembre 2009 MONNIER.
Ecole Informatique 2010 La Programmation des Architectures Multi-cœurs Cécile Barbier Fatih Bellachia Alain Masserot.
الهيئة العامة لحماية المستهلك أساليب الترويج وتأثيراتها على المستهلك خليفة التونكتي - مستشار المنافسة - 1.
Transcription de la présentation:

Optimisation des performances De nos outils informatiques Optimisation des performances

Sommaire I-Les bases de l’optimisation II-Les optimisations SSE Bases algorithmiques Bases programmatiques Bases architecturales Bases matérielles II-Les optimisations SSE Principe de fonctionnement des SSE Utilisation des SSE en programmation Impact des optimisations SSE III-Exemple d’utilisation multicores Présentation de la technologie multicores Tirer partie d’une technologie multicores Utilisation concrète d’un outil pour le parallélisme Les utilisateurs ne supportent plus d’attendre. L’application doit être réactive. Algorithme  solution courante de problème de performance Mais ça ne suffit pas toujours Une des solutions retenue est la « parallélisation » | Réservé au monde professionnel extrême (gros serveur) ça se démocratise Il est nécessaire de s’informer sur les particularités de ces évolutions

Bases algorithmiques Exemple basique : la multiplication I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Exemple basique : la multiplication Multiplication « standard » Multiplication russe ou égyptienne Plus rapide que la multiplication standard, la russe l’est surtout grâce à sa base 2. Multiplier par 2 = décalage à gauche, diviser  droite Complexité : O(n²)  O(n log2(n))  O(n log2(3))  … Fürer  intéressant à partir de 464 soit 3x1038 Multiplication  élément de base des algorithmes extrapoler au comportement d’un algorithme…

I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation

Bases algorithmiques Exemple basique : la multiplication I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Exemple basique : la multiplication Multiplication « standard » Multiplication russe ou égyptienne Algorithme de Karatsuba Algorithme de Fürer Extrapolation à l’algorithmique Plus rapide que la multiplication standard, la russe l’est surtout grâce à sa base 2. Multiplier par 2 = décalage à gauche, diviser  droite Complexité : O(n²)  O(n log2(n))  O(n log2(3))  … Fürer  intéressant à partir de 464 soit 3x1038 Multiplication  élément de base des algorithmes extrapoler au comportement d’un algorithme…

Bases programmatiques I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Le langage assembleur Les langages compilés Les langages émulés Plus rapide que la multiplication standard, la russe l’est surtout grâce à sa base 2. Multiplier par 2 = décalage à gauche, diviser  droite Complexité : O(n²)  O(n log2(n))  O(n log2(3))  … Fürer  intéressant à partir de 464 soit 3x1038 Multiplication  élément de base des algorithmes extrapoler au comportement d’un algorithme…

Bases architecturales I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Les instructions assembleur Instructions basiques Instructions complexes Les unités ALU et FPU Opérations basiques, elles font intervenir directement les éléments primaires du processeur Les instructions complexes se passent généralement sur plusieurs cycle d’horloge Le « micro PC » régit le tout en commandant à la micro mémoire l’ouverture et la fermeture des liaisons (les bus) afin de synchroniser les divers éléments du processeur Les unités ALU et FPU s’occupent des calculs en stockant les valeurs dans des registres, mémoires ultra rapide.

I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation

Bases matérielles La course au Mégahertz Des contraintes physiques I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation La course au Mégahertz Des contraintes physiques La solution du « pipeline » Depuis les années 90, le grand public identifie les ordinateurs par leur « fréquence », associant fréquence et performance C’est partiellement vrai Intel et AMD se sont livré une course effrénée entre 1998 et 2006, passant de 900MHz à 3,8 GHz Stoppé par une contrainte physique : ça chauffe |  courants de fuite niveau jonction P/N | passif en 80-90, radiateur de 500g à plus d’1 Kg depuis 2004

I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Le principe est simple, on empile les blocs qui permettent d’effectuer des opérations Chaque bloc effectue une opération par cycle mémoire En 5 cycles on va par exemple effectué une instruction complète une instruction finie à 4/5 une finie à 3/5 … Cependant il y a des inconvénients Si jamais le pipeline a trop « d’étages », il devient « lent ». Pentium 4 version « Prescott » = 31 étages Une instruction simple prend minimum 31 cycles pour être effectuée

Bases matérielles La course au Mégahertz Des contraintes physiques I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation La course au Mégahertz Des contraintes physiques La solution du « pipeline » Le « superscalaire »

I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Plutôt que d’empiler les blocs, pourquoi ne pas les mettre côtes-à-côtes ? Il reste un problème Comment on organise les tâches ? A-t-on toujours besoins de « n » opérations en même temps ?

Bases matérielles La course au Mégahertz Des contraintes physiques I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation La course au Mégahertz Des contraintes physiques La solution du « pipeline » Le « superscalaire » Les multi-cœurs ou multicores L’ajout d’instructions SIMD Nous reviendrons plus en détails sur multicores en 3ème partie Architecture « CISC » en rajoutant des opérations permettant un gain de temps Nous allons aborder ça plus en détails dans la prochaine partie SIMD : Single Instruction on Multiples Data

Fonctionnement des SSE I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Apparu en 1999 sur Pentium III 70 nouvelles instructions assembleur SSE : Streaming SIMD Extensions  accélérations spécifiques

I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Principe de fonctionnement des SIMD On effectue la même opération sur plusieurs données et on obtient plusieurs résultats en un seul cycle

Fonctionnement des SSE I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Apparu en 1999 sur Pentium III 70 nouvelles instructions assembleur SSE2 ajoute support « 64 bits » SSE3 orienté « traitement du signal » Ces standards on rapidement évolués, supporté plus ou moins complètement par AMD ou Intel, tour à tour

I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Exemple de l’évolution du SSE chez Intel, principal « militant »

Programmation des SSE Ecriture possible en assembleur I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Ecriture possible en assembleur Le codage assembleur permet de tirer partie directement des opérations proposées par les SSE Il y a cependant un inconvénient : Tout les processeurs ont pas forcement les SSE équivalents Faut adapter le code à l’architecture Donc réécrire potentiellement le code plusieurs fois, une fois pour chaque architecture Beaucoup trop long !

I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Ici on voit le principe d’utilisation d’une opération des SSE 5 instructions sont remplacé par une seule instruction On a potentiellement gagné 4 cycles processeur

Programmation des SSE Ecriture possible en assembleur I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Ecriture possible en assembleur Librairies de haut niveau Compilateurs optimisés Intel et AMD proposent des librairies pour utiliser directement en C par exemple, les instructions SSE On peut ainsi bénéficier des apports de ces fonctions sans coder en assembleur. Les librairies transforment les fonctions C en équivalent assembleur tirant partie des SSE Les compilateurs, standards (gcc) ou spécialisés (Intel) proposent des options d’optimisation (-IPO par exemple) pour tirer partie des SSE à la compilation

Impact des SSE Comparaison Temps de développement du code vs. I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Comparaison Temps de développement du code vs. Temps d’exécution

Impact des SSE Langage C simple Optimisé « -O3 » Langage C correct I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Langage C simple 30s d’exécution, 2min de développement Optimisé « -O3 » 19s, et toujours 2min Langage C correct 22s, 2min 14s une fois optimisé «-O3 »

Impact des SSE Langage C optimisé Assembleur simple I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Langage C optimisé 17s sans optimisation compilateur, 11s avec Assembleur simple 9,4s d’exécution, 30min de développement Assembleur avec SSE 6,7s et 45min Assembleur optimal 3,6s et largement plus d’une heure de dév. Ici on passe par des flottants simple au lieu de double Chaque optimisation a un coût de développement élevé Le code assembleur coûte très cher en temps de développement Sans compter les nombreux bugs dans un code très compliqué Sans compter le besoin d’optimisation pour chaque plateforme

I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Exécution d’un calcul de parcimonie sur des acides aminés On voit ici les gains important qu’apportent les optimisations Il conviendra de doser correctement code assembleur et code de haut niveau pour permettre de garder un haut niveau de compétitivité Oublier l’assembleur dans les projets ne nécessitant pas d’optimisations

Architectures multicores I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Echec de la montée en fréquence Bataille marketing entre Intel et AMD Technologie issue des serveurs « Plusieurs processeurs en un » Avril 2005, Intel et AMD au coude à coude pour sortir un dual core Intel vole la vedette à AMD en sortant à la va-vite un double Pentium 4  Pentium D pour Dual Core AMD a une meilleure architecture, il existe des liens au sein de la puce pour permettre les communications entre cores On réplique tout un ensemble d’unités de calcul, des processeurs au sens ou on l’entendait autrefois, et on les lies ensembles Communication par bus externe  lent Communication par bus interne  rapide mais complexe et donc couteux

I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Ici nous avons un exemple de Core I7 d’Intel On peut voir les 4 cores pouvant fonctionner de façon autonome La mémoire partagée leur permet de travailler sur des données communes

I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Ici on voit plus en détails les différentes parties Chaque bloc de L3 avec les liens Les liens externes de communication Les contrôleurs de mémoire

Tirer partie du multicores I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Difficultés à utiliser plusieurs cores Pas de possibilité de compilation « -O3 » Il faut alimenter les cores Une tâche définie pour chaque core Exemple des interfaces graphiques Unités indépendantes, différentes tâches sur chaque core Les résultats d’un core ne doivent pas être les données d’un autre core, pour pas avoir d’attente Un core s’occupe des interactions graphiques avec l’utilisateur, un autre core s’occupe des opérations liés aux interactions

Tirer partie du multicores I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Impossibilité de parallélisation Calculs lourds Calculs matriciels Raytracing Simulations Analyse de données Dans certains cas, il est tout bonnement impossible de paralléliser un calcul car ce dernier est totalement séquentiel Il faut alors se contenter de l’utilisation d’un seul core et les autres cores sont en attente Certains cas permettent cependant de paralléliser le calcul Les gros calculs matriciels permettent de subdiviser les calculs complexes en plusieurs calculs plus simple, très bon exemple d’utilisation de plusieurs cores Raytracing permet de découper l’image finale en de multiples zones, chaque zone est affectée à un core Les simulations de phénomènes physiques peuvent identifier plusieurs acteurs. Chaque acteurs est confié à un core et un dernier compile le phénomène Les analyse de données lourdes telles que l’analyse du code ADN ou autre projets du type Seti@Home etc.

Intel Parallel Studio Suite logicielle composée de : Parallel Advisor I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Suite logicielle composée de : Parallel Advisor Parallel Composer Parallel Inspector Parallel Amplifier Advisor : Permet d’étudier le code source et de détecter les endroits ou de lourds calculs peuvent être parallélisés Composer : Ensemble étendu de bibliothèques qui permettent de simplifier l’utilisation de plusieurs cores sur des calculs particulier (bibliothèques multi-threadées) Inspector : détection des accès concurrents à la mémoire, problème d’écriture en cascade Amplifier : superviseur du code, trouve les endroits où on passe trop de temps, attente passive ou active

Intel Parallel Studio Threading Bulding Blocks I-Bases optimisation Algorithmiques Programmatiques Architecturales Matérielles II-Optimisations SSE Fct. des SSE Programmation Impact III-Exemple concret Les multicores En tirer partie Utilisation Threading Bulding Blocks Simplifient l’utilisation des cores en C Débogage pas à pas sur plusieurs threads Détection des verrous infinis Permet la synchronisation des différents threads (processus) et aide à l’échange de données entre ceux-ci Composer permet après une compilation particulière, et longue, d’exécuter le programme pas à pas, malgré les divers processus Ceci est habituellement impossible Concurrence d’accès à une ressource mémoire, chaque processus bloque l’autre, A veut x et détient y, B veut y mais détient x La vérifications des taux de « remplissage » des cores permet de savoir si on a optimisé le code

Conclusion Nécessité de connaître Choisir entre Matériel Logiciel Lien entre les deux Choisir entre Temps de développement Efficacité d’une solution logicielle Il faut connaître son matériel pour savoir comment l’exploiter Il faut connaître les logiciels pour gagner du temps en développement Il faut connaître les deux et leurs liens pour optimiser le fonctionnement d’une application Assembleur efficace mais bien trop long Si réellement besoin, utiliser avec parcimonie Sinon utiliser les bibliothèques spécialisées et les outils qui vont avec tel Intel Parallel Studio

Conclusion S’adapter aux multicores Les logiciels s’alourdissent inutilement Une autre alternative ? Il va falloir un réel effort pour s’adapter à l’architecture multicores Il faut un œil nouveau sur les méthodes de conception logicielles D’un autre côté l’utilisation parfois abusive d’outils de développement alourdi le code Les application connaissent de multiples évolutions sans réelle remise en cause du code de base Le logiciel perd plus en performance qu’il ne gagne en fonctionnalités On voit l’émergence de nouveaux outils pour développer sur carte graphique Elles sont très puissantes 70GFlops sur I7, 1.2 sur HD4870 et 2.72 sur HD5870 ! 731 millions de transistors contre 1.4 milliard sur 4870 et 2.1 milliards sur 5870 ! DirectX11  unification des possibilité de programmation OpenCL précurseur libre, mais pas encore pris en compte par tous

Système de gestion de service aérien HELIOPS

Sommaire I- La base militaire EALAT II- Présentation du projet III-Mise en place du projet IV-Etude du projet V-Réalisation du projet Plateforme de développement Développement de l’application Des tests continus Mise en production et futurs développements Au cours de notre dernière mission en entreprise, nous avons pris en charge un nouveau projet, je vais vous le présenter ici Je vais avoir pour but de vous le présenter, ainsi que les enseignements que j’en ai tiré On commencera par découvrir l’entreprise Puis nous présenterons le projet pour mieux comprendre le contexte de l’application Nous enchaînerons par la mise en place de ce dernier Puis par son étude Pour finir par parler de sa réalisation en 4 étapes, de l’installation de la plateforme de développement à la mise en production

EALAT Ecole d’Aviation Légère de l’Armée de Terre I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Ecole d’Aviation Légère de l’Armée de Terre Base militaire qui a pour but la formation initiale des pilotes d’hélicoptères

I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Vue aérienne de la base Il y a différente services au sein de l’EALAT DFI : Formation initiale des pilotes DAF : gestion finances BML : maintenance matérielle classique etc. Et le BMSI : le service ou je travaille qui est composé de 11 personnes

I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Ici nous avons une vue aérienne du bâtiment principal, une ancienne abbaye Le logiciel dont nous avons eu la charge met en jeu 5 services La DFI afin de diriger les opérations via la DDV (Direction Des Vols) et les OPS (Opérations) Regroupe également les différentes brigades avec moniteurs et élèves BGH et Helidax : s’occupent de fournir les hélicoptères nécessaires à la formation Piste : gère les déplacements au sol et est lié au service Essence pour la réapro en Kero La tour de contrôle qui dirige la phase vol depuis le levé de patins jusqu’à l’atterrissage Le Chef De Corps appose sa signature pour des questions de légalité Le BMSI qui s’occupe du développement et effectue le suivit et la maintenance

Le projet Succéder à plusieurs essais « ratés » 1- version papier I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Succéder à plusieurs essais « ratés » 1- version papier 2- version Excel basique 3- DIC 4- Excel avec macros En 20 ans, le système de gestion des heures de vol à connu plusieurs système Premier le papier Deuxième documents simple sur support informatique (Excel et peu de macros) Troisième DIC (Diffusion des Informations de Contrôle) Issu de la base aérienne de Cognac rejeté après 2 mois de tests et a coûté cher (machines spécifiques etc.) Quatrième Excel avec pas mal de macros

I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production On voit ici le système actuel qui va être abandonné : une feuille Excel On peut écrire ce que l’on veut dessus Problème : ça ne sert qu’à être affiché et on ne peut pas travailler à plusieurs dessus. Avantage, on peut faire presque n’importe quoi avec Avec quelques macros on peut en tirer des infos Notre projet

Mise en place Capitaine Génovèse, chef MOA Mr Nerrin et moi-même, MOE I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Capitaine Génovèse, chef MOA Mr Nerrin et moi-même, MOE Sergent Etourneaux, tests et validations Planning projet Nom du projet HELIOPS Première version du planning de projet réalisé en début de projet pour établir des jalons

Etude du projet Visites des services impliqués I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Visites des services impliqués Réunions pour cahier des charges Fonctionnement du service aérien Réunion pour comprendre le contexte - Méca placent les infos machines dispo - Météo donne info sur journée lendemain - Chefs de brigades donnent desiderata pour lendemain - DDV ou OPS place ces vols sur Arlequin - Chefs brigade vont saisir les Ordres De Vol - Chef de corps signe ODV - Méca désigne vigies - Lendemain « consomme » cet Arlequin - Tour de Contrôle fait décoller et atterrir les vols - Les Chefs de Bords remplissent les formulaires de retour de vol

Etude du projet Méthodologie UML Réalisation base de données test I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Méthodologie UML Diagramme de flux Diagramme des cas d’utilisation Diagramme de séquence Réalisation base de données test Maquettage

I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Diagramme de flux d’HELIOPS

I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Cas d’utilisations

I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Séquence

I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Maquette

Mise en place Serveur 2008 Visual Studio 2008 SP1 Silverlight Tools I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Serveur 2008 Visual Studio 2008 SP1 Silverlight Tools Microsoft SQL Serveur 2008 SP1 Subversion Windows Sharepoint Services Je vais vous parler un peu de la plateforme de développement Les outils que nous avons utilisé

Développement Etude des possibilités techniques I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Etude des possibilités techniques Sérialisation de la couche métier : Hibernate, un poil lourd en c# Linq, découverte et très probant Silverlight : problème d’accès à la couche métier Développement d’un service WCF équivalent Web Service de Microsoft Communications asynchrones avec le client Silverlight Distant

I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production L’architecture du projet se dessine enfin : Une base de données Un serveur d’application Des clients disséminés au sein de l’EALAT

Développement Etude des possibilités techniques I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Etude des possibilités techniques Résolution de problèmes techniques Accès asynchrone  problème de performances et de temps d’attente Résolu par l’envoie d’information par paquet pour réaliser un « cache » local

I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Principe d’attente du client sur la version de développement

Tests continus Validation du développement Ajustements Débogage I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Validation du développement Ajustements Débogage Dès la première version disposant de suffisamment de fonctionnalité pour être testé, nous avons fait validé l’application Cela permet de réaliser des ajustements, les utilisateurs n’ayant parfois pas réussi à exprimer correctement leurs besoins Cela permet également de réaliser le débogage de l’application Gros changement lors de l’application qui n’a pris que 3 jours, pour réajuster les fonctionnalités

Mise en production et futur I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Vidéo des tests finaux

Mise en production et futur I-Base EALAT II-Le projet III-Mise en place IV-Etude V-Réalisation Plateforme Développement Tests continus Production Mise en place progressive Saisie avec les deux systèmes Récupération des « retours » utilisateurs

Conclusion Mission majeure Projet de grande envergure Satisfaire les utilisateurs Maîtrise de technologies innovantes Maîtrise du planning serré Implication forte de la MOA Tests continus Solide expérience en gestion de projet Mission majeure confiée par le Capitaine Sikora et par la DFI, partie DDV/OPS Projet de longue durée, 6 mois, prévu pour au mois 10 à 12 mois réel à 2 Satisfaire un panel très large d’utilisateurs, du chef de corps aux pilotes en passant par les OPS/DDV, par la tour de contrôle, les mécas, les pistes… Maîtriser Silverlight, WCF, tout ce qui est autour (Imprimer absent de Silverlight) La MOA nous a suivit tout au long du projet, très présente elle a réellement été le plus de ce projet Les tests continus ont aussi été un plus

Récompense …?