juin
2013
Le sens qui est donné ici à l’Atelier de Génie Logiciel ou AGL est l’ensemble des outils qui concours à la production de projets informatiques.
Il s’agit d’un retour d’expérience personnelle par conséquent toute contribution à l’enrichissement de ce sujet est la bienvenue.
Rentrons tout de suite dans le vif du sujet, les outils nécessaires sont les suivants :
EDI Environnement de développement intégré
C’est votre éditeur de code source, son choix est très important.
Des choix intéressants seraient Eclipse et Netbeans pour les gratuits, il existe aussi des solutions payantes comme « PHP Storm » et là pas de secret, quand on paye c’est mieux.
En plus de gérer votre code source, un EDI vous rend pas mal de services par des options telles que :
- la complétion automatique d’instructions
- le formatage du code
- la détection d’erreur dans tout le projet
- la recherche de mots clés, de fonctions, de méthodes, d’appels de méthodes, de fichiers
- L’exploration hiérarchique de classes
- la gestion du contrôle de version ou VCS (version control system comme svn, git)
Intégration continue CIS (Continous Integration System)
L’intégration continue regroupe un VCS, un outil de tests unitaires tel que phpUnit ou Junit, et enfin un outil d’intégration continue tel que Jenkins.
C’est un genre de monitoring qui vous permet de vérifier la qualité du code de vos projets le plus fréquemment possible et en particulier avant une mise en production.
Aujourd’hui, dans les cycles de production modernes, un code passe par trois serveurs avant d’être exploitable, le serveur de développement où le code est construit au départ, le serveur d’intégration où se trouve Jenkins, le serveur de staging qui sert à la fois au tests fonctionnels et au déploiement c’est une sorte de serveur de production caché et enfin le serveur de production à proprement parler.
Une fois votre VCS configuré, vos tests unitaires en place, vous pouvez configurer votre CIS.
L’indicateur qui vous renseigne sur la qualité de votre code et que fourni un tel système s’appele le code coverage
Outils de modélisation
Afin de concevoir un système le plus sain possible, il convient dans la phase préliminaire de le schématiser.
Pour pouvoir l’optimiser par la suite, il faut mettre à jour ce modèle.
Que ce soit pour le code ou pour la base de données des outils existent pour cela, en voici quelques uns : Argo UML, Bouml, Visual Paradigmes, MysqlWorkbench, PowerAmc.
Si vous vous posez encore des questions sur l’intérêt d’utiliser de tels outils, un article précédent peut vous y aider.
Tracking
Dans un milieux de développement collaboratif, pour que les projets soient bien menés, il convient d’avoir un suivi efficace des taches réalisées, suspendues, interrompues.
Des solutions de tracking comme Trac, Redmine et Mantis pour les gratuites, Jira pour les payantes existent pour vous permettre de mener à bien ce travail.
Grâce à ces gestionnaires de taches, vous pouvez savoir à tout moment où vous en êtes de la réalisation de vos projets, quelles sont les taches accomplies, celles restantes à faire, vous pouvez recueillir des feedback d’utilisateurs par le biais des commentaires et faire des statistiques sur la qualité de traitement des projets.
Tests unitaires
Afin de se protéger des régressions applicatives introduites dans les cycles de production logiciel il faut mettre en place des tests unitaires.
Je ne vais pas faire un cours sur les tests unitaires car la documentation sur le sujet est très fournies et que l’internet regorge de tutoriaux.
La qualité de votre logicielle dépend directement de la qualité de vos tests unitaires.
VCS, contrôle de version
Dans un cycle de production de qualité il est impensable de travailler sans un outil de contrôle de version.
A l’origine existait RCS (pour revision contrôle system) qui permettait de gérer les différentes versions d’un logiciel tout au long de son cycle de vie.
Puis une dimension réseau fut introduite avec CVS.
Enfin aujourd’hui les deux outils qui se sont imposés sont SVN (subversion) et GIT.
Sans rentrer dans le détail, la principale différence entre ces deux systèmes réside dans le fait que GIT exploite un dépôt dit décentralisé au contraire de SVN. Vous pouvez vous référer à l’abondante documentation présente sur le net.
Le choix de l’un ou l’autre de ces deux outils dépend essentiellement de la politique de l’entreprise et du confort d’utilisation qu’y trouvent directement les différents groupes de développeurs.
Un VCS vous permettra aussi de faire un rollback en cas de bug en production
Méthodologie
Enfin, dernier point important : la méthodologie.
Malgré la présence de pléthore de méthodologies de développement logiciel telle que Crystal ou Lean, deux seulement ont retenu mon attention par leur coté complémentaire et efficace :
Scrum et Extrem Programming (XP).
Ces méthodes fournissent un cadre de travail, elles incluent des pratiques collaboratives, de programmation et de gestion de projet tel que : La responsabilité collective du code, les tests unitaires, le travail en binôme, le refactoring, la vélocité, les Burn Down Chart, le Poker planning, le daily stand up meeting.
Bien que leur efficacité soit sujet à controverse, je laisse à chacun le soin de les expérimenter et de les adapter au besoin pour n’en conserver que ce qui fonctionne réellement dans son contexte de travail.
Le mot de la fin
Voilà, j’espère que cet article vous aura donné les clés qui aideront à l’aboutissement de vos projets.