Qualité des produits logiciels

La qualité des produits logiciels résulte de la qualité du processus de développement. S’il est important d’évaluer ces derniers, il est également nécessaire de pouvoir mesurer directement la qualité des produits résultants : documents de spécification, d’architecture, plan de tests ; modèles d’aspects statiques ou dynamique du logiciel duquel du code peut-être écrit ou dérivé ; code source ; jeux de tests.
Un spectre de techniques de complexité croissante et exigeant un outillage d’autant plus spécifique peuvent être utilisée à cette fin : revues manuelles, analyse statique basée sur des métriques, analyse statique basée sur des techniques de vérification.

La qualité des produits logiciels résulte de la qualité du processus de développement. S’il est important d’évaluer ces derniers, il est également nécessaire de pouvoir mesurer directement la qualité des produits résultants, et en particulier du code source. Sur base de son expertise sur les métriques logicielles, le CETIC a adopté une approche d’analyse statique pour réaliser des mesure précises du code ciblant les caractéristiques clefs de maintenabilité, sécurité et fiabilité. Cette expertise est soutenue par des outils de pointe du laboratoire de génie logiciel rassemblant des outils les plus pertinents qu’ils soient Open Source (ex. PMD, FindBugs) ou commerciaux (ex. CAST, Kalistick, Fortify, Polyspace).

Cet expertise est basée sur une connaissance globale et approfondie du paysage des outils logiciels et de la capacité de sélectionner les bons outils d’analyse adapté à chaque contexte (niveau de criticité, langage, pratiques de codages...). Le CETIC a également la capacité de les configurer et de les adapter pour des performances optimales.

Une fois les résultats d’analyse produit, la capacité d’interprétation permet de produire des rapports de haute qualité qui peuvent guider les décideurs dans leurs processus de décision et les développeurs dans leur processus d’amélioration.

Analyse de maintenabilité. L’objectif est d’évaluer différents indicateurs de la maintenabilité d’une application en réalisant une analyse statique du code source. Divers indicateurs pertinents sont combinés :

  • Compréhensibilité des méthodes
  • Stabilité des modules (ou packages), des classes
  • Index de maintenabilité
  • Présence de code dupliqué

Ces indicateurs sont agrégés et représentés de façon graphique dans des tableaux de bords objectivant d’une part, pour les décideurs, le niveau global de qualité, et d’autre part, pour les équipes de développement, les actions correctives à prendre pour remédier aux problèmes identifiés.

Sur cette base, des recommandations peuvent être proposée afin d’améliorer la maintenabilité :

  • en ciblant les critères les plus pertinents (tels que niveau de documentation, complexité du code, respect de patterns de programmation)
  • en lien avec les parties de code présentant des risques importants, notamment par rapport à leur valeur business

Diverses modalités de déploiement des analyses peuvent être envisagées

  • Analyse ponctuelle, par exemple pour estimer si un code hérité vaut la coût d’être repris, si un composant (éventuellement Open Source) est de qualité suffisante pour être utilisé. Des aspects spécifiques peuvent également être analysés tels que la sécurité ou la fiabilité pour lesquels des outils spécialisés sont déployés (ex. Fortify ou Polyspace).
  • Evaluation continue de la qualité du code qui peut être requise pour un contrôle de qualité interne ou dans le cadre d’une relation client-fournisseur. Une solution attractive dans ce cadre est une plateforme SaaS sécurisée.
  • Déploiement d’une plateforme chez le client. Du soutien peut également être fourni pour la sélection, déploiement, configuration,adaptation ou utilisation d’une plateforme d’évaluation de la qualité, notamment des plateformes Open Source populaires telles que Sonar.