On désigne par atelier de génie logiciel (AGL) un ensemble de programmes informatiques permettant eux-mêmes de produire des programmes. Un atelier de Génie Logiciel (AGL) est un ensemble cohérent d’outils qui communique entre eux de manière à apporter une valeur ajoutée. L’ingénierie est au centre de la philosophie de ce système. Un AGL est composé d'Outil de Génie Logiciel (OGL). Un outil de génie logiciel est un logiciel qui remplit une tache spécifique. La philosophie d'un AGL est d'interconnecter ces logiciels pour qu'il forme un ensemble cohérent, s'enrichissant mutuellement. L' AGL contribue à améliorer la productivité et de la qualité du logiciel. Cet ensemble doit apporter une valeur ajoutée en automatisant certaines taches ou en générant le plus de codes sources possible. Un OGL vient assister l'humain dans une activité de réalisation d'un projet. les taches du développement d'un projet PHP chez Nalis sont par exemple :
  • structuration des données,
  • documentations,
  • gestion des versions successives ou des variantes d'un même programme,
  • conventions de nommage des données et des sous-ensembles de programmes,
  • aide aux tests et suivi des corrections,
  • bibliothèques de sous-ensembles pouvant être réutilisées dans plusieurs projets,
D'autres projets requièrent d'autres taches (et OGL) (par exemple une compilation)

Nalis s’est constitué un atelier de génie logiciel innovant assurant la traçabilité, la maintenabilité et l’efficacité des applications produites. Nalis utilise des outils de conception, de développement et de test. Nalis utilise 2 outils de conceptions :
  • un outil de conception UML : l'intérêt d'un tel outil de génie logiciel est double, il permet à l'ingénieur de construire visuellement à l'aide de diagramme la structure logique de l'application. Cet outil est ensuite capable de produire le code source du squelette de l'application.
  • Un outil de conception de données : de même, l'application de la méthode Merise de description des données aboutit à la production du code structurant la base de données à travers la création de diagrammes.

Le coeur de l'AGL est l'outil de réalisation : Eclipse.
Eclipse est un environnement de développement intégré, Eclipse est un projet Open source initié par IBM. Lors de l'élaboration de nos projets, nous récupérons dans Eclipse le squelette de l'application généré par l'outil de conception. Eclipse s'interface avec notre CVS (concurent version System) cet outil permet un travail collaboratif. Le CVS est un référentiel commun sur lequel chacun vient publier son travail. L'outil détecte les modifications déjà réalisées et avertit le développeur en cas de risque d'écrasement du travail d'un autre collaborateur.

Les éléments descriptifs saisie dans les outils de conception et les commentaires ajoutés par les développeurs dans Eclipse sont exploités par l'outil de documentation pour générer un dossier décrivant la structure et le fonctionnement de l'application développée.

Méthode : Nalis applique un modèle de cycle en V avec Prototypage. Le processus de développement est découpé en 6 phases réparties en 3 Cycles. Chaque cycle donne lieu à la réalisation d’un produit (maquette, prototype, produit final). Ce processus de développement se déroule par prototypages successifs et évolutifs. Parmis les autres éléments structurant on notera que Nalis
  • met en oeuvre une norme de codage stricte.
  • Réalise des développements orientés objet
  • respecte une urbanisation dans les solutions développées
Cette démarche n'aurait pas d'intérêt si son impact n'était pas mesurable sur les projets produit grâce à elle. Et en effet, la qualité d'un logiciel dépend fortement de la qualité de la démarche appliquée pour le réaliser. Il convient d'abord de quantifier la qualité de cette démarche. Dans la mouvence du CMMI (Capability Maturity Model + Integration), la maturité du processus de production d'un logiciel a été définie en février 1993 par le rapport "Capability Maturity Model for Software" du Carnegie Mellon Software Engineering Institue (http://www.sei.cmu.edu/cmm/). Ce document définit 5 niveaux de maturité:
  • Niveau 1 : C'est le niveau élémentaire, artisanal. Il correspondrait au développement avec un bloc note, sans travail d'équipe, sans procédure. Ce niveau représente la majorité des développements d'applications.
  • Niveau 2 : La conduite et la planification du projet logiciel sont basées sur l'expérience. La durée de réalisation des taches est mesurée. La notion de phase et de validation en fin de phase apparaît. Le processus est reproductible.
  • Niveau 3 : Le processus de développement est de maintenance du logiciel est documenté, incluant des outils de génie logiciel et de gestion de projet. On dit alors, qu'il est défini. Un processus défini contient un AGL et un système de gestion de projet cohérent, intégré et bien défini. Des méthodes standardisées de conception sont appliquées. Ce niveau est considéré comme le processus standard.
  • Niveau 4 : L'organisation définit des objectifs qualitatifs et quantitatifs pour le processus et de logiciel produits. La productivité et la qualité sont mesurées. C'est un processus dirigé.
  • Niveau 5 : Le niveau optimisé étudie les faiblesses identifiées de manière pro active. Selon le SEI, seulement 0,2% des entreprises y parviennent.
Toutes ces méthodes, processus sont gourmand en charges, en temps, en ressources. Chaque activité de contrôle est coûteuse en temps. Le résultat de l'application de cette méthode est très concrètement mesurable par la réduction du taux de bug par ligne. Si on estime que le niveau 1 génère presque 1 bug toutes les 2 lignes, le niveau 2 n'en produit plus qu'un tout les 500 lignes et le troisième niveau un toutes les 2 000 lignes. On voit donc bien l'utilité et la nécessité de mettre en place de telle démarche.


L'intérêt de mettre en place un processus de tel ou tel niveau pour un projet donné sera justifié par le coût de correction d'un bug et par la criticité de l'application. Aujourd'hui, Nalis s'achemine vers la mise en place de contrôle qualitatif et quantitatif pour atteindre le niveau 4 de cette échelle.