Aller au contenu

Software craftsmanship

Un article de Wikipédia, l'encyclopédie libre.

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 développement des développeurs. Il se propose comme une réponse aux maux récurrents de l'industrie du logiciel et à la tendance à l'externalisation, qui priorise les préoccupations financiÚres avant la responsabilité du développeur.

Ce mouvement prĂŽne le cĂŽtĂ© artisanal 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 Ă  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.

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 oĂč il propose une meilleure mĂ©taphore pour qualifier les dĂ©veloppeurs de logiciels en remplacement de la traditionnelle appellation d'ingĂ©nieur.

En 2008, le software craftsmanship est réellement né 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 craftmanship.

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.

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 coĂ»teuse. 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 : coĂ»ts de maintenance).

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, POO), 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 : pair programming, programmation en groupe 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 )
  2. ↑ « Jack W. Reeves - About the Author », sur developerdotstar.com (consultĂ© le ).