Qualité logicielle: De grands mots?

Le domaine de la qualité logicielle est relativement large. En y regardant de plus près, on se retrouve rapidement confronté à des mots comme termes comme Modèle Qualimétrique, Complexité Cyclomatique, Manque de Cohésion, taux de couverture de tests…

L’objectif de cette article n’est pas de faire peur ou de dire que la qualité logicielle est réservé aux esthètes, aux intégristes de la ligne de code ou aux architectes qui n’en écrivent jamais une.

La qualité logicielle, c’est cool

Oui c’est cool, mais c’est quoi? Il existe plusieurs définitions, celle de wikipédia :

In the context of software engineering, software quality measures how well software is designed (quality of design), and how well the software conforms to that design (quality of conformance), although there are several different definitions. It is often described as the ‘fitness for purpose’ of a piece of software.

Whereas quality of conformance is concerned with implementation, quality of design measures how valid the design and requirements are in creating a worthwhile product.

Comme c’est si justement dit, la plupart des outils et des modèles distinguent plusieurs niveaux de conformité. Globalement, tous se basent sur des métriques (des éléments factuels qui sont mesurables sur l’application). C’est la clé de voute de la qualité logicielle.

La qualité logicielle: à quoi ça sert?

Comme toutes les choses cool, la qualité logicielle ça peut être très utile, parfois ennuyant et parfois même handicapant. La réelle utilité tiens dans une notion simple, celle de l’amélioration continue. Pourquoi mesurer quelque chose si ce n’est pour l’améliorer? En fait, il y’a deux réponses à cette question qui s’opposent à priori.
D’une part, le développement est un métier artisanal dont l’état de l’art évolue et s’adapte aux besoins ou aux évolutions des technologies. Pour pouvoir construire des applications, il y’a certains critères qu’il est nécessaire de respecter pour que l’édifice puisse croitre.
Le deuxième aspect en contradiction avec le premier, c’est la nécessité d’industrialiser, de faire évoluer et de maintenir les opérations de construction de l’application.

Artisanat et industrie logicielle

Les deux objectifs sont opposés mais la finalité est la même: Bien développer. La difficulté réside dans le fait d’exprimer le “bien développer”. Un modèle qualimétrique définit généralement des facteurs de qualité (ou de santé) d’une application. Un des modèle les plus répandu est l’ISO 9126-3.  Mais il en existe d’autres, celui du SEI, ou encore des modèles propres à des éditeurs, des outils ou à des méthodologies de projet ou d’analyse de la qualité. A titre d’exemple, l’evolutivité, la transférabilité, la sécurité, la robustesse et la performance sont des facteurs de santé.

Certains modèles s’appuient (aussi ou uniquement) sur des critères  qualités: Gestion des erreurs et des exceptions, documentation ou complexité sont des critères qualités.

En bout de chaîne, la métrique est l’élément essentiel permettant de réaliser la mesure et intervient ainsi dans le critère qualité ou dans le facteur de santé. La complexité cyclomatique, le taux de documentation, le taux de duplication ou le taux de couverture par les tests unitaires sont des métriques. Elles sont valuées et répétables.