
Le développement de logiciels a pour objectif principal de construire un logiciel qui répond aux besoins et attentes du client. Ces besoins sont exprimés sous forme d’exigences. Les exigences définissent les fonctionnalités des logiciels. Les développeurs et les développeuses s’appuient sur ces exigences pour mettre en œuvre les fonctionnalités du logiciel, tandis que les testeurs et testeuses les utilisent comme référence pour valider le produit final.
Limites des approches existantes sur la spécification des exigences
L’une des premières étapes du développement d’un logiciel est l’identification et la spécification des exigences. Généralement, les exigences sont spécifiées dans un langage naturel, comme le français. Mais le langage naturel peut entraîner des ambiguïtés et des malentendus. Lorsque cela survient, le logiciel résultant peut ne pas être conforme aux besoins du client et sa correction nécessite du temps et des efforts supplémentaires. Ces enjeux sont très importants lors du développement de logiciels pour les systèmes critiques. C'est le cas des avions et des voitures par exemple, où les erreurs ne sont pas tolérées, car elles peuvent compromettre la sûreté de l’utilisateur ou de l’utilisatrice. Dans le cadre de notre projet de recherche, nous collaborons avec une entreprise en avionique qui partage ces préoccupations.
Pour résoudre les problèmes liés au langage naturel, plusieurs approches préconisent l’utilisation de gabarits pour la spécification semi-formelle des exigences. Un gabarit décrit la structure générique d’une exigence. Un gabarit comporte des fragments de texte dont certains sont des parties fixes (elles restent inchangées) et d’autres sont des parties variables (placeholders ou espaces réservés). Les espaces réservés sont ensuite remplis par l’utilisateur ou l’utilisatrice pour créer les exigences. Utiliser des gabarits garantit que (1) les exigences aient une structure cohérente, (2) les exigences soient spécifiées conformément aux meilleures pratiques, et (3) l’analyse automatisée des exigences soit possible, puisqu’elles ont toutes la même structure. Cette analyse automatisée est importante, car elle permet la génération automatique de certains artefacts, comme les tests, directement à partir des exigences. Cependant, la majorité des approches actuelles n’offrent pas de procédure systématique pour la création et l’évolution des gabarits. En outre, la plupart de ces approches portent sur des types d’exigences spécifiques.
L’approche proposée
Pour résoudre ces problèmes, nous proposons une approche fondée sur des gabarits pour spécifier les exigences et des modèles pour représenter ces gabarits [1]. Utiliser des modèles pour représenter les gabarits nous permet de profiter des avantages de l’ingénierie dirigée par les modèles. Ces avantages sont, entre autres, la facilité de gestion et de maintenance des gabarits, et la génération automatisée du code lié aux gabarits. Notre approche comprend plusieurs étapes, principalement : (1) analyse, reformulation et catégorisation des exigences, (2) définition de gabarits pour chaque catégorie, et (3) modélisation des gabarits créés. Nous avons appliqué notre approche pour spécifier les exigences d’une norme utilisée par notre partenaire industriel, ARINC-653 [2]. Pour ce faire, nous avons parcouru les documents ARINC afin d’en extraire les exigences manuellement. Nous avons ensuite reformulé les exigences mal écrites. Après reformulation, nous avons classé les exigences en plusieurs catégories en fonction de l’information qu’elles fournissaient, soit une fonctionnalité du système ou la définition d’un paramètre. Pour chaque catégorie, nous avons créé un gabarit en identifiant le texte commun aux exigences comme parties fixes du gabarit et en désignant le texte variable comme parties variables. À la fin de cet exercice, nous avons créé un total de sept gabarits et les modèles correspondants, couvrant deux types d’exigences. Il s’agit (1) des exigences fonctionnelles spécifiant le comportement du logiciel, et (2) des exigences relatives aux données qui définissent les éléments du logiciel tels que les paramètres et les types.

L’outil MD-RSuT
Afin de mettre notre approche à la disposition de l’industrie, nous devions fournir un outil de soutien. Ainsi, nous avons développé un outil appelé MD-RSuT (Model-Driven Requirements Specification using Template). MD-RSuT est un éditeur qui permet de spécifier des exigences à l’aide de gabarits. L’outil gère les exigences et les organise en documents, exportables en format PDF pour une analyse manuelle, et en format XML pour une analyse automatisée. L’outil permet également la création et la maintenance des gabarits à l’aide des modèles.

Pour évaluer notre approche, nous avons d’abord analysé son applicabilité à des exigences issues de différents domaines. Trois études de cas nous ont permis d’appliquer notre approche aux exigences des systèmes avioniques, automobiles et à usage général (non critiques). Nous avons pu couvrir plus d’un millier d’exigences dans les trois études de cas, et avons réussi à toutes les spécifier grâce aux gabarits que nous avons créés. Deuxièmement, nous avons évalué si notre approche améliore la qualité des exigences. Pour ce faire, nous avons analysé la qualité des exigences résultant des gabarits par rapport aux caractéristiques stipulées dans la norme IEEE sur l’ingénierie des exigences [3]. Selon cette norme, une exigence doit être nécessaire, non ambiguë, complète, explicite et vérifiable. Notre approche a permis d’améliorer la qualité pour environ 70 % des exigences dans l’étude de cas sur l’avionique, 40 % dans l’étude sur l’automobile et 80 % dans l’étude sur les systèmes à usage général.
En résumé, nous présentons une approche qui soutient la spécification des exigences à l’aide de gabarits spécifiques au contexte d’une compagnie. Nous utilisons des modèles pour représenter les gabarits, ce qui facilite la création, la mise en œuvre et la maintenance des gabarits. Notre approche, appliquée à la norme ARINC-653 dans le domaine de l’avionique, a produit un ensemble de sept gabarits pour les exigences fonctionnelles et les exigences relatives aux données. L’outil que nous avons développé, appelé MD-RSuT, soutient la spécification et la gestion des exigences à l’aide des gabarits créés. Enfin, nous avons évalué notre approche à l’aide de trois études de cas. Cette évaluation confirme que notre approche est applicable à tous les domaines et qu’elle améliore la qualité des exigences.
Références
[1] I. Darif, C. Politowski, G. El Boussaidi, I. Benzarti and S. Kpodjedo, "A Model-driven and Template-based Approach for Requirements Specification," 2023 ACM/IEEE 26th International Conference on Model Driven Engineering Languages and Systems (MODELS), Västerås, Sweden, 2023, doi: 10.1109/MODELS58315.2023.00018.
[2] SAE, “ARINC specification653p1-4. avionics application software standard interface,” p. 285, 2015.
[3] “ISO/IEC/IEEE international standard—systems and software engineering — life cycle processes — requirements engineering,” ISO/IEC/IEEE 29148:2018(E), pp.1–104, 2018.