La qualité logicielle en PHP

Quality_icon-checklist

Aujourd’hui, les développeurs passent beaucoup de temps à faire et défaire du code, à toujours écrire des fonctionnalités similaires de projet en projet, à s’arracher les cheveux sur le code d’un autre, à développer des fonctionnalités complètement inutiles pour le client, à faire des var_dump, print_r, die, exit régulier pour debugger.

Pourquoi tant de souffrance quotidienne et de perte de temps ?

Mon propos portera sur une notion beaucoup utilisée en génie logiciel, qui peut permettre à chacun d’atténuer ses souffrances, à savoir la qualité logicielle qui est, selon moi, un réflexe que doivent avoir toutes équipes projet durant la vie du projet.

La qualité logicielle peut se définir comme étant un ensemble de tâches à effectuer et de moyens mise en place afin de donner une satisfaction optimale aux besoins du client, des utilisateurs, en somme, à toutes les équipes et de tendre vers le zéro défaut.

Cet article n’est pas destiné à vous expliquer en détail chaque concept, mais à vous aider à cultiver de façon optimale les grands principes de la qualité logicielle, lesquels permettent de prendre les bonnes décisions, d’avoir de bons réflexes dans la conception logicielle. De ce fait, j’axerai mon propos sur deux parties qui feront l’objet de deux articles :

Nous verrons dans une première partie l’acquisition de la culture de la qualité logicielle et dans une deuxième partie les outils logiciels participant à sa mise en œuvre opérationnelle

  • Culture pour la qualité logicielle PHP

S’acculturer pour la qualité logicielle PHP peut se définir comme étant l’ensemble de concepts et techniques de veille technologique que doivent connaître les équipes projet. Avoir une équipe à la pointe dans ce domaine peut être un gage de réussite et de qualité du produit. Former les équipes aux dernières tendances technologiques devient alors un élément très important.

PHP est un langage de développement permissif dont la courbe d’apprentissage est très faible contrairement aux langages comme C # , JAVA ou autre langage robuste. Il nécessite de la part des développeurs une rigueur plus importante. Aujourd’hui, cette rigueur est possible grâce au concept de génie logiciel et donc de qualité logicielle. On entend souvent le développeur dire : « mais ça marche sur mon poste de développement mais pas en recette », avoir une culture de qualité logicielle ne s’invente pas, mais c’est un apprentissage quotidien de l’équipe sur les évolutions des concepts aux travers de leurs mises en place.

Afin de produire un outil de qualité, nous vous proposons un ensemble d’étapes à appréhender et répéter durant le cycle de vie de vos projets, afin que votre vie quotidienne soit sans embuches et que votre produit suive les principes SOLID, DRY, YAGNI, KISS, etc.  Vous trouverez les différents outils nécessaires pour ces étapes à l’article « Outils pour la qualité logicielle en PHP »

  • Choix de la méthode de gestion de projet

Aujourd’hui les demandes des clients ainsi que leurs exigences évoluent majoritairement pendant la vie du projet. Vous devez être en mesure de les anticiper, de communiquer régulièrement, de vous adapter, au final il faut être agile, exit notre traditionnel cycle en V.

L’agilité, avec les méthodes agiles, a bouleversé le monde de la gestion de projet informatique, Il existe plusieurs méthodes de gestion de projets dite agile, dont vous trouverez ci-après les plus utilisées:

  • Scrum
  • eXtreme Programming(XP)

Pour en savoir plus sur les méthodes agile, je vous invite à visiter le lien ci-après qui vous donne une liste exhaustive avec des explications détaillées : https://fr.wikipedia.org/wiki/M%C3%A9thode_agile

Notre choix se portera sur une explication globale de l’eXtreme Programming. Cette méthode très rigoureuse est adaptée aux équipes de taille moyenne (10 personnes) et à tous les intervenants  du projet. Dans cette configuration :

  • Chaque membre de l’équipe se voit attribuer une ou plusieurs responsabilités dans la vie du projet. A titre d’exemple, un développeur peut s’occuper de la conception et d’évaluation des spécifications. L’architecte, quant à lui, aura pour responsabilité de structurer le projet.
  • Tous les développements et les recettes devront être effectués au préalable via des tests unitaires et fonctionnels, aujourd’hui on parle de test-driven development(TDD) qui demande à écrire le test avant l’implémentation de la fonctionnalité, elle respecte les règles suivantes :
  1. écrire un premier test ;
  2. vérifier qu'il échoue (car le code qu'il teste n'existe pas), afin de vérifier que le test est valide ;
  3. écrire juste le code suffisant pour passer le test ;
  4. vérifier que le test passe ;
  5. puis réutiliser le code, c'est-à-dire l'améliorer tout en gardant les mêmes fonctionnalités.

https://fr.wikipedia.org/wiki/Test_driven_development

  • Le développeur devra ensuite implémenter en Programmation orientée objet la fonctionnalité demandée similaire aux tests sans ajout de nouveau code superflu de façon lisible et minimale, pas de méthodes à rallonge.
  • Privilégié le Pair Programming (Programmation en binôme) afin de produire du code de qualité rapidement et accroître le partage de connaissance dans les équipes.

 

  • Création d’environnement de Développement, Tests, Recette, Production

Pour les différentes équipes du projet, vous devrez mettre en place des environnements de Développement, de Tests pour vos équipes de développement et de testeurs ainsi qu’un environnement de recette pour le client afin d’effectuer les différents tests avant la mise en production.

 

  • Choix de l’architecture logicielle et règles de développements

Le choix de votre architecture logicielle et les règles de codage sont une étape très importante dans votre projet. Elle nécessite que vous y consacrer un temps de réflexion important car un mauvais choix d’architecture et de règles peut entrainer une flambée des coûts du projet. De manière générale en PHP, le socle architectural utilisé est l’architecture orienté objet car elle est la plus adéquate. Aussi les équipes projet devront avoir de la rigueur dans l’exercice de leurs tâches quotidiennes.

Afin de mettre toutes les chances de son côté pour atteindre la qualité, il faudra respecter les différentes règles suivantes :

  • Choix d’un Framework ou pas: selon votre besoin, vous devez opter pour un Framework, un micro-Framework, un CMS, ou tout développer par vos propres soins. Ce choix est primordial car une mauvaise décision peut mettre en danger la qualité de votre produit et son coût final.
  • Choix des librairies externes : selon votre projet, vous devez privilégier des librairies back et front éprouvées par la communauté, qui répondent à vos besoins et sont extensibles facilement.
  • Choix des conventions de codage: Mettre en place des règles communes ou utiliser celles du monde PHP, de votre Framework car de mauvaises conventions peuvent rendre le code non maintenable et donc altérer sa qualité : PSR, Pear, Zend, Symfony
  • Choix du système de versionning du projet : toujours versionner son projet afin de parer à tout problème.
  • Mise en place de tests unitaire et fonctionnelle afin d’éviter toute régression dans le code et produire du code fonctionnel.
  • Utiliser le plus possible les motifs de conceptions afin de faire gagner du temps à tout intervenant et assurer la qualité de conception vu que le code sera facilement maintenable et réutilisable, faire donc le bon le choix de motif de conception mais ne pas en faire trop.
  • Auditer et sécurisé son code afin d’analyser et repérer ses points faibles et ne jamais faire confiance aux données saisies par l’utilisateur.
  • Ne pas réinventer la roue afin de produire un code performant déjà éprouvé.
  • Optimiser son code grâce aux bonnes pratiques et aux outils de mesures
  • Respecter la PHP DOC, mettre des commentaires significatifs dans votre code afin de produire une documentation lisible pour tous.
  • Mettre en place des systèmes d’intégration continue afin de s’assurer du bon fonctionnement du code livré.

Mettre en pratique toutes ces préconisations vous permettra d’augmenter la qualité de votre produit et mettre les équipes projets dans de meilleures conditions et leur inculquer la culture des nouvelles pratiques dans le développement logiciel qui font actuellement leurs preuves. Dans notre prochain article « Outils pour la qualité logicielle en PHP » nous verrons  les outils PHP qui peuvent vous aider à avoir un produit de qualité.

 

 

2 commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.