THÈse présentée








télécharger 0.65 Mb.
titreTHÈse présentée
page2/28
date de publication09.06.2018
taille0.65 Mb.
typeThèse
ar.21-bal.com > droit > Thèse
1   2   3   4   5   6   7   8   9   ...   28

1
Introduction


Le test de logiciel apparaît aujourd’hui comme le moyen principal pour la validation du fonctionnement d’un programme [Beizer''90; Binder''99]. Il a pour objectif d’examiner ou d’exécuter un programme dans le but d’y révéler des erreurs. Il est souvent défini comme le moyen par lequel on s’assure qu’une implantation est conforme à ce qui a été spécifié. L’activité de test est omniprésente tout au long du cycle de vie du logiciel, et différentes techniques permettent de valider les différentes étapes du développement.

Par ailleurs, l’industrie du logiciel produit aujourd’hui des systèmes de plus en plus complexes ; il devient donc crucial de factoriser le savoir-faire et les produits. Le savoir-faire est réutilisé sous la forme de processus et de méthodologies pour la gestion de projets logiciels ou par la mutualisation de solutions éprouvées au niveau de la conception grâce, en particulier, à la notion de design patterns [Gamma''95]. Le développement de canevas d’application (« frameworks ») et de composants logiciels constitue une des réponses à la réutilisation de certaines parties de l’implantation.

La programmation orientée objets (OO) offre une solution élégante au développement de composants réutilisables comme unité de déploiement [Szyperski''98]. Elle offre en particulier des possibilités d'encapsulation et de masquage d'information qui permettent d'établir une analogie avec les composants matériels, et la notion d'adaptabilité qui permet de les adapter souplement. Ce type de programmation est maintenant largement utilisé pour l’analyse, la conception et la réalisation de grands systèmes d’information. L’adoption des langages orientés objets s’est accompagnée de l’émergence d’UML (Unified Modeling Language) comme langage standard de modélisation. Ce langage permet la description des différents aspects du logiciel, de la description structurelle et du comportement dynamique du programme jusqu’à la définition des cas de test ou de l’environnement de déploiement.

L’adoption généralisée du paradigme objet, ainsi que le changement d’échelle pour le développement de logiciel fait émerger la nécessité de méthodes adaptées pour le test [Binder''99]. En effet, le besoin de fiabilité et de robustesse pour les composants est d’autant plus grand que ceux-ci vont être réutilisés dans de nombreux contextes différents. L’encapsulation des données dans des classes, la répartition du contrôle à travers le système, ou la liaison dynamique sont autant de spécificités qui doivent être prises en compte par les techniques et méthodes de test proposées. Par ailleurs, il semble intéressant d’appuyer ces méthodes sur UML comme langage de modélisation des logiciels.

Comme nous le verrons par la suite, il existe de très nombreux travaux qui se sont intéressés au test de logiciels orientés objet, allant du test d’unités indépendantes jusqu’aux processus génériques pour la validation de systèmes complexes. Ceci a donné lieu, par exemple, à une standardisation du test de classe, à travers la popularisation d’une famille de frameworks pour divers langages orientés objet appelée Xunit [Beck''01; Craig''02]. Ces frameworks prennent en compte la structure particulière des programmes OO pour l’écriture, l’exécution et la collecte des résultats du test pour une classe. Par ailleurs, de la même manière que les design patterns et les composants permettent la réutilisation d’architectures et de code, il existe des patterns de test qui correspondent à des définitions abstraites de plans de test ou de cas de test qui peuvent être réutilisées pour différentes applications.

Les travaux présentés dans cette thèse s’articulent autour de trois contributions majeures qui s’inscrivent dans le cadre global du test de logiciels orienté objet pour le développement de composants logiciels fiables.

Considérant que le test constitue le moyen principal pour l’évaluation de la fiabilité d’un composant, la génération de cas de test efficaces est un problème important. Or, s’il est possible de générer rapidement des cas de test couvrant les utilisations normales d’un programme, l’amélioration de cet ensemble pour qu’il soit efficace dans tous les cas est très coûteuse à la fois en temps et en effort. L’optimisation automatique d’un ensemble de cas de test est donc la première contribution de cette thèse. Ce travail a consisté à étudier un algorithme génétique, et à définir une nouvelle catégorie d’algorithmes évolutionnistes, appelée algorithme bactériologique, pour améliorer automatiquement la qualité d’un ensemble de cas de test pour un composant. Cet aspect de nos travaux a été publié dans [Baudry''00a; Baudry''00b; Baudry''00c; Baudry''02b; Baudry''02c; Baudry''02d].

Dans la suite, nous étudions des problèmes de test qui peuvent apparaître lors de l’assemblage de composants. Cette phase particulière du test est appelée test d’intégration et consiste à tester les interactions entre les composants du système. A ce niveau, deux types d’erreur peuvent apparaître : des erreurs dans la définition des interfaces ou des incohérences dans le système dues à la décentralisation du contrôle.

Le premier type d’erreur peut entraîner une mauvaise utilisation d’un composant par un autre. Pour éviter ces erreurs, la spécification des interfaces doit être la plus complète possible. Cette spécification pouvant être exprimée sous forme de contrats dans un cadre OO, la seconde contribution majeure présentée dans cette thèse consiste à étudier l’impact des contrats sur deux facteurs de qualité d’un logiciel : la robustesse (capacité d’un logiciel à détecter une erreur interne) et la diagnosabilité (facilité pour la localisation d’une erreur) [Baudry''01a; Le Traon''03].

Le second type d’erreur pouvant se produire lors de l’intégration est dû au contrôle largement réparti à travers le système dans les logiciels orientés objet. En effet, l’utilisation importante de certains mécanismes objets tels que le polymorphisme et la délégation, entraîne l'emploi d’un grand nombre d’objets pour exécuter une fonctionnalité. Dans ce cas, des erreurs peuvent se produire lors de l’utilisation de certains objets distants du système par d’autres objets. La troisième point abordé au cours de cette thèse est donc l’étude d’un critère de test pour assurer l’intégration d’un assemblage de composants, ainsi qu’une mesure de complexité associée à ce critère permettant de prévoir la testabilité d’un assemblage. Les études de la testabilité de systèmes orientés objet ont été publiées dans [Baudry''01b; Baudry''02a; Baudry''03].

Ces trois contributions peuvent être classées suivant deux dimensions indépendantes et complémentaires : soit dans une perspective conception/validation, soit par un découpage composant/assemblage de composants.

Le premier aspect (conception/validation) consiste à répartir les travaux entre ceux qui traitent de la validation (côté « curatif ») et ceux qui traitent de la conception (côté « préventif »). Dans une répartition suivant cet aspect, les deux premières contributions peuvent être regroupées dans la catégorie validation, puisqu’elles concernent l’étude des composants autotestables (approche pragmatique préconisée dans l’équipe Triskell). La troisième contribution, concerne l’étude de propriétés d’un système qui peuvent être observés dés les premières phases de la conception (côté « préventif »).

Le second aspect (composant/assemblage) réparti les travaux entre ceux qui se concentrent sur un composant unitaire et ceux qui étudient le comportement d’un assemblage de composants. Avec cette seconde répartition, la première contribution apparaît seule, puisqu’elle concerne la génération et l’optimisation automatique de cas de test pour un composant isolé. Par ailleurs, les deux autres contributions concernant l’étude du comportement d’un assemblage de composants vis-à-vis du test, sont alors regroupées suivant cet aspect.

Ainsi, il apparaît que, même si ces contributions sont clairement trois facettes d’un même problème, elles peuvent être présentées suivant différents points de vue, rendant l’articulation de ce document parfois difficile. Dans la suite, nous essayons d’être le plus précis possible, et de resituer, si nécessaire, les différents points en fonction de ces deux aspects.

La suite de ce document est organisée de la manière suivante :

Le chapitre 2 rappelle les principes généraux pour le test de logiciel, puis présente l’état de l’art du test pour les programmes orientés objet. Au cours de ce chapitre, nous introduisons aussi une méthode pour la conception de composants logiciels fiables : les composants autotestables. Enfin, nous détaillons les travaux existant sur les points précis abordés dans cette thèse : la génération automatique de test, les assertions pour le test de logiciel et la testabilité.

Le chapitre 3 se concentre sur l’étude d’un algorithme génétique pour résoudre le problème de l’optimisation et la génération automatique de cas de test. Les résultats expérimentaux montrant une convergence trop lente, et discontinue, nous proposons un algorithme original, mieux adapté à la génération d’un ensemble de cas de test. Nous appelons cet algorithme un algorithme bactériologique, et validons son efficacité expérimentalement.

Le chapitre 4 concerne l’étude d’un autre aspect de la méthode : la conception par contrat (design by contract). Nous étudions ici l’impact de cette technique pour la détection et la localisation d’erreur. Les mesures de robustesse et de diagnosabilité sont définies pour évaluer cet impact, et les facteurs influençant ces mesures sont calibrés par plusieurs expériences. Les résultats valident à la fois l’approche par contrat et l’intérêt des composants autotestables pour augmenter la confiance dans le composant.

Le chapitre 5 présente le dernier point étudié dans cette thèse : la testabilité d’un assemblage de composants. Nous proposons un critère de test pour la couverture d’interactions entre objets, ainsi qu’une mesure de complexité associée. Ce critère peut être évalué sur un diagramme de classes, et permet ainsi d’avoir une mesure prédictive sur la qualité de l’implantation. Nous présentons aussi une méthode pour l’amélioration de la testabilité d’un programme à partir du diagramme de classes. Enfin, au cours de cette étude nous nous concentrons sur les design patterns comme un sous-ensemble cohérent dans un diagramme de classes pour l’analyse de testabilité à un niveau local. Nous proposons une analyse détaillée de la testabilité de l’application de designs patterns ; quels problèmes classiques de testabilité peuvent être résolus, et quels sont les nouveaux points complexes pour le test.

Enfin, le chapitre 6 conclut cette thèse et trace un panorama des principales pistes de recherche et perspectives qui se dégagent à partir de ces travaux.
1   2   3   4   5   6   7   8   9   ...   28

similaire:

THÈse présentée iconThèse Présentée à la Faculté de Pharmacie de Montpellier

THÈse présentée iconThèse présentée pour l’obtention du grade de Docteur

THÈse présentée iconThèse soutenue publiquement par Sang-Ha suh le 10 Juillet 2006
«avec projection», de cette thèse aux membres du Conseil scientifique et à leurs expliquer pourquoi cette thèse ne devait pas être...

THÈse présentée iconThèse soutenue publiquement par Sang-Ha S. le 10 Juillet 2006 Le...
«avec projection», de cette thèse aux membres du Conseil scientifique et à leurs expliquer pourquoi cette thèse ne méritait pas d’être...

THÈse présentée iconQuestionnaire sur les Cathédrales Quelle est le nom de la cathédrale...

THÈse présentée iconCommuniqué de presse
«L’homme et la matièRE» de Don Darby que l’année prenait son envol. L’exposition est présentée à la Salle Principale du cne jusqu’au...

THÈse présentée iconCatégorie de Grand Prix présentée (cocher la case correspondante)
«Les Grands Prix simi immobilier de Bureaux» du 17 juin au Vendredi 7 octobre 2016

THÈse présentée iconThèse

THÈse présentée iconCommuniqué de presse
«Komuna Fundamento» présentée lors de la xiiie exposition internationale d’architecture «Common Ground» qui se déroule dans le cadre...

THÈse présentée iconAutomne 2013 plan de cours
«Unified», combinée à l'apprentissage du langage uml, est présentée et mise en pratique dans un projet de conception et d'implantation...








Tous droits réservés. Copyright © 2016
contacts
ar.21-bal.com