Stage portabilité HSLV2
Stage portabilité HSLV2 - Jonathan Courtois Plan Présentation de SII SII en France SII à Rennes Mon environnement Présentation du stage Objectifs Problématiques de portabilité Hot Spot Locator V2 Déroulement du stage Documentation Choix de développement Aperçu du Framework Qt Intégration continue Développement Retour d’expérience Design architectural Interface graphique Avantage de Qt Déploiement Qt Creator Conclusion Questions Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
SII en France SII à Rennes Mon environnement Présentation de SII SII en France SII à Rennes Mon environnement
Stage portabilité HSLV2 - Jonathan Courtois SII en France Présentation de SII Société de conseil et d’ingénierie informatique Forte indépendance de chaque agence Création : 1 avril 1979 Capital : 40 million d’euros Chiffre d’affaires : 175 200 000€ (+18%) au 31 mars 2009 Répartition : 10 agences et 10 bureaux en France Effectifs : 2200 employés Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois SII en France L’engagement qualité Depuis 1991, SII a mis en place un système d’assurance qualité. Dans les 5 premières sociétés de services françaises à être certifiée ISO 9001 La 2ème à faire certifier son activité d’assistance technique, dès 1992. La gestion des processus est basée sur le modèle CMMi (5 niveaux) Aix en Provence, Nantes, Rennes, Toulouse : niveau 3 Sophia Antipolis : niveau 2 Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois SII à Rennes L’agence de Rennes Création : 1997 Effectifs 2009 : 450 collaborateurs Clients : France Télécom, Thalès, Thomson, Alcatel, Ouest-France, … Les pôles de compétences L’ingénierie industrielle et l’électronique L’ingénierie logicielle et système d’information Les télécoms Les réseaux Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois SII à Rennes Les différentes prestations L’assistance technique Mode d’intervention souple et de mise en service rapide (chez le client). Le forfait Mode d’intervention généralement externalisé (dans les locaux de SII). La répartition Types de prestations Secteurs d’activités Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Mon environnement Le plateau forfait Personnes dédiées à l’encadrement des projets 1 Directeur technique forfait, 4 Directeurs de projets, 10 Chefs de projets, 2 Administrateurs systèmes et réseaux Moyens Plateformes : 820 M² Dédiés à Rennes Locaux à Brest, Lannion, Caen et Le Mans Locaux : Sécurisés Suivi des faits techniques, bugs : Bug Tracker, Mantis, Bugzilla, … Gestionnaires de Configuration : CVS, Sourcesafe, SubVersion, … Licences : Visual Studio, Rational Rose, Caliber RM, CVI, ... Systèmes : Windows, Linux, Solaris, Mac Qualité ISO 9001 v2000 CMMi niveau 3 Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Mon environnement Le pôle CIM Client principal : France Télécom Applications autour de la connexion Internet Home Software Suite (particuliers) Business Everywhere Software Suite (entreprises) Effectifs: 29 personnes en 2 équipes Front office (7) Travaillent directement chez le client Une partie développement d’anticipation Back office (22) Travaillent à l’agence SII Rennes Point de vue production des applications Equipes de 4-5 personnes Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Objectifs Problématiques de portabilité Hot Spot Locator V2 Présentation du stage Objectifs Problématiques de portabilité Hot Spot Locator V2
Stage portabilité HSLV2 - Jonathan Courtois Objectifs Missions Analyse sur les problématiques de portabilité avec réalisation d'un document Migration d’un projet existant (HSLV2) Framework MFC (Windows) -> Application portable Mise à jour des documents existants Mise en place d’un serveur pour la plateforme d'intégration continue Hudson Réalisation de tests sur Windows et Mac OS X Déploiement sur les différents systèmes d’exploitation Etude de portabilité incluant les difficultés rencontrés et un retour d’expérience Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Problématiques de portabilité Langages et interfaces graphiques portables Environnements de développement Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Problématiques de portabilité Outils de compilation Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Problématiques de portabilité Réaliser le plus de code en commun possible -> Sinon OSAL Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Problématiques de portabilité Problématique de débogage Problématique de déploiement Variables d’environnements Dépendance de librairies Dynamique ou statique Installeurs Certaines règles de codage à respecter (cf. Analyse portabilité) Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Hot Spot Locator V2 Recherche d’une adresse et liste des hot spots Orange à proximité Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Hot Spot Locator V2 Affichage des hots spots Orange sur une carte Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Choix de développement Déroulement du stage Documentation Choix de développement Aperçu du Framework Qt Intégration continue Développement
Stage portabilité HSLV2 - Jonathan Courtois Documentation 2 documents à réaliser Analyse de portabilité Etude sur le développement multiplateforme Langages, GUI, IDE, outils de compilation Développement d’une application multiplateforme Problèmes lors du portage d’une application non portable Guide de règles de codage C++ (portable) Rédaction d’une étude complète Synthèse des problèmes rencontrés au cours du développement du plugin de HSLV2 Réflexion sur les problématiques de portabilités Retour d’expérience sur un nouvel IDE: Qt Creator Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Choix de développement Langage et outils utilisés Langage : C++ Framework et interface graphique : Qt Environnement de développement : Qt Creator Outil de compilation : Qmake Compilateurs Windows: Visual C++ 2005 Mac OS X: Gcc Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Aperçu du Framework Qt Présentation License LGPL 1ère version : 1995 Librairie : C++ Bindings : Java, Python, Ruby, Ada, C#, Pascal, Perl, PHP, Haskell, Lua, Dao, Tcl, Common Lisp, D IDE : Qt Creator - Plugins: Visual Studio, Eclipse Plateformes : Développement rapide Qt 4.6 Nouveau support : Symbian Support : Windows 7, Mac OS X 10.6 Support étendu pour UNIX : Solaris 10, HP-UX and AIX 6 Amélioration des performances et ajout de fonctionnalités Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Intégration continue Principe Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Intégration continue Hudson Serveur dédié à la compilation Un job par sous projets Un état des compilations et une récupération facile des binaires Le résultat des tests unitaires automatisés Beaucoup d’autres outils non étudiés Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Développement 4 parties dans le projet Module de gestion de requêtes Envoi de requêtes Téléchargement de fichiers Partie géocodage Géo codage d’une adresse postale Calcul de distance entre 2 adresses Calcul d’une zone de proximité autour d’une adresse Partie cartographie Affichage d’une carte Gestion des marqueurs Gestion des déplacements et du zoom Partie sauvegarde des cartes Sauvegarde en local de plusieurs images Affichage des cartes sauvegardées Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Retour d’expériences Design architectural Interface graphique Avantage de Qt Déploiement Qt Creator
Stage portabilité HSLV2 - Jonathan Courtois Design architectural Architecture en couches Respect des couches Pas de difficultés pour HSLV2 Interfaces indépendantes d’un framework (Qt) Design pattern factory OSAL Le framework Qt fait office de couche d’abstraction Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Interface graphique Difficultés d’une interface commune Différences d’affichage Textes (Polices, tailles, …) Positions Philosophie des utilisateurs Mac OS différente de celle de Windows Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Interface graphique Couche présentation Idéalement une interface graphique pour chaque OS Permet de respecter la philosophie des différentes plateformes Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Avantage de Qt Développement rapide grâce aux classes de Qt Module d’envoi de requêtes : QNetwork Lecture des fichiers de configuration : QSettings Gestion de threads : QThread Chargement des librairies dynamiques : QLibrary Mini navigateur web : QWebKit Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Déploiement Windows Librairies dynamiques Installeur NSIS Mac OS X Utilisation d’outils Mac OS otool install_name_tool Installation par Drag & Drop Autres installeurs Iceberg, … Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Stage portabilité HSLV2 - Jonathan Courtois Qt Creator Avantages Multi-OS Fichiers de projets Combinaison des fichiers projets et Cmake Utilisation possible de macros spécifiques Designer intégré Debugger pour GCC et Visual Gestion de configurations (SVN, Git, …) Interface très intuitive Inconvénients Encore jeune (sortie en mars 2009) Fonctionnalités restreintes Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Conclusion
Stage portabilité HSLV2 - Jonathan Courtois Conclusion Technique Pensée une application multi-OS en amont Architecture en couche primordiale (cas de plusieurs IHM) Risques limités grâce à l’utilisation de Qt, Qmake et plusieurs compilateurs (gcc et visual compiler) Stage Compétences scolaires : C++, UML, Qt Phases de développement rapide Compétences acquises : Intégration continue, tests unitaires, développement sous Mac OS X, problématiques de portabilité Intégration au sein d’une grande équipe dans une société de service Contact avec différents acteurs : architectes, développeurs, intégrateurs, … Lundi 14 septembre 2009 Stage portabilité HSLV2 - Jonathan Courtois
Questions