# SQALE

SQALE (Software Quality Assessment based on Lifecycle Expectations) est une méthode d'évaluation du code source d'une application logicielle. Elle repose sur le concept de dette technique. C'est une méthode générique, indépendante des langages, indépendante des outils d'analyse de code et publiée sous la licence Creative Commons BY-NC-ND. Les éditeurs sont autorisés librement à implémenter la méthode dans leurs outils d'analyse automatique de code.
La méthode SQALE a été développée par la société inspearit France. Elle est utilisée sur des applications de tout type et de toute taille pour suivre la qualité logicielle et gérer la dette technique. Plusieurs outils d'analyse statique de code l'implémentent et produisent les index et les indicateurs définis par la méthode.

## Historique

La méthode SQALE a été développée pour combler un besoin général relatif à l'évaluation du code source d'une application. En effet à ce jour aucune méthode standard ne s'est imposée pour répondre aux questions fondamentales telles que :
* Quelle est la qualité du code que les développeurs m'ont livré ?
* Est-ce que ce code est évolutif, maintenable, portable, réutilisable ?
* Quelle est la dette technique accumulée par le projet ?
* Je souhaite rembourser une partie de ma dette technique, par où commencer ?
Les standards tels que l'ISO 9126 n'apportent que des éléments de réponse sans précisions sur la manière de construire une solution complète à la problématique posée. Pour pouvoir évaluer la qualité d'un code source, la communauté des développeurs a besoin d'une méthode générique possédant les propriétés suivantes :
* objective, précise et reproductible ;
* produisant des indices, des synthèses ou/et des indicateurs facilement compréhensibles et aidant à prendre des décisions concernant l'amélioration du code ;
* indépendante des langages ;
* indépendante des outils d'analyse.
La méthode SQALE tend à répondre à ces besoins en se basant sur l'analyse systématique des méthodes de consolidation en regard des types d'échelle et de la clause de représentation.
La première version de la méthode (version 0.8) a été publiée en 2010. Depuis, la méthode a été complétée pour supporter l'analyse de la dette technique selon la business perspective et proposer un nouvel indicateur : debt map permettant de choisir la stratégie de remboursement de la dette technique en fonction du contexte. La version 1.0 a été publiée en janvier 2012.

## Principes fondamentaux

La méthode repose sur neuf principes fondamentaux :
* La qualité du code source est une exigence non fonctionnelle.
* Les exigences relatives à la qualité du code source doivent être formalisées selon les mêmes critères de qualité que toutes les exigences.
* Évaluer la qualité d'un code source, c'est évaluer la distance qui le sépare de la conformité à ses exigences.
* La méthode SQALE évalue la distance aux exigences en estimant la charge de remédiation nécessaire pour remettre le code en conformité avec celles-ci.
* La méthode SQALE évalue l'importance d'une non-conformité en prenant en compte le surcoût induit par sa livraison.
* La méthode SQALE respecte la clause de représentation.
* La méthode SQALE utilise l'addition pour agréger les charges de remédiation et calculer ses indices qualité.
* Le modèle qualité de la méthode SQALE est orthogonal.
* Le modèle qualité de la méthode SQALE prend en compte le cycle de vie d'un logiciel.

## Détails sur la méthode

La méthode est constituée de quatre concepts principaux:
* Le modèle qualité
* Le modèle d'analyse
* Les indices
* Les indicateurs

### Modèle qualité

Le modèle qualité SQALE sert à formuler et à organiser les exigences non fonctionnelles relatives à la qualité du code. Il est organisé en 3 niveaux hiérarchisés. Le premier niveau est composé de caractéristiques, le deuxième niveau de sous-caractéristiques. Le troisième niveau est un niveau composé d'exigences qui portent sur des attributs internes au code source. Ces exigences peuvent dépendre du contexte du logiciel et de son langage. Les exigences du modèle qualité SQALE servent de référence pour l'estimation de la dette technique. Toute violation d'une des exigences du modèle induit de la dette technique.

### Modèle d'analyse

Le modèle d'analyse SQALE contient d'une part les règles qui servent à normaliser les mesures et contrôles relatifs au code, d'autre part les règles pour agréger les valeurs normalisées en indices. La méthode SQALE normalise les constats issus des outils d'analyse de code source en les transformant en indices représentant des charges. Pour ce faire on utilise des fonctions de remédiation (voir estimation) et de non remédiation. Dans la méthode SQALE l'agrégation des indices se fait par addition. Que ce soit dans l'arborescence du modèle qualité, ou dans l'arborescence de la hiérarchie des artefacts du code source.

### Indices

Tous les indices SQALE représentent des charges. Ces charges peuvent être exprimées en unité d'œuvre, en durée (par exemple en heure) ou en coût (par exemple en €). Dans tous les cas, les indices ont des valeurs sur une échelle de type ratio. Ils peuvent donc être manipulés avec toutes les opérations autorisées pour ce type d'échelle. Pour tout élément de la hiérarchie des artifacts du patrimoine de code source, on peut estimer la charge de remédiation relative à une caractéristique donnée en additionnant l'ensemble des charges de remédiation constatées en regard des exigences de la caractéristique. Les indices de caractéristiques SQALE sont les suivants :
* SQALE testability index : STI
* SQALE reliability index : SRI
* SQALE changeability index : SCI
* SQALE security index : SSI
* SQALE efficiency index : SEI
* SQALE maintainability index : SMI
* SQALE portability index : SPI
* SQALE reusability index : SRuI
La méthode définit aussi un indice global : pour tout élément de la hiérarchie des artifacts du patrimoine de code source, on peut estimer la charge de remédiation relative à l'ensemble des caractéristiques du modèle qualité en additionnant l'ensemble des charges de remédiation liées à toutes les exigences du modèle qualité. Cette mesure dérivée s'appelle : SQALE quality index (SQI)
Pour les projets agiles, le SQI représente ce qui est couramment appelé la dette technique du projet.
La méthode définit aussi des densités d'indice (par exemple le SQALE quality index density : SQID) permettant de comparer la qualité de produits de taille différente.

### Indicateurs

La méthode SQALE définit quatre indicateurs synthétiques. Chaque utilisateur peut en définir d'autres en fonction de ses besoins d'informations.
Les deux plus importants sont : la pyramide SQALE et la debt map SQALE qui servent à établir des stratégies de remboursement de la dette technique.

## SQALE et les projets agiles

Le concept de dette technique a été inventé par Ward Cunningham afin de suivre la qualité du code des projets agiles.
La méthode SQALE est particulièrement appropriée à la gestion de la dette technique. Elle permet :
* d'identifier et de définir de façon claire tout ce qui crée de la dette technique ;
* d'estimer précisément et objectivement cette dette ;
* de décomposer cette dette en différentes parties relatives à la testabilité, la fiabilité, l'évolutivité, la maintenabilité… décomposition permettant d'analyser l'impact de la dette sur le projet et d'identifier ainsi les actions de refactoring à lancer en priorité ;
* d'analyser les risques encourus dans le cas où on ne procèderait pas à la remédiation des non-conformités constatées ;
* d'établir des stratégies d'amélioration de la qualité du code tenant compte du contexte de la situation.
Dans les exigences relatives au code (le modèle qualité SQALE), la méthode permet d'inclure un seuil minimum à atteindre avec les tests unitaires. Dans le cas où ce seuil ne serait pas atteint, cela modifiera l'index de fiabilité de l'application.