Les 6 étapes à suivre pour mettre en place l’artisanat logiciel

Le Software Craftsmanship, ou artisanat logiciel, met l’accent sur l’adoption systématique de bonnes pratiques techniques dans le développement. L’approche Scrum a un taux de réussite plus élevé que les autres approches, mais malgré tout, un grand nombre de projets Agile peuvent avoir une qualité médiocre sur les livrables. Scrum n’y prête pas une attention particulière ; c’est ici que naît le software craftsmanship / artisanat logiciel.

Les méthodologies Agile ont été largement adoptées par l’industrie du logiciel et se sont révélées être l’une des meilleures approches pour développer des produits logiciels aujourd’hui. Ce n’est un secret pour personne.

Mais lorsque la maturité du processus Agile se confirme, il est temps d’aller au-delà.

Les discussions sur l’efficacité de la méthodologie classique Waterfall par rapport à la méthodologie Agile durent depuis des années, mais nous sommes maintenant arrivés à un consensus qui place Scrum au-dessus des autres méthodologies de développement connues.

Scrum ne reconnaît pas le concept de  Software Craftsmanship. Ce dernier, appellé l’artisanat logiciel en français, met l’accent sur l’adoption systématique de bonnes pratiques techniques dans le processus de développement. Scrum a un taux de réussite plus élevé que d’autres approches, mais il n’en demeure pas moins qu’une grande quantité de projets Agiles peuvent avoir une qualité limitée sur les produits livrés. Scrum n’y prête pas une attention particulière : c’est ici que naît le Software Craftsmanship.

En théorie, nous voulons tous avoir des logiciels avec des standards de haute qualité. Mais en pratique, nous savons que c’est quelque chose de difficile à atteindre : notamment dans le contexte de projets où l’urgence et les demandes de changements nuisent parfois à la qualité.

Nous avons donc décidé de compiler une liste de pratiques qui vous aideront à atteindre ce résultat souhaité. En approfondissant certains concepts et actions particuliers qui devraient être envisagés pour entrer dans le mouvement de l’artisanat logiciel.

1. Définir et appliquer des normes de codage

Une première étape vers l’artisanat du code consiste à définir un ensemble de directives, de meilleures pratiques, de styles de programmation et de conventions auxquels tous les développeurs devraient adhérer.

L’application et la vérification de la norme de codage à l’aide d’un outil (par exemple, Stylecop, dans le monde .NET) sont essentielles pour ce processus.

2. Mettre en place une analyse statique du code

L’utilisation d’outils qui analysent le code sans exécuter le programme permet de comprendre la structure du code et contribue également à garantir que le code respecte les normes industrielles et les meilleures pratiques.

Les outils d’analyse de code statique comme FxCop dans .NET ou SonarQube (un outil plus complexe et élégant) sont de bons choix pour effectuer cette analyse.

3. Automatiser les tests

Si l'automatisation des tests n'est pas réalisée correctement, elle peut échouer

Il s’agit d’un aspect essentiel qui est souvent sous-estimé et non appliqué dans de nombreux projets. Tout le monde aime l’idée d’avoir des tests automatisés, mais en général, les inconvénients sont un facteur de rupture pour plusieurs projets :

  • Ils améliorent la qualité du livrable
  • Les dépenses initiales liées à la sélection et à la configuration initiale d’une suite d’automatisation des tests sont élevées
  • Les ressources sont spécialisées et difficiles à trouver : Le profil d’un testeur automatisé se situe davantage du côté du développeur que du côté de l’assurance qualité. Le profil d’automatisation des tests n’est pas le profil technique le plus facile à trouver sur le marché
  • La vérité est que l’automatisation des tests, lorsqu’elle est effectuée de la bonne manière, sera largement payante dans n’importe quel projet. Elle augmentera considérablement la productivité de l’équipe

L’automatisation des tests est une décision qui demande plus de courage et implique un effort plus important. Elle comporte également un certain risque : Si elle n’est pas réalisée correctement, elle peut échouer.

Une bonne mise en œuvre nécessitera des étapes bien précises telles que :

  • la détermination de ce qu’il faut automatiser
  • le choix du bon outil d’automatisation (tel que Selenium ou Appium)
  • la préparation de l’équipe, des parties prenantes et des utilisateurs, afin de leur faire savoir ce que cette mise en œuvre impliquera

Pour aller plus loin sur l’automatisation des tests, consultez notre livre blanc sur le sujet ici.

4. Utilisez la conception pilotée par le domaine : DDD (Domaine Driven Design)

La conception pilotée par le domaine (DDD) consiste à développer d’une manière qui se rapproche le plus possible des processus et entités du monde réel. L’idée est de travailler avec un expert du domaine qui peut expliquer comment le système du monde réel fonctionne. Dans de nombreux cas, l’expert du domaine est le client, mais il peut également s’agir d’un utilisateur.

La DDD utilise un langage omniprésent. Il est couramment utilisé par les développeurs et les experts du domaine pour la spécification commune du domaine sur lequel ils travaillent, de sorte que les concepts puissent être expliqués et compris sans équivoque, sans aucune mauvaises interprétations.

L’un des meilleurs avantages de la DDD est que l’équipe de développement est alignée sur le langage des utilisateurs/experts du domaine. Cela a pour but de mettre tous les membres de l’équipe sur la même longueur d’onde. En outre, la DDD suggère de diviser l’ensemble du domaine en sous-domaines, également appelés contextes. Ces contextes ne doivent pas être trop larges, car plus le contexte est large, plus il y a de chances que le même terme ait plusieurs significations.

Outre la capture du modèle de domaine en termes très clairs et l’intégration du modèle dans le code, la DDD propose également une série de bonnes pratiques et de patrons (comme les patrons de service, de référentiel et de fabrique) qui sont très utiles pour générer un code soigné et ordonné.

5. La programmation en binôme pour le Software Craftsmanship / artisanat logiciel

La programmation en binôme est largement recommandée par certains et critiquée par d’autres. Elle est devenue populaire avec XP (Extreme Programming), un cadre de développement qui impose certaines pratiques afin d’améliorer la qualité des logiciels.

6 conseils pour mettre en place le software craftsmanship artisanat logiciel

Même si l’inconvénient habituellement cité est évident (deux personnes travaillant sur une même tâche semble être une utilisation inefficace des ressources), nous pensons, à l’opposé de cette idée fausse, que la programmation en binôme est essentielle pour atteindre l’artisanat logiciel.

Voici quelques raisons :

  • Programmer ensemble peut augmenter le nombre net de fonctionnalités réelles et complètes et réduire les défauts
  • La programmation en binôme diminue la procrastination et la perte de concentration, ce qui tend à augmenter la productivité
  • C’est un moyen solide de former les développeurs grâce à la possibilité de partager les meilleures pratiques et les connaissances
  • C’est la meilleure façon de mettre en œuvre l’apprentissage Agile : elle implique d’aller directement au code plutôt que de lire des manuels et de la documentation

Nous considérons la programmation en binôme comme la méthode d’intégration la plus rapide par rapport à l’approche d’apprentissage habituelle : « veuillez lire la documentation et regarder le code ». Une bonne mise en œuvre de la programmation par paires implique de définir le mode de fonctionnement de chaque membre : un programmeur est le conducteur, il a le contrôle du clavier et du codage, tandis que l’autre navigue et analyse le code, observe, apprend, pose des questions, parle et fait des suggestions.

Maintenant, la question se pose : Quand devrions-nous faire de la programmation en binôme ? La programmation en binôme est coûteuse, il est donc facile de faire le calcul. Elle doit être utilisée lorsque le problème, l’algorithme ou l’aspect particulier du code auquel vous êtes confronté est difficile. L’utiliser pour des tâches faciles à accomplir est un gaspillage de ressources.

6. Exploitez pleinement le potentiel du développement en Agile dans le Software Craftsmanship / artisanat logiciel

Il existe plusieurs autres pratiques et plateformes qui vous aideront dans le processus de création de logiciels. Il s’agit notamment de la refactorisation de l’ancien code, du TDD (Test Driven Development), de l’intégration continue, de la gestion du cycle de vie des applications (ALM) configurée de la meilleure façon possible (un produit comme Microsoft Visual Studio Team System), etc.

Ces éléments devraient constituer les piliers essentiels de ce processus de maturité. C’est le tout début pour bien faire les choses.

Pour résumer

Évidemment, tout le monde aime avoir un logiciel artisanal, mais c’est quelque chose de difficile à atteindre. Il y a plusieurs étapes qui doivent également être réalisées et faites de la bonne manière. Cette liste vous aidera à faire une évaluation et à l’exécuter, ainsi qu’à vous rapprocher de la qualité que nous voulons tous atteindre.

Alors, allons au-delà d’Agile : pourquoi l’artisanat logiciel devrait-il être la cible que vous visez ? Parce que lorsque vous atteignez la maturité, il est temps d’ajouter de la qualité à votre logiciel, et l’ensemble des pratiques définies sous l’égide du mouvement de l’artisanat logiciel sont celles qui vous aideront le mieux à atteindre ce que la plupart des gens recherchent : un logiciel de première qualité.

Commençons dès aujourd’hui :

ALL4TEST vous propose diverses formations pour mettre en place le Software Craftsmanship, que ce soit dans vos équipes ou bien pour vous former :

En outre, ALL4TEST vous propose aussi des offres d’emploi de Consultant Clean Code – Craftsman.

Pour en savoir plus :