Veuillez patienter...
ajax-loader

Industrialisation du developpement logiciel



De notre point de vue, l'industrialisation du développement logiciel consiste à créer des outils permettant d'automatiser le maximum de processus intervenant dans le cycle de création et de maintenance d'un logiciel. Potentiellement la majorité des processus sont automatisables si un effort de spécification exhaustive a été réalisé en amont. La granularité de cette spécification sera fonction du type de projet, de son envergure et des choix de ses concepteurs.

sysord

Pourquoi automatiser la production de code dès la création d'un nouveau système ?

  • Toute tâche répétitive d'écriture de code doit être automatisée, elle est consommatrice de ressources là où l'effort pourrait être reporté sur des parties du système à plus forte valeur ajoutée.
  • Même en respectant les normes de codage du projet, la structure du code produit par un développeur varie selon l'humeur du jour. Cela rend la maintenance plus complexe.
  • Une application manipulant un grand nombre d'objets ou concepts comporte initialement plus de 90% de code automatisable, l'implantation de plus en plus de services et de nouveaux objets métier ne fera jamais tendre cette mesure en dessous de 60%. Il est important de concentrer l'effort sur la réalisation cohérente des fonctionnalités cruciales du système.
  • Certains codes ne sont que de la prose technique fortement couplée à l'architecture et ne réalisent rien d'autre que l'implantation d'une fonctionnalité technique. Leur écriture manuelle est source d'erreurs alors que leur production est généralement totalement automatisable.
  • Le plus important est l'interface d'une fonctionnalité, elle fournit sa description en termes d'entrées (paramètres), de sorties (valeur de retour) et d'interactions avec les autres fonctionnalités du système. Il faut s'affranchir de tout code lié à l'architecture technique, un service métier doit être vu comme un ensemble de fonctionnalités accessibles. L'architecture et les technologies utilisées ne sont que le moyen de mettre à disposition ses fonctionnalités. L'interface « décorée » de quelques métadonnées ou directives est suffisante à la production du code implantant la fonctionnalité sur une architecture cible. Seul le code nécessaire à la réalisation de la fonctionnalité proprement dite restera à écrire. On consacre ainsi l'effort sur ce qui est important : la logique métier.
  • Lorsqu'une fonctionnalité vise à fournir des données, l'ensemble des données à obtenir peut être spécifié formellement. Cette spécification formelle permet de produire le code réalisant l'obtention de ces données dans le contexte de l'architecture technique cible. Un changement de plateforme ou d'architecture n'invalidera pas la spécification, seul le processus de transformation de la spécification en code technique changera.
  • Lorsque l'on commence à utiliser une technologie, le manque de maitrise et de connaissance de celle-ci peut conduire à des mauvais choix techniques qu'il faut corriger. On ne se rend malheureusement compte des erreurs commises que lorsque le projet a bien avancé. La correction de ces erreurs est coûteuse en temps et en énergie humaine, de plus rien ne garantit qu'il s'agit de la dernière itération de correction. Quand la production des codes techniques a été automatisée la rectification se fera très simplement en corrigeant uniquement le processus de production du code erroné.
  • Les gains occasionnés par une démarche d'automatisation de la production de code sont considérables :
    • Productivité : beaucoup de code fonctionnel généré rapidement
    • Qualité, homogénéité et maintenabilité du code produit
    • Qualité et complétude du code écrit manuellement : plus de disponibilité pour penser.
    • Anticipation d'une migration éventuelle vers une autre plateforme ou architecture technique.
    • Réactivité : les demandes d'évolution du logiciel peuvent être traitées dans des temps records. (réalisation d'itérations rapides à l'ère des méthodes « Agiles »)
    • Traçabilité : les modèles utilisés pour la production du code sont conservés et permettent de mieux comprendre son origine.'
sysord

Sous le capot

Le principe de la production ou génération automatique est assez simple. Il comporte deux éléments essentiels :

  • Le modèle : il décrit avec un niveau de précision variable les objets, interfaces et comportements du système à produire. Il peut être de différent type:
    • Spécifique au générateur : ensemble d'informations structurées créé spécifiquement pour le générateur.
    • Concret et / ou technique : issu de l'analyse de code préexistant, ou la structure d'une BDD préexistante.
    • Normalisé : UML, modèle spécifique basé sur un métamodèle normalisé comme MOF (Méta Object Facility)
  • Le générateur : c'est un programme qui explore le modèle et produit des documents. Ces documents peuvent être du code, des fichiers de configuration, de la documentation, des scripts et des schémas pour une base de données etc. Le générateur doit être assez évolué et configurable pour être en mesure de produire des sorties destinées à des plateformes différentes tout en réutilisant ses stratégies de navigation dans le modèle.
Notre expérience et notre implication dans ce type de projet vous garantissent un fort retour sur investissement.
sysord

La génération et la rétro-ingénierie en action

La génération et la rétro-ingénierie en action


La génération et la rétro-ingénierie en action

Par l'enchainement de processus élémentaires de transformation, il devient possible d'automatiser en partie le portage ou la migration d'une application ou d'une base de données d'un système vers un autre.