Software craftsmanship

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Le Software craftsmanship (ou l'« artisanat du logiciel ») est une approche de développement de logiciels qui met l'accent sur les compétences de codage des développeurs . Il se propose comme une réponse aux maux récurrents de l'industrie du logiciel et à la tendance à l'externalisation. Il inclut la priorisation des préoccupations financières vis-à-vis de la responsabilité du développeur.

Ce mouvement prône le côté artistique du développement logiciel, autrement dit, d'après le manifeste de l'artisanat du logiciel, il ne suffit pas qu'un logiciel soit fonctionnel, mais il faut qu'il soit bien conçu[1]. L'idée principale est de garantir la fiabilité et la maintenabilité des applications d'où l'importance de professionnels aptes a concevoir des logiciels dans le respect d'indicateurs de qualité logicielle. Le software craftsmanship et l'agilité sont alors complémentaires, car là où l'agilité se limite à la souplesse des cycles de développement, le software craftsmanship s'étend sur la façon même dont est conçu et écrit le code.

Historique[modifier | modifier le code]

Le mouvement s'est inspiré des concepts développés dans le livre The Pragmatic Programmer: From Journeyman to Master (Andy Hunt & David Thomas – 1999). Toutefois, bien avant, en 1992, Jack W. Reeves[2] a rédigé un essai dans le journal du C++ intitulé "What Is Software Design?" où il explique pourquoi le développement logiciel est plus un art qu'une discipline d'ingénierie. Ensuite a été publié en 2001 l'ouvrage de Pete McBreen, "Software Craftsmanship" ou il propose une meilleure métaphore pour qualifier les développeurs de logiciels en remplacement de la traditionnelle appellation d'ingénieur.

Puis est réellement né en 2008 le Software Craftsmanship en tant que mouvement alors que Uncle Bob proposa comme cinquième valeur du manifeste agile "Craftsmanship over Execution" (En français: "l'artisanat plus que l'exécution").

Cette valeur n'ayant pas été intégrée au manifeste agile, un certain nombre d'aspirants artisans du logiciel se sont rencontrés à Libertyville dans l'Illinois la même année afin de définir un ensemble de principes pour le software crafmanship.

Enfin en 2009, le manifeste issu des différentes rencontres a été publié pour être vu et signé par les différents partisans du mouvement: "Le manifeste pour l'artisanat du logiciel"

Dès lors, partout à travers le monde, des rencontres sont organisées pour créer une communauté de professionnels, cherchant continuellement à élever le niveau selon les principes évoqués dans le manifeste.

Principes[modifier | modifier le code]

D'après le manifeste de « l'artisanat du logiciel » il ne suffit pas qu'un logiciel soit fonctionnel, il doit aussi être bien conçu et économique. Le danger de la sur-conception par rapport au codage, s’apparente alors à un retour à la « prédictivité » des méthodes classiques  et représente le principal risque d’intégration de ces nouvelles préoccupations. C’est sur ce point que l’expérience des développeurs expérimentés entre en jeu, car ils doivent disposer des compétences  permettant de prendre les bonnes décisions. Cette exigence implique une formation spécialisée  apte à résoudre de nombreuses  problématiques  (fonctionnelles, techniques et économiques).

Le Software craftsmanship consiste donc à remettre les pratiques de développements ignorées par les autres méthodes au cœur de la production de logiciel. En effet Scrum, Kanban ou Lean ne proposent rien à ce sujet, et si le  code n’est pas de qualité, quelle que soit la longueur et le nombre des itérations, le logiciel sera livré en état de dysfonctionnement.  De plus, la maintenance corrective et évolutive sera difficile et couteuse. D’où l'importance de développeurs compétents et aptes à user de leur savoir-faire pour concevoir des produits dans le  respect des indicateurs de qualité logicielle.

Le Software craftsmanship promeut aussi une culture d’amélioration et de transmission du savoir, par la pratique, adossée à un ensemble de techniques et de retours d’expériences, dans le but de fournir un logiciel de qualité. La « non qualité » a un coût stratégique (livraison reportée  et time to market allongée), mais aussi financier (exemple : couts de maintenance) .

Le manifeste des « Artisans du logiciel »[modifier | modifier le code]

En tant qu’aspirants « Artisans du Logiciel », nous relevons le niveau du développement professionnel de logiciels par la pratique et en aidant les autres à acquérir le savoir-faire. Grâce à ce travail, nous avons appris à apprécier :

1. Pas seulement des logiciels opérationnels, mais aussi des logiciels bien conçus.

2. Pas seulement l'adaptation aux changements, mais aussi l'ajout constant de valeur.

3. Pas seulement les individus et leurs interactions, mais aussi une communauté professionnelle.

4. Pas seulement la collaboration avec les clients, mais aussi des partenariats productifs.

« C'est-à-dire qu'en recherchant les éléments de gauche, nous avons trouvé que les éléments de droite sont indispensables. »

Fondamentalement : un retour non référencé à XP[modifier | modifier le code]

Finalement, il ressort de l’analyse de cette déclaration la constatation d’une reformulation des autres méthodes agiles et particulièrement d'XP :

  • Qualité : conception simple (DDD, OO), clean code et refactoring, tests dont TDD (XP)
  • Humilité : je me remets en question et je m’améliore en continu (rétrospectives de Scrum)
  • Partage : binomage, pair programming et propriété collective du code (XP)
  • Pragmatisme : je comprends les contraintes et m’adapte si nécessaire (rétrospectives de Scrum)
  • Professionnalisme : je traite mon client comme un partenaire (principe du « courage » d’XP)

Liens externes[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

Notes et références[modifier | modifier le code]

  1. « Manifesto for Software Craftsmanship », sur manifesto.softwarecraftsmanship.org (consulté le 6 juin 2015)
  2. http://www.developerdotstar.com/mag/bios/jack_reeves.html