État de l'Intelligence Artificielle appliquée à l'Ingénierie de la Qualité 2021-2022

Section 3.2 : Traitement du langage

par Sogeti

Métier ●●●○○
Technique ●●○○○

Download the "Section 3.2: Inform & Interpret" as a PDF

Use the site navigation to visit other sections and download further PDF content

By submitting this form, I understand that my data will be processed by Sogeti as described in the Privacy Policy.*

Introduction

À mesure que la quantité de données textuelles que nous générons tout au long du cycle de vie des applications augmente, nous pourrions consider aborder et traiter ces données dans notre prise de décision. Pour cela, nous avons besoin d'aide pour les analyser, catégoriser et hiérarchiser. La contrainte est la nature déroutante et diversifiée du langage humain. Nous avons des distinctions dans nos langues syntaxiques, sémantiques et régionales. En outre, la compréhension de notre expertise dans le domaine de l'ingénierie de la Qualité est nécessaire. Cette section traite de la manière dont l'intelligence artificielle, et plus précisément le traitement du langage naturel (NLP), nous permet de comprendre des informations non structurées et d'en tirer des enseignements significatifs. Permettez-nous d'examiner le contexte de deux études de cas différentes avant de vous présenter le NLP dans le chapitre suivant.

Étude de cas n° 1 : la nécessité d'une analyse de couverture automatisée

La conception et la production de cas de test sont des activités essentiellement manuelles qui occupent jusqu'à 70% du temps au cours du cycle de vie d'un test logiciel. Les scénarios de test préparés par des testeurs inexpérimentés ne répondent souvent pas de manière adéquate aux exigences fonctionnelles. De plus, les changements d'exigences révèlent l'impossibilité de réutiliser les cas de test générés manuellement, ce qui entraîne des retards et des augmentations de coûts. De nombreux projets logiciels font appel à un certain type de développement axé sur le comportement pour définir les exigences, qui passent des parties prenantes de l'entreprise aux récits d'utilisateurs en langage clair.

Les exigences de l'utilisateur doivent finalement être converties en langage naturel, afin qu'elles soient faciles à comprendre et à mettre en œuvre par les humains. Les cas de test en langage naturel ont des limites en raison de la possibilité d'une interprétation incorrecte entraînant des erreurs de vérification.

La traçabilité des exigences des utilisateurs et des cas de test peut être établie et utilisée pour l'analyse de la couverture des exigences par les tests. La documentation technique de l'utilisateur final, qui couvre souvent les caractéristiques et les fonctions, n'est jamais examinée, et il n'y a pas de correspondance entre les techniques de cas de test et la documentation technique. Pour comprendre les systèmes haut de gamme et sensibles qui sont contrôlés par des opérateurs professionnels, il est recommandé de consulter le document technique de l'utilisateur final. Cela met en évidence la nature critique de s'assurer que les différents domaines/flux de travail énoncés dans la spécification technique sont couverts par les procédures de test conçues et d'identifier toute lacune éventuelle.

Pour toute entreprise développant des logiciels, le contrôle de la qualité doit être un facteur de différenciation pour garantir la qualité, la stabilité et la résilience du produit. Pour assurer une couverture optimale des fonctionnalités du logiciel, il est nécessaire d'écrire et de mettre en œuvre des procédures de test appropriées par rapport à l'ensemble des fonctionnalités. La traçabilité entre les caractéristiques du produit et les procédures de test est une tâche exigeante et complexe.

Ce contexte était celui d'une entreprise américaine spécialisée dans la production de dispositifs médicaux. Une traçabilité de bout en bout entre les caractéristiques du produit et les processus de test a été établie à l'aide du traitement du langage naturel et de techniques avancées d'apprentissage profond, garantissant que les caractéristiques du produit recevaient le maximum de couverture de test. Cette solution s'est avérée extrêmement bénéfique en termes d'assurance qualité des produits et de réduction des coûts en réduisant le processus difficile d'élaboration de la stratégie et de la conception des tests. Avec l'aide de la solution construite, des fonctionnalités avec une couverture de test éparse ou nulle ont été trouvées, aidant les gestionnaires de test à améliorer leur stratégie de test, leur planification et leur conception. Ici, IBM Watson, Java, Cloudent DB, IBM Bluemix furent déployés.

Étude de cas n° 2 : la nécessité de détailler les éléments de classification

Lorsqu'un projet logiciel prend de l'ampleur, la gestion du flux de travail et du processus de développement devient plus difficile. Par conséquent, il est essentiel que l'équipe de pilotage comprenne la nature du travail effectué par les différentes équipes de développeurs.

En termes plus simples, tout développeur, à tout moment au cours des différentes phases du projet, peut écrire du code qui cherche à accomplir l'une des tâches suivantes :

  • L'ajout de nouvelles fonctionnalités
  • Amélioration de la conception
  • Correction de bogues
  • Amélioration des exigences non fonctionnelles


L'objectif ici est de définir quelques grandes catégories de travail qui couvrent la grande majorité des tâches de développement.

Comprendre comment les différentes équipes de développement répartissent leur travail entre les quatre catégories ci-dessus peut s'avérer utile dans le pilotage quotidien des outils en développement. Si la majorité du temps est consacrée à la résolution d'anomalies, la direction devrait demander aux développeurs principaux d'accorder une plus grande importance à la qualité.

Pour ce faire, nous pouvons utiliser les commentaires de commit, qui sont fournis en langage naturel par les développeurs. Ces commentaires peuvent être étiquetés et utilisés pour former des classificateurs qui classeront ensuite automatiquement les changements futurs.

Il s'agit de la méthodologie adoptée par l'ingénierie Capgemini dans les secteurs de la santé, de l'automobile et des fournisseurs indépendants de logiciels (ISV). La technologie sous-jacente est Python, Sklearn, NLTK, Numpy, Pandas, MySQL.

La méthode construite pour classer les commits à l'aide du traitement du langage naturel (NLP) a atteint une précision supérieure à 90 % et a permis de classer les commits entrants dans l'une des catégories indiquées ci-dessus. Il est devenu plus facile d'évaluer le processus de développement logiciel et le flux de travail d'une très grande équipe en utilisant cette solution de génie logiciel. La répartition des efforts et la dynamique du projet sont plus faciles à suivre et à optimiser.