methodologies

Les projets logiciels de Geomatys suivent une approche méthodologique flexible inspirée de bonnes pratiques dans le domaine de projets de logiciels libres.

Pratiques de développement structurées

Notre méthode de développement repose sur des pratiques de programmation fortement structurées et sur des outils qui nous assurent la stabilité du code indépendemment de l'évolution du projet.

Contrôle de version :  l'ensemble de notre code logiciel est stocké, partagé et mis à jour à travers un système de contrôle de versions distribué, Mercurial. Ce DVCS permet en outre une simplification optimale de l'utilisation et l'adaptation d'un projet libre sans pour autant interférer sur les dynamiques de développements initiales.

Outils de compilation : nos projets intègrent tous l'outil de compilation Maven qui nous assure que chaque projet peut être construit et testé en une seule commande. Maven formalise notre traitement des dépendances, les procédures de tests unitaires et fonctionnels, jusqu'aux déploiements des réalisations. Maven peut également générer de la documentation pour programmeur (Javadoc) et les sites web des projets concernés.

Intégration continue : Nous utilisons le moteur de compilation Hudson/Jenkins pour lancer de façon automatisée, des compilations , des tests unitaires, fonctionnels et également des déploiements de sites, de documentation en ligne et d'applications. Ces tâches sont effectuées de façon quotidienne, mais sont aussi pour partie, mises en oeuvre dans le cadre d'un processus d'intégration continue.

Tests fonctionnels : nos projets sont soumis à des tests réguliers pour s'assurer que notre code reste fonctionnel et conserve une qualité et une conformité optimales. Des tests unitaires basiques sont lancés avant chaque envoi sur le système de version de contrôles. Hudson lance également une suite de tests extensive chaque jour incluant des tests d'intégration continue et des tests de conformité aux règles d'interopérabilité comme la suite de test OGC CITE. Hudson lance également des outils de revue de code automatisés qui publient des mesures de qualité de code et des mesures de couverture de tests.

Suivi d'anomalies : chaque projet utilise le système web de suivi de problèmes JIRA qui nous permet de définir les problèmes quand nous les découvrons, de suivre l'avancée au travers de résolutions et d'historiser les modifications.

Gestion de projet agile

Notre approche flexible de gestion de projet intègre les pratiques qui ont fait des logiciels Open Source un tel succès dans le but d'avoir une approche orientée pour des projets commerciaux. Notre approche a été formalisée récemment par des gestions de projets académiques comme les techniques 'agile', qui regroupent des pratiques comme la programmation par binôme (pair programming), l'Extrem Programming (XP), Scrum et "Lean management".


Gestion de projets Scrum-XP

Notre approche agile se concentre sur plusieurs aspects :

Travail collaboratif : nous travaillons en équipes réduites, communiquant largement dans des réunions face à face, par courrier électronique, sur le channel de conversations IRC Freenode, et sur des sites web Wiki éditables. Nous sommes rompus au fonctionnement collaboratif puisque notre travail sur du logiciel libre implique régulièrement des discussions avec des collaborateurs à travers le monde.

Gestion en tâches : nous organisons les phases de nos projets en utilisant des tâches remplies sur le système de suivi d'anomalies JIRA qui fournit un outil formel et graphique pour suivre les plans et progressions de chaque projet.

Livraison pour revue : une philosophie nodale dans les communautés libres consiste à "faire des livraisons tôt et souvent". Suivant ce principe, nos projets subissent des cycles répétés de conception, création, livraison et revue de façon à rendre mesurables et incrémentables les progrès sur le produit délivré au final. Ces livraisons sont régulièrement présentées aux utilisateurs et clients pour des revues et commentaires de manière à nous permettre de délivrer le meilleur produit possible au final.