Accueil🇫🇷Chercher

Software craftsmanship

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.

Historique

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.

Principes

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 »

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

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 : 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

Bibliographie

  • (en) Sandro Mancuso, The Software Craftsman : Professionalism, Pragmatism, Pride, Prentice Hall, , 288 p. (ISBN 978-0-13-405250-2, lire en ligne Inscription nĂ©cessaire)
  • (en) Dave Hoover et Adewale Oshineye (Foreword by Ward Cunningham), Apprenticeship Patterns : Guidance for the Aspiring Software Craftsman, O'Reilly, , 176 p. (ISBN 978-0-596-51838-7 et 0-596-51838-2)
  • (en) Robert C. Martin, Clean Code : A Handbook of Agile Software Craftsmanship, Addison Wesley, , 431 p. (ISBN 978-0-13-235088-4 et 0-13-235088-2)
  • (en) Pete McBreen, Software Craftsmanship : The New Imperative, Boston, Addison Wesley, , 187 p. (ISBN 0-201-73386-2)
  • (en) Richard Sennett, The Craftsman, Yale University Press, , 326 p. (ISBN 978-0-300-11909-1 et 0-300-11909-7)
  • (en) Bill Pyritz, « Craftsmanship versus engineering: Computer programming - An art or a science? », Bell Labs Technical Journal,‎ (lire en ligne)
  • Sallah Kokaina, Software Craftsmanship : L'art du code et de l'agilitĂ© technique en entreprise, Editions ENI, (ISBN 978-2-409-02154-1)

Notes et références

  1. « Manifesto for Software Craftsmanship », sur manifesto.softwarecraftsmanship.org (consulté le )
  2. « Jack W. Reeves - About the Author », sur developerdotstar.com (consulté le ).
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.