Préambule :
C2i est passé expert dans le développement logiciel sur mesure à la Réunion. Aussi, nous exposons à nos aimables lecteurs un aperçu historicisé de l’évolution de la pratique du développement logiciel depuis le dernier tiers du siècle dernier.

Bref historique du développement logiciel : concepts et méthodes

Dans le milieu des années 70 ( au siècle dernier donc), l’essayiste F. Brooks a montré que dans l’élaboration d’un programme informatique, empiler les compétences en rajoutant des intervenants à la chaîne de production était improductif. Car ce qui est gagné en force de travail se perd en défauts de communication et de coordination. Durant ces années les processus de création informatiques étaient directement inspirés des processus alors en vigueur dans l’ingénierie industrielle, dont les fondements et paradigmes étaient beaucoup plus anciens et donc parfaitement mieux établis que ceux de l’ingénierie informatique.

Les velléités de construire un programme informatique en faisant travailler une équipe en cascade et en anticipant toutes les fonctionnalités et virtualités ont vécu. De nos jours, les méthodes retenues permettent aux développeurs et aux ingénieurs d’infléchir presque en temps réel les principes moteurs du programme afin de l’adapter aux besoin changeants ou flous du client, au marché, à la concurrence. On parle alors, et à juste titre de méthodes agiles.

Les récentes évolutions des outils et langages de programmation, l’effarante puissance des échanges sur le web qui décuplent, multiplient les compétences et l’expérience, l’essor des logiciels libres, le partage des savoirs devenu une institution, tous ces facteurs ont modifié totalement l’approche de l’ingénierie logicielle et programmatique.
Cet afflux massif d’informations, d’expériences et de savoirs ne pouvait que rendre obsolètes les anciens modèles conceptuels linéaires, où le chef de projet connaissait et maîtrisait toute la chaîne des processus du début à la fin. La complexification des demandes, l’évolution rapide et imprévisible des besoins naissants rendent ce modèle prédictif totalement inopérant.
Les méthodes développement agiles ont désormais sonné le glas du modèle dit en cascade car trop rigide et coûteux en ressources humaines pour des résultats franchement bien souvent décevants.

Les fondements des méthodes dites agiles dans le développement logiciel

méthode en cascade pour les projets informatiques le siècle dernier

Modèle dit en cascade pour construire un programme informatique

Les méthodes dites de développement agile, ont pour fondement, la réactivité des développeurs, qui doivent être capables de réaliser des briques simples à agencer pour assembler des fonctions puissantes assez rapidement. Les briques primaires doivent pouvoir évoluer, être modifiées à la volée pour répondre aux impératifs des clients et des contraintes externes de plus en plus nombreuses. Ces méthodes ont vu le jour au beau milieu des années 90, méthodes diverses et multiformes mais partageant toutes le paradigme de base de la simplicité des briques primitives constitutives d’un progiciel.

Le développement agile se fonde sur deux principes fondateurs : la généricité et les tests de validation. La généricité a pour but d’améliorer la nature du code sans pour autant modifier ses résultats programmés. On travaille l’ergonomie du code, sa gestion des ressources matérielles, sa rapidité d’exécution, sa stabilité , sa portabilité.
La généricité est la garantie de programmes informatiques en constante évolution, pour aboutir au même résultat que le programme parent mais avec moins de ressources, plus vite, de manière plus simple fiable et élégante.
Ces évolutions constantes sont validées grâce au second principe fondateur des méthodes agiles : nommé les tests unitaires. Quand les développeurs font évoluer le cœur d’un programme informatique, des tests unitaires séquentiels sont programmés pour valider un ensemble de briques primaires et uniquement celles ci. En cas d’anomalie qui compromet le résultat final ( devant rester par principe inchangé) ou alors s’il se produit des anomalies qui affectent une phase intermédiaire, les correctifs sont apportés immédiatement à l’ensemble de briques qui dysfonctionne.
Pour les méthodes agiles et les tests unitaires, on parle alors de processus organiques dans l’évolution du programme informatique initial.

Le développement logiciel à l’ère des langages de programmation modernes

L’une des armes décisives des nouveaux développeurs tient à l’usage intensif des bibliothèques.
La puissance et l’universalité des langages tient de plus en plus à la richesse des bibliothèques associées. La bibliothèque native de JAVA est proprement stupéfiante à travers ses bibliothèques réutilisables à l’infini. Il en est de même du succès fulgurant du langage PHP orienté web, adopté par la quasi totalité des développeurs web de la planète grâce à ses bibliothèques dédiées pour l’affichage des pages HTML et la manipulation des bases de données. On peut dire la même chose du langage de programmation python qui distance le PERL lui même déjà ingénieux et prémonitoire. Autre exemple des réussites des processus programmatiques agiles : le langage serveur Apache qui fait tourner plus de 90% des serveurs web sur la planète. L’essor du logiciel libre qui exploite toutes les potentialités énumérées plus haut ne s’est jamais aussi bien porté. Les méthodes et les outils sont arrivés à maturité.

De nos jours les ateliers de développements les plus puissants de la planète sont tenus par une poignée de développeurs géniaux travaillent en toute créativité grâce aux méthodes progicielles modernes. Combien d’applications se sont vues coter en bourse à peine sorties du garage …. que dire de la fantastique aventure de Google, facebook, Twitter, pour ne citer que les plus visibles.

Désormais il n’est plus besoin d’armées de développeurs pour réussir à sortir des applications complexes. C’est le temps des petites équipes, en formation perpétuelle, réactives, souples, capables de se remettre en question et d’inventer des processus toujours plus rapides, simples et fiables. La question qui se pose est , qu’en sera t-il des processus centralisés et lourds façon OS de microsoft  ?