Évaluation Qualitative et Quantitative d'Outils de ...keller/Publications/Theses/msc-bassil.pdf ·...

148

Transcript of Évaluation Qualitative et Quantitative d'Outils de ...keller/Publications/Theses/msc-bassil.pdf ·...

Université de Montréal

Évaluation Qualitative et Quantitative d’Outils de Visualisation Logicielle

par

Sarita Bassil

Département d’Informatique et de Recherche Opérationnelle

Faculté des Arts et des Sciences

Mémoire présenté à la Faculté des Études Supérieuresen vue de l’obtention du grade de

Maître ès Sciences (M.Sc.)en informatique

Décembre, 2000

� Sarita Bassil, 2000

Université de MontréalFaculté des Études Supérieures

Ce mémoire intitulé:

Évaluation Qualitative et Quantitative d’Outils de Visualisation Logicielle

présenté par:

Sarita Bassil

a été évalué par un jury composé des personnes suivantes:

Président-rapporteur: François Lustman

Directeur de recherche: Rudolf K. Keller

Membre du jury: Houari Sahraoui

Mémoire accepté le: ___________________________

Sommaire

De nos jours, plusieurs techniques et outils de visualisation logicielle (VL) sont rendus

disponibles pour aider les développeurs entre autres à bien “comprendre” leurs logiciels.

Il existe suffisamment de preuve anecdotique qu’une présentation claire et visuelle d’un

logiciel peut réduire, de façon significative, l’effort dépensé sur sa compréhension et sa

maintenance. Cependant, à notre connaissance, aucune enquête quantitative au sujet des

outils de VL n’a jamais été conduite.

Dans ce mémoire, nous avons commencé par identifier un ensemble d’outils de VL que

nous avons décrit puis évalué de façon qualitative en se basant sur une taxonomie bien

particulière, celle de Price et al. Ensuite, une évaluation quantitative a été effectuée. En

effet, une enquête sur les outils de VL a été conduite au printemps 2000 avec plus de

100 participants. Un questionnaire a donc été mis on-line; il adressait divers aspects

fonctionnels, pratiques et cognitifs ainsi que des aspects liés à l’analyse de code que les

utilisateurs peuvent rechercher dans des outils de VL. Les participants de l’enquête ont

évalué l’utilité et l’importance de ces aspects. Ils ont aussi proposé de nouveaux aspects.

Ils étaient en général satisfaits de l’outil de VL qu’ils utilisaient. Néanmoins, une

différence entre les aspects souhaités et la présence de ces aspects dans les outils de VL

actuels a été identifiée. En outre, une liste d’améliorations qui devraient être apportées

aux outils a été rassemblée. Bref, des résultats fort intéressants ont été trouvés à partir de

la collecte de données. L’emphase a surtout été mise sur l’analyse et la discussion des

résultats liés aux différentes parties, sections et questions du questionnaire.

Mots clés: génie logiciel, outil de visualisation logicielle, évaluation qualitative,

enquête, questionnaire, compréhension de logiciel, analyse de code source.

Abstract

Recently, many software visualization (SV) techniques and tools have become available

to developers in order to help them understand their software. There is ample anecdotal

evidence that appropriate visualization can significantly reduce the effort spent on

system comprehension and maintenance, yet we are not aware of any quantitative

investigation and survey of SV tools.

In this thesis, firstly, we identified a list of SV tools that we described, and evaluated

qualitatively using the taxonomy of Price et al. Then, a quantitative evaluation was

conducted in spring 2000 with more than 100 participants. Indeed, a questionnaire was

put on-line; it addresses various functional, practical, cognitive as well as code analysis

aspects that users may be looking for in SV tools. The participants of the survey rated

the usefulness and importance of these aspects, and came up with aspects of their own.

The participants were in general quite pleased with the SV tool they were using and

mentioned various benefits. Nevertheless, a big gap between desired aspects and the

features of current SV tools was identified. In addition, a list of improvements that

should be done to current tools was assembled. In brief, the collected data suggest

interesting results. We especially put the emphases on the analysis and the discussion of

the results related to the various parts, sections and questions of the questionnaire.

Keywords: software engineering, software visualization tool, qualitative evaluation,

survey, questionnaire, software comprehension, source code analysis.

Table des matières

SOMMAIRE ----------------------------------------------------------------------------------------------------------III

ABSTRACT----------------------------------------------------------------------------------------------------------- IV

TABLE DES MATIÈRES------------------------------------------------------------------------------------------- V

LISTE DES TABLEAUX-----------------------------------------------------------------------------------------VIII

LISTE DES FIGURES---------------------------------------------------------------------------------------------- IX

REMERCIEMENTS ------------------------------------------------------------------------------------------------XI

CHAPITRE 1. INTRODUCTION----------------------------------------------------------------------------------1

1.1 MOTIVATION ------------------------------------------------------------------------------------------------------11.2 CONTEXTE DE CE TRAVAIL --------------------------------------------------------------------------------------11.3 PROBLÉMATIQUE ET APPROCHE DE RECHERCHE -------------------------------------------------------------21.4 STRUCTURE DU MÉMOIRE ---------------------------------------------------------------------------------------31.5 CONTRIBUTIONS PRINCIPALES ----------------------------------------------------------------------------------4

CHAPITRE 2. ÉTAT DE L’ART-----------------------------------------------------------------------------------7

2.1 INTRODUCTION ----------------------------------------------------------------------------------------------------72.2 DÉFINITION DE LA VL--------------------------------------------------------------------------------------------82.3 POSITION DE LA VL PAR RAPPORT AUX AUTRES DOMAINES --------------------------------------------- 102.4 HISTORIQUE DE LA VL----------------------------------------------------------------------------------------- 122.5 TAXONOMIES LIÉES À LA VL---------------------------------------------------------------------------------- 132.6 VL ET COMPRÉHENSION DE PROGRAMME------------------------------------------------------------------- 152.7 RECHERCHES EN VL-------------------------------------------------------------------------------------------- 162.8 CONCLUSION ---------------------------------------------------------------------------------------------------- 18

CHAPITRE 3. INVENTAIRE D’OUTILS DE VL------------------------------------------------------------ 19

3.1 INTRODUCTION -------------------------------------------------------------------------------------------------- 193.2 IDENTIFICATION D’OUTILS DE VL---------------------------------------------------------------------------- 203.3 OUTILS DE VL RETENUS --------------------------------------------------------------------------------------- 22

3.3.1 Software understanding system (xSuds) ---------------------------------------------------------- 223.3.1.1 Démonstration de xAtac------------------------------------------------------------------------------------- 233.3.1.2 Démonstration de xVue ------------------------------------------------------------------------------------- 26

3.3.2 Tom Sawyer Graph Layout Toolkit & Graph Editor Toolkit----------------------------------- 273.3.3 Discover ---------------------------------------------------------------------------------------------- 293.3.4 Visualizing Graphs with Java (VGJ) -------------------------------------------------------------- 293.3.5 daVinci ------------------------------------------------------------------------------------------------ 303.3.6 Swan--------------------------------------------------------------------------------------------------- 30

vi

3.3.7 Visualization of Compiler Graphs (VCG) & Call Graph Drawing Interface (CGDI)------ 323.3.7.1 Démonstration du CGDI ------------------------------------------------------------------------------------ 32

3.4 CONCLUSION ---------------------------------------------------------------------------------------------------- 33

CHAPITRE 4. ÉVALUATION QUALITATIVE D’OUTILS DE VL------------------------------------- 35

4.1 INTRODUCTION -------------------------------------------------------------------------------------------------- 354.2 DESCRIPTION DE LA TAXONOMIE DE PRICE ET AL. --------------------------------------------------------- 36

4.2.1 Catégorie Scope ------------------------------------------------------------------------------------- 364.2.2 Catégorie Content ----------------------------------------------------------------------------------- 364.2.3 Catégorie Form -------------------------------------------------------------------------------------- 374.2.4 Catégorie Method ----------------------------------------------------------------------------------- 384.2.5 Catégorie Interaction ------------------------------------------------------------------------------- 384.2.6 Catégorie Effectiveness ----------------------------------------------------------------------------- 39

4.3 ÉVALUATION DE SEPT OUTILS DE VL ------------------------------------------------------------------------ 394.3.1 Éléments retenus - Catégorie Scope--------------------------------------------------------------- 404.3.2 Éléments retenus - Catégorie Content ------------------------------------------------------------ 414.3.3 Éléments retenus - Catégorie Form --------------------------------------------------------------- 424.3.4 Éléments retenus - Catégorie Method------------------------------------------------------------- 434.3.5 Éléments retenus - Catégorie Interaction -------------------------------------------------------- 434.3.6 Éléments retenus - Catégorie Effectiveness ------------------------------------------------------ 44

4.4 CONCLUSION ---------------------------------------------------------------------------------------------------- 44

CHAPITRE 5. ENQUÊTE SUR LES OUTILS DE VL ------------------------------------------------------ 46

5.1 INTRODUCTION -------------------------------------------------------------------------------------------------- 465.2 DESCRIPTION DU QUESTIONNAIRE SUR LES OUTILS DE VL ----------------------------------------------- 47

5.2.1 Description de la partie I --------------------------------------------------------------------------- 485.2.1.1 Renseignements concernant le participant ---------------------------------------------------------------- 485.2.1.2 Renseignements sur les systèmes logiciels visualisés --------------------------------------------------- 495.2.1.3 Aspects fonctionnels des outils de VL -------------------------------------------------------------------- 505.2.1.4 Aspects pratiques des outils de VL ------------------------------------------------------------------------ 525.2.1.5 Évaluation cognitive de l’outil de VL en main----------------------------------------------------------- 535.2.1.6 Bénéfices et améliorations de l’outil de VL en main ---------------------------------------------------- 54

5.2.2 Description de la partie II -------------------------------------------------------------------------- 545.2.2.1 Renseignements techniques sur l’outil de VL en main-------------------------------------------------- 545.2.2.2 Support de l’analyse du code par l’outil de VL en main ------------------------------------------------ 55

5.3 CONCLUSION ---------------------------------------------------------------------------------------------------- 57

CHAPITRE 6. CONCEPTION TECHNIQUE DU QUESTIONNAIRE --------------------------------- 59

6.1 INTRODUCTION -------------------------------------------------------------------------------------------------- 596.2 GÉNÉRATION DES FICHIERS HTML -------------------------------------------------------------------------- 596.3 PROGRAMMATION JAVASCRIPT ------------------------------------------------------------------------------ 626.4 PROGRAMMATION CGI ET PRÉPARATION DES DONNÉES-------------------------------------------------- 636.5 CONCLUSION ET DISCUSSION---------------------------------------------------------------------------------- 65

CHAPITRE 7. ANALYSE DE L’ENQUÊTE ------------------------------------------------------------------ 67

7.1 INTRODUCTION -------------------------------------------------------------------------------------------------- 677.2 COLLECTE DE DONNÉES ET ANALYSE ------------------------------------------------------------------------ 687.3 ANALYSE DE LA PARTIE I -------------------------------------------------------------------------------------- 69

7.3.1 Distribution des participants----------------------------------------------------------------------- 697.3.2 Caractéristiques des SLV --------------------------------------------------------------------------- 707.3.3 Aspects fonctionnels d’outil de VL ---------------------------------------------------------------- 71

7.3.3.1 Utilité des aspects fonctionnels----------------------------------------------------------------------------- 727.3.3.2 Facteurs d’influence sur l’utilité d’aspects fonctionnels ------------------------------------------------ 737.3.3.3 Relations entre les aspects fonctionnels------------------------------------------------------------------- 75

7.3.4 Aspects pratiques des outils de VL ---------------------------------------------------------------- 757.3.4.1 Importance des aspects pratiques -------------------------------------------------------------------------- 767.3.4.2 Facteurs d’influence sur l’importance d’aspects pratiques --------------------------------------------- 76

vii

7.3.5 Évaluation cognitive d’outils de VL--------------------------------------------------------------- 787.3.6 Bénéfices et améliorations des outils de VL------------------------------------------------------ 79

7.4 ANALYSE DE LA PARTIE II ------------------------------------------------------------------------------------- 807.4.1 Aspects techniques des outils de VL--------------------------------------------------------------- 807.4.2 Support de l’analyse du code par l’outil de VL-------------------------------------------------- 82

7.4.2.1 Traitement de réponses multiples -------------------------------------------------------------------------- 827.4.2.2 Résultats pour le support de l’analyse du code----------------------------------------------------------- 83

7.5 DISCUSSION ET PERSPECTIVES -------------------------------------------------------------------------------- 857.5.1 Améliorations du questionnaire ------------------------------------------------------------------- 857.5.2 Résumé et impact des trouvailles ------------------------------------------------------------------ 86

CHAPITRE 8. CONCLUSION ----------------------------------------------------------------------------------- 89

8.1 SYNTHÈSE-------------------------------------------------------------------------------------------------------- 898.1.1 Inventaire d’outils de VL et évaluation qualitative---------------------------------------------- 898.1.2 Évaluation quantitative ----------------------------------------------------------------------------- 90

8.2 TRAVAUX FUTURS ---------------------------------------------------------------------------------------------- 91

BIBLIOGRAPHIE--------------------------------------------------------------------------------------------------- 93

ANNEXE A. DESCRIPTION DE LA TAXONOMIE DE PRICE ET AL. -------------------------------- I

ANNEXE B. ÉVALUATION DE SEPT OUTILS DE VL -------------------------------------------------- IX

ANNEXE C. QUESTIONNAIRE SUR LES OUTILS DE VL ---------------------------------------- XVIII

ANNEXE D. TECHNIQUES STATISTIQUES-------------------------------------------------------- XXXIII

Liste des tableaux

TABLEAU 1. LISTE DES 30 OUTILS DE VL IDENTIFIÉS. --------------------------------------------------- 21

TABLEAU 2. ASPECTS FONCTIONNELS DES OUTILS DE VL. ------------------------------------------- 51

TABLEAU 3. ASPECTS PRATIQUES DES OUTILS DE VL.-------------------------------------------------- 52

TABLEAU 4. RÉPARTITION DES 24 SOUS-ASPECTS DE L’ANALYSE DU CODE PAR ASPECT.

------------------------------------------------------------------------------------------------------------------------ 56

TABLEAU 5. DÉPENDANCES ENTRE LES SOUS-ASPECTS DU SUPPORT DE L’ANALYSE DU

CODE. --------------------------------------------------------------------------------------------------------------- 57

Liste des figures

FIGURE 1. DIAGRAMME DES TERMES LIÉES À LA VL (STRUCTURE PROPOSÉE DANS

[PRICE93]).--------------------------------------------------------------------------------------------------------- 11

FIGURE 2. DIAGRAMME DES TERMES LIÉES À LA VL (STRUCTURE PROPOSÉE DANS

[YOUNG96]). ------------------------------------------------------------------------------------------------------ 12

FIGURE 3. XATAC AFFICHANT LES DEUX FICHIERS MAIN.ATAC ET WC.ATAC.---------------- 24

FIGURE 4. XATAC AFFICHANT MAIN.ATAC ET WC.ATAC APRÈS OUVERTURE DU FICHIER

WORDCOUNT.TRACE.----------------------------------------------------------------------------------------- 24

FIGURE 5. UN RÉSUMÉ PAR FICHIER DE LA COUVERTURE DES BLOCS DANS XATAC.------ 25

FIGURE 6. UN RÉSUMÉ PAR TEST DE LA COUVERTURE DES BLOCS DANS XVUE. ------------ 26

FIGURE 7. SPÉCIFICATION D’UNE CARACTÉRISTIQUE DANS XVUE. ------------------------------- 26

FIGURE 8. PASSAGE DE LA FENÊTRE DES HEURISTIQUES À CELLE DE LA VISUALISATION

DU CODE SOURCE. --------------------------------------------------------------------------------------------- 27

FIGURE 9. UNE SÉANCE DE DÉMONSTRATION DU CGDI. ----------------------------------------------- 33

FIGURE 10. UTILITÉ DES ASPECTS FONCTIONNELS (REPRÉSENTÉE EN %).---------------------- 72

FIGURE 11. UTILITÉ DES ASPECTS FONCTIONNELS (REPRÉSENTÉE PAR UNE MOYENNE, EN

ORDRE DÉCROISSANT). -------------------------------------------------------------------------------------- 72

FIGURE 12. IMPORTANCE DES ASPECTS PRATIQUES, EN CONSIDÉRANT

L’ENVIRONNEMENT DE TRAVAIL (REPRÉSENTÉE PAR UNE MOYENNE, EN ORDRE

DÉCROISSANT PAR RAPPORT À LA COMPAGNIE). ------------------------------------------------- 77

A mes très chers Jean, Colette et Joanna

pour leur amour et soutien…

Remerciements

Mes plus grands remerciements reviennent à Monsieur Rudolf K. Keller, professeur à

l’Université de Montréal, pour m’avoir donné l’occasion de faire partie de l’équipe du

projet SPOOL, ainsi que pour avoir supervisé cette recherche. Sa grande disponibilité, sa

persévérance, son souci du détail ainsi que son encouragement m’ont beaucoup aidée

tout le long de ce travail. Que ce mémoire soit le modeste témoignage de ma

reconnaissance et de mon admiration.

Je remercie vivement chacun des 107 participants d’avoir rempli le questionnaire sur les

outils de visualisation logicielle. Je suis également reconnaissante envers les personnes

qui m’ont aidée à distribuer l’URL du questionnaire partout dans le monde. De plus, je

remercie mes collègues dans le groupe GÉLO (GÉnie LOgiciel) ainsi que dans CSER

(Consortium for Software Engineering Research), en particulier Janice Singer du CNR

(Conseil National de Recherche) Ottawa, qui m’a aidée à améliorer les premières

versions du questionnaire.

Enfin, je tiens à remercier mes parents et ma sœur qui m’ont toujours supportée, surtout

dans les moments les moins faciles. Trouvez ici l’expression de ma profonde gratitude…

Chapitre 1. Introduction

1.1 Motivation

De nos jours, les systèmes logiciels sont de plus en plus grands et complexes, et leur

développement et maintenance demandent la collaboration de plusieurs personnes. Ceci

rend les tâches de programmation, de compréhension et de modification du logiciel de

plus en plus difficiles, surtout lorsque le travail s’effectue sur le code de quelqu’un

d’autre. Par conséquent, des outils qui supportent ces tâches sont devenus essentiels. Un

aspect clé d’un tel support est la Visualisation Logicielle (VL). De nos jours, beaucoup

de techniques et d’outils de VL sont disponibles aux développeurs1 pour les aider entre

autres à bien “comprendre” leurs logiciels. Il peut s’agir d’outils d’analyse, de

conception, de test, de débogage ou encore de maintenance. En génie logiciel, il existe

suffisamment de preuve anecdotique qu’une présentation claire et visuelle d’un logiciel

peut réduire, de façon significative, l’effort de sa compréhension. Harel, par exemple,

déclare que “l’utilisation de formalismes visuels appropriés peut avoir un effet

spectaculaire sur des ingénieurs et des programmeurs.” [Harel92]. Cependant, à notre

connaissance, aucune enquête quantitative au sujet des outils de VL n’a été conduite.

1.2 Contexte de ce travail

Dans le projet SPOOL (Spreading desirable Properties into the design of Object-

Oriented, Large-scale software systems), une collaboration entre l’équipe de l’évaluation

de la qualité logicielle chez Bell Canada et le groupe GÉLO (Génie Logiciel) de

1 Dans le présent mémoire, le masculin désigne aussi le féminin.

2

l’Université de Montréal, nous nous intéressons principalement à identifier des concepts

et des outils pour évaluer et améliorer la conception de systèmes logiciels à grande

échelle. C’est pourquoi, dans le cadre de ce projet, un environnement de rétro-ingénierie

a été développé pour fournir l’infrastructure informatique nécessaire à l’étude des

activités de maintenance, d’évaluation et de compréhension de ces systèmes. Cet

environnement comporte différents outils d’analyse et de visualisation et supporte de

telles activités en ayant recours à des patrons de conception [Keller99, Robitaille00,

Schauer98]. L’étude présentée dans le cadre de ce mémoire a pour but d’inscrire le

projet SPOOL dans une perspective plus large, et de fournir à Bell Canada des

informations qualitatives et quantitatives, via une enquête, sur des techniques et outils de

VL commerciaux et académiques.

1.3 Problématique et approche de recherche

La compagnie de télécommunication Bell Canada dépense chaque année plusieurs

centaines de millions de dollars pour l’achat et la maintenance de systèmes logiciels de

grande taille. Étant donnée la croissance rapide du domaine des télécommunications,

Bell Canada veut être sure que les logiciels en question répondent à certains critères de

qualité en vue de les entretenir et d’y rajouter de nouvelles fonctionnalités facilement.

Par conséquent, l’équipe de l’évaluation de la qualité logicielle chez Bell Canada utilise

plusieurs techniques et outils pour évaluer ces systèmes avant leur achat, mais aussi

pendant toutes les phases de leur évolution. Les membres de cette équipe utilisent

plusieurs sortes d’outils (des outils graphiques, des outils de calculs de métriques, etc.)

pour faire l’étude de ces systèmes. Certains de ces outils sont considérés comme étant

des outils de VL qui facilitent, entre autres, la compréhension de systèmes. Ils utilisent

donc ces outils sans pour autant avoir une vision plus large des autres techniques et

outils de VL existants que ce soit dans le milieu commercial ou même dans le milieu

académique. Ils souhaitent donc avoir une liste exhaustive de ces outils, avec en quelque

sorte, une évaluation qualitative de certains d’entre eux, ainsi qu’une évaluation

quantitative dans laquelle l’opinion des utilisateurs sera surtout recherchée.

3

Conduit surtout par le besoin de l’équipe de l’évaluation de la qualité logicielle chez

Bell Canada, l’approche de recherche que nous avons adoptée vise donc à identifier un

certain nombre d’outils de VL et à les évaluer de deux façons différentes. Nous allons

donc commencer cette étude par identifier et évaluer de façon qualitative des techniques

et des outils de VL qui prétendent réduire l’effort de l’évaluation et de la compréhension

de logiciel. Nous allons nous baser sur la taxonomie de Price et al. [Price93] pour ainsi

évaluer qualitativement l’ensemble des outils de VL identifiés. Ensuite, comme

deuxième étape, nous devons créer un catalogue de propriétés, désirables ou non, de

techniques et d’outils de VL en nous inspirant des travaux déjà effectués dans le

domaine de la VL et surtout des taxonomies existantes. A partir de ce catalogue, il va

falloir créer une enquête dans laquelle nous questionnerons les utilisateurs de techniques

et d’outils de VL sur leurs perceptions, sur ce qui a marché et ce qui n’a pas marché lors

de l’application de la technique ou de l’outil en main.

1.4 Structure du mémoire

Le chapitre suivant présente l’état de l’art lié à la VL en général. Il commence par

définir le terme “Visualisation Logicielle”, il discute ensuite la position de la VL par

rapport à d’autres domaines tels que la visualisation d’algorithme, la visualisation de

programme, etc. Un résumé de l’historique de la VL est donné avant de présenter un

survol des différentes taxonomies liées à la VL. Ce chapitre discute aussi le lien qui

existe entre cette dernière et le grand domaine de la compréhension logicielle. Enfin, il

présente les recherches qui existent dans le domaine de la VL.

Le chapitre 3 commence par donner un inventaire des outils de VL que nous avons

identifiés. Il expose ensuite l’ensemble des outils que nous avons retenus tout en les

décrivant de façon brève. Deux démonstrations de deux outils seront aussi fournies.

Les outils retenus aux chapitres 3 seront évalués qualitativement au chapitre 4. Une

description rapide de la taxonomie de Price et al. [Price93] sera fournie au départ (une

description plus complète est donnée à l’annexe A). Ensuite, les points les plus

4

intéressants de l’évaluation des outils utilisant la taxonomie déjà décrite seront exposés

(l’annexe B donne cette évaluation au complet).

Le chapitre 5 décrit les différentes questions des deux parties du questionnaire2 sur les

outils de VL. Une version “papier” du questionnaire est donnée à l’annexe C.

Le chapitre 6 expose la conception technique du questionnaire qui a été mis on-line, en

discutant d’une part, la génération des fichiers HTML, et d’autre part, la programmation

en JavaScript et Perl (CGI) pour le contrôle et la collecte des données.

Le chapitre 7 présente les résultats de notre enquête dont le contenu et la conception

technique ont été décrits aux deux chapitres précédents. Dans ce chapitre, nous mettrons

surtout l’emphase sur l’analyse et la discussion des résultats liés aux différentes parties,

sections et questions du questionnaire. Quelques-unes des améliorations que peuvent

être apportées au questionnaire seront discutées, avant de résumer les résultats

principaux de cette enquête ainsi que leur impact que ce soit sur les constructeurs

d’outils de VL ou bien sur la communauté des chercheurs dans le domaine de la VL.

L’annexe D est liée à ce chapitre. Elle explique de façon brève les différentes techniques

statistiques auxquelles ce chapitre fait référence.

Finalement, le chapitre 8 résume brièvement ce travail, et une discussion des travaux

futurs conclut ce mémoire.

1.5 Contributions principales

Deux contributions majeures sont le fruit de ce travail. Une première contribution

concerne le projet SPOOL en tant que tel et l’équipe de l’évaluation de la qualité

logicielle chez Bell Canada, quant à la deuxième contribution, elle concerne la

2 Le questionnaire est disponible on-line, en anglais ou en français, à l’adresse suivante:

<http://www.iro.umontreal.ca/labs/gelo/sv-survey/questionnaire.html>.

5

communauté des personnes qui s’intéressent au domaine de la VL et surtout aux outils

de VL.

En effet, le travail présenté dans ce mémoire apporte au projet SPOOL une perspective

plus large quant aux outils de VL existants que ce soit sur le marché ou bien en tant que

prototype de recherche. En fait, les membres de l’équipe de l’évaluation de la qualité

logicielle chez Bell Canada se sont rendus compte de quelques nouveaux outils de VL

forts intéressants qu’ils ne connaissaient pas avant cette étude. Se basant sur les résultats

de notre enquête, ils ont aussi pu comparer les caractéristiques qu’offrent – ou non – les

outils de VL d’aujourd’hui et l’intérêt que des utilisateurs réels de ces outils accordent à

de tels caractéristiques. En combinant ces informations, l’enquête permet de retirer de

façon ciblée des informations quant aux versions actuelles des outils de VL ainsi que de

les comparer aux besoins réels des utilisateurs de tels outils. Bref, une approche basée

sur un questionnaire n’a guère été employée auparavant pour recueillir des informations

sur des outils de VL, et voilà qu’elle promet maintenant d’ouvrir de nouvelles

possibilités pour concevoir des questionnaires plus spécifiques, liés à des types bien

particuliers d’outils de VL.

Bien sûr, nous estimons que cette recherche et les résultats obtenus seront aussi utiles

au-delà du projet SPOOL, et ceci au moins de quatre façons différentes. D’abord,

l’évaluation qualitative effectuée peut aider les personnes intéressées en leur donnant un

exemple sur comment utiliser une taxonomie bien particulière pour évaluer les outils de

VL de nos jours. Ensuite, la liste de souhaits et les problèmes exprimés par les

participants à l’enquête donneront à des constructeurs d’outil de VL des informations

valables pour de futures versions de leurs produits. En outre, les acheteurs éventuels et

les utilisateurs d’outils de VL peuvent consulter les deux listes exhaustives d’outils de

VL (tableau 1 de la section 3.2 et liste on-line des outils de VL3) couverts par cette étude

et employer le questionnaire pour effectuer leurs propres évaluations. Enfin, les

3 Une liste complète des noms et références web des outils de VL pour lesquels nous avons reçu une ou

plusieurs réponses au questionnaire peut être trouvée à l’adresse suivante: <http://www.iro.umontreal.ca

/labs/gelo/sv-survey/list-of-tools.html>.

6

imperfections et les limitations de la technologie actuelle de VL comme indiquées par

l’enquête peuvent définir une liste de points pour des recherches plus poussées dans le

domaine.

Différents aspects de ce travail ont déjà donnée lieu à trois rapports techniques

[Bassil00a, Bassil00b, Bassil00c] à l’intérieur du laboratoire GÉLO et de Bell Canada,

ainsi qu’à la publication d’un article au congrès international IWPC’2001 (International

Workshop on Program Comprehension) [Bassil01].

Chapitre 2. État de l’art

2.1 Introduction

La VL se trouve être l’un des domaines de recherche qui tente d’aider à la

compréhension de programme. Elle se base sur le fait que le cerveau humain est en

mesure d’identifier, de manipuler et de traiter des images de façon fructueuse. Lire un

texte est un cas spécial du traitement visuel. Le cerveau abstrait chaque caractère (ou

mot) en une représentation interne. Nous trouverons dans la littérature liée à la

compréhension de programme les mots techniques relatifs aux représentations internes

ainsi que les descriptions qui leur sont associées. À titre d’exemple, les beacons

[Brooks83] et les chunks [Shneiderman80] sont des représentations internes de

structures textuelles de bas niveau.

Cette aide à la compréhension est rendue possible par la VL en présentant à

l’observateur (viewer) une image d’un logiciel comportant des informations complexes.

Ainsi, l’observateur pourra rapidement générer un modèle mental initial du logiciel et

utiliser ceci comme une base pour pousser plus loin son étude de ce logiciel. Bref, la VL

est souvent associée à des domaines de génération et de manipulation d’images. Ces

images ne sont pas nécessairement de nature graphique. C’est ce que nous allons

discuter plus loin dans ce chapitre, à la fin de la section 2.2.

Avant d’aborder l’étude effectuée sur les outils de VL, plusieurs questions se posent, et

nécessitent une revue de la littérature liée à la VL. Plusieurs définitions formelles de la

VL ont été proposées dans la littérature. Un résumé de ces définitions sera exposé à la

8

section suivante. Les sections 2.3 à 2.7 répondront respectivement aux questions liées à

la position de la VL par rapport aux autres domaines, tel que la visualisation de

programme, l’animation d’algorithme, etc. (section 2.3), à son historique (section 2.4),

aux taxonomies qui lui sont associées (section 2.5), à son lien avec la compréhension de

programme (section 2.6), et finalement, à l’état actuel des recherches dans ce domaine

(section 2.7).

2.2 Définition de la VL

Plusieurs chercheurs dans le domaine de la VL ont essayé de définir ce terme. Une

sélection représentative de ces définitions sera présentée dans les paragraphes qui

suivent. Malheureusement, la VL reste un terme vague, englobant presque toutes les

formes de visualisation liées à la représentation de n’importe quel aspect d’un système

logiciel. Un certain nombre de domaines plus spécialisés, comme la visualisation de

programme, l’animation d’algorithmes, la programmation visuelle, et la visualisation de

calcul (computation visualisation) ont évolué sous l’apparence de la VL. Leur position

par rapport à cette dernière sera présentée à la section suivante (2.3). Toutefois, un

aperçu des définitions et des interprétations liées à la visualisation de programme et à la

VL est présenté dans cette section. Cet aperçu regroupe les définitions que nous jugeons

les plus représentatives parmi une grande variété offerte dans la littérature. Tout compte

fait, nous exposons à la fin de cette section, la définition que nous retenons pour ce

travail. Celle-ci sera raffinée au chapitre 3.

Les débuts de la VL étaient axés sur la “Visualisation de Programme” (VP) qui est de

nos jours considérée comme un sous-domaine du grand domaine de la VL. En 1990,

Myers [Myers90] donne une définition de l’expression VP. Il précise que la VP utilise le

graphisme pour illustrer certains aspects du programme ou bien de son exécution; le

programme étant spécifié de façon conventionnelle (textuelle). En 1992, Roman et Cox

[Roman92] re-définissent la VP en mentionnant que, bien qu’elle fasse appel à des

représentations graphiques, la surveillance et l’exploration du programme seront

exprimées sous forme textuelle. Un an plus tard [Roman93], ces deux mêmes personnes

introduisent dans leur définition de la VP le terme “mapping”: “La VP est un mapping,

9

ou bien une transformation, d’un programme en une représentation graphique.” Encore

une fois, en 1995, Kings [Kings95] précise dans sa définition que la VP est la

représentation de code source, et d’autres documents, de façon graphique; alors que

Jerding et Stasko [Jerding94] affirment que la VP utilise non simplement le graphisme

mais aussi l’animation pour ainsi décrire et illustrer visuellement les logiciels et leurs

fonctions.

Une chose sur laquelle tous les chercheurs semblent être d’accord est le fait que la VP

forme un sous-ensemble du domaine connu sous le nom de la VL. Selon Stasko

[Stasko93], la VL illustre des processus informatiques et des données en plus des

programmes réguliers, alors que la VP illustre les structures de données, l’état du

programme et le code du programme.

Nous présentons trois autres définitions de la VL. La première provient de Domingue et

al. [Domingue92]: “La VL décrit des systèmes qui utilisent des médias visuels (et

autres), et ceci pour augmenter la compréhension d’un programmeur du travail effectué

par une autre personne (ou bien par lui-même).” La deuxième est celle de Price et al.

[Price93]: “La VL est l’utilisation du métier de la typographie, du design graphique, de

l’animation et de la cinématographie avec la technologie moderne de l’interaction

humain-machine et ceci pour faciliter (1) la compréhension humaine et (2) l’utilisation

pertinente des logiciels informatiques.” Finalement, une définition de

Muthukumarasamy et de Stasko [Muthukumarasamy95] est la suivante: “La VL est

l’utilisation des techniques de la visualisation et de l’animation pour aider les personnes

à comprendre les caractéristiques et les exécutions de programmes informatiques.”

Nous remarquons que la plupart de ces définitions offrent plusieurs niveaux de détail et

d’abstraction. Une évidence commune dans la majorité des définitions c’est l’emphase

sur les représentations visuelles. Les deux termes VL et VP sont généralement définis

comme comportant exclusivement des représentations graphiques. Plusieurs chercheurs

dans le domaine de la VL considèrent ceci comme trop restrictif. Nous sommes d’accord

avec eux sur le fait que la VL devrait permettre des représentations autres que

10

graphiques. Price et al. [Price93] redéfinissent le terme “Visualisation” pour inclure une

telle flexibilité: “Le pouvoir ou le processus de former une image mentale ou bien une

vision de quelque chose qui n’est pas réellement présent à la vue.” De même, en 1995,

Watson et Buchanan [Watson95] donnent une définition de ce terme, en précisant de

façon claire la non-obligation d’avoir des vues graphiques: “La visualisation est le

processus de créer et de manipuler une image visuelle qui fournit une image mentale

[…]. Ces images peuvent être soit statiques soit dynamiques et n’ont pas nécessairement

besoin d’être de nature graphique, ce qui donne la possibilité d’avoir des images

comprenant des constructeurs symboliques.”

Bref, nous venons de présenter un survol de plusieurs définitions rencontrées dans la

littérature concernant la VL. Nous adoptons pour ce travail une définition qui tient

compte de la compréhension de programme. En effet, la VL doit permettre à

l’observateur de former une image mentale du logiciel visualisé, sans recourir

nécessairement à des représentations graphiques. Notre définition est en accord avec les

définitions proposées dans [Domingue92, Price93, Muthukumarasamy95]. Cependant,

elle met plus l’emphase sur la compréhension d’un logiciel (le résultat final de la VL)

que sur les techniques utilisées pour représenter ce logiciel (les étapes de la VL). Un

raffinement de cette définition sera discuté au chapitre suivant.

2.3 Position de la VL par rapport aux autres domaines

Un grand nombre d’auteurs [Price93, Stasko92a, Stasko92b, Myers90] a tenté

d’identifier et de classifier les sous-domaines de la VL, et de positionner cette dernière

par rapport aux autres domaines. Price et al. [Price93] voient la VL comme étant un

domaine qui englobe les deux domaines distincts de la VP et de l’Animation

d’Algorithme (AA). Dans la structure qu’ils proposent (figure 1), la VP inclut le

domaine de la Programmation Visuelle (PV). Cette notion est en contradiction avec

d’autres points de vue qui considèrent la VP et la PV comme étant deux domaines

différents [Roman93, Myers90]. Par contre, dans sa revue de la littérature concernant la

VL [Young96b], Young trouve que l’idée de Price et al. de considérer la PV comme

faisant partie de la VP est valable, puisque pour pouvoir créer un environnement de PV,

11

nous devons avant tout être capable de visualiser des programmes. Cependant, il semble

non raisonnable d’exclure l’AA de la VP et de ne pas le faire pour la PV.

Price et al. décrivent la VP comme étant composée de visualisations de (1) code et de (2)

données statiques et dynamiques, alors que la PV ne touche qu’à la visualisation statique

(code et données). Young trouve que ce point est ouvert à toute discussion [Young96b].

En effet, puisque la PV comprend l’implantation visuelle de programmes, ce processus

ne peut se restreindre seulement aux visualisations statiques. Un argument simple serait

le débogage et le traçage de code. Dans le sens visuel, la seule façon dans laquelle ces

deux activités peuvent être présentées est à travers des visualisations animées. Nous ne

pouvons donc pas limiter le paradigme de la PV aux visualisations purement statiques.

Les arguments exposés ci-dessus offrent une critique constructive à la classification des

différents domaines dans le cadre de la VL. La figure 1 proposée par Price et al. a été

révisée par Young [Young96b], et une nouvelle classification des termes a été proposée

en tenant compte des arguments ci-dessus. En plus du domaine de la VL, le terme

Figure 1. Diagramme des termes liées à la VL (structure proposée dans [Price93]).

SoftwareVisualisation

AlgorithmVisualisation

ProgramVisualisation

Static AlgorithmVisualisation

AlgorithmAnimation

VisualProgramming

CodeAnimation

Static DataVisualisation

DataAnimation

Static CodeVisualisation

12

“Visualisation de Calcul” (VC) (Computation Visualisation) a été introduit par Stasko

[Stasko93] comme incluant à la fois des vues de logiciel et de matériel (hardware)

(figure 2).

2.4 Historique de la VL

Visualiser des logiciels est une activité qui date depuis longtemps. En effet, reconnaître

l’importance des représentations visuelles pour comprendre des programmes

informatiques a commencé il y a 50 ans à peu près, avec l’apparition de l’informatique.

Goldstein et von Neumann démontrent en 1947 l’utilité des flowcharts [Goldstein47],

alors qu’en 1959, Haibt développe un système pour la génération automatique des

flowcharts [Haibt59]. A la fin des années 80, Scanlan effectue des expérimentations qui

Figure 2. Diagramme des termes liées à la VL (structure proposée dans [Young96]).

Static AlgorithmVisualisation

AlgorithmAnimation

VisualProgramming

CodeAnimation

Static DataVisualisation

DataAnimation

Static CodeVisualisation

HardwareVisualisation

ComputationVisualisation

SoftwareVisualisation

ProgramVisualisation

AlgorithmVisualisation

Structure proposéedans [Stasko93]

Structure proposéedans [Young96b]

Structure proposéedans [Myers90]

13

mettent en évidence la valeur des flowcharts comme étant une aide à la compréhension

[Scanlan89]. Les films de Knowlton, développés en 1966, donnent une approche

différente à la visualisation en montrant une manipulation de listes [Knowlton66a,

Knowlton66b]. Ceci fut le premier travail à utiliser des techniques dynamiques (par

opposition à statique), et à adresser la visualisation des structures de données. A partir de

1975, Baecker donne une direction pédagogique à la VL en travaillant sur des systèmes

pour montrer des abstractions de structures de données dans des programmes en

exécution [Baecker75]. En 1981, il sort le film Sorting Out Sorting (SOS) qui a pour but

de montrer une course de neuf algorithmes de tri différents, s’exécutant sur un grand

ensemble de données [Baecker81]. Aussi, dans les années 70, Ledgard expose la

technique du pretty-printing qui consiste à utiliser des espaces, de l’indentation et

différents layouts pour rendre le code source plus facile à lire dans un langage structuré

[Ledgard75]. Plusieurs systèmes furent développés pour le pretty-printing automatique.

Un exemple serait le système de Hueras et Ledgard pour le langage Pascal [Hueras77].

En 1990, Baecker et Marcus font le passage du pretty-printing, considéré comme une

utilité simple, au système SEE qui prend automatiquement un ensemble de programmes

en C et formate à partir d’eux un “program book” [Baecker90]. Les années 80 sont

consacrées à des recherches en VL moderne. Les chercheurs profitent des nouvelles

technologies graphiques pour construire des systèmes pour visualiser que ce soit des

programmes informatiques ou bien des algorithmes. BALSA est un exemple de système,

créé en 1984, pour l’animation d’algorithme [Brown84]. Une nouvelle version de ce

système (BALSA-II) est mise au point en 1988 [Brown88]. BALSA-II permet aux

étudiants d’interagir avec des visualisations dynamiques de haut niveau de programmes

en Pascal. De nos jours, plusieurs outils de VL sont disponibles utilisant les technologies

modernes d’interface Humain-Machine. La plupart de ces outils viennent des milieux de

recherche, et ne sont pas applicables à des logicielles de grande taille.

2.5 Taxonomies liées à la VL

Plusieurs taxonomies ont été appliquées aux systèmes de VL. Deux taxonomies, basées

sur les aspects concrets des outils de VL, prédominent dans ce domaine: une première

taxonomie de Myers [Myers90] et une taxonomie plus récente de Price et al. [Price93].

14

La taxonomie de Myers a été mise à jour deux fois. Une première version a été créée en

1986. Puis, deux autres versions ont suivi (1988 et 1990). Myers fait l’étude de 19

systèmes de VL, et il les classifie selon deux axes principaux: (1) leur niveau

d’abstraction (code, donnée ou algorithme), et (2) leur niveau d’animation lors de

l’affichage (statique ou dynamique). Une expansion de cette première taxonomie est

celle de Price et al. Ces derniers catégorisent les systèmes de façon plus systématique et

tentent de structurer la taxonomie pour permettre une flexibilité pour une future

expansion et révision. Il est à noter qu’aucune expansion n’a été effectuée de façon

formelle jusqu’à présent. Cette taxonomie se base sur une structure hiérarchique de

classification qui permet un ajout simple de nouvelles catégories. Elle est composée de

six catégories (Scope, Content, Form, Method, Interaction, Effectiveness) et plus de 30

nœuds (niveau feuille) sur quatre niveaux hiérarchiques. Le niveau le plus élevé de cette

hiérarchie dérive d’un modèle très général de logiciel (black-box). Cette taxonomie fut

utilisée pour classifier 12 systèmes de VL. Nous reverrons plus en détail, dans la section

4.2, les six catégories de cette taxonomie.

D’autres taxonomies basées sur les aspects concrets des outils de VL existent. En effet,

Stasko et Patterson [Stasko92] introduisent une taxonomie à quatre catégories: aspect,

abstraction, animation et automatisation. Une autre taxonomie est celle de Roman et Cox

[Roman92] qui identifiait initialement des systèmes utilisant les catégories suivantes:

plage (scope), abstraction, méthode de spécification, et technique. Ensuite, cette

taxonomie de départ fut raffinée [Roman93] en remplaçant la catégorie “technique” par

les deux catégories “interface” et “présentation”. Roman et Cox voient la visualisation

comme étant un mapping des programmes vers des représentations graphiques

[Roman92], avec les catégories de la taxonomie représentant les aspects de ce mapping.

La plage couvre les aspects du programme qui sont visualisés, l’abstraction et la

méthode de spécification couvrent le processus de visualisation, alors que l’interface et

la présentation (correspondant à la catégorie “technique” dans le travail initial) couvrent

la représentation graphique.

15

Une taxonomie alternative à celle de Price et al., basée sur les aspects cognitifs de

l’utilisateur plutôt que les aspects concrets des outils de VL eux-mêmes, est celle de

Storey et al. [Storey99]. Ces derniers croient que les outils de VL doivent (1) supporter

plusieurs stratégies de compréhension, (2) supporter le switching entre ces stratégies, et

(3) réduire l’overhead cognitif. Ils ont donc commencé par examiner des modèles

cognitifs de compréhension de programme. A partir de ces modèles, ils ont dérivé une

hiérarchie de 14 éléments de conception cognitive. Ensuite, ils ont appliqué ces 14

éléments à la conception et l’évaluation d’un outil d’exploration logicielle (SHriMP). La

hiérarchie proposée comporte deux branches: (1) La première branche (améliorer la

compréhension d’un programme) a pour but de capturer les processus essentiels des

différentes stratégies appliquées par les programmeurs lors de leur compréhension d’un

programme. (2) La deuxième branche (réduire l’overhead cognitif du programmeur)

adresse l’overhead cognitif expérimenté par un utilisateur lors du browsing et de la

navigation de la visualisation de structures logicielles.

2.6 VL et compréhension de programme

Le domaine de la VL est avant tout considéré comme un domaine important de

recherche à l’intérieur du domaine général de la compréhension de programme. Il existe,

dans la littérature, une explication cohérente de ceci. En effet, il est connu que la

compréhension de programme joue le plus grand rôle dans n’importe quelle activité de

maintenance. Aussi, les différentes théories de compréhension de programme mettent

l’emphase sur la construction dans l’esprit du développeur de maintenance, d’un modèle

mental du logiciel [Young96a]. La VL tente de fournir par des outils un support pour

générer ce modèle mental ou bien cette compréhension.

Les modèles mentaux proposés par différents chercheurs dans le domaine de la

compréhension de programme [Young96a] sont tous composés de constructeurs

sémantiques. Ces constructeurs sont typiquement des abstractions, à différents niveaux,

de caractéristiques du programme. Le réseau formé de ces constructeurs constitue pour

le développeur de maintenance la compréhension et la représentation du programme.

Selon Young, la VL tente de fournir un mapping du code du programme à une

16

représentation visuelle (et d’autres médias) qui apparie (matches) le modèle mental du

développeur de maintenance de la façon la plus proche possible. Le fait de mettre en

évidence et de créer automatiquement ces constructeurs sémantiques soulagera beaucoup

l’effort effectué par le développeur de maintenance, spécifiquement, ceci exigera moins

de temps pour la lecture du code source.

2.7 Recherches en VL

Les recherches actuelles en VL sont diverses. Initialement, des systèmes de visualisation

d’algorithme étaient développés pour enseigner l’analyse et la conception d’algorithme.

Une autre application de la VL est pour le débogage et le traçage lors de l’exécution,

particulièrement avec des langages impératifs. Plus récemment, des recherches ont été

effectuées sur des visualisations structurelles de code. Ces visualisations se concentrent

sur des vues à grande échelle, et des exemples typiques sont les graphes d’appel de

fonction et de flux de contrôle et les dépendances entre les différentes composantes

(variables, classes, fonctions, méthodes, fichiers, modules) qui forment le système

logiciel. Des exemples de systèmes de VL structurelle comprennent: SNiFF, Rigi

[Storey95], Narcissus [Hendley95], SemNet [Fairchild88], et GraphVisualiser3D

[GV3D95]. De tels systèmes ne sont pas couverts par les taxonomies existantes, mais ils

pourraient facilement être incorporés par les différents critères des taxonomies. En plus,

il y a un intérêt de recherche très actif pour la visualisation de programmes en parallèle,

se concentrant généralement sur leur comportement lors de l’exécution [Koike95,

Kraemer93, Miller93, PVMTrace95].

Les recherches dans le domaine de la visualisation d’algorithme se concentrent sur la

production de visualisations et d’animations significatives et ceci pour aider à la

compréhension des opérations de l’algorithme. Plusieurs systèmes ont été développés

pour ce type de visualisation, et un grand nombre d’entre eux sont décrits dans les

différentes taxonomies [Myers90, Price93, Roman93]. De tels systèmes comprennent:

BALSA, Balsa-II, Zeus, TANGO, Polka3D, et ANIM.

17

Le débogage visuel n’est pas généralement accepté comme étant un sujet bien spécifique

de la VL bien qu’il existe un grand nombre de systèmes (Pascal Genie, UWPI, TPM,

Pavane, LogoMedia, CentreLine ObjectCentre (Saber-C++), et PVMTrace) qui utilisent

la visualisation comme une aide primaire au débogage. Ces systèmes sont aussi décrits

et classifiés dans les différentes taxonomies.

De nos jours, la majorité des systèmes de VL se sont concentrés sur la production de

représentations et d’animations en 2D des différents aspects d’un système logiciel.

Toutefois, l’application de graphiques en 3D et de la technologie de réalité virtuelle à la

VL constitue un domaine de recherche en expansion. Les recherches dans le domaine de

la visualisation en 3D de logiciel tentent d’aborder le problème de deux manières: (1) en

terme des données à représenter et (2) en terme de la capacité des utilisateurs à naviguer

ces données. Stasko et Wehrli discutent trois catégories différentes de la visualisation en

3D [Stasko93]:

• Augmented 2D views, dont le but se restreint juste à la présentation et à l’esthétique.

• Inherent 3D application domain views, où la représentation 3D est une nécessité.

• Adapted 2D views, où la troisième dimension ajoute une nouvelle caractéristique à la

visualisation.

Bien que le potentiel complet de l’utilisation de vues en 3D n’ait pas encore été réalisé,

un certain nombre de systèmes logiciels ont été développés pour examiner leur valeur.

La majorité de ces systèmes étendent et adaptent simplement en 3D les techniques de

visualisation 2D déjà établies [Brown93, Reiss94]. Brown et Najork [Brown93]

décrivent trois utilisations fondamentales du 3D:

• fournir des informations ou attributs additionnels sur les objets initialement en 2D,

• unir plusieurs vues, et

• fournir un historique d’exécution.

Voici quelques systèmes de VL en 3D, variant de la visualisation d’algorithme à la

visualisation structurelle: Zeus, PVMTrace [PVMTrace95], VOGUE, VisuaLinda

[Koike95], SemNet [Fairchild88] et Graph Visualizer3D [GV3D95, Ware93].

18

2.8 Conclusion

Ce chapitre a décrit l’état de l’art courant en VL. Une attention particulière a été

accordée à la définition de la VL et des domaines reliés à elle, à son historique, à son

application à la compréhension logicielle, ainsi qu’à l’état actuel et à la direction des

efforts de recherche. Il existe un certain nombre de conclusions qui peuvent être

effectuées:

• Jusqu’à présent, il n’existe pas encore un consensus commun sur la définition de la

VL. De même, sa position par rapport aux autres domaines reste ambiguë.

• Après cinquante ans de recherches dans le domaine de la VL il reste encore

beaucoup de travaux à faire pour aboutir à des outils de VL viables lorsque

appliquées sur des grandes applications industrielles.

• Il existe actuellement un manque et un besoin pour des évaluations empiriques de

systèmes de VL. Toutefois, quelques exceptions existent [Bellay97, Linos93,

Mulholland95, Rajlich94, Steckel92, Storey96]. De même, à part les différentes

taxonomies pour classifier les systèmes, il n’existe aucune méthode empirique pour

comparer ces systèmes.

En conclusion, nous sommes presque certains que les recherches et l’intérêt dans le

domaine de la VL continueront à se développer. Puisque la technologie du matériel

s’améliore de plus en plus et que les prix continuent à baisser, les soucis pour créer des

innovations dans le domaine de la VL n’existent plus. Malgré le grand nombre d’outils

de VL peu d’entre eux sont utilisés en pratique. A notre avis, leur acceptation dans le

monde industriel exige que les recherches courantes dans le domaine de développement

de tels outils adressent les besoins réels des utilisateurs. Identifier ces besoins nécessite

avant tout une connaissance assez élaborée ainsi qu’une évaluation de techniques et

d’outils de VL existants. Pour cela, nous commencerons par exposer au chapitre suivant,

un inventaire exhaustif – mais non complet – d’outils de VL. A partir de cet inventaire,

un ensemble d’outils sera retenu et décrit avant de passer, dans le chapitre 4, à

l’évaluation utilisant une taxonomie déjà existante, celle de Price et al. [Price93].

Chapitre 3. Inventaire d’outils de VL

3.1 Introduction

Il est plus facile d’identifier, de comprendre et de comparer les propriétés et

caractéristiques d’outils de VL si nous avons un certain nombre d’exemples de ces outils

à évaluer. Pour cela, ce chapitre a pour but essentiel d’identifier une liste d’outils de VL

et de fournir une description brève de sept outils de VL retenus à partir de cette liste. Ces

sept outils seront par la suite (chapitre 4) évalués utilisant la taxonomie de Price et al.

Un grand nombre des travaux d’évaluation qui ont été effectués jusqu’à présent (par

exemple, le travail d’évaluation de [Myers90] ou bien de [Price93]), et qui se basent sur

une taxonomie bien particulière, s’est contenté d’évaluer juste des systèmes de

recherche, sans pour autant toucher à des systèmes commerciaux. Cependant, évaluer à

la fois des outils académiques (provenant de milieux de recherche) et des outils

commerciaux, permet de comparer ces deux genres d’outils et donne l’opportunité de

tirer des points saillants à partir de cette comparaison. Par conséquent, notre travail

d’identification vise à la fois les outils académiques et commerciaux.

Plusieurs définitions ont été proposées au chapitre précédent. Il serait intelligent

d’utiliser comme critère d’identification des outils de VL les propriétés précisées dans

l’une ou l’autre de ces définitions. Cependant, puisqu’aucun consensus n’existe jusqu’à

présent, nous nous sommes contentés de considérer la propriété suivante comme seul

critère d’identification: Un outil de VL est tout outil qui aide d’une façon ou d’une autre

à la compréhension de logiciel. Il n’est donc pas nécessaire que l’outil en question

20

présente du graphisme comme le suggèrent beaucoup des définitions rencontrées dans la

littérature. Une simple présentation claire du logiciel peut faciliter la compréhension,

sans pour autant recourir à des graphes très sophistiqués.

Dans la section suivante, nous présentons l’inventaire des 30 outils de VL que nous

avons établi. La section 3.3 expose les sept outils retenus à partir de cette longue liste.

Une description brève de chacun de ces sept outils sera donnée. Deux démonstrations de

deux outils bien particuliers (un académique et l’autre commercial) seront aussi

exposées.

3.2 Identification d’outils de VL

Comme il a déjà était précisé dans l’introduction de ce chapitre, nous nous sommes

basés sur un critère bien particulier pour identifier un ensemble d’outils de VL. En effet,

un outil de VL est tout outil qui apporte de l’aide à la compréhension de logiciel. Suite à

cette précision, une première liste de 30 outils de VL a été établie. Cette longue liste

comporte à la fois des outils commerciaux, au nombre de 13, et des outils académiques,

au nombre de 17. Le tableau 1 présente la liste au complet des outils identifiés, avec une

séparation claire entre les outils commerciaux et ceux du milieu de recherche. Nous

avons remarqué qu’il est plus facile d’identifier des outils de VL dans le monde

académique que dans le monde commercial. Bien que plusieurs grandes entreprises se

soient mises à développer de tels outils, intégrés ou non dans des environnements de

développement (IDE), le domaine de la VL et le développement d’outils de VL restent

plus connus dans les milieux de recherche.

Un rapport interne au laboratoire GÉLO (Génie Logiciel) ainsi qu’à Bell Canada,

comportant la description de chacun des 30 outils identifiés a été généré [Bassil00].

Cependant, dans ce présent mémoire, nous ne présenterons que la description des sept

outils retenus. Ces derniers sont marqués par � dans le tableau 1, et seront présentés

dans la section suivante.

21

Outil de VL (Fournisseur) Référence (Adresse web)Visual IDL Programming Environment (Research Systems) http://www.rsinc.com/vip/index.cfm

VisualAge for Java (IBM) http://www-4.ibm.com/software/ad/vajava/

Source Explorer (Intland) http://www.intland.com/

Understand for Ada (Scientific Toolworks, Inc.) http://www.scitools.com/uada.html

xSuds - Software understanding system - (Telcordia

Technologies) �http://xsuds.argreenhouse.com/

GraphViz (AT&T) http://www.research.att.com/~north/graphviz/

InterAct Diagramming Object (ProtoView) http://www.protoview.com/interact/

Tom Sawyer Graph Layout Toolkit & Graph Editor Toolkit � http://www.tomsawyer.com/products.html

Imagix 4D (Imagix) http://www.imagix.com/products/imagix4d.html

Jtest (ParaSoft) http://www.parasoft.com/products/jtest/index.htm

Visual CASE (Rogue Wave Software) http://www.roguewave.com/products/vcase

Algorithms for Graph Drawing (Algorithmic Solutions)http://www.algorithmic-

solutions.com/as_html/products/products.html

Out

ils C

omm

erci

aux

Discover (Upspring Software) � http://www.upspringsoftware.com/products/discover/index.html

Visualizing Graphs with Java (Université d’Auburn) �http://www.eng.auburn.edu/department/cse/research/graph_

drawing/graph_drawing.html

daVinci (Université de Bremen) � http://www.informatik.uni-bremen.de/daVinci/

GraphEd (Université de Passau) http://www.infosun.fmi.uni-passau.de/GraphEd/

GraphLet (Université de Passau) http://www.infosun.fmi.uni-passau.de/Graphlet/

FfGraph (Université de Passau) http://www.fmi.uni-passau.de/~friedric/ffgraph/main.shtml

Edge tool (Université de Karlsruhe) http://www.fmi.uni-passau.de/~himsoft/graphdrawing.html

GraphPlace (Université de Warwick)ftp://ftp.dcs.warwick.ac.uk/people/Martyn.Amos/packages/

graphplace/graphplace.tar.gz

The Lens system (Graphics, Visualization & Usability (GVU)

Center - Georgia Tech)http://www.cc.gatech.edu/gvu/softviz/visdebug/visdebug.html

The GROOVE system (Graphics, Visualization & Usability

(GVU) Center - Georgia Tech)http://www.cc.gatech.edu/gvu/softviz/ooviz/ooviz.html

Swan (Virginia Tech) � http://geosim.cs.vt.edu/Swan/Swan.html

GEM3D (Université de Karlsruhe) http://i44s11.info.uni-karlsruhe.de/~frick/gd/gem3Ddraw/

Data Display Debugger (TU Braunschweig) http://www.gnu.org/software/ddd/

The DOT tool (Université de Californie) http://seclab.cs.ucdavis.edu/~hoagland/Dot.html

VCG (Université des Saarlandes) & CGDI (Université de

Linkoping) �

http://www.cs.uni-sb.de/RW/users/sander/html/gsvcg1.html

http://www.ida.liu.se/~vaden/cgdi/

Interactive Graph Display System DG (Ogeron Graduate

Institute of Science and Technology)http://www.cse.ogi.edu/Sparse/dg.html

SHriMP (Université de Victoria) http://www.csr.uvic.ca/~mstorey/research/shrimp/shrimp.html

Out

ils d

e R

eche

rche

Rigi (Université de Victoria) http://www.rigi.csc.uvic.ca/rigi/rigiframe1.shtml

Tableau 1. Liste des 30 outils de VL identifiés.

22

3.3 Outils de VL retenus

Quatre critères principaux ont été appliqués pour retenir l’ensemble des sept outils de

VL parmi les 30 identifiés. En effet, comme premier critère, nous voulions évaluer à la

fois des outils académiques et commerciaux et non pas juste une seule de ces deux

catégories. Le deuxième critère, quant à lui, exigeait que les outils retenus soient

intéressants pour la rétro-ingénierie; alors que le troisième et le quatrième critère

concernaient respectivement la disponibilité des outils et l’intérêt accordé à ces outils

par l’équipe de l’évaluation de la qualité logicielle chez Bell Canada. En se basant sur

ces critères et en utilisant notre intuition pour tenter de choisir un ensemble d’outils

assez représentatif des 30 identifiés, quatre outils académiques et trois commerciaux ont

été retenus. Une étude de la documentation liée à chacun de ces outils a été effectuée.

Dans les sous-sections ci-dessous, nous décrirons ces outils en exposant un résumé de

cette étude. En plus de l’étude théorique effectuée sur ces outils, nous avons installé les

quatre outils académiques retenus (VGJ, daVinci, Swan et VCG / CGDI)) ainsi qu’une

version de démonstration d’un outil commercial (xSuds). Les deux autres outils

commerciaux retenus (les produits de Tom Sawyer et Discover) étaient trop chers et

n’offraient pas de version de démonstration. Deux démonstrations, la première portant

sur deux outils de xSuds et l’autre sur VCG / CGDI, ont été effectuées devant l’équipe

de Bell Canada durant l’une de nos rencontres régulières. Nous nous sommes limités à

effectuer juste deux démonstrations formelles, à cause des contraintes de temps et de la

disponibilité d’outils commerciaux. Bref, nous présentons les deux démonstrations

effectuées dans les sous-sections se rapportant respectivement à xSuds et à VCG /

CGDI. La préparation de ces démonstrations nous a permis de compléter nos

informations en vue de l’évaluation qualitative qui sera présentée au chapitre 4.

3.3.1 Software understanding system (xSuds)

xSuds [xSuds98] est formé d’un ensemble d’outils qui permettent de comprendre un

logiciel écrit en C ou C++, de le tester et d’analyser son comportement dynamique. Ces

outils ont été développés dans les laboratoires de recherche de Bellcore - Telcordia

Technologies, et ils sont commercialisés chez ce dernier sous le nom de “xSuds”, ainsi

que chez IBM sous le nom de “IBM C & C++ Maintenance & Test Toolsuite”.

23

L’utilisateur de xSuds sera capable de visualiser en couleur, à travers ces différents

outils, le code source d’un logiciel. En bref, xSuds comprend un total de sept outils

exposés ci-dessous. Nous décrivons chacun de ces outils en précisant les tâches qu’il

facilite.

• xAtac: Cet outil améliore le testage (testing) à travers la création d’un ensemble

minimisé de tests cibles, et précise la mesure de la couverture.

• xRegress: Cet outil permet d’effectuer des tests de régression.

• xVue: Cet outil permet à ceux qui effectuent la maintenance de voir où sont

implantées les fonctions, et d’identifier la partie du logiciel qui implante une certaine

caractéristique.

• xSlice: Cet outil localise les erreurs à partir des échecs.

• xProf: Cet outil identifie visuellement les bottlenecks d’un logiciel.

• xFind: Cet outil permet le traçage des dépendances statiques dans un logiciel.

• xDiff: Cet outil affiche de façon efficace les différences qui existent dans deux

versions différentes d’un logiciel.

Suite à cet aperçu rapide des différents outils de xSuds, nous exposerons aux sous-

sections suivantes deux démonstrations effectuées respectivement sur deux de ces outils.

Nous avons donc dû installer une version de démonstration de xSuds (V1.2) sur

Windows NT. Un système de test (Wordcount) est fourni avec cette version. Ce système

est un programme écrit en C et son but est de compter le nombre de lignes, de mots et de

caractères dans un fichier en entrée. Notons que la version de démonstration de xSuds

est faite de telle sorte que seul le programme Wordcount peut être exécuté. Les deux

outils (xAtac et xVue) pour lesquels nous avons effectué une démonstration se

concentrent respectivement sur les deux phases les plus chères du cycle de vie d’un

logiciel, soient test et maintenance, où presque 70% des coûts sont investis.

3.3.1.1 Démonstration de xAtac

Le code source du programme Wordcount est composé de deux fichiers (main.c et wc.c).

La démonstration consiste à effectuer en ordre les étapes suivantes:

24

1. Compiler le programme avec l’utilitaire ATAC. En plus de créer les fichiers

main.obj, wc.obj et un fichier exécutable wordcount.exe, ATAC crée deux fichiers

additionnels: main.atac et wc.atac (à chaque fichier “.c” correspond un fichier

“.atac”). Ces derniers comportent des informations de couverture statique et vont être

utilisés par l’outil xAtac, plus tard durant l’analyse des tests.

2. Ouvrir les fichiers main.atac et wc.atac à partir de l’outil xAtac (figure 3). Chaque

couleur représente un poids donné. xAtac détermine ces poids en effectuant une

analyse détaillée du flux de contrôle du programme. Si, par exemple, un bloc (bout

de code) possède le poids 17, alors n’importe quel cas de test qui couvre ce bloc,

couvre un minimum de 16 autres blocs.

3. Suite aux deux étapes précédentes, l’utilisateur (l’observateur) doit analyser le code

en portant son attention surtout aux blocs avec le plus haut poids. Dans ce cas, les

deux blocs en rouge (avec le plus haut poids) sont exécutés lorsque le programme lit

son entrée à partir d’un fichier. Pour cela, Wordcount doit être exécuté sur un fichier

en entrée (par exemple, input1). L’utilisateur crée alors un test couvrant les deux

blocs mentionnés ci-dessous de même qu’un minimum de 16 autres blocs. En plus

de la sortie ordinaire de cette exécution, il y a création d’un fichier wordcount.trace

qui contient la trace de cette exécution (les informations de la couverture dynamique

effectuée par ce test). Notons que les informations dynamiques additionnelles

Figure 3. xAtac affichant les deux fichiers main.atacet wc.atac.

Figure 4. xAtac affichant main.atac et wc.atac aprèsouverture du fichier wordcount.trace.

25

générées par les tests qui vont suivre, s’ajouteront à ce même fichier

(wordcount.trace).

4. Pour incorporer les informations dynamiques du fichier wordcount.trace à

l’affichage déjà créé par xAtac, ce fichier doit être ouvert dans xAtac. Ce dernier va

alors lire le fichier et faire une mise-à-jour de l’affichage. Un changement de couleur

apparaîtra alors dans la fenêtre de xAtac (figure 4).

5. Pour créer un nouveau test, l’utilisateur doit repérer la prochaine tache rouge (red

spot), analyser le bloc qui lui est rattaché et identifier la situation durant laquelle ce

bloc s’exécute. Les informations de couverture du deuxième test vont être rajoutées

dans le fichier wordcount.trace. Le bouton Update va alors s’allumer, et il suffit de

cliquer sur ce bouton pour effectuer une mise-à-jour des couleurs.

6. Rappelons que le programme comporte deux fichiers (main.c et wc.c). Le bouton

Summary permet d’afficher la couverture des blocs par fichier (figure 5). Un résumé

de la couverture par type et par fonction est aussi possible.

7. L’utilisateur continue à effectuer des tests tant qu’il y a des blocs à couvrir, c’est-à-

dire tant qu’il y a des bouts de code colorées (dont la couleur est différente de blanc).

Suite à cette démonstration, il est important de préciser que xAtac ne construit aucun

test, son rôle est juste de permettre la visualisation de la couverture. Cette visualisation

Figure 5. Un résumé par fichier de la couverture desblocs dans xAtac.

26

est rendue plus facile par le scroll bar à gauche de la fenêtre. En effet, ce dernier affiche

un thumbnail sketch de tout le fichier. Il est très utile pour pouvoir localiser rapidement

les blocs d’une certaine couleur (exemple, en rouge) qui se trouvent dans le fichier. En

cliquant sur n’importe quel spot dans le scroll bar, la région correspondante dans le

fichier sera visualisée dans la fenêtre source.

3.3.1.2 Démonstration de xVue

La démonstration de xVue consiste à effectuer en ordre les étapes suivantes:

1. Compiler le programme avec ATAC, et ouvrir les fichiers main.atac et wc.atac dans

xVue.

2. Exécuter un ensemble de tests (ces tests seront nommés: atac.1, atac.2, atac.3, etc.

par xVue). Ceci va produire le fichier wordcount.trace qui va être utilisé par l’outil

xVue, pour incorporer les informations dynamiques dans l’affichage.

3. Pour vérifier les informations dynamiques rajoutées, il faut cliquer sur le bouton

TestCases. Un résumé de la couverture des blocs par test est alors affiché (figure 6).

4. L’utilisateur peut toujours effectuer d’autres tests. Les nouvelles informations vont

alors se rajouter au fichier wordcount.trace, et le bouton Update s’allumera, offrant

alors la possibilité de faire une mise-à-jour de l’affichage dans xVue.

5. Pour spécifier une certaine caractéristique (par exemple, la caractéristique

Character_counting qui consiste à compter les caractères dans un fichier), il s’agit

Figure 6. Un résumé par test de la couverture desblocs dans xVue.

Figure 7. Spécification d’une caractéristique dansxVue.

27

d’accéder avant tout à l’écran des caractéristiques, en cliquant sur le bouton Features

(figure 7). Le bouton add permet d’ajouter cette caractéristique, et ceci en saisissant

son nom (Feature Name) ainsi qu’une description (Description), et en lui spécifiant

les tests qui l’invoquent (invoking_tests) et les tests qui l’excluent (exluding_tests). Il

est possible de sauvegarder la caractéristique dans un fichier “.features”, pour ne pas

avoir à la spécifier de nouveau lors d’une prochaine session de travail.

6. A partir de ce moment, il est déjà possible de commencer à répondre à la question

suivante: “où est implantée dans les deux fichiers source de Wordcount, la

caractéristique définie (Character_counting)?”

7. Il s’agit maintenant de sélectionner Character_counting de la liste des

caractéristiques définies (ici il n’y en a qu’une), et de cliquer sur heuristics (figure

8). Plusieurs heuristiques sont possibles dont l’union (heuristic A). En cliquant sur le

bouton find_code, le système va colorer (en rouge) le bloc du code qui est exécuté

par le test atac.2 mais non par l’un ou l’autre des deux tests atac.3 et atac.4.

3.3.2 Tom Sawyer Graph Layout Toolkit & Graph Editor Toolkit

Les produits de Tom Sawyer [TomSawyer00a] se composent de deux outils principaux:

1. Graph Layout Toolkit (GLT) qui facilite le layout graphique.

2. Graph Editor Toolkit (GET) qui facilite l’édition graphique.

Figure 8. Passage de la fenêtre des heuristiques à celle de la visualisation du code source.

28

Plusieurs des techniques de visualisation sont rendues possibles par ces outils. Dans la

documentation, on met surtout l’emphase sur la performance optimisée pour les grands

diagrammes (applications industrielles). Une version de démonstration est disponible à

partir du site [TomSawyer00b], c’est sur elle que nous nous sommes basés pour évaluer

ces produits. Dans ce qui suit, nous ne détaillerons que le GLT, puisqu’il est considéré

comme étant l’outil de visualisation dans les produits de Tom Sawyer. Le GET reste un

outil d’édition graphique qui fournit des fonctions d’édition avancées.

Le GLT rend possible la visualisation graphique de relations dans des applications à

grande échelle, facilitant ainsi la compréhension des utilisateurs. Il possède un système

de gestion de graphe capable entre autres de gérer la structure de graphe même si la

taille ou la complexité des données augmente. Il fournit quatre types (ou layout) de

graphes différents (circulaires, hiérarchiques, orthogonaux, et symétriques). Chacun de

ces types possède une librairie pour calculer automatiquement les positions des nœuds et

des arcs en se basant sur des critères spécifiques. Une option de layout incrémental

existe. Cette propriété permet aux utilisateurs de maintenir leur position dans le

diagramme alors qu’un changement de données a lieu et qu’une application de layouts

subséquents est effectuée. Nous faisons appel ici à des aspects cognitifs de l’utilisateur.

Effectivement, en gardant sa position, le risque de confusion est réduit. Un système

automatique de positionnement d’étiquettes, indépendant du système de layout de

graphe, est aussi fourni par le GLT. Une bonne documentation pour le GLT, détaillant

les points mentionnés ci-dessus (le système de gestion de graphe, les librairies de layout

automatique, etc.), existe.

Finalement, des interfaces spécifiques du GLT sont disponibles pour plusieurs langages

de programmation dont C, C++ et Java. Ces interfaces mettent en évidence les

caractéristiques de chacun de ces langages. Le GLT offre aussi beaucoup de flexibilité.

En effet, il peut être utilisé avec n’importe quel système d’affichage (par exemple,

Rational Rose [9]) et peut être lié à n’importe quelle base de données.

29

3.3.3 Discover

Discover est un système d’information commercialisé par Upspring Software. Il

supporte les deux langages de programmation C et C++. Nous avons tiré une description

de ce logiciel à partir de la documentation disponible [Barr96, Discover00, Tilley97].

Discover se compose d’un ensemble d’outils (Develop/set, CM/set, Reengineer/set,

Doc/set, Admin/set) et d’applications pour la compréhension et le développement de

logiciels de grande taille. Les outils sont destinés surtout aux gestionnaires de projet, à

l’architecte du système et aux développeurs. Discover analyse le code source et crée une

base de données appelée Information Model (IM) relatant les caractéristiques d’un

logiciel. Les différentes applications de Discover permettent de consulter et d’interroger

cette base de données.

L’outil Develop de Discover est celui qui nous intéresse le plus puisque c’est lui qui

adresse le plus la compréhension de logiciel. En effet, il permet aux développeurs

d’accélérer leur capacité à modifier le code. Il fournit notamment une palette d’outils

graphiques permettant différents types de visualisation. Bref, l’outil Develop possède

plusieurs fonctionnalités dont les suivantes:

• Naviguer avec une visibilité globale, macroscopique et microscopique.

• Évaluer l’impact d’un changement sur le reste de l’application.

• Établir des liens avec les spécifications et les tests.

• Vérifier la qualité de développement par rapport à des critères prédéfinis.

• Accéder au IM à partir de chaque ligne du code.

3.3.4 Visualizing Graphs with Java (VGJ)

VGJ est un outil de layout graphique et d’édition de graphes, écrit en Java [VGJ98]. Il a

été développé à l’Université d’Auburn par l’équipe de recherche de Larry Barowski. Il

comprend entre autres une nouvelle technique pour des graphes dirigés hiérarchiques. Il

supporte une entrée et une sortie de fichiers en GML (Graph Modeling Language) qui

est considéré comme un langage de spécification de graphes de plus en plus répandu. De

façon plus précise, l’entrée à VGJ peut s’effectuer de deux façons différentes, soit avec

30

une description textuelle (GML), soit à travers un graphe que l’utilisateur crée utilisant

l’éditeur de texte fourni avec VGJ. L’utilisateur sélectionne ensuite un algorithme pour

afficher le graphe de façon organisée et esthétique.

3.3.5 daVinci

daVinci [daVinci00] est un outil de VL pour des graphes orientés, similaire en quelque

sorte à l’outil VCG décrit à la section 3.3.7. Il a été développé à l’Université de Bremen

en Allemagne et est présentement disponible dans la version V2.0.3. daVinci prend

comme entrée un fichier de format TR (Term Representation). Par conséquent, pour

pouvoir évaluer cet outil, nous avons dû développer un programme de transformation

qui vise à produire un fichier TR à partir d’un fichier TA (Tuple Attribute). En effet,

dans l’environnement SPOOL, les systèmes sont représentés dans le format Datrix-TA

qui est le format de sortie du système d’analyse/traduction DatrixTM [Datrix99]. Le

programme de transformation a été implanté en Java (jdk–1.2) et comporte un total de

240 LOC.

daVinci possède plusieurs caractéristiques dont:

• Le layout graphique automatique et incrémental.

• La spécification des attributs (couleurs, formes, etc.) pour chacune des composantes

(nœuds et arcs) dans l’ancienne version et pour un type (ou classe) de composante

dans la nouvelle version.

• Les abstractions interactives (cacher des sous-graphes, cacher des arcs, etc.).

• Les opérations pour avoir des overviews d’un graphe.

• Les sorties en PostScript.

Plusieurs autres propriétés restent encore non supportés par daVinci, tel que l’étiquetage

des arcs, les nested graphs, etc.

3.3.6 Swan

Swan [Swan95] est un système de visualisation de structure de données développé au

département d’informatique de Virginia Tech comme partie du projet NSF Educational

31

Infrastructure. Swan montre de façon graphique les structures de données d’un

programme en exécution. Ce dernier doit être écrit en C ou C++. Il sera alors annoté par

des appels à une librairie (SAIL - Swan Annotation Interface Library) qui contrôle la

séquence de visualisation. Cette annotation permet de fournir des vues (graphes) des

structures de données implantées dans le programme, qui seront alors affichés via un

viewer (SVI – Swan Viewer Interface). Deux termes sont connus pour les utilisateurs de

Swan:

• Annotator (personne qui annote à l’aide de la librairie SAIL)

• Viewer (personne qui exécute le programme annoté en utilisant le SVI)

Avant de pouvoir concevoir des vues d’une structure de données, l’annotator doit

posséder une connaissance claire de cette dernière. Le viewer quant à lui, a la possibilité

de modifier non seulement les attributs graphiques, mais aussi leur structure logique,

bien sûr si ceci est permis par l’annotator. La compréhension d’une structure de données

d’un programme dépend de la façon dont on annote ce programme. Dans la

documentation, nous retrouvons la phrase suivante: “Swan ne présume aucune

responsabilité pour la compréhension.”

Swan a été au départ spécialement conçu pour supporter la visualisation de programmes

implantant différents algorithmes de layout graphique. Par la suite, il a joué deux autres

rôles:

• Moyen de présentation pour des instructions dans des cours de structures de données

et d’algorithme.

• Aide lors du débogage dans des cours de programmation.

Swan permet un layout manuel et fournit plusieurs algorithmes de layout automatique

(circulaires, hiérarchiques, en étoile) et des méthodes spéciales pour les arbres, les listes

linéaires et les tableaux. Le layout automatique permet à l’annotator de se concentrer sur

les structures logiques des vues sans se soucier de leur affichage graphique. Une

caractéristique importante de SWAN est de permettre à la visualisation d’être un

processus de communication à deux sens, entre la vue et le programme.

32

3.3.7 Visualization of Compiler Graphs (VCG) & Call GraphDrawing Interface (CGDI)

L’outil VCG [VCG95a, VCG95b] lit une spécification textuelle d’un graphe (format

GDL – Graph Description Language) et permet de la visualiser utilisant des algorithmes

de layout avancés, et donnant la possibilité d’avoir une sortie de la visualisation en

PostScript. Il a été développé à l’Université des Saarlandes, et il est distribué par ftp

anonyme, sous les termes de la GNU General Public License. VCG ne fournit aucun

éditeur de graphe. Il est juste destiné à visualiser des graphes qui sont automatiquement

produits par des programmes. Un exemple de tels programmes serait le Call Graph

Drawing Interface (CGDI) [CGDI96] développé par Vadim Engelson, à Linköpings

Universitet en Suède. Le CGDI consiste en un ensemble de petits outils qui permettent

de créer le fichier d’entrée à VCG (format GDL) pour ainsi visualiser des graphes

d’appels dynamiques d’un programme écrit en C ou C++. Il utilise gprof pour détecter la

structure d’appel de fonction du programme et deux programmes filtres (g2v et vco)

écrits en C++ pour créer le fichier GDL. La sous-section suivante expose la

démonstration effectuée pour le CGDI, dans le cadre d’une rencontre avec une équipe de

Bell Canada.

3.3.7.1 Démonstration du CGDI

Nous possédons un petit programme cgtest.c écrit en C (figure 9, fenêtre a). Son seul but

est d’appeler des fonctions qui affichent simplement à l’écran un message qui précise

que cette fonction a été appelée. La démonstration consiste à effectuer en ordre les

étapes suivantes (figure 9, fenêtre b):

1. Compiler le programme cgtest.c.

2. Exécuter le programme, ceci va produire le fichier gmon.out qui contient la trace de

l’exécution.

3. Il y a possibilité d’afficher soit les appels de fonction qui ont été exécutés au moins

une fois, soit tous les appels de fonction qui se trouvent dans le code. Ceci est

distingué par l’ajout d’une simple option lors de l’exécution du gprof. Dans notre

démonstration, nous avons choisi le premier cas.

33

4. Exécuter le filtre g2v pour ainsi créer le fichier cgtest.pair (figu

comporte des informations d’appel de fonction (index, nom de la

5. Choisir les fonctions qu’on ne veut pas voir dans le graphe et é

un fichier .exc. Ce dernier peut être vide. En effet, le fichier cgtes

6. Exécuter le filtre vco pour créer le fichier cgtest.vcg qui servir

VCG (figure 9, fenêtre d).

3.4 Conclusion

Dans les sections précédentes, nous avons commencé par présent

d’outils de VL. A partir de cette liste, un ensemble de sept outil

l’évaluation qualitative qui sera présentée au chapitre suivant. Une de

de ces outils, ainsi que des démonstrations de xSuds et de VC

exposées. Suite à cette étude, nous avons pu tirer quelques conclu

comparant les deux catégories (outils académiques et commerciaux) q

• Les outils commerciaux supportent plus la visualisation de

industrielle que les outils académiques.

• L’interface des outils commerciaux est souvent plus raffinée q

académiques.

Figure 9. Une séance de démonstration du CGDI.

b

c

d

a

re 9, fenêtre c) qui

fonction, etc.).

crire leur nom dans

t.exc l’est.

a d’entrée à l’outil

er une longue liste

s a été retenu pour

scription de chacun

G / CGDI ont été

sions intéressantes

ui existent:

logiciels de taille

ue celle des outils

34

• Il est difficile d’obtenir une licence d’évaluation pour la plupart des outils

commerciaux. En effet, cette licence est souvent chère et les commerçants sont peu

coopératifs. Il existe parfois des versions d’évaluation que nous pouvons installer,

mais elles se restreignent à une simple démonstration du produit avec des fichiers

d’entrée bien définis (par exemple, le programme Wordcount de xSuds). Par contre,

les outils académiques sont plus faciles à obtenir.

Un aspect important sur lequel nous nous sommes attardés lors de l’étude des différents

outils de VL est le format d’entrée à l’outil. En effet, des outils de VL différents

requièrent des entrées différentes. Cet aspect est connu sous le nom de “style de

spécification de la visualisation” dans la catégorie Method de la taxonomie de Price et

al. [Price93] que nous allons décrire au chapitre suivant. Nous y exposerons aussi plus

en détail le format requis à chacun des sept outils de VL retenus.

Bref, un des buts principaux de ce chapitre était de décrire les différents outils de VL

retenus, en vue d’effectuer l’évaluation qualitative au chapitre suivant. En effet, cette

évaluation se base sur l’étude de la documentation ainsi que les manipulations que nous

avons effectuées sur quelques uns de ces outils.

Chapitre 4. Évaluation qualitative d’outils de VL

4.1 Introduction

Le présent chapitre est la suite logique du chapitre précédent. En effet, après avoir

identifié et décrit un ensemble de sept outils de VL, il semble évident de vouloir les

évaluer pour ainsi illustrer leurs caractéristiques. Nous utilisons une taxonomie

existante, celle de Price et al. [Price93], pour le travail d’évaluation. Cette taxonomie

s’avère la plus complète parmi l’ensemble des taxonomies que nous avons étudiées

(section 2.5). En effet, plusieurs auteurs ont suggéré des taxonomies pour les outils de

VL, mais ces taxonomies regroupent seulement une poignée de caractéristiques pour

décrire un domaine de travail grand et diversifié. Par contre, la taxonomie de Price et al.

couvre un grand nombre des aspects concrets qu’un outil de VL peut posséder. Notons

que cette taxonomie a été créée en 1993, et elle n’a été appliquée que pour évaluer des

outils développés pour la plupart au cours des années 80 et au début des années 90.

Malgré cela, les critères de cette taxonomie ne sont pas périmés et restent toujours

valables. En effet, notre travail démontre qu’ils continuent de s’appliquer aux outils de

VL de nos jours.

Deux sections majeures constituent ce chapitre. La première section (4.2) consiste à

décrire la taxonomie de Price et al. L’annexe A (Description de la taxonomie de Price et

al.) est associée à cette section. Quant à la deuxième section (4.3), elle présente

l’évaluation des sept outils de VL retenus et décrits au chapitre précédant. Elle met

l’emphase sur les points les plus saillants de cette évaluation qui est décrite de façon

détaillée dans les six tableaux de l’annexe B (Évaluation de sept outils de VL).

36

4.2 Description de la taxonomie de Price et al.

Comme il a déjà été précisé dans le chapitre 2 de ce mémoire, la taxonomie de Price et

al. [Price93] suggère une hiérarchie de six catégories de haut niveau. Chacune de ces

catégories est décomposée en un ensemble de sous-catégories à considérer pour

l’évaluation d’un outil de VL. Les sous-catégories se présentent sous forme de questions

et forment les différentes branches de la hiérarchie. L’annexe A expose la taxonomie de

Price et al. tout en indiquant pour chaque catégorie et sous-catégorie la question qui y

est associée. Une description brève de ces catégories et sous-catégories est donnée dans

les sous-sections ci-dessous.

4.2.1 Catégorie Scope

La catégorie Scope décrit l’intervalle de logiciels qui peuvent être visualisés par un outil

de VL donné. Elle comporte deux branches principales (Generality et Scalability):

• La première branche consiste à évaluer l’outil de VL par rapport au niveau de

généralité des logiciels dont il est capable de créer la visualisation. Un outil de VL

peut générer des visualisations de logiciels arbitraires à l’intérieur d’une classe

particulière (1er cas), comme il peut juste traiter un ensemble fixe d’exemples (2ième

cas). Quelques restrictions sont envisagées dans le premier cas. Ces restrictions

forment trois sous-niveaux de la branche Generality (Hardware, Operating system et

Language). Un quatrième sous-niveau (Applications) de cette branche s’applique à

chacun des deux cas décrits ci-dessus. Ils existent encore deux autres critères

(Concurrency et Speciality) classés plus bas dans la hiérarchie de cette branche.

• La deuxième branche consiste à préciser jusqu’à quel degré l’outil de VL permet de

visualiser des logiciels de grande taille. Elle comporte deux sous-niveaux (Program

et Data Sets).

4.2.2 Catégorie Content

La catégorie Content, quant à elle, décrit les aspects du logiciel que l’outil de VL permet

de visualiser. Elle est formée de quatre branches (Program, Algorithm, Fidelity and

completeness et Data gathering time):

37

• Les deux premières branches (Program et Algorithm) consistent à préciser jusqu’à

quel degré l’outil de VL permet respectivement de visualiser l’implantation du

logiciel et de visualiser l’algorithme de haut niveau qui se trouve en arrière du

logiciel. Chacune de ces deux branches est formée de deux sous-niveaux (Code (ou

Instructions) et Data) avec pour chacun des sous-niveaux un critère classé plus bas

dans la hiérarchie (respectivement, Control flow et Data flow).

• La branche Fidelity and completeness traite les métaphores visuelles. Son rôle est

d’évaluer jusqu’à quel degré ces dernières présentent le comportement vrai et

complet de la machine virtuelle sous-jacente. Un seul sous-niveau (Invasiveness) est

associé à cette branche.

• La dernière branche Data gathering time permet de préciser le moment durant lequel

les données de la visualisation sont rassemblées. Deux sous-niveaux lui sont liés

(Temporal control mapping et Visualization generation time).

4.2.3 Catégorie Form

L’élément le plus important du point de vue de l’utilisateur est la sortie (output) de la

visualisation qui est décrite dans la catégorie Form. Cette catégorie se concentre sur la

spécification des paramètres et des limitations qui régissent la sortie. Elle comporte cinq

branches (Medium, Presentation style, Granularity, Multiple views et Program

synchronization):

• La branche Medium permet de spécifier le moyen cible primaire pour la

visualisation. De nos jours, ce critère est presque évident. En effet, quasiment tous

les outils de VL utilisent un moniteur en couleur pour afficher la visualisation

produite.

• La branche Presentation style permet de préciser l’apparence générale de la

visualisation. Elle est formée de trois sous-niveaux (Graphical vocabulary,

Animation et Sound). Le premier sous-niveau traite deux critères (Colour et

Dimensions).

• La branche Granularity évalue jusqu’à quel degré l’outil de VL présente des détails

de coarse-granularity. Elle ne comporte qu’un seul sous-niveau (Elision).

38

• Les deux dernières branches (Multiple views et Program synchronization) ne

comportent aucun sous-niveau. D’une part, Multiple views permet de caractériser

l’outil de VL par rapport au nombre de vues synchronisées qu’il peut fournir des

différentes parties d’un même logiciel visualisé. D’autre part, Program

synchronization précise si l’outil de VL permet de générer simultanément des

visualisations synchronisées de plusieurs logiciels.

4.2.4 Catégorie Method

La catégorie Method caractérise les éléments importants de la spécification de la

visualisation. Elle comporte deux branches (Visualisation specification style et

Connection technique):

• La branche Visualisation specification style permet de préciser le style de

spécification de la visualisation utilisé et comporte deux sous-niveaux (Intelligence

et Tailorability). Le premier sous-niveau (Intelligence) ne s’applique que lorsque la

spécification de la visualisation est faite de façon automatique et consiste à évaluer

jusqu’à quel point l’outil de VL est avancé du point de vue Intelligence Artificielle

(IA). Le deuxième sous-niveau (Tailorability) traite un critère en particulier

(Customization language).

• La branche Connection technique comme son nom l’indique, permet de spécifier la

technique de connexion utilisée pour lier la visualisation au logiciel visualisé. Elle

est formée de deux sous-niveaux (Code ignorance allowance et System-code

coupling).

4.2.5 Catégorie Interaction

La catégorie Interaction traite des techniques utilisées par l’observateur (utilisateur de

l’outil de VL) pour interagir et contrôler l’outil de VL. Elle consiste en trois branches

(Style, Navigation et Scripting facilities):

• La branche Style consiste à spécifier la méthode que l’utilisateur emploie pour

donner des instructions à l’outil de VL.

• La branche Navigation précise jusqu’à quel degré l’outil de VL supporte la

navigation à travers une visualisation. Elle comporte deux sous-niveaux (Elision

39

control et Temporal control). Deux critères caractérisent le deuxième sous-niveau

(Direction et Speed).

• La branche Scripting facilities précise si l’outil de VL fournit des mécanismes pour

gérer l’enregistrement et le play-back des interactions avec des visualisations

particulières.

4.2.6 Catégorie Effectiveness

L’efficacité de l’outil de VL est déterminée par la catégorie Effectiveness. Des

évaluations empiriques sont requises dans cette catégorie qui comporte quatre branches

(Purpose, Appropriateness and clarity, Empirical evaluation et Production use) traitant

respectivement le but de l’outil de VL, la clarté de la visualisation, l’existence d’une

évaluation empirique pour l’outil de VL et son utilisation dans des milieux de production

fiables.

4.3 Évaluation de sept outils de VL

L’annexe B présente six tableaux. Chacun de ces tableaux correspond à une catégorie

bien particulière de l’ensemble des six catégories décrites dans la section précédente.

Nous retrouvons dans la première ligne de chaque tableau les propriétés (les critères)

associées aux différentes branches et sous-niveaux de la catégorie en question. Une

évaluation de chacune de ces propriétés est spécifiée pour les sept logiciels retenus.

Quelque fois, nous avons omis d’évaluer certaines des propriétés soit parce qu’elles sont

trop pointues et de bas niveau, soit parce qu’elles sont trop générales et de haut niveau:

• Dans le premier cas, ces propriétés étaient évaluées de façon large par la propriété

les englobant du niveau supérieur de la hiérarchie. Des exemples de telles propriétés

seraient Program et Data sets de la branche Scalability de la catégorie Scope. En

effet, nous nous sommes contentés d’évaluer la propriété Scalability en répondant à

la question suivante: “Jusqu’à quel degré l’outil de VL permet de visualiser des

logiciels de grande taille?” sans pour autant spécifier le plus grand programme qui

peut être visualisé ni le plus grand ensemble de données qui peut être manipulé.

• Pour le deuxième cas, une seule propriété a été identifiée: Presentation style de la

catégorie Form. Cette propriété est d’ailleurs présentée comme étant trop générale à

40

évaluer dans [Price93]. Elle englobe plusieurs autres propriétés plus spécifiques qui

la caractérisent et qui peuvent être évaluées.

Suite à cette évaluation présentée sous forme de tableaux, plusieurs éléments ont été

observés et retenus. Ces éléments regroupent les points essentiels de notre évaluation.

Les sous-sections qui suivent, présentent ces points pour chacune des catégories.

4.3.1 Catégorie Scope

Nous remarquons que tous les outils de VL étudiés peuvent manipuler un intervalle

généralisé de logiciels à visualiser. Pour rendre cette propriété plus compréhensible, un

contre-exemple serait SOS [Baecker81], un système déjà mentionné dans la section 2.4.

Ce système peut juste traiter un ensemble fixe d’exemples puisque sa présentation se

limite à une cassette-vidéo. Pour ce qui est du langage de programmation du logiciel à

visualiser, une évidence est la suivante: les outils qui prennent en entrée un format

particulier de fichier (par exemple, GML ou TR), acceptent que le logiciel à visualiser

soit écrit dans n’importe quel langage de programmation; il n’existe aucune restriction à

ce niveau à moins d’avoir un programme de transformation qui est associé à l’outil de

VL. Les outils correspondant sont VGJ et daVinci. L’outil VCG peut être considéré

comme ces deux derniers, mais l’utilisation du CGDI limite l’entrée à des fichiers C ou

C++. Par conséquent, si nous considérons les deux programmes de transformation que

nous avons créés respectivement pour VGJ et daVinci, ces deux outils n’accepteront en

entrée que des fichiers de format TA. A part les exigences liées au langage de

programmation des logiciels à visualiser, aucune restriction ne s’applique au domaine

d’application. Cependant, il existe un certain genre de logiciels qui est particulièrement

bon lors de la visualisation, par opposition à simplement être capable d’être visualisé. En

voici des exemples: les graphes dirigés pour daVinci, les graphes en général pour Swan

et les programmes avec beaucoup d’appels de fonctions pour VCG (en tenant compte du

CGDI).

Nous venons d’exposer les éléments essentiels tirés de l’évaluation des sept outils par

rapport à la première branche (Generality) de la catégorie Scope. Pour ce qui est de la

41

deuxième branche (Scalability) de cette catégorie, nous retenons la remarque suivante:

les outils commerciaux évalués n’exposent théoriquement aucun problème de

scalability. Ils peuvent visualiser des logiciels de grande taille. Par contre, pour la

plupart des outils de recherche (tous sauf VCG), le problème de scalability existe.

4.3.2 Catégorie Content

La première branche (Program) de la catégorie Content correspond à la visualisation du

code source d’un logiciel, donc à une visualisation de bas niveau. Par contre, la

deuxième branche (Algorithm) correspond au niveau d’abstraction lors de la

visualisation. Nous remarquons que plus un outil de VL permet de visualiser des

logiciels avec un bas niveau d’abstraction, plus le niveau de fidélité et de complétude

(troisième branche) est élevé. En effet, l’outil qui possède de façon évidente cette

propriété est xSuds. Ce dernier fournit une visualisation colorée du code source d’un

logiciel. Swan est un cas particulier pour la propriété Program. L’évaluation de cette

dernière dépend de l’annotation du logiciel à visualiser. VCG / CGDI quant à lui, ne

permet pas de visualiser le code source en tant que tel; cependant, la visualisation

supporte les appels de fonction et ainsi suggère un niveau d’abstraction relativement bas.

Le rassemblement des données pour créer la visualisation a lieu pour la plupart des

outils (xSuds, VGJ, daVinci, Swan et VCG) lors de la compilation. Trois de ces outils

(xSuds, Swan et VCG) recueillent aussi des informations lors de l’exécution du logiciel.

Ceci est évident pour xSuds et VCG (voir sections 3.3.1.1 et 3.3.1.2 pour xSuds et

3.3.7.1 pour VCG), alors que pour Swan, il en est moins. En effet, au fur et à mesure que

la visualisation avance, l’observateur a la possibilité d’interagir avec le SVI (Swan

Viewer Interface) à travers une ligne de commande, rassemblant ainsi de nouvelles

données pour la visualisation. Un sous-niveau à la propriété que nous venons d’évaluer

est le moment de génération de la visualisation. Dans le cas de quatre outils (xSuds,

VGJ, daVinci et VCG), la visualisation est produite en batch-job (post-mortem) à partir

des données enregistrées lors de la compilation ou de l’exécution. Par contre, la

visualisation dans Swan est produite live. En effet, après avoir compilé la version

annotée du programme, la visualisation est générée durant l’exécution dans le SVI.

42

4.3.3 Catégorie Form

Tel qu’il a été précisé dans la section 4.2.3, le moyen de visualisation pour tous les outils

étudiés est le moniteur en couleur. Une sortie en format PostScript (imprimable sur

papier) par exemple est parfois possible. Cependant, le moyen primaire d’affichage de la

visualisation reste le moniteur couleur. Tous les outils évalués offrent des vues

graphiques (nœuds, arcs, layouts particuliers, etc.), sauf xSuds qui est axé sur le code

source. La documentation de Discover n’offre malheureusement pas des détails qui nous

permettent d’évaluer cette propriété, cependant il est fort probable que cet outil offre des

vues de code source puisqu’il s’adresse entre autres aux développeurs. Tous les outils

répondent à la propriété couleur. Même pour daVinci, qui initialement n’offrait pas la

possibilité de visualiser en couleur, cette option fut rajoutée par le biais du Visualization

Research Group de l’Université de Durham en Grande Bretagne [VRG96]. Ceci suggère

fortement l’importance qu’offre la présence de couleur. La plupart des outils ne

supportent pas le 3D, ni l’animation, ni le son. Les seules exceptions que nous retenons

sont les suivantes: VGJ permet de visualiser des graphes avec des possibilités de 3D très

minimes, et Swan offre de l’animation de bas niveau lorsque l’observateur change de

layout. La coarse-granularity (par opposition à la granularité fine) est souvent possible

grâce aux Overview Windows qu’offrent la plupart des outils, mais non pas tous. Le nom

de cette option peut varier selon l’outil; par exemple, dans VCG nous retrouvons

l’option Panner qui n’est autre qu’une fenêtre d’overview. Dans xSuds, le scroll bar déjà

décrit dans la section 3.3.1.1, est considéré comme étant un support de visualisation

coarse-grain. Par contre, le viewing offset et le viewing angles de VGJ offrent

respectivement la possibilité de choisir la partie du graphe que nous voulons visualiser,

et l’angle (x, y, z) sous lequel nous voulons visualiser cette partie, mais n’offrent pas une

vue globale du logiciel. Elles ne sont donc pas considérées comme des fenêtres

d’overview. La possibilité de cacher temporairement l’information qui n’a pas un intérêt

immédiat est une caractéristique importante, mais malheureusement elle n’est pas

toujours supportée. Les trois seuls outils qui la supportent sont les produits de Tom

Sawyer (à travers les deux commandes hide children / parents et folding parents /

children), daVinci (à travers la commande hide edges / sub-graphs) et VCG (à travers la

43

commande folding sub-graph / region). Les deux propriétés Vues multiples et

Synchronisation ne sont supportées que par xSuds à l’aide de l’outil xDiff.

4.3.4 Catégorie Method

Le style de spécification de la visualisation peut être rendu automatique grâce à

l’écriture de programme prenant en entrée un certain format et donnant en sortie un

fichier de format requis par l’outil. Par exemple, xSuds prend une entrée en format .atac

qui est générée automatiquement par le compilateur ATAC inclus dans l’outil. Pour ce

qui est de daVinci, il accepte comme entrée un fichier de format bien particulier (TR)

pour lequel nous avons dû développer le programme de transformation correspondant

(passage de TA à TR). Il en est de même pour VGJ pour lequel le format GML est

requis. Cependant, VGJ comporte un éditeur de graphe incorporé qui permet de générer

un fichier GML. Swan, quant à lui, demande une connaissance préalable du code et

fournit une librairie SAIL que l’annotator utilise pour annoter le code source. Notons

que la technique d’annotation est dangereuse pour le code source du point de vue génie

logiciel. VCG requiert un format GDL pour lequel nous avons réussi à trouver un

ensemble d’outils connu sous le nom de CGDI qui permettent de passer d’un fichier C

ou C++ à un fichier de format GDL pour visualiser les graphes d’appel dynamique du

programme. Les sept outils évalués n’offrent aucune intelligence, par contre tous les

outils offrent la possibilité de particulariser la visualisation. Dans la plupart des cas, la

particularisation s’effectue de façon interactive entre l’utilisateur et l’outil, sauf dans le

cas de Swan, où elle est précisée sous forme procédurale (lors de l’annotation du code).

En effet, la possibilité de choisir dans xSuds le type de visualisation (par bloc, par

fonction, par décision, etc.), ou bien dans daVinci l’orientation du layout du graphe (top-

down, bottom-up, left to right ou right to left), peut être considérée comme un genre de

particularisation de la visualisation. Dans Swan, la particularisation de la visualisation

doit être permise par l’annotator.

4.3.5 Catégorie Interaction

La plupart des outils fournissent le même style (boutons, menus, etc.) pour recevoir des

instructions de l’utilisateur. Swan offre une ligne de commande en plus du style

commun. Pour ce qui est de la navigation, tous les outils, sauf VCG, permettent la

44

navigation. daVinci offre une navigation structurelle (nearest parent / child et left / right

sibling) en plus de la navigation ordinaire (previous, next et left / right neighbour level).

Pour ce qui est des trois propriétés: contrôle du temps, direction et vitesse, ils ne sont pas

applicables pour la plupart des outils, sauf pour Swan qui offre une visualisation lors de

l’exécution du programme. Cet outil ne permet pas de revenir aux étapes précédentes

lors de l’exécution du programme, et l’observateur ne peut pas contrôler la vitesse

d’exécution; cependant, il est capable de prendre son temps quant aux interactions avec

le système.

4.3.6 Catégorie Effectiveness

Le but primaire des outils étudiés reste la compréhension. D’ailleurs c’est le critère

principal sur lequel nous nous sommes basés pour identifier les outils de VL (section

3.2). Cependant, plusieurs autres buts existent, tel que le testing, le débogage, la

maintenance, etc. La clarté de la visualisation est une propriété très subjective. Il faut

évaluer si les métaphores visuelles utilisées inspirent rapidement la compréhension. Par

contre, les deux propriétés: évaluation empirique et utilisation dans la production sont

plus facilement évaluées. Aucune évaluation empirique et sérieuse n’a été effectuée pour

les sept outils étudiés. Trois de ces outils sont commerciaux (xSuds, les produits de Tom

Sawyers et Discover) et sont, par conséquent, utilisés dans des milieux de production.

Les quatre outils restants font partie du monde de recherche et ne sont pas utilisés de

façon répandue dans des milieux de production.

4.4 Conclusion

Suite à notre évaluation des sept outils de VL, nous remarquons que plusieurs des

caractéristiques de la taxonomie de Price et al. requièrent une évaluation subjective des

outils de VL dépendemment de notre compréhension de ces outils, ou encore de notre

opinion personnelle de leur performance. C’est le point faible de cette taxonomie et des

méthodes plus rigoureuses sont requises pour l’évaluation. En outre, la taxonomie de

Price et al. ne tient pas compte des éléments relatifs aux domaines de la science

cognitive et de la psychologie de logiciel. Par contre, ces éléments ont été traités de

façon exclusive, dans la taxonomie de Storey et al. Nous sommes d’accord sur le fait

45

que les deux domaines mentionnés ci-haut ont été sous-utilisés jusqu’à présent, par les

chercheurs lors de la construction d’outil de VL, et qu’en tenir compte lors de

l’évaluation semble prématuré. Cependant, une taxonomie bien conçue, qui regroupe à

la fois des éléments de la science cognitive ainsi que des aspects concrets d’outil de VL

obligera les développeurs de tels outils de commencer à tenir compte non seulement des

éléments techniques lors de la construction d’un outil de VL, mais aussi des éléments

cognitifs qui commencent à devenir de plus en plus importants de nos jours.

L’étude que nous venons de présenter nous a permis d’évaluer et de comprendre les

outils en question dans un cadre formel. Cependant, cette étude se limite à évaluer un

ensemble formé de sept outils. Bien qu’il soit représentatif, cet ensemble reste un

échantillon très minime étant donné le nombre élevé d’outils de VL existants. De plus,

tel qu’il a été évoqué ci-dessus, la plupart des fois l’évaluation des propriétés de la

taxonomie de Price et al. se faisait de façon subjective. Pour remédier à cela, une

évaluation quantitative des outils de VL, effectuée à partir d’un questionnaire s’est

avérée nécessaire. Cette évaluation permet de recueillir des points de vues d’un grand

nombre d’utilisateurs travaillant sur différents outils de VL. Elle permet aussi

d’identifier les besoins réels des utilisateurs surtout dans le domaine industriel, mais

aussi dans le domaine académique, pour but de comparaison. Les chapitres qui suivent

auront donc pour objectif de décrire l’enquête effectuée sur les outils de VL ainsi que de

présenter les résultats de l’analyse qui lui est associée.

Chapitre 5. Enquête sur les outils de VL

5.1 Introduction

Plusieurs évaluations qualitatives d’outils de VL ont déjà été effectuées. En effet, tel

qu’il a été précisé auparavant dans ce mémoire (section 2.5), un certain nombre de

taxonomies liées aux outils de VL [Myers90, Price93, Stasko92, Roman93, Storey99]

ont été suggérées. Certaines de ces taxonomies ont été employées pour caractériser et

évaluer officieusement des outils de VL. En outre, un certain nombre d’expériences ont

été effectuées sur des utilisateurs de tels outils. Storey et al. [Storey97], par exemple, ont

observés des utilisateurs résolvant des tâches de compréhension de programme, et par la

suite, ils ont essayé de décrire comment trois outils (Rigi [Müller88], SHriMP

[Storey95] et SNiFF+ [SNiFF+00]) ont supporté ou non un certain nombre de stratégies

de compréhension [Mayrhauser95]. Cependant, à nos connaissances, aucune enquête

formelle sur les outils de VL n’a été effectuée jusqu’à présent.

Pour mettre le projet SPOOL dans une plus large perspective, et pour fournir à Bell

Canada des informations à partir d’une étude quantitative sur les outils de VL, nous

avons pensé entreprendre une enquête sur ces outils. Nous avons donc décidé

d’interroger les utilisateurs de tels outils au sujet de leur perception sur ce qui a

fonctionné et ce qui n’a pas fonctionné en appliquant un outil de VL spécifique. En

profitant des taxonomies existantes et en utilisant des aspects techniques ainsi que des

aspects cognitifs d’outils de VL, nous avons créé un catalogue de propriétés de ces

outils. Puis, nous avons essayé d’arranger ces propriétés en un certain nombre de

questions, avec l’intérêt principal, tel qu’indiqué par Bell Canada, d’identifier les

47

propriétés désirables (ou non) des outils de VL, et d’évaluer leurs capacités pour réduire

l’effort de la compréhension de logiciel et de l’évaluation de conception.

Ce chapitre décrit de façon détaillée la conception d’un questionnaire sur les outils de

VL. Tout d’abord, une description générale du questionnaire est donnée (section 5.2).

Ensuite, nous détaillerons chacune des deux parties le constituant (sections 5.2.1 et

5.2.2), en discutant chacune des questions. Notons qu’une version du questionnaire est

donnée à l’annexe C.

5.2 Description du questionnaire sur les outils de VL

Une partie intégrale de notre enquête est la collecte de données via un questionnaire qui

se divise en deux grandes parties et qui est disponible en deux versions

(anglais/français). La première partie doit être remplie par tout participant, alors que la

seconde partie est facultative.

Un certain nombre d’éléments relatifs à l’élaboration d’une enquête [Cooper95] ont été

considérés lors de la conception du questionnaire. La plupart des questions dans les deux

parties du questionnaire sont fermées (closed questions) donnant un certain nombre de

réponses prédéfinies à partir desquelles les participants peuvent choisir. Cependant, pour

permettre aux participants d’exprimer leurs propres réponses, des champs vides sont

fournis pour quelques-unes des questions. De plus, à la fin de la première partie, deux

questions ouvertes (open-ended questions) sont présentées. Ces questions constituent la

dernière section de la partie I, où les participants sont invités à donner leurs avis quant

aux bénéfices et améliorations de l’outil de VL en main.

En outre, nous avons profité de l’expérience reportée dans [Desmarais94, Keller95,

Lethbridge00, Myers92]. Un brouillon du questionnaire a été distribué à l’intérieur de

notre groupe, et il a été envoyé à quelques-uns de nos collègues dans CSER, le

consortium auquel SPOOL participe. Par la suite, un ensemble de commentaires

intéressants ont été considérés et incorporés dans la version finale du questionnaire

(annexe C).

48

Les sous-sections qui suivent discutent de plus près chacune des deux parties du

questionnaire, tout en détaillant leurs différentes sections.

5.2.1 Description de la partie I

La partie I s’adresse à tout utilisateur d’outils de VL. Au départ, des renseignements sur

le contexte de travail du participant ainsi que sur les systèmes logiciels visualisés sont

demandés. Plusieurs de ces renseignements constituent l’ensemble des facteurs pouvant

influencer – ou non – les réponses aux questions des sections suivantes. Ensuite, des

questions sur les aspects fonctionnels et pratiques des outils de VL, souhaités – ou non –

sont posées. Les deux dernières sections de la partie I du questionnaire portent sur

l’“outil de VL en main”, c’est-à-dire, sur l’outil de VL avec lequel le participant est le

plus familier. Ainsi, une évaluation cognitive de l’outil de VL en main est effectuée, et

les participants seront invités à préciser les bénéfices retirés suite à l’utilisation de cet

outil, ainsi que les améliorations qui devraient lui être apportées.

Cette première partie comprend 21 questions (réparties en six sections). Les questions

liées à chacune des six sections seront détaillées dans les sous-sections suivantes.

5.2.1.1 Renseignements concernant le participant

Comme première question, il est important de connaître le milieu de travail du

participant. Il peut s’agir soit d’une compagnie, soit d’une université (milieu de

recherche). Ensuite, des informations plus personnelles sont demandées. Ces dernières

se limitent à la fonction professionnelle du participant, et à son adresse électronique qui

est nécessaire dans le cas où le participant souhaiterait avoir les résultats de notre

enquête. Une troisième question consiste à préciser le nombre de personnes affectées au

développement et à la maintenance dans l’équipe de travail du participant. Par cette

question, nous ne voulons pas connaître le nombre exact de personnes, mais plutôt la

taille (grande, moyenne, petite) de l’équipe de travail dont le participant fait partie. Nous

avons jugé qu’une petite équipe comporte moins de cinq personnes, alors qu’une grande

en comporte plus que vingt. Deux questions consistent respectivement à nommer les

trois outils de VL – ainsi que le distributeur correspondant (pour le seul but

49

d’identification de l’outil) – les plus utilisés dans l’équipe de travail et à déterminer le

niveau de connaissance de l’“outil de VL en main” après, bien sûr, l’avoir précisé

clairement. Cette expression (“outil de VL en main”) est bien définie dès le départ dans

le questionnaire. En effet, une note explicative précise qu’il s’agit de l’outil de VL que le

participant connaît le mieux et pour lequel il va remplir les sections V et VI du

questionnaire. Ces deux sections correspondent respectivement aux deux sous-sections

5.2.1.5 et 5.2.1.6 dans le présent mémoire. Le niveau de connaissance des systèmes

logiciels visualisés (familiarité avec le code source), de leur domaine d’application, ainsi

que du langage d’implantation relatif sont aussi demandés. Enfin, deux questions plus

générales sont posées. La première permet de savoir comment le participant a accédé au

questionnaire – où il en a entendu parler –, quant à la deuxième, elle lui donne la

possibilité de recevoir les résultats de notre étude.

5.2.1.2 Renseignements sur les systèmes logiciels visualisés

Dans cette section, un total de cinq questions liées aux systèmes logiciels visualisés

(SLV) sont présentées au participant. Par une première question, nous voulons connaître

le (les) style(s) de programmation des SLV. Nous différencions principalement entre

trois styles: orienté objet, procédural et déclaratif. Une deuxième question demande de

préciser le (les) domaine(s) d’application des SLV, tout en offrant un vaste choix de

réponses inspiré de [Jagannath93]. Ensuite, l’ordre de grandeur des SLV en KLOC est

demandé. Nous présentons au participant quatre intervalles (0-100, 100-500, 500-1000,

1000-++) parmi lesquels il peut choisir. Les SLV dont la taille appartient au premier

intervalle sont considérés comme étant des petits systèmes; ceux dont la taille appartient

au deuxième ou troisième intervalle sont considérés de taille moyenne; et finalement,

ceux dont la taille appartient au quatrième intervalle sont considérés des grands

systèmes. La quatrième question demande au participant d’estimer deux niveaux de

complexité: celui des SLV ainsi que celui de la tâche effectuée sur les SLV. Enfin,

comme dernière question, nous voulons connaître la disponibilité de la documentation

(au-delà du code source) pour les SLV.

50

5.2.1.3 Aspects fonctionnels des outils de VL

Suite aux deux sections que nous venons de décrire ci-haut, une section formée d’une

seule question comportant un ensemble de 34 fonctionnalités et capacités liées à des

outils de VL est fournie. Ces aspects fonctionnels sont présentés au participant, en lui

demandant de préciser jusqu’à quel point chacun d’eux lui est/serait utile pour effectuer

une certaine tâche sur un système logiciel. Le participant doit choisir entre quatre

options de réponses: “absolument essentiel”, “utile, mais non essentiel”, “pas du tout

utile”, “ne sais pas/non applicable”. Le tableau 2 présente ces 34 aspects fonctionnels

qui pour la plupart sont inspirés des travaux suivants [Burd96, Cain99, Lethbridge97,

Michail98, Mulholland95, Price93, Storey97, Storey99] ainsi que de notre propre

expérience avec les outils de VL (chapitres 3 et 4). Notons que certains des aspects

pratiques (section 5.2.1.4), de même que la plupart des aspects cognitifs (section

5.2.1.5), sont aussi inspirés de quelques-uns de ces travaux.

Deux notes explicatives sont rajoutées pour les deux aspects F21 et F26 qui ne semblent

pas assez compréhensibles. En effet, par navigation arbitraire (F21) nous entendons le

fait de pouvoir naviguer à des emplacements non nécessairement accessibles en suivant

des liens déjà définis. Ce type de navigation a été utilisé et défini pour une première fois

dans [Storey99] et peut être facilité par des outils de recherche (F14). Le program

slicing (F26) est une méthode pour décomposer un programme en des composantes où

chaque composante décrit certaines fonctionnalités du système; un “program slice”

contient seulement le code qui est pertinent à cette fonctionnalité [Weiser84]. Nous

estimons que le reste des aspects est assez clair et qu’un participant travaillant avec un

outil de VL devrait pouvoir les comprendre. Toutefois, nous avons donné la possibilité

de répondre “ne sais pas/non applicable” à un aspect non compris ou bien non applicable

aux tâches effectuées par le participant.

51

# Aspects fonctionnels

F1 Visualisation de code source (vues textuelles)

F2 Browsing de code source

F3 Accès direct (sans passer par des objets de haut niveau) au code source

F4Visualisation d’une liste de symboles (ex. les fichiers du logiciel visualisé, les fonctions définies et les types de données (variables,constantes, etc.))

F5 Accès facile, à partir de la liste de symboles, au code source correspondant

F6 Visualisation de graphes

F7 Browsing synchronisé de vues de même type ou de type différent (ex. browsing graphique et textuel synchronisé)

F8Passage d’une vue vers une autre de même type ou de type différent (ex. passage du code source à une fenêtre graphique ou vice-versa) (cross-referencing)

F9Possibilité d’avoir plusieurs vues de même type ou de type différent liées visuellement en mettant en évidence (highlighting) desinstances du même objet dans toutes les vues (ex. possibilité de lier les nœuds et les arcs dans des représentations graphiques au codesource correspondant)

F10 Capacités de layout automatique

F11 Capacités de scaling automatique

F12 Mécanismes d’abstraction (ex. affichage des nœuds de sous-système et les arcs composites dans un graphe)

F13 Fenêtres d’overview (ex. montrer la structure hiérarchique du logiciel visualisé)

F14 Outils de recherche d’éléments graphiques et/ou textuels

F15 Capacités de filtrage

F16 Capacités de zoom-in et zoom-out

F17 Visualisation dynamique (visualisation de l’exécution, animation)

F18 Représentations hiérarchiques (de sous-systèmes, de classes, etc.)

F19 Navigation de hiérarchies (de sous-systèmes, de classes, etc.)

F20 Navigation de style hypertexte

F21 Navigation arbitraire

F22 Possibilité de stocker les étapes d’une navigation arbitraire

F23 Possibilité de retour en arrière aux étapes de navigation précédentes

F24 Sauvegarde de vues, pour une utilisation future

F25 Possibilité d’afficher ou de cacher l’information selon les besoins

F26 Program slicing

F27Possibilité de voir le focus courant (ex. des vues de fish-eye, des vues détaillées de nœuds intéressants, des nœuds et arcs highlighted,des images thumbnail de code source, etc.)

F28 Possibilité de voir le chemin qui mène au focus courant (histories ou breadcrumb trails)

F29 Possibilité de particulariser la visualisation

F30 Possibilité de fournir une compréhension sommaire (coarse-grained)

F31 Possibilité de fournir une compréhension détaillée (fine-grained)

F32 Utilisation de couleurs

F33 Effets d’animation

F34 Représentations et layouts en 3D et techniques de réalité virtuelle

Tableau 2. Aspects fonctionnels des outils de VL.

52

5.2.1.4 Aspects pratiques des outils de VL

Une liste de 13 aspects pratiques liés aux outils de VL en général est exposée au

participant dans une section à part et sous forme d’une seule question. Nous lui

demandons de préciser l’importance qu’il accorde à chacun de ces aspects, en

choisissant entre les quatre choix de réponse suivants: “très important”, “relativement

important”, “pas important” et “ne sais pas”. Le tableau 3 donne l’ensemble de ces 13

aspects pratiques.

# Aspects pratiques

P1 Coût de l’outil

P2 Contenu et qualité de la documentation

P3 Disponibilité de documentation on-line

P4 Disponibilité de support technique

P5 Performance de l’outil (vitesse d’exécution de l’outil)

P6 Fiabilité de l’outil (absence d’erreurs)

P7 Facilité d’apprentissage et d’installation

P8 Facilité d’utilisation

P9 Facilité de visualiser des logiciels de grande taille

P10 Visualisation de logiciels écrits en langages différents

P11 Disponibilité sur plusieurs plate-formes

P12 Qualité de l’interface usager

P13 Possibilité de sortie (output) de la visualisation en fichiers de différents formats (postscript, pdf, bmp, etc.)

La plupart de ces aspects (tous sauf P9, P10 et P13) sont assez généraux, et de ce fait, se

trouvent applicables à une variété d’outils informatiques et non juste aux outils de VL.

Nous rencontrons par exemple certains de ces aspects dans [Jagannath93]. Par

conséquent, nous donnons la possibilité au participant d’exprimer ses propres aspects –

aspects liés de plus près aux outils de VL, qu’il a en tête et auxquels nous n’avons pas

pensé lors de la conception du questionnaire – dans des champs vides, avec trois

possibilités de réponse: “très important”, “relativement important” et “pas important”;

nous supprimons bien sûr la possibilité de répondre “ne sais pas”, puisque c’est un

aspect saisi et précisé par le participant lui-même.

Tableau 3. Aspects pratiques des outils de VL.

53

5.2.1.5 Évaluation cognitive de l’outil de VL en main

La section relative à l’évaluation cognitive des outils de VL comporte un total de cinq

questions. Cette section, ainsi que la section suivante du questionnaire, se rapportent à

l’outil de VL en main, tel que décrit dans les deux sous-sections 5.2.1 et 5.2.1.1. Une

première question dans cette section expose un ensemble de six caractéristiques et

demande au participant de préciser le degré (“haut”, “moyen”, “bas”, “ne sais pas”) de

chacune de ces caractéristiques par rapport à l’outil de VL en main. Voici la liste des six

caractéristiques: (1) facilité d’apprentissage, (2) facilité d’utilisation, (3) qualité des

effets visuels, (4) capacité de générer des résultats utiles, (5) confiance dans les résultats

générés, (6) connaissance requise du code source du logiciel visualisé, pour pouvoir

générer une visualisation.

Une deuxième question demande de préciser jusqu’à quel degré (“beaucoup”,

“moyennement”, “pas du tout”, “ne sais pas/non applicable”) l’outil de VL en main aide-

t-il le participant à effectuer chacune des huit tâches liées aux SLV: (1) maintenance, (2)

débogage, (3) test, (4) ajout de nouvelles fonctionnalités, (5) perfectionnement, (6)

analyse du code, (7) compréhension du code, et (8) création de la documentation.

Ensuite, un ensemble de cinq caractéristiques liées aux SLV ((1) complexité du code, (2)

taille du code, (3) interface très couplée, (4) documentation insuffisante, et (5) manque

de documentation sur l’intention de la conception) sont exposées, et nous demandons au

participant de préciser jusqu’à quel degré (“beaucoup”, “moyennement”, “pas du tout”,

“ne sais pas/non applicable”) chacune de ces caractéristiques diminue-t-elle l’efficacité

de l’outil de VL en main. Nous donnons aussi la possibilité au participant de saisir une

nouvelle caractéristique.

Finalement, les deux dernières questions de cette section demandent respectivement, si

selon le participant, l’outil de VL en main affecte l’approche prise pour effectuer une

tâche donnée et si les résultats obtenus lors de l’application de cet outil sont satisfaisants.

Pour chacune de ces deux questions, un choix de réponse avec échelle est donné. En

effet, l’échelle pour la première question comporte 5 niveaux et varie entre “beaucoup”,

54

“moyennement” et “pas du tout”. Il en est de même pour la deuxième question, mais

cette fois-ci les réponses varient entre “très satisfaisant”, “satisfaisant” et “non

satisfaisant”.

5.2.1.6 Bénéfices et améliorations de l’outil de VL en main

La dernière section du questionnaire est composée de deux questions ouvertes. Tel qu’il

a déjà été précisé dans l’introduction de la section 5.2.1, le participant est invité à

préciser les bénéfices qu’il a retirés suite à l’utilisation de l’outil de VL en main, ainsi

que les principales améliorations qui devraient être apportées à l’outil. Par ces deux

questions, nous cherchons principalement à détecter des patrons de réponse qui

formeront deux listes constituées respectivement des bénéfices et des améliorations.

5.2.2 Description de la partie II

La partie II s’adresse à des experts d’outils de VL, et permet de rassembler des

renseignements techniques associés à l’outil de VL en main. Notamment, des questions

portant sur le support de l’analyse du code par l’outil de VL en main seront demandées.

Cette deuxième partie comprend 17 questions (réparties en 2 sections). Nous décrirons

respectivement, dans chacune des deux sous-sections ci-dessous, les questions relatives

à chacune des deux sections de la partie II du questionnaire.

5.2.2.1 Renseignements techniques sur l’outil de VL en main

Les deux premières questions de la section rassemblant des renseignements techniques

sur les outils de VL en main demandent de saisir le nom et le distributeur de l’outil de

VL pour lequel le participant a choisi de compléter cette partie. Bien que le nom et le

distributeur de l’outil de VL en main aient déjà été demandés dans la partie I du

questionnaire, nous avons tenu à les redemander dans cette section. En effet, après avoir

rempli la partie I, un participant peut choisir de ne pas répondre de façon consécutive et

à partir du même poste de travail, dont nous détectons l’adresse IP, à la partie II. Par

conséquent, comme nous avons opté de rendre le questionnaire accessible on-line via le

web, sans toutefois demander dans la partie I des informations très personnelles au

participant permettant de l’identifier (par exemple, prénom et nom de famille), il s’est

55

avéré nécessaire d’exiger de façon redondante4 dans la partie II, le nom et le distributeur

de l’outil de VL en main. Une autre solution aurait pu être adoptée, c’est celle d’affecter

à chaque participant un login et un mot de passe lui permettant d’accéder au

questionnaire de façon plus personnalisée. Cette méthode d’accès – quoique non adopté

– sera discutée dans la section 6.5.

Pour ce qui est du reste de cette section, quelques-unes des questions sont inspirées de la

taxonomie de Price et al. [Price93]. En effet, quatre des huit questions restantes

correspondent à des propriétés de cette taxonomie: A.1.2, A.1.3, D.1 et F.1 (voir annexe

A). Pour chacune de ces quatre questions, un ensemble de réponses est fourni au

participant parmi lesquelles il peut choisir. De plus, nous lui donnons la possibilité de

saisir d’autres réponses non trouvées dans les choix de réponses fournis.

Finalement, quatre questions se rapportant respectivement au type de l’outil de VL (outil

commercial ou prototype de recherche), au nombre d’outils qui le forme (un seul grand

outil ou un ensemble d’outils), à son (ses) langage(s) d’implantation, ainsi que s’il est

(ou bien, s’il fait partie d’) un environnement de développement de logiciel ou non, sont

posées.

5.2.2.2 Support de l’analyse du code par l’outil de VL en main

Suite aux renseignements techniques adressés dans la section I de cette partie du

questionnaire, nous nous intéressons dans cette deuxième section aux capacités

d’analyse du code des SLV, supportées ou non par l’outil de VL en main. En effet, sept

aspects rassemblent 24 sous-aspects présentés dans le questionnaire sous forme de

questions (tableau 4). Chacun de ces sous-aspects est lié à l’un ou l’autre des sept

aspects de l’analyse du code considérés: (1) appels de fonctions, (2) clonage de

4 Lors de la compilation des réponses au questionnaire, nous avons remarqué que certains participants (un

nombre minime) ont rempli chacune des deux parties du questionnaire en considérant deux outils de

VL différents. Voilà donc une deuxième raison qui incite à demander deux fois le nom de l’outil de VL en

main, et à laquelle nous n’avions pas pensé lors de la conception du questionnaire.

56

fonctions, (3) graphes d’héritage, (4) graphes d’architecture de sous-systèmes, (5)

différents niveaux de détail, (6) métriques et (7) versions multiples.

Aspect # Sous-aspect1 Permettre de visualiser des appels de fonctions

2Permettre de visualiser le nombre de fois qu’une fonction est appelée par uneautre fonction

3 Fournir des fonctionnalités (un outil) pour identifier des chaînes de récursion

4 Éliminer les fonctions récursives simples

5Présenter comme un tout (dans un même graphe) une chaîne de récursioncomplexe

6 Représenter par des nœuds les fonctions de la chaîne de récursion

IAppels de fonctions

7 Accéder directement au code source à partir des nœuds

8 Permettre d’obtenir les clones d’une fonction

9 Voir le code source de ces clones

10 Différences mises en évidence par de changements de couleurs ou de polices

IIClonage de fonctions

11 Réduire la granularité des différences (un exemple le passage du mot à la lettre)

12 Visualiser des graphes d’héritage (des hiérarchies des classes du système)

13 Optimiser les positions des nœuds

14 Détecter un héritage multiple

IIIGraphes d’héritage

15 Détecter des branches profondes

16 Visualiser des graphes d’architecture de sous-systèmes

17Pouvoir lier l’architecture aux autres résultats de l’outil de VL en main (ex. zonesde couleurs différentes sur le graphe d’architecture)

18 Voir des clones de sous-systèmesIV

Graphes d’architecture de sous-systèmes

19Visualiser l’intérieur d’un sous-système (ex. les fichiers qui forment un sous-système)

VDifférents niveaux de détail

20 Voir différents niveaux de détail simultanément dans des fenêtres séparées

21 Calculer des métriquesVIMétriques 22 Intégrer les métriques et le code source

23 Travailler avec plusieurs versions simultanément

VIIVersions multiples 24

Calculer, pour chaque version, les différences par rapport aux versionsprécédentes (ex. le nombre de nouvelles fonctions, de fonctions non modifiées, defonctions modifiées, de fonctions effacées, etc.)

Pour chacune des questions, nous donnons au participant quatre choix de réponse: “oui”

(l’outil de VL en main fournit cet aspect), “non”, “ne sais pas/non applicable” et “non/je

ne sais pas, mais je souhaiterais cette propriété”, parmi lesquels il peut choisir. Notons

qu’à l’intérieur d’un même aspect, certaines dépendances existent; étant donné un aspect

principal, une réponse “non” à l’une de ses sous-aspects peut exclure des réponses “oui”

Tableau 4. Répartition des 24 sous-aspects de l’analyse du code par aspect.

57

à d’autres sous-aspects de cet aspect. Le tableau 5 donne un résumé de ces dépendances.

Chaque encadré en gris représente le regroupement des sous-aspects d’un aspect. Nous

interprétons ce tableau de la façon suivante: si la réponse au sous-aspect dont le numéro

figure dans la colonne de gauche est “non”, la réponse au sous-aspect dont le numéro

figure dans la ligne du haut et dont la case correspondante est cochée ne peut pas être

“oui”. Par exemple, si la réponse au sous-aspect 1 est “non”, les réponses aux sous-

aspects 2 jusqu’à 7 ne peuvent pas être “oui”.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

1 • • • • • •

2

3 • • • •

4

5

6 •

7

8 • • •

9 • •

10

11

12 • • •

13

14

15

16 • • •

17

18

19

20

21 •

22

23 •

24

5.3 Conclusion

Storey et al. ont préparé une expérience dans laquelle ils soumettent à un ensemble

d’utilisateurs d’outils de VL un ensemble de tâches de maintenance [Storey97]. Notons

que ces utilisateurs sont pour la plupart des volontaires du milieu académique. Ensuite,

ils les observent résoudre ces tâches. Suite à ces observations, ils décident quelles sont

les stratégies de compréhension supportées par chacun de ces outils et si ces derniers

Tableau 5. Dépendances entre les sous-aspects du support de l’analyse du code.

58

permettent de passer d’une stratégie vers une autre. Bref, ce genre d’expérience se base

sur des observations pour évaluer certains aspects très spécifiques des outils de VL,

reliés à des éléments strictement cognitifs. Il serait bien sûr difficile de recueillir ce

genre d’information à partir d’un questionnaire. Cependant, plusieurs autres

informations telles que celles proposées dans les sections 5.2.1.3 à 5.2.1.6, de même que

celles proposées dans les sections 5.2.2.1 et 5.2.2.2, peuvent être facilement recueillies et

analysées à travers un questionnaire. En effet, la liste de questions aborde des

caractéristiques qu’offrent – ou non – les outils de VL. En combinant l’information

demandant si chacune de ces caractéristiques est jugée désirable ou inutile, et à savoir si

les participants utilisent déjà un outil de VL qui offre – ou non – la caractéristique

voulue, le questionnaire permet de retirer de façon ciblée, des informations quant aux

versions actuelles des outils de VL et de les comparer aux besoins réels des utilisateurs

de tels outils. Bien que le but principal de l’observation effectuée par Storey et al. soit

différent de celui visé par notre enquête, notons qu’il serait difficile d’appliquer une telle

étude axée à des observations dans le milieu industriel, que ce soit par manque de temps

pour les employés ou simplement par le fait qu’ils ne soient pas payés pour effectuer des

tâches “extra” à leur propre travail. Cependant, un questionnaire disponible via le web

peut être accessible toujours, et les participants peuvent répondre à leur guise, sans pour

autant être obligés d’arrêter leur travail.

Plusieurs itérations ont été nécessaires avant d’arriver à une version stable du

questionnaire. Comme nous l’avons laissé entendre à certaines places dans ce chapitre,

le questionnaire a été mis on-line. Les principaux avantages, les plus évidents d’ailleurs,

qui nous ont poussé à le rendre disponible via le web sont le fait de faciliter l’accès aux

participants pour ainsi recevoir le plus possible de réponses en un intervalle de temps

court. Une fois la collecte des données est terminée, un autre avantage serait le

traitement rapide de ces données. En effet, nous n’aurons pas à saisir les réponses des

participants avant de passer au traitement et analyse. Le chapitre suivant consiste à

discuter de façon plus prolongée l’implantation du questionnaire ainsi que les tâches qui

sont rendues automatiques étant donné le choix que nous avons adopté pour la

distribution du questionnaire.

Chapitre 6. Conception technique du questionnaire

6.1 Introduction

Après avoir discuté le contenu du questionnaire, nous passons à sa conception technique.

Deux options sont possibles pour la présentation: (1) utiliser la méthode traditionnelle

des enquêtes sur papier, ou bien (2) profiter des techniques récentes liées à la collecte

d’informations à partir du web. Nous avons favorisé cette dernière option en raison des

avantages multiples déjà cités (section 5.3), soient la facilité d’accès, de remplissage, et

d’envoi des données, ainsi que le traitement rapide de ces données après réception. Le

questionnaire se trouve donc on-line à partir de l’adresse suivante: <http://

www.iro.umontreal.ca/labs/gelo/sv-survey/questionnaire.html>.

Les différentes étapes de la conception du questionnaire seront exposées dans les

prochaines sections de ce chapitre. En effet, la section suivante discute la génération des

fichiers HTML en mettant l’emphase sur l’utilisation de FrontPage. Dans les sections

6.3 et 6.4, nous présentons respectivement les deux genres de programmation

(JavaScript et Perl) auxquels nous avons eu recours pour contrôler les données avant de

les envoyer et puis pour recueillir ces données et les préparer pour le traitement. La

dernière section fournit une conclusion tout en discutant certains points du chapitre.

6.2 Génération des fichiers HTML

Nous avons utilisé l’utilitaire “Microsoft FrontPage®” [FrontPage00] inclus dans

“Microsoft Office 2000” pour la génération des fichiers HTML. Cet utilitaire est facile à

utiliser et permet de créer, d’éditer, et de visualiser un site web rapidement. En effet, il

60

offre un environnement de travail à trois options: (1) le “WYSIWYG” familier

(impression conforme à la visualisation; mode création normale), (2) la possibilité de

visualiser les étiquettes du code HTML tout en étant en mode création normale (reveal

tags), et (3) l’édition en mode HTML; il est aussi possible de visualiser le travail déjà

effectué utilisant l’une de ces trois options (preview).

Une caractéristique importante de FrontPage est la possibilité de choisir le(s) browser(s)

ainsi que les versions de browser sur lesquelles nous voulons exécuter notre site web. En

fait, pour rendre nos fichiers compatibles avec un browser bien spécifique, FrontPage

donne la possibilité de restreindre automatiquement les caractéristiques et technologies

non supportées par ce browser en particulier. Dans notre cas, nous avons précisé les

deux browsers: Netscape Navigator et Microsoft Internet Explorer, tout en spécifiant les

versions “3.0 browsers and later” pour ainsi être sûr que les participants n’auront pas

des problèmes de visualisation du questionnaire et d’envoi de données. Ce choix a bien

sûr exclu quelques-unes des nouvelles technologies telles que les contrôles ActiveX, les

VBScripts, et le HTML dynamique, qui ne sont pas supportées par des anciennes

versions de browsers. Cependant, les deux technologies les plus importantes, qui restent

supportées par ces derniers et auxquelles nous avons eu recours, sont le JavaScript et

l’utilisation des cadres (Frames).

Notre site comporte un total de 10 fichiers HTML logiquement5 différents, répartis

comme suit:

• Un fichier “couverture” bilingue (anglais/français) comportant des informations

générales telles que le nom du questionnaire, le nom des auteurs, leur adresse

électronique, etc., ainsi qu’un compteur permettant de visualiser le nombre de visites

à cette page. Ce premier fichier donne accès à chacune des deux versions du

questionnaire (anglaise ou française).

5 Puisqu’il existe deux versions du questionnaire (anglaise/française), nous distinguons entre fichiers

logiques et fichiers physiques.

61

• Trois fichiers permettant d’afficher une “introduction” au questionnaire: un fichier

divisant la page en deux cadres et affichant dans chacun de ces cadres les

informations d’un fichier bien particulier. Le premier cadre offre entre autres deux

liens hypertextes menant respectivement vers les deux parties du questionnaire

(partie I et partie II), alors que le deuxième cadre affiche un texte d’introduction

décrivant principalement chacune des deux parties.

• Trois fichiers affichant la partie I (respectivement, partie II) du questionnaire. Tout

comme l’introduction, nous divisons la page en deux cadres, le premier fournissant

des liens hypertextes permettant d’accéder directement à chacune des questions de

cette partie sans pour autant parcourir tout le formulaire, alors que le deuxième

affichant le formulaire comportant toutes les questions relatives à la partie I

(respectivement, partie II).

Chacun des deux formulaires, celui lié à la partie I et celui lié à la partie II, comporte

plusieurs types d’entrée dépendemment du genre de la question (question ouverte ou

fermée). Dans le cas d’une question fermée, nous déterminons le type d’entrée à utiliser

d’après le nombre total de choix fournis et le nombre de réponses que peut choisir le

participant (une seule ou plusieurs). En effet, pour saisir la réponses d’une question

ouverte nous utilisons une zone de texte déroulante (textarea) si la réponse à fournir peut

dépasser un mot ou une expression, c’est-à-dire si elle peut être un paragraphe. Dans le

cas d’un mot ou bien d’une expression se limitant à un nombre minime de caractères,

nous utilisons une zone de texte simple (text). Pour ce qui est d’une question fermée

offrant juste deux choix de réponse à partir desquels le participant ne peut choisir qu’une

seule, nous utilisons une paire de cases d’option (radio buttons). Dans le cas d’une

question fermée offrant plus que deux choix de réponse à partir desquels, encore une

fois, le participant ne peut choisir qu’une seule, nous utilisons les menus déroulants

(lists). Finalement, une question fermée offrant plusieurs choix de réponse à partir

desquels le participant peut choisir une ou plusieurs réponses, nous utilisons les cases à

cocher (checkboxes).

62

Un ensemble de propriétés peut être précisé à chacune de ces entrées, tel que le nom de

la variable, la valeur initiale, la largeur en caractères dans le cas d’une zone de texte

simple, le nombre de lignes dans le cas d’une zone de texte déroulante, l’état initial

d’une case d’option (respectivement, une case à cocher) qui peut être soit sélectionné

(respectivement, activé), soit non sélectionné (respectivement, non activé), etc.

Un fichier (dictionnaire des variables) comportant le nom de toutes les variables et le

type du champ relatif à chacune de ces variables, ainsi que les valeurs possibles dans le

cas d’une variable à choix (question fermée), a été généré. Les données de ce fichier

nous ont grandement aidés lors de la programmation des fonctions JavaScript dont les

différents buts seront cités dans la section qui suit.

6.3 Programmation JavaScript

Des fonctions JavaScript [JavaScript99, Kolbeck97] ont été implantées ayant pour but

principal la vérification des champs et l’interaction avec les participants en cas d’erreur.

En effet, certaines fonctions permettent de vérifier les champs requis lors de l’envoi d’un

formulaire; dans le cas où ces champs n’ont pas été remplis, le système refuse l’envoi du

formulaire et affiche un message d’alerte tout en renvoyant le participant au(x) champ(s)

en question.

D’autres fonctions permettent à des champs de devenir directement requis suite à une

action particulière ou bien à un changement particulier. Par exemple, le champ “adresse

électronique” devient requis lorsque le participant répond “oui” à la question “souhaitez-

vous avoir le résultat de cette étude?” Une vérification du format de l’adresse

électronique est aussi effectuée. Une adresse qui semble erronée n’est pas acceptée.

Les restrictions liées aux questions relatives à l’analyse du code (section 5.2.2.2, tableau

5) sont forcées par des fonctions JavaScript. En effet, lorsqu’un participant répond “oui”

à un sous-aspect pour lequel il ne peut pas le faire, il verra apparaître une alerte précisant

l’interdiction de choisir cette option, et le choix passera directement à “non” par défaut,

63

tout en laissant au participant la possibilité de changer pour “ne sais pas/non applicable”

ou bien pour “non/ne sais pas, mais je souhaiterais cette propriété”.

Ces fonctions JavaScript ont été incorporées à différents fichiers HTML. Ils continuent à

s’exécuter tant que les informations saisies par le participant ne sont pas complètes, ne

respectent pas un format donné ou bien ne satisfont pas à des restrictions bien

particulières. Lorsque les données d’un formulaire répondent à toutes les exigences

contrôlées par les fonctions JavaScript, elles deviennent alors prêtes à être envoyées, et

un programme CGI, écrit en Perl, permettant la communication entre le browser du

participant et le serveur où nous voulons garder les informations, s’exécute. La section

suivante expose plus en détail les caractéristiques de ce programme, ainsi que le rôle

d’un autre programme, écrit aussi en Perl, permettant de préparer nos données pour le

traitement.

6.4 Programmation CGI et préparation des données

Un fichier CGI (Common Gateway Interface) [CGI00] pour la collecte des données a été

programmé en Perl (version 5) [Perl00, Srinivasan96, Wall97]. Ce fichier constitue une

interface standard pour la communication entre le browser d’un utilisateur et un

programme s’exécutant sur un serveur. Il sera exécuté lors de la soumission du

formulaire (lorsque le participant appuie sur le bouton “Envoyer partie I (ou II)”, et

lorsque toutes les données envoyées répondent à toutes les exigences contrôlées par les

fonctions JavaScript) et a pour but de créer à partir des informations saisies par le

participant un querystring6 qui sera gardé dans un fichier texte, en ayant chaque fois le

soin de préciser au début de chaque querystring l’adresse IP et le host name de la

machine à partir de laquelle le participant a rempli le formulaire, ainsi que la date de

l’envoi. Ce programme a été placé sur le serveur www2 du DIRO qui reconnaît ce

6 Un querystring est une variable d’environnement de Perl, qui garde les informations sous forme de

paires séparées par des “&”, où chaque paire est formée du nom de la variable, suivi d’un “=” puis de la

valeur de cette variable; un exemple serait: milieuTravail=1&nomOrganisation=IBM+Canada&Titre=1.

64

fichier comme étant un script CGI. Des informations intéressantes à propos de la

programmation CGI peuvent être trouvées à partir de [Perl00, CGI00].

Un autre programme en Perl permet de passer directement du fichier texte où les

données sont présentées sous format querystring à un fichier texte où les données

relatives à un seul envoi sont séparées par des espaces, alors que des données provenant

de deux envois différents sont séparées par des retours à la ligne. Il est bien important

d’arriver de façon automatique à un fichier texte qui sera accepté par un tableur tel que

Excel ou bien SPSS [SPSS00]. En effet, ceci réduira les erreurs dues à la manipulation

manuelle des données, il diminuera aussi l’intervalle de temps entre la collecte des

données et l’analyse statistique. Notons que l’ordre des données est très important, et

que le programme qui permet de passer du format querystring à un format qui sera

accepté par un tableur tient compte de l’ordre de présentation des données.

Après l’exécution des deux programmes Perl décrits ci-dessus, nous préparons nos

données pour le traitement et l’analyse statistique utilisant SPSS. En effet, il s’agit de

s’assurer de l’ordre d’apparition des valeurs affectées aux différentes variables, tout en

complétant les champs manquants avec des valeurs par défaut. Notons qu’il aurait été

possible de conserver les données dans une base de données (BD) et de les traiter par un

système de gestion de bases de données (SGBD) au lieu d’un tableur. D’ailleurs

FrontPage, étant une application de Microsoft Office, permet la communication de façon

simple et rapide entre un formulaire qu’il crée et le SGBD Access. Cependant, deux

raisons principales nous ont conduits à garder nos données dans un tableur et de les

traiter utilisant un utilitaire statistique (SPSS) et non un SGBD. En effet, la première

raison est le fait de ne pas avoir besoin de recourir à une BD puisque nos données se

limitent à une centaine d’enregistrements seulement (107 participants pour la partie I, et

41 participants pour la partie II), qui peuvent facilement être acceptés et gérés par un

tableur tel que SPSS. La deuxième raison, la plus importante par ailleurs, est la

disponibilité des fonctions de calcul statistique prédéfinis dans l’utilitaire statistique,

alors que dans un SGBD ce genre de fonctions demande l’utilisation de Visual Basic (le

langage de programmation de Microsoft Office) pour l’écriture de macros.

65

6.5 Conclusion et discussion

Dans ce chapitre, nous venons de donner un aperçu rapide de la méthodologie et des

techniques utilisées pour la conception du questionnaire, ainsi que pour la collecte et la

préparation des données en vue du traitement et de l’analyse statistique. En effet, HTML

est un langage facile à apprendre et à utiliser, et l’utilisation de FrontPage a rendu la

génération des fichiers HTML encore plus rapide. De plus, connaissant bien HTML,

nous pouvons toujours faire des changements dans les fichiers HTML générés

automatiques par FrontPage. Pour ce qui est de JavaScript et de Perl, ce sont deux

langages de scripting qui fournissent beaucoup d’avantages, tels que le développement

rapide d’application web. Il est évident que dans notre cas la rapidité est un critère

important puisque le but final est non seulement de fournir un questionnaire, mais aussi

de recueillir les données, de les analyser et d’arriver à des résultats le plus rapidement

possible.

Du côté de l’interface du questionnaire, nous avons essayé de la rendre le plus possible

compréhensible, tout d’abord en différenciant entre les couleurs utilisées pour les zones

réservées aux questions et celles réservées aux réponses, mais aussi en fournissant un

accès direct à chacune des questions par des liens hypertextes. Un commentaire que

nous avons reçu est celui de la navigation entre la page “introduction” et chacune des

deux parties. En fait, quelques-uns des participants préféraient passer de l’introduction à

la partie I, et après avoir complété et envoyé le formulaire de cette partie, avoir le droit

de passer directement à la partie II. Ils trouvaient qu’il était en quelque sorte mélangeant

de donner la possibilité d’accéder aux deux parties directement à partir de

l’“introduction”, surtout qu’on avait bien précisé au début de la partie II la phrase

suivante: “Avez-vous rempli la partie I? Sinon, veuillez la compléter avant de remplir

cette partie! Merci.” Cependant, ne pas permettre à un participant d’accéder à la partie II

sauf à la suite de l’envoi du formulaire de la partie I, restreint en quelque sorte le nombre

de participants pour cette partie. En effet, nous avons remarqué plus tard qu’un certain

nombre de participants n’avaient pas rempli la partie II directement après avoir rempli la

partie I, mais bien à une date ultérieure. Une solution qui semble la plus intéressante

dans notre cas et qui a déjà était discutée à la section 5.2.2.1, est d’identifier un

66

participant en lui affectant un login et un mot de passe. Ainsi, la partie I étant déjà

remplie, le participant pourra accéder à la partie II lorsqu’il veut. De plus, il aura la

possibilité de sauvegarder ce qu’il a déjà rempli du formulaire pour une prochaine visite

du site, dans laquelle il complétera les sections/questions manquantes.

Finalement, le chapitre suivant donnera un aperçu des résultats de cette enquête. Une

interprétation de ces résultats sera aussi fournie. Une version plus détaillée des résultats

se trouve dans [Bassil00b, Bassil00c].

Chapitre 7. Analyse de l’enquête

7.1 Introduction

Ce chapitre présente les résultats de l’analyse des données collectées pour les deux

parties du questionnaire sur les outils de VL décrits au chapitre 5. Il est basé

principalement, sur deux rapports techniques créés à l’intérieur du laboratoire GÉLO

[Bassil00b, Bassil00c] de même que sur [Bassil01]. Ce dernier sera envoyé à un grand

nombre de participants (94%) qui avaient souhaité avoir les résultats de notre étude.

Plusieurs résultats intéressants liés à l’utilité et à l’importance accordée par une centaine

de participants à un ensemble d’aspects fonctionnels, pratiques et cognitifs ont été

générés. Aussi, un nombre considérable de nouveaux aspects non cités dans le

questionnaire ont été proposés. Nous avons remarqué que les participants étaient en

général satisfaits de l’outil de VL en main, ils en ont aussi précisé plusieurs bénéfices.

Cependant, une différence notable entre les aspects souhaités et les caractéristiques des

outils de VL d’aujourd’hui a été identifiée. En outre, une liste non négligeable

d’améliorations qui devront être apportées à ces outils a été exposée. Pour ce qui est de

la partie II du questionnaire, les données collectées suggèrent qu’en général des aspects

liés à l’analyse du code des systèmes logiciels visualisés n’étaient pas fortement

supportés par les outils pour lesquels nous avons reçu une réponse à cette partie.

Une liste complète des noms et références web des outils de VL pour lesquels nous avons reçu une ou

plusieurs réponses au questionnaire peut être trouvée à l’adresse suivante: <http://www.iro.umontreal.ca

/labs/gelo/sv-survey/list-of-tools.html>.

68

Les sections qui suivent exposent en détail les résultats de notre enquête, en mettant

parfois l’emphase sur la discussion et l’analyse de ces résultats. Nous commencerons par

présenter la méthodologie utilisée pour effectuer l’enquête (section 7.2). Ensuite, dans la

section 7.3, nous détaillerons les résultats liés aux aspects fonctionnels, pratiques et

cognitifs des outils de VL. La section 7.4 présentera quelques informations techniques

spécifiques à ces outils, en mettant l’emphase sur le support de l’analyse du code. La

dernière section (7.5) commencera par présenter quelques-unes des améliorations qui

peuvent être apportées à la version actuelle du questionnaire, et ensuite, elle discutera les

résultats principaux de notre enquête ainsi que leur impact.

7.2 Collecte de données et analyse

Une invitation a été envoyée sur plusieurs listes de messagerie électronique (SIGCHI,

Software Engineering Canada, Psychology of Programming Interest Group, Reverse-

Engineering, etc.) et newsgroups (comp.lang.visual, comp.software-eng, comp.lang.java,

comp.lang.c++, ibm.software.vajava.ide, etc.). De plus, un message a été envoyé

explicitement à un nombre de personnes utilisant des outils de VL bien spécifiques

(daVinci [daVinci00], Discover [Discover00], GraphViz [GraphViz00], Grasp

[Grasp00], PBS [PBS98], Rigi [Rigi00], SHriMP [SHriMPage00], TkSee [TkSee96],

Tom Sawyer Software [TomSawyer00a], VCG [VCG95a], xSuds [xSuds98], etc.)

Les réponses ont toutes été recueillies entre mars et mai 2000. L’échantillon consiste en

un total de 107 participants pour la partie I (100 ont rempli la version anglaise et 7 ont

rempli la version française), desquelles 41 ont rempli aussi la partie II (37 pour la

version anglaise et 4 pour la version française).

Pour analyser les données recueillies, nous avons appliqué des techniques statistiques

standards (voir annexe D), incluant la génération de fréquences (pourcentages) et de

moyennes pour des variables qualitatives, le calcul de corrélations entre des variables

ordinales, utilisant la corrélation tau-b ou tau-c de Kendall, aussi appelée “mesure

d’association”, et la vérification d’hypothèses utilisant la valeur du t-test. Dans le cas de

données ordinales, on suppose que l’échelle utilisée est en réalité un intervalle; ce qui

69

rend possible l’application de statistiques paramétriques tel que le calcul de la moyenne.

Tous les calculs ont été faits utilisant SPSS [SPSS00]. Les résultats générés suite à

l’application de ces techniques, s’appliquent à l’échantillon des 107 participants et ne

constituent pas une généralisation sur l’ensemble de la population.

7.3 Analyse de la partie I

7.3.1 Distribution des participants

Le questionnaire visait surtout les utilisateurs d’outils de VL du milieu industriel. Il n’est

donc pas surprenant de voir que les deux tiers des répondants travaillaient dans des

compagnies et le reste provenait du milieu académique. Considérant leur fonction

professionnelle, nous constatons encore une fois que les deux tiers faisaient partie de la

catégorie “développement et maintenance”, alors que le tiers restant était impliqué dans

des travaux de gestion ou de recherche. La distribution des participants selon la taille de

l’équipe de travail était comme suit : 35% des participants travaillaient dans une équipe

de moins de cinq personnes; 36% faisaient partie d’une équipe comportant cinq à 20

personnes, et 17% étaient impliqués dans de grands projets dont la taille des équipes

dépassait les 20 personnes. Les 12% restants n’avaient pas répondu à la question

concernant la taille de l’équipe de travail.

60% des participants avaient précisé que plus qu’un seul outil de VL (deux ou trois)

étaient utilisés dans leur équipe de travail. Ceci suggère qu’aucun outil dans ces équipes

ne fournit toutes les caractéristiques désirées et que des outils de VL complémentaires

sont nécessaires. De plus, la plupart de ces outils sont commerciaux. Plus des trois quarts

des participants estimaient avoir une bonne connaissance de l’outil de VL en main. Un

résultat similaire était trouvé pour la connaissance du SLV (familiarité avec le code

source). Notons qu’une corrélation positive significative nous permet d’affirmer qu’il

existe une relation non négligeable entre le niveau de connaissance du SLV et celui du

domaine d’application (tau-b = 0.458) et du langage d’implantation (tau-b = 0.489) du

SLV.

70

7.3.2 Caractéristiques des SLV

Un grand nombre des SLV ont été développés en utilisant un langage orienté objet (73

systèmes), contre 48 systèmes utilisant un langage procédural, et cinq systèmes utilisant

un langage déclaratif tel que Prolog. Le total de ces nombres (126) est supérieur au

nombre de participants (107), puisque les participants pouvaient indiquer plusieurs

langages. Considérant le type d’application des SLV et demandant aux participants de

choisir entre neuf réponses différentes proposées, nous avons trouvé que le type

d’application le plus fréquent était temps réel (21%), suivi par génie/scientifique (16%),

et systèmes d’information (15%). Un total de 52% a donc été calculé pour ces trois

réponses.

Du côté de l’ordre de grandeur, une répartition presque équitable de ces systèmes a été

remarquée. En effet, le tiers des SLV sont de grande taille avec plus de 1000 KLOC, le

tiers sont des systèmes de taille moyenne (entre 100 et 999 KLOC) et le tiers restant sont

de petits systèmes de moins de 100 KLOC. Ce n’est pas étonnant de trouver une

corrélation positive entre l’ordre de grandeur des SLV et la taille de l’équipe de travail

(tau-b = 0.250).

Nous avons remarqué qu’un grand nombre de participants (42%) affirment que les SLV

sont complexes, 36% estiment qu’ils sont de complexité moyenne, et 18% trouvent

qu’ils sont faciles, alors que les 4% restants n’avaient pas répondu à cette question. Des

pourcentages très proches ont été trouvés pour les tâches effectuées sur les SLV. Des

exemples de tâches seraient les tests, le débogage, l’ajout d’une nouvelle fonctionnalité

aux SLV, etc. En effet, une corrélation positive significative a été trouvée entre ces deux

variables (tau-b = 0.539); ceci laisse croire que les participants considèrent

probablement qu’un système complexe implique directement une certaine complexité

des tâches effectuées sur ce système et vice-versa.

Finalement, pour ce qui est de la disponibilité de la documentation (au-delà du code

source) pour les SLV, une répartition encore une fois équitable a été trouvée entre les

71

catégories “documentation presque complète”, “documentation incomplète”, et “presque

aucune documentation”.

7.3.3 Aspects fonctionnels d’outil de VL

Pour pouvoir évaluer l’utilité d’aspects fonctionnels et de caractéristiques liées aux

outils de VL, 34 fonctionnalités ont été présentées aux participants (voir tableau 2,

section 5.2.1.3) avec quatre choix de réponses possibles pour chacun d’eux (section

5.2.1.3).

Nous avons classifié ces fonctionnalités en procédant de deux manières différentes:

1. En identifiant les aspects qui ont été sélectionnés comme “absolument essentiels” par

au moins 50% des répondants.

2. En affectant un poids à chacune des réponses possibles (2 pour “absolument

essentielle”, 1 pour “utile, mais non essentielle”, et 0 pour “pas du tout utile”), en

calculant la moyenne des réponses pour chacun des 34 aspects et en sélectionnant les

aspects pour lesquels la moyenne est supérieure à 1.5. Nous avons retenu cette valeur

en nous basant sur la supposition qu’entre deux poids différents, il existe un

intervalle continu de valeurs. Une moyenne supérieure à 1.5 tend donc en quelque

sorte à la valeur 2 qui correspond à la réponse “absolument essentielle”.

L’utilité des aspects fonctionnels sera tout d’abord discutée indépendamment de tout

facteur d’influence (section 7.3.3.1), et puis en considérant quelques-uns de ces facteurs

(section 7.3.3.2). Ces derniers sont liés aux participants et aux SLV et sont identifiés

compte tenu des différents échantillons exclusifs de notre enquête:

• Échantillons liés à différents aspects des participants:

o Milieu de travail (“compagnie” versus “milieu académique”)

o Taille de l’équipe de travail (“petite” versus “grande”)

o Niveau de connaissance des SLV (“faible” versus “élevé”)

• Échantillons liés à différents aspects des SLV:

o Langage de programmation (“orienté objet” versus “procédural” versus

“déclaratif”)

72

o Taille (“petite” versus “grande”)

o Niveau de complexité (“simple” versus “complexe”)

Finalement, quelques relations intéressantes entre les différents aspects fonctionnels

seront aussi présentées (section 7.3.3.3).

7.3.3.1 Utilité des aspects fonctionnels

Quoique différant un peu dans l’ordre de leur apparence, les mêmes sept aspects ont été

identifiés en appliquant l’une ou l’autre des deux méthodes mentionnées ci-dessus. Voici

ces aspects en ordre décroissant de leur apparition lors de l’application de la deuxième

méthode: F14 (1.72, 74%), F1 (1.70, 69%), F18 (1.61, 57%), F32 (1.60, 63%), F2 (1.55,

56%), F19 (1.54, 57%), et F5 (1.52, 50%) (voir figures 10 et 11).

Dix autres aspects ont été identifiés “utiles, mais non essentiels” par plus de 50% des

participants: F7 (62%), F24 (58%), F9 (55%), F8 (55%), F27 (53%), F28 (53%), F20

(53%), F17 (52%), F11 (51%), et F4 (51%). Une moyenne supérieure à 1 (et inférieure à

1.5) a été trouvée pour chacun de ces aspects. Cependant, la plupart de ces aspects se

situent à la fin de l’ensemble des 24 aspects ayant une moyenne entre 1 et 1.5.

Finalement, trois aspects ont obtenu une moyenne d’utilité inférieure à 1: F22, F33 et

F34 (voir figure 11).

Absolutely essential

Useful, but not essentialNot at all useful

Don't know / Not applicable

Usefulness

F1F2

F3

F4F5

F6

F7F8

F9

F10F11

F12

F13F14

F15

F16F17

F18

F19F20

F21

F22F23

F24

F25F26

F27

F28F29

F30

F31F32

F33

F34

Functional aspects

0%

25%

50%

75%

100%

Perc

entag

e of p

artic

ipant

s

Figure 10. Utilité des aspects fonctionnels (représentée en %).

F14F1F18

F32F2F19

F5F29

F13

F31F4F15

F30F25

F3

F6F8F10

F16F12

F17

F26F23

F11

F24F9F21

F7F20

F28

F27F22

F33

F34

Functional aspects

0.75

1.00

1.25

1.50

1.75

Mean

��

��

���

���

�����

��

��

����

�����

��

Figure 11. Utilité des aspects fonctionnels(représentée par une moyenne, en ordre

décroissant).

73

Certains participants ont opté pour la réponse “ne sais pas/non applicable” pour

quelques-uns des aspects fonctionnels. Deux explications sont probables: le participant

(1) ne comprenait ou ne connaissait pas l’aspect, ou bien (2) l’aspect ne s’appliquait pas

dans son cas. Un exemple de cette dernière explication serait le fait d’exposer le

participant à un aspect tel que F3 (“accès direct au code source”), alors que ses

principales tâches sont au niveau analyse et conception, utilisant un outil tel que

Together/J [TogetherJ00] ou Rational Rose [RationalRose00]. Pour ce qui est de la

première explication, il est fort probable que des aspects tels que F21, F22, F26, F30, ou

F31 ne soient pas assez compréhensibles pour tous les participants, malgré les notes

explicatives rajoutées dans le questionnaire pour F21 et F26. Finalement, l’aspect F34

est une propriété peu commune aux outils de VL, d’où le haut degré

d’incompréhensibilité (voir figure 10).

7.3.3.2 Facteurs d’influence sur l’utilité d’aspects fonctionnels

Dans cette section, les différents échantillons exclusifs de l’enquête, tel que décrits ci-

haut dans l’introduction de la section 7.3.3, sont examinés par rapport à l’utilité des

aspects fonctionnels. Nous discutons d’abord les trois échantillons reliés aux

participants, puis les trois échantillons concernant les SLV.

Nous avons remarqué que les participants du milieu académique accordent plus

d’importance aux deux aspects F33 et F34 que ceux du milieu industriel (F33: la

moyenne des réponses est 0.97 versus 0.49, valeur du t-test = -3.113, p < 0.003; F34:

0.77 versus 0.48, valeur du t-test = -2.202, p < 0.032). Comme nous pouvons le

constater, le t-test calculé permet de rejeter l’hypothèse nulle (H0) qui est l’égalité des

deux moyennes.

Une corrélation positive (quoique faible) a été identifiée entre F6 et la taille de l’équipe

de travail (tau-c = 0.206).

Plus le niveau de connaissance du SLV est bas, plus le participant a besoin d’avoir une

vue globale du système avant de manipuler son code source, et alors plus il accorde de

74

l’importance à F30 (tau-c < 0). Par contre, plus le niveau de connaissance du SLV est

élevé, plus il accorde de l’importance à F31 et F1 (tau-c > 0).

Considérons maintenant les échantillons liés aux caractéristiques des SLV. Le

pourcentage de participants qui ont choisi F1 (respectivement, F14) comme aspect

“absolument essentiel” s’élève respectivement à 82% (respectivement, 82%) lorsque les

SLV étaient implantés utilisant un langage procédural, et à 69% (respectivement, 79%)

dans le cas de SLV orientés objet. La différence qui existe suggère que le monde

procédural accorde plus d’importance à la visualisation du code source que le monde

orienté objet. Par contre, des pourcentages plus élevés ont été accordés aux deux aspects

F18 et F19 dans le cas de SLV orientés objet. Lorsque les SLV étaient du monde

déclaratif, les deux aspects F17 et F33 ont été identifiées comme les aspects les plus

essentiels par la plupart des participants (quatre sur cinq).

Les participants dont les SLV étaient de grande taille accordaient plus d’importance à

plus d’aspects fonctionnels que les participants dont les SLV étaient de petite taille. De

plus, le choix “ne sais pas/non applicable” a été plus largement choisi dans le cas de

SLV de petite taille que dans le cas de SLV de grande taille. Une corrélation positive a

été identifiée entre F6 et la taille des SLV. En revanche, une corrélation négative a été

identifiée entre F3 et cette dernière. Ceci suggère que plus le SLV est de grande taille,

plus il y a intérêt à le visualiser graphiquement et moins il est utile de passer directement

au code source. Lorsque les participants travaillaient avec des SLV de grande taille, ils

accordent en moyenne plus d’importance aux quatre fonctionnalités F4, F5, F6 et F24,

que lorsqu’ils travaillaient avec des SLV de petite taille (pour tous ces aspects, la valeur

du t-test suggère de rejeter H0; pour plus de détails, consulter [Bassil00b]).

Nous notons que lorsque les SLV étaient de complexité faible, les participants

attachaient de façon significative moins d’importance à la plupart des aspects

fonctionnels que lorsqu’ils étaient complexes. De plus, la réponse “ne sais pas/non

applicable” était largement sélectionnée. Une explication de ceci serait la faible

nécessité de recourir à des outils de VL pour comprendre un système non complexe.

75

Finalement, trois corrélations positives supérieures à 0.300 ont été identifiées entre le

niveau de complexité des SLV et trois aspects: F6 (tau-c = 0.321), F16 (tau-c = 0.320) et

F19 (tau-c = 0.314). Une grande différence entre les moyennes a aussi été détectée pour

ces trois aspects (le t-test calculé permet de rejeter H0).

7.3.3.3 Relations entre les aspects fonctionnels

Nous avons détecté un certain nombre de corrélations entre les différents aspects

fonctionnels. Quelques-unes de ces corrélations confirment simplement la cohérence des

données collectées. Des exemples de telles corrélations existent entre F4 et F5 (tau-b =

0.579), F4 et F15 (tau-b = 0.214), F21 et F22 (tau-b = 0.386), et F27 et F28 (tau-b =

0.417).

D’autres corrélations suggèrent des interdépendances plus intéressantes. Par exemple,

des corrélations positives significatives existent entre F6 et F7 (tau-b = 0.300), F6 et F8

(tau-b = 0.302), F7 et F8 (tau-b = 0.406). Ceci suggère que les utilisateurs sont axés sur

le code (code-centric); A chaque fois qu’ils souhaitaient avoir une visualisation

graphique, ils souhaitaient aussi avoir un accès au code source. Une autre corrélation

intéressante existe entre F14 et F21 (tau-b = 0.301), indiquant que les participants

réalisent le besoin d’outils de recherche pour une navigation arbitraire. Les deux aspects

F17 et F33 (tau-b = 0.379) sont liées en quelque sorte; en effet, la visualisation

dynamique est souvent effectuée en ayant recours à des techniques d’animation. Les

types de compréhension proposés par les deux aspects F30 et F31 (tau-b = 0.599), sont

complémentaires. Enfin, F33 et F34 (tau-b = 0.505) sont similaires; tous les deux sont

liées à des capacités étendues des outils de VL.

7.3.4 Aspects pratiques des outils de VL

Tout comme pour la classification des 34 aspects fonctionnels, les deux mêmes

méthodes (le calcul de la fréquence en pourcentage et le calcul de la moyenne) ont aussi

été utilisées pour classifier les 13 aspects pratiques.

En premier lieu, l’importance de ces aspects sera discutée indépendamment de tout

facteur d’influence (section 7.3.4.1). Ensuite, dans la section 7.3.4.2, nous tenons en

compte deux facteurs d’influence, notamment, l’environnement de travail du participant,

76

et la taille des SLV. Notons que les quatre autres facteurs spécifiés dans l’introduction

de la section 7.3.3 n’avaient pas influencé l’importance accordée aux aspects pratiques.

7.3.4.1 Importance des aspects pratiques

Parmi les 13 aspects pratiques, six ont été à la fois sélectionnés comme “très importants”

par plus de 50% des répondants et classifiés avec une moyenne du degré d’importance

supérieure à 1.5. Indépendamment de la méthode, nous avons obtenu l’ordre suivant: P6

(88%, 1.87), P8 (72%, 1.70), P12 (69%, 1.68), P9 (66%, 1.64), P3 (63%, 1.58), et P2

(62%, 1.56). En moyenne, aucun aspect n’a été classifié comme étant “non important”.

En effet, la moyenne du degré d’importance de chacun des aspects se trouve au-dessus

de la moyenne (1).

Après avoir affecté un degré d’importance spécifique à chacun des 13 aspects pratiques,

le participant pouvait saisir de nouveaux aspects qu’il considère – ou non – importants.

Cinq patrons principaux de réponse ont été détectés:

• Intégrer aux outils de VL des outils bien spécifiques, autres que des générateurs de

code (métriques, design partitioning, etc.) (10 participants)

• Intégrer aux outils de VL des outils de génération de code (plus ou moins

sophistiqués) (5 participants)

• Pouvoir importer de/exporter vers d’autres formats d’outil de VL (5 participants)

• Étendre l’outil de VL avec un langage macro (2 participants)

• Intégrer les outils de VL dans des environnements de développement et permettre

l’“aller-retour SV-IDE-SV” (2 participants)

D’autres aspects ont aussi été proposés. Quelques-uns ont simplement été repris et re-

formulés de la section sur les aspects fonctionnels et de la liste des 13 aspects pratiques.

Une vérification de la cohérence de ces réponses avec le degré d’importance accordé aux

aspects correspondants a été effectuée. Aucune incohérence n’a été détectée.

7.3.4.2 Facteurs d’influence sur l’importance d’aspects pratiques

Passons maintenant à la discussion de l’importance des aspects pratiques compte tenu du

facteur “milieu de travail des participants”. Nous avons constaté que les répondants du

77

milieu académique accordent beaucoup plus d’importance que ceux du milieu industriel

aux deux aspects P1 et P4. Ces résultats ont initialement été générés d’après le calcul de

la fréquence pour la réponse “très important” (pour P1, 50% versus 32%; pour P4, 50%

versus 25%). Le premier résultat (celui lié à l’aspect P1) peut être confirmé en calculant

la moyenne des réponses par milieu de travail (le t-test permet de rejeter H0); ceci n’est

pas le cas pour l’aspect P4. Nous remarquons aussi qu’une différence remarquable existe

entre les deux moyennes calculées pour l’aspect P10, et ceci en faveur du milieu

académique (1.44 versus 1.10, valeur du t-test = -2.304, p < 0.024; encore une fois, le t-

test permet de rejeter H0). Référant à la figure 12, la ligne joignant les points des

moyennes calculées pour le milieu académique se situe toujours au-dessus de la ligne

joignant ceux des moyennes calculées pour le milieu industriel, sauf pour les deux points

des deux aspects P5 et P9. Cependant, le t-test calculé pour ces deux aspects ne nous

permet pas de rejeter l’H0.

Considérant l’aspect “taille des SLV”, nous remarquons que les participants travaillant

avec des systèmes de grande taille accordent plus d’importance à la plupart des aspects

pratiques que ceux travaillant avec des systèmes de petite taille. L’aspect le plus évident

pour lequel nous pouvons rejeter H0 est P9 (1.75 versus 1.39, valeur du t-test = -2.268, p

< 0.028). En effet, plus un développeur travaille avec des systèmes de grande taille, plus

il ressent le besoin d’avoir un outil de VL qui facilite la visualisation de tels systèmes.

� Academia� Company

Workenvironment

P6P8

P9P12

P3P2

P5P7

P1P11

P13P10

P4

Practical aspects

1.0

1.2

1.4

1.6

1.8

Mean

� ��

� �

��

Figure 12. Importance des aspects pratiques, enconsidérant l’environnement de travail (représentéepar une moyenne, en ordre décroissant par rapport à

la compagnie).

78

7.3.5 Évaluation cognitive d’outils de VL

Rappelons que pour remplir la section reliée aux aspects cognitifs (aussi bien que la

section sur les bénéfices et améliorations, et la partie II), les participants devaient choisir

un outil spécifique pour lequel ils répondront aux questions (“outil de VL en main”).

Nous avons reçu des réponses pour plus de 40 outils de VL différents. Étant donné le

nombre limité de participants (107), ceci conduit à un petit échantillon pour chaque

outil, et par conséquent, les résultats pour un outil spécifique sont peu significatifs.

Cependant, nous avons obtenu un certain nombre de résultats globaux intéressants, tel

que présentés ci-dessous.

Plus de 50% des répondants ont précisé que l’outil de VL en main est facile à utiliser,

qu’il est capable de générer des résultats utiles et qu’ils ont confiance dans les résultats

qu’il génère. Cependant, une différence notable a été identifiée entre quelques-unes des

aspects pratiques désirées (tableau 3) et les caractéristiques de l’outil de VL en main.

Spécifiquement, 69% des participants ont accordé la valeur “très important” à l’aspect

P12, alors que juste 43% ont répondu par “haut” à une question semblable dans les

aspects cognitifs. Une différence semblable a été trouvée pour l’aspect P8 (72% pour

“très important”, et juste 63% pour “haut”).

De plus, les résultats confirment notre intuition qu’un bon support pour la

compréhension du code facilite des tâches telles que la maintenance, le débogage, le test,

l’ajout de nouvelles fonctionnalités, le perfectionnement, la création de la documentation

et surtout l’analyse du code. En effet, des corrélations positives ont été trouvées entre le

support de chacune de ces tâches par un outil de VL et l’activité de compréhension du

code. La corrélation la plus significative est la corrélation entre l’analyse et la

compréhension du code (tau-b = 0.515).

Certaines caractéristiques des SLV ont été proposées, demandant aux répondants de

préciser pour chacune de ces caractéristiques le degré de diminution de l’efficacité

qu’elle apporte à l’outil de VL en main. Nous remarquons qu’une “documentation

insuffisante” est celle qui diminue le plus l’efficacité d’un outil de VL (57% des

79

participants ont répondu “beaucoup/moyennement”). Suite à celle-là vient la

caractéristique “complexité du code” (50%). En revanche, les répondants semblent être

satisfaits quant à la “scalability” des outils de VL en main (55% des participants ont

répondu à la caractéristique concernant la “taille du code” par “pas du tout”). D’autres

caractéristiques pouvant diminuer l’efficacité de l’outil de VL en main ont été

proposées. Ces caractéristiques sont liées à des outils bien particuliers tout comme

Fujaba [Fujaba98], UML Studio [UMLStudio00] et Rational Rose [RationalRose00].

Finalement, la plupart des participants (74%) trouvent que l’outil de VL en main affecte

en quelque sorte l’approche qu’ils prennent pour accomplir une certaine tâche sur le

SLV. La plupart (70%) aussi étaient très satisfaits quant aux résultats obtenus lors de

l’application de l’outil de VL en main. Aucun des répondants n’a été complètement non

satisfait de l’outil de VL qu’il utilise.

7.3.6 Bénéfices et améliorations des outils de VL

Deux questions ouvertes ont été posées aux participants pour saisir (1) les bénéfices

qu’ils ont retirées suite à l’utilisation de l’outil de VL en main, et (2) les principales

améliorations qui à leur avis, devraient être apportées à cet outil.

De façon générale, les patrons que nous avons détectés pour les bénéfices, et qui se

répétaient pour plusieurs des outils sont les suivants:

• Économie de temps (en effectuant une certaine tâche sur le SLV) (15 outils de VL)

• Meilleure compréhension (6 outils de VL)

• Augmentation de la productivité (vitesse de développement, etc.) (4 outils de VL)

• Gestion de la complexité (4 outils de VL)

• Aide à trouver des erreurs dans le code (3 outils de VL)

• Amélioration de la qualité (code, processus, etc.) (3 outils de VL)

• Économie financière (2 outils de VL)

D’autres bénéfices spécifiques à un seul outil ont aussi été évoqués. Par ailleurs, des avis

plus généraux non liés à un outil bien particulier ont aussi été précisés: (1) l’utilisation

80

de la VL rend le programmeur plus efficace, elle permet une économie de temps en

permettant un accès rapide au code dans des fichiers de grande taille, (2) la VL assiste

dans les phases suivantes: conception, implantation, maintenance, débogage, (3) en

général, les outils de VL rendent le génie logiciel une tâche facile et agréable.

Pour ce qui est des améliorations, la plupart – mais non pas toutes – ne sont qu’une

répétition des aspects et fonctionnalités cités tout le long de la partie I du questionnaire,

avec quelques aspects additionnels (qui ont été compilés et présentés comme patrons

dans la section 7.3.4.1). Certains répondants souhaitaient avoir ces propriétés (si elles

n’existaient pas dans l’outil) et d’autres souhaitaient avoir une amélioration de ces

propriétés (si elles existaient déjà dans l’outil). Quelques nouveaux aspects ont tout de

même été évoqués:

• Fournir un système d’aide (5 outils de VL)

• Adapter l’outil de VL à la compilation (4 outils de VL)

• Ajouter plus de fonctionnalités à l’outil de VL (3 outils de VL)

Le rapport [Bassil00b] donne des détails sur les bénéfices et améliorations proposés par

outil.

7.4 Analyse de la partie II

7.4.1 Aspects techniques des outils de VL

La partie II du questionnaire a été remplie par 41 participants pour un total de 24 outils

de VL différents. 16 des outils sont commerciaux, alors que huit sont des prototypes de

recherche. De plus, nous notons que 12 outils sont formés d’un seul grand outil, alors

que les 12 autres sont formés de plusieurs outils.

Les buts pour lesquels les outils peuvent être utilisés ont été demandés. Il semble que la

plupart des outils (18 des 24 outils) sont utilisés dans un but de compréhension des SLV.

Juste après, viennent le but d’analyse avec 17 outils puis les deux buts: maintenance et

ajout de nouvelles fonctionnalités avec pour chacun 16 outils. Le but le moins cité était

81

la conception avec juste quatre outils (Rational Rose [RationalRose00], Rhapsody

[Rhapsody00], Together/J [TogetherJ00], et UML Studio [UMLStudio00]). Au total, dix

participants ont profité de l’option “autre” pour spécifier d’autres buts pour lesquels

l’outil peut-être utilisé. Le participant de The Paislei IDE [PaisleiIDE00], par exemple, a

mentionné que l’outil est utilisé pour la conception et la visualisation de grammaires.

Les participants de aiSee [aiSee00] ont précisé les deux buts suivants: “pour vendre des

systèmes complexes” et “enseignement”. Les participants de Clarion [Clarion00], Grasp

[Grasp00] et UltraEdit [UltraEdit00] ont rajouté “création de code, développement et

écriture” comme but. Ce dernier but, quoique non précisé, est aussi supporté par d’autres

outils. Un exemple évident serait Emacs [Emacs99]. Finalement, le but “reverse

engineering” a été cité à plusieurs reprises et ceci pour les outils: UML Studio

[UMLStudio00], Fujaba [Fujaba98] et PBS [PBS98]. Nous sommes certains que,

quoique non précisé par les participants correspondants, d’autres outils (ex. SHriMP

[SHriMPage00], Rigi [Rigi00], etc.) couvrent aussi ce but.

Les deux styles les plus utilisés pour la spécification de la visualisation sont:

“automatique à partir du code source directement” (13 outils) et “utilisation d’un outil

d’édition graphique” (13 outils). Notons que pour certains des outils, plusieurs styles ont

été indiqués.

16 des 24 outils font partie d’un (ou bien sont des) environnement(s) de développement

de logiciel. Notons que dans la partie I, cet aspect a été fortement souhaité par les

participants. Par conséquent, nous sommes optimistes par rapport au résultat obtenu ici.

La dernière question de la section sur les renseignements techniques sur les outils de VL

demandait de préciser le(s) langage(s) de programmation dans lequel (lesquels) le SLV

peut être écrit. Nous remarquons que la plupart (17) des outils acceptent des systèmes

écrits en différents langages. Il est intéressant de noter que l’aspect pratique P10

correspondant à la “visualisation de logiciels écrits en langages différents” n’a pas été

classifié parmi les six aspects pratiques les plus importants (voir section 7.3.4.1). Les

sept outils restant soit qu’ils acceptent des systèmes écrits dans juste un des langages

82

suivants: C++, Pascal ou Java, soit qu’ils requièrent un traducteur approprié pour créer

des fichiers de format spécifique (ex. le graph description language pour VCG

[VCG95a], ou bien le term representation pour daVinci [daVinci00]). Nous remarquons

que la plupart des outils de VL visualisent surtout des systèmes orientés objet (Java et

C++). En effet, 20 des 24 outils supportent l’un ou l’autre de ces deux langages, ou bien

les deux.

7.4.2 Support de l’analyse du code par l’outil de VL

Dans la deuxième section de la partie II, nous étions intéressés par les capacités des

outils de VL pour l’analyse du code du SLV. Comme nous l’avons déjà précisé à la

section 5.2.2.2, le questionnaire couvre les sept aspects principaux: (1) appels de

fonctions, (2) clonage de fonctions, (3) graphes d’héritage, (4) graphes d’architecture de

sous-ensemble, (5) différents niveaux de détail, (6) métriques, et (7) versions multiples.

Ces aspects sont raffinés dans 24 sous-aspects. Dans les sous-sections qui suivent nous

expliquerons d’abord la procédure utilisée pour traiter des réponses multiples

(section 7.4.2.1). Puis, dans la section 7.4.2.2, nous discuterons quelques résultats pour

le support de l’analyse du code pour l’ensemble des 24 outils examinés.

7.4.2.1 Traitement de réponses multiples

Pour six outils, parmi les 24 couverts par les 41 participants, nous avons reçu plus d’une

seule réponse. Ces outils sont les suivants (avec le nombre de participants entre

parenthèses):

• Grasp [Grasp00] (6)

• pcGrasp [Grasp00] (5)

• aiSee [aiSee00] (5)

• PBS [PBS98] (3)

• Rational Rose [RationalRose00] (2)

• Software through Pictures [SoftwareThroughPictures98] (2)

Il n’est pas étonnant de voir apparaître, pour chacun de ces six outils, quelques réponses

contradictoires aux différents sous-aspects. Afin d’obtenir pour chaque sous-aspect et

83

chaque outil une seule réponse, nous avons procédé en deux étapes. Dans un premier

temps, nous avons défini cinq heuristiques pour passer d’un ensemble de réponses

contradictoires à une seule réponse (“#” signifie le nombre d’éléments; “y”, “n”, “!” et

“?” correspondent respectivement à “oui”, “non”, “non/je ne sais pas, mais je

souhaiterais cette propriété”, et “ne sais pas/non applicable”; finalement, “yn” indique

que l’aspect est plus ou moins supporté par l’outil):

(1) (#y = 1 ∧ #n = 1) ∨ (#y > 1 ∧ #n > 1) � yn(2) [(#y ≤ 1 ∧ #n > 1) ∨ (#y = 0 ∧ #n = 1)] ∧ #! = 0 � n(3) (#y > 1 ∧ #n ≤ 1) ∨ (#y = 1 ∧ #n = 0) � y(4) [(#y < #n) ∨ (#y = 0 ∧ #n = 0)] ∧ #! ≥ 1 � !(5) #y = 0 ∧ #n = 0 ∧ #? ≥ 1 ∧ #! = 0 � ?

Après avoir appliqué ces heuristiques, nous sommes arrivés à quatre réponses “yn”.

Certaines restrictions (tableau 5) ont été violées par deux des quatre réponses “yn”. Par

conséquent, comme deuxième étape, nous avons essayé d’éliminer toutes les réponses

“yn”, en examinant étroitement le sous-aspect ainsi que la documentation liée à l’outil

de VL en main, et dans un cas, en consultant un participant connu. (Pour plus de détails

sur la procédure, référez-vous à [Bassil00c].)

7.4.2.2 Résultats pour le support de l’analyse du code

D’après nos résultats, parmi les sept aspects principaux, l’aspect lié à l’analyse du code,

supporté par le plus grand nombre d’outils de VL est “la visualisation des appels de

fonctions” (18 outils). L’aspect suivant est “la visualisation de graphes d’héritage

(hiérarchies des classes du système)” (17 outils), vient après, “la visualisation de

différents niveaux de détail simultanément dans des fenêtres séparées” (15 outils). Les

quatre aspects principaux restants sont supportés par moins de 12 outils. Notons qu’à

l’intérieur d’un aspect principal, des sous-aspects plus spécialisés ont été moins

supportés. Ceci a aussi été le cas pour les trois aspects cités ci-haut qui sont supportés

par plus que la moitié des outils de VL.

Les deux aspects les moins supportés par l’ensemble des 24 outils sont “la détection du

clonage de fonctions” (6 outils) et “le calcul de métriques” (5 outils). Quoique non

84

supportés, ces aspects ont rarement été souhaités. En effet, alors que 10 outils ne

supportent pas “la détection du clonage de fonctions”, nous avons juste trois outils pour

lesquels ce sous-aspect a été souhaité. De même pour “le calcul de métriques”, ces deux

nombres sont respectivement huit et trois. Nous nous sommes également rendus compte

qu’un nombre important de participants a répondu “?” pour ces deux aspects. En fait, les

trois aspects les moins connus sont: “le calcul de métriques” avec 7 outils, “la détection

du clonage de fonctions” avec 4 outils, et “la visualisation de graphes d’architecture de

sous-systèmes” avec 4 outils aussi.

Nos résultats suggèrent que les utilisateurs d’outils de VL spécifiques souhaitent souvent

avoir un raffinement des aspects qui sont déjà supportés:7 si un aspect n’existe pas dans

un outil, l’utilisateur de cet outil ressent rarement le besoin de l’avoir; par contre, s’il

existe, il souhaiterait avoir certains des sous-aspects qui lui sont liés. Il n’est donc pas

étonnant de voir apparaître les sous-aspects liés aux deux aspects les plus rencontrés

dans les outils de VL (“visualisation des appels de fonctions” et “visualisation de

graphes d’héritage”) parmi ceux les plus souhaités. Voici, en ordre décroissant, ces sous-

aspects, précédés par l’aspect principal correspondant:

• Appels de fonctions: Présenter comme un tout (dans un même graphe) une chaîne de

récursion complexe (5 outils ne supportent pas ce sous-aspect, et ce sous-aspect a été

souhaité pour 6 outils)

• Graphes d’héritage: Détecter des branches profondes (1 contre 6)

• Graphes d’architecture de sous-systèmes: Pouvoir lier l’architecture aux autres

résultats de l’outil de VL en main (ex. zones de couleurs différentes sur le graphe

d’architecture) (3 contre 5)

• Graphes d’héritage: Détecter un héritage multiple (1 contre 4)

• Appels de fonctions: Représenter par des nœuds les fonctions de la chaîne de

récursion et donner la possibilité d’accéder directement au code source à partir des

nœuds (4 contre 4)

7 Ceci nous rappelle le fameux proverbe français: “L’appétit vient en mangeant!”

85

Parmi les sous-aspects les moins supportés, nous retrouvons “l’élimination des fonctions

récursives simples” (supportées seulement par l’outil The Paislei IDE [PaisleiIDE00]), et

“la réduction de la granularité lors de la détection des différences qui existent dans les

clones d’une fonction” (supportée seulement par Rhapsody [Rhapsody00]). Enfin, aucun

des 24 outils ne permet d’“intégrer les métriques et le code source”.

Nous identifions parmi les 24 outils deux éditeurs de texte: Emacs [Emacs99] et

UltraEdit [UltraEdit00]. Notons que la majorité des sous-aspects liés à l’analyse du code

ne sont pas supportées par ces outils.

7.5 Discussion et perspectives

7.5.1 Améliorations du questionnaire

Comme avec la plupart des questionnaires, il reste toujours des améliorations à faire. Par

exemple, dans une version future du questionnaire, nous voudrions présenter des choix

plus raffinés pour quelques-unes des questions à choix multiples. En outre, puisque nous

avons obtenu beaucoup d’informations intéressantes à partir des questions ouvertes,

nous mettrions probablement encore plus d’emphase sur ce type de question. Par

exemple, pour ce qui est de l’utilité des aspects fonctionnels, des questions ouvertes

auraient pu rapporter des données complémentaires. Une autre amélioration serait de

fournir différentes versions du questionnaire pour différents genres d’outils de VL

(phase de conception, phase de programmation, etc.), pour ainsi obtenir des résultats

plus ciblés.

Pour ce qui est de l’évaluation cognitive des outils de VL, nous nous rendons compte

que, afin d’obtenir des résultats plus significatifs et spécifiques à chaque outil, il aurait

été nécessaire d’avoir plus de participants par outil que nous ne l’avons obtenu dans le

cas de notre enquête. Par ailleurs, un seul participant par outil aurait probablement été

suffisant pour la partie II du questionnaire. Ce participant devrait bien sûr être un vrai

expert de l’outil de VL.

86

7.5.2 Résumé et impact des résultats

En général, les participants étaient satisfaits de l’outil de VL qu’ils utilisent. Des aspects

fonctionnels tels que la recherche et le browsing, l’utilisation de couleurs, et l’accès

facile à partir d’une liste de symboles au code source correspondant, ont été évalués

comme aspects les plus essentiels. Des représentations hiérarchiques ainsi que la

navigation à travers les hiérarchies ont également été fortement désirées,

particulièrement quand le SLV était développé utilisant un langage orienté objet. D’autre

part, la visualisation de code source a été presque toujours souhaitée lorsque le SLV était

procédural. Les trois aspects les moins appréciés, particulièrement dans l’industrie,

étaient les effets d’animation, la visualisation en 3D et les techniques de réalité virtuelle.

Cependant, l’animation a été identifiée comme étant assez utile lorsque le SLV était

implanté utilisant un langage déclaratif.

Concernant les aspects pratiques des outils de VL, nous avons constaté que la fiabilité de

l’outil a été classifiée comme aspect le plus important, suivi de la facilité d’utilisation et

de la facilité de visualiser des logiciels de grande taille. Plusieurs participants ont

également évalué la qualité de l’interface usager comme très importante.

Malheureusement, nous avons trouvé une différence gênante entre la grande importance

accordée aux deux aspects: facilité d’utilisation et qualité de l’interface usager, et la

présence de ces aspects dans les outils de VL utilisés pratiquement. La documentation de

l’outil a également été estimée comme très importante, en termes du contenu, de la

qualité et de la disponibilité on-line. En outre, les participants ont indiqué une liste

intéressante d’aspects supplémentaires désirés. Plusieurs de ces aspects sont associés à

l’intégration des outils de VL dans d’autres outils, tels que des générateurs de code, des

outils de design partitioning, des éditeurs, des outils de métriques, des générateurs et des

gestionnaires de documentation, des schedulers, etc.

Aspects fonctionnels et aspects pratiques, tous les deux ont été influencés par les deux

facteurs: environnement de travail et taille du SLV. De plus, l’utilité des aspects

fonctionnels a aussi été influencée par la taille de l’équipe de travail et le niveau de

connaissance du SLV, aussi bien que par le langage d’implantation et le niveau de

87

complexité du SLV. Rappelons que ces derniers facteurs n’ont eu aucun impact

mesurable sur l’importance des aspects pratiques.

Évidemment, nous avons vérifié que la compréhension du code est considérée comme

élément principal pour effectuer des tâches de maintenance ainsi que d’autres tâches du

cycle de vie d’un logiciel. De plus, un certain nombre de patrons intéressants concernant

les bénéfices et les améliorations des outils de VL ont pu être dérivées.

Pour ce qui concerne les aspects de l’analyse du code, il semble qu’un nombre minime

de ces aspects est supporté par les outils actuels de VL. Parmi les 24 différents aspects,

seulement trois ont été identifiés comme étant supportés par plus que la moitié des outils

pour lesquels nous avons reçu des réponses. Ces trois aspects étaient: la visualisation

d’appels de fonctions, de graphes d’héritage, et de différents niveaux de détail dans des

fenêtres séparés. Les aspects liés au calcul de métriques étaient les moins supportés;

cependant, ils étaient parfois souhaités.

À partir de cette enquête, nous pouvons affirmer que les outils de VL actuels ont

beaucoup d’utilisations, notamment dans le processus de compréhension de logiciel. La

plupart des outils étudiés sont faciles à utiliser et génèrent des résultats utiles. Ces outils

affectent l’approche prise par les utilisateurs pour accomplir une certaine tâche sur le

SLV et présentent un certain nombre de bénéfices citées à la section 7.3.6. Côté

technique, les trois buts - liés aux tâches effectuées sur les SLV - pour lesquels les outils

sont les plus utilisés sont l’analyse de code, la maintenance et l’ajout de nouvelles

fonctionnalités. Un grand nombre de ces outils (1) fait partie d’un environnement de

développement de logiciel, (2) génère la visualisation automatiquement à partir du code

source ou bien via un outil d’édition graphique (3) et accepte des SLV écrits en

différents langages pour la plupart orientés objet.

En général, les utilisateurs sont satisfaits des résultats obtenus en appliquant l’outil de

VL en main. Ils ont indiqué beaucoup d’avantages liés à l’utilisation de cet outil. Les

deux bénéfices les plus cités étaient l’économie de temps en effectuant une certaine

88

tâche, et la meilleure compréhension du SLV. Cependant, beaucoup d’aspects souhaités

et de nombreuses améliorations de l’outil de VL en main ont également été indiqués par

les participants. Sans aucun doute, on s’attendrait à ce que ces éléments soient supportés

par les prochains outils de VL, ou même par les prochaines versions des outils de VL

d’aujourd’hui. Par conséquent, le défi pour les constructeurs des outils de VL futurs est

de fournir des outils qui (1) intègrent d’autres outils complémentaires, (2) rendent

possible d’importer/d’exporter vers d’autres formats d’outil de VL, et (3) sont plus

adaptés au(x) système(s) de compilation utilisé(s) pour le développement de code. Une

liste plus complète des améliorations qui devraient être faites aux outils de VL a été

présentée aux sections 7.3.4.1 et 7.3.6. Ces éléments concernent non seulement les

constructeurs d’outil de VL, mais certains d’entre eux constituent aussi des éléments de

recherche.

Chapitre 8. Conclusion

8.1 Synthèse

La science cognitive met l’emphase sur la force des formalismes visuels pour

l’apprentissage humain et la résolution de problème. En génie logiciel, une visualisation

claire d’un système logiciel aide à réduire l’effort de sa compréhension. L’utilisation

d’outils de VL a donc été proposée afin de fournir l’aide nécessaire pour accomplir

différentes activités liées aux différentes phases du cycle de vie d'un logiciel. Toutefois,

ces outils doivent surtout offrir aux utilisateurs un environnement favorable qui leur

permet avant tout de “comprendre” le système qu’ils ont entre les mains. Cependant,

nous manquons d’information sur les impacts positifs et les limitations de ce genre

d’outils. De plus, les propriétés désirées de tels outils n'ont guère été étudiées. Le travail

qui est décrit dans ce mémoire a donc commencé par identifier et évaluer

qualitativement des outils de VL. Suite à cette première étape, un catalogue d’aspects

fonctionnels, pratiques et cognitifs, ainsi que d’aspects liés à l’analyse de code, a été

créé pour ainsi former un questionnaire dont le but principal est de connaître les impacts

positifs et les limitations des outils de VL, ainsi que d’identifier les propriétés désirées

par les utilisateurs de tels outils.

8.1.1 Inventaire d’outils de VL et évaluation qualitative

Comme première étape dans ce travail, nous avons identifié une liste d’outils de VL à

partir de laquelle nous avons retenu sept outils que nous avons décrits. Le critère sur

lequel nous nous sommes basés pour l’identification de ces outils est le suivant: “un

outil de VL est tout outil qui aide d’une façon ou d’une autre à la compréhension de

logiciel.” Il n’était donc pas nécessaire que l’outil présente du graphisme comme le

90

suggèrent beaucoup des définitions rencontrées dans la littérature. Suite à l’étude de ces

outils, nous avons pu tirer un ensemble de conclusions comparant les deux catégories

d’outils (outils académiques et outils commerciaux). Cette liste se trouve à la section

3.4.

Les sept outils retenus et étudiés ont été par la suite évalués en utilisant la taxonomie de

Price et al. Cette taxonomie s’est avérée la plus complète parmi l’ensemble des

taxonomies que nous avons étudiées (section 2.5). Suite à notre évaluation, nous avons

remarqué qu’un grand nombre des caractéristiques de la taxonomie de Price et al.

requièrent une évaluation subjective des outils de VL. C’est d’ailleurs le point faible de

cette taxonomie. De plus, elle ne tient pas compte des aspects cognitifs d’un outil de VL,

qui ont cependant été traités de façon exclusive dans la taxonomie de Storey et al. Par

conséquent, nous pensons qu’une taxonomie qui regroupe à la fois des éléments de la

science cognitive ainsi que des aspects concrets d’outil de VL serait souhaitable pour la

communauté de personnes travaillant sur la VL.

Cette première étape du travail nous a permis d’évaluer de façon formelle un ensemble

d’outils de VL. Cependant, tel qu’il a déjà été précisé, l’évaluation de ces outils se faisait

le plus souvent de façon subjective. Pour remédier à cela, une enquête (évaluation

quantitative) sur les outils de VL, via un questionnaire, s’est avérée nécessaire.

8.1.2 Évaluation quantitative

Comme deuxième étape de notre travail, une enquête sur les outils de VL a été

développée, et elle a permis de recueillir le point de vue d’une centaine d’utilisateurs

travaillant sur différents outils de VL. Elle a aussi permis d’identifier les besoins réels de

ces utilisateurs.

Nous avons donc commencé par créer un catalogue de propriétés des outils de VL en

nous basant surtout sur les différents travaux qui ont été effectués dans le domaine de la

VL. A partir de ce catalogue, un certain nombre de questions ont été formulées, avec

toujours comme intérêt principal l’identification des propriétés désirables (ou non)

91

d’outils de VL, ainsi que l’évaluation de leurs capacités à réduire l’effort de la

compréhension de logiciel et de l’évaluation de conception. Plusieurs itérations ont été

nécessaires avant d’arriver à une version stable du questionnaire. Finalement, le

questionnaire a été mis on-line. Nous avons discuté au chapitre 6 l’implantation

technique du questionnaire tout en mettant l’emphase sur les techniques récentes liées à

la collecte d’informations à partir du web.

Plusieurs résultats intéressants ont été générés à partir de cette enquête. La section 7.5.2

discute en résumé les points les plus intéressants que nous avons tirés. En bref, un

ensemble d’aspects fonctionnels ont été retenus comme aspects très essentiels dans un

outil de VL. Certains facteurs ont influencé la classification de ces aspects. Il en était de

même pour l’importance accordée à un ensemble d’aspects pratiques. Malheureusement,

une différence gênante a été trouvée entre la grande importance accordée à certains de

ces aspects et leur présence dans les outils de VL utilisés en pratique. En outre, les

participants ont indiqué une liste intéressante d’aspects supplémentaires désirés.

Évidemment, nous avons vérifié que la compréhension du code est considérée comme

élément clé pour effectuer des tâches du cycle de vie d’un logiciel. De plus, un certain

nombre de bénéfices et d’améliorations des outils de VL ont pu être tirés. Pour ce qui

concerne les aspects de l’analyse du code, un nombre minime de ces aspects est supporté

par les outils actuels de VL. Bref, cette enquête nous a permis d’affirmer que les outils

de VL ont beaucoup d’utilisations, notamment dans le processus de compréhension de

logiciel.

8.2 Travaux futurs

Il y a deux directions principales dans lesquelles il serait souhaitable de continuer cette

étude. La première direction proposera une étude multi-phases des outils de VL

[Cooper95] pour ainsi compléter nos résultats actuels, alors que la deuxième direction

touchera de plus prés le processus d’évaluation de la qualité logicielle chez Bell Canada.

Tout d’abord, en profitant des résultats déjà recueillis à partir du questionnaire (chapitre

7), ainsi que des améliorations qui lui ont été proposées à la section 7.5.1, et par

92

l'intermédiaire de techniques d’études multi-phases [Cooper95], il va falloir

tenter d’identifier la population cible représentative pour différentes questions d’une

nouvelle enquête. Suite à cette identification, il va falloir essayer de tester un certain

nombre d’hypothèses, soit pour les accepter, soit pour les rejeter. Cette vérification

d’hypothèses se fera en ayant recours à des techniques statistiques standards telles que

celles déjà utilisées pour analyser les données collectées via le questionnaire actuel.

Comme deuxième direction des travaux futurs, les métaphores, techniques et outils de

VL déjà trouvés (tableau 1 de la section 3.2 et liste on-line des outils de VL8) et évalués

de façon qualitative et quantitative pendant les différentes phases de ce travail (chapitres

4 et 7 et première direction des travaux futurs) devront être reportés dans le processus

d’évaluation de la qualité logicielle chez Bell Canada, pour ainsi évaluer leur impact

positif et leurs limitations. Il va falloir chercher des synergies pour la visualisation de

l’impact de changement, des slices orientés objet, des patrons de conception, etc. Il va

falloir aussi étudier comment la visualisation peut guider l’évaluation quantitative d’un

logiciel, tel que la mesure de sa changeabilité et de son évolution.

8 Une liste complète des noms et références web des outils de VL pour lesquels nous avons reçu une ou

plusieurs réponses au questionnaire peut être trouvée à l’adresse suivante: <http://www.iro.umontreal.ca

/labs/gelo/sv-survey/list-of-tools.html>.

Bibliographie

[aiSee00] aiSee (AbsInt Angewandte Informatik GmbH). On-line at <http://www.absint.de/aisee.html>.

[Baecker75] Baecker, R. M., Two systems which produce animated representations of theexecution of computer programs. ACM SIGCSE Bulletin 7, pp. 158 - 167,1975.

[Baecker81] Baecker, R. M., Sorting Out Sorting. Morgan Kaufmann, Los Altos,California, Narrated colour videotape, 30 minutes, presented at ACMSIGCRAPH’81 and excerpted in ACM SIGGRAPH Video Review No. 7,1981.

[Baecker90] Baecker, R. M., and Marcus, A., Human factors and typography for morereadable programs. Addison-Wesley, Reading, Massachusetts, 1990.

[Barr96] Barr, J., Product review “Discover 3.0”. Software Development Magazine,March 1996. On-line at <http://www.sdmagazine.com/articles/1996/0003/0003n/0003n.htm>.

[Bassil00a] Bassil, S., and Keller, R., Inventaire d’outils de visualisation logicielle.Technical Report GELO-131, Université de Montréal, September 2000.

[Bassil00b] Bassil, S., and Keller, R., Analyse du questionnaire sur les outils devisualisation logicielle – Partie I. Technical Report GELO-132, Université deMontréal, September 2000.

[Bassil00c] Bassil, S., and Keller, R., Analyse du questionnaire sur les outils devisualisation logicielle – Partie II. Technical Report GELO-133, Universitéde Montréal, September 2000.

[Bassil01] Bassil, S., and Keller, R. K., Software visualization tools: Survey andanalysis. In Proceedings of the 9th International Workshop on ProgramComprehension (IWPC’01), Toronto, Ontario, Canada, May 2001. IEEE. Toappear.

[Bellay97] Bellay, B., and Gall, H., A comparison of four reverse engineering tools. InProceedings of the 4th Working Conference on Reverse Engineering(WCRE’96), Amsterdam, The Netherlands, pp. 2 - 11, 1997.

[Brooks83] Brooks, R., Towards a theory of the comprehension of computer programs.International Journal of Man-Machine Studies, 18 (6), pp. 543 - 554, 1983.

94

[Brown84] Brown, M. H., and Sedgewick, R., A system for algorithm animation.Proceedings of ACM SIGGRAPH’84 ACM Press, New York, pp. 177 – 186,1984

[Brown88] Brown, M. H., Exploring algorithms using Balsa-II. IEEE Computer, 21 (5),pp. 14 - 36, 1988.

[Brown93] Brown, M. H., and Najork, M. A., Algorithm animation using 3D interactivegraphics. DIGITAL, Systems Research Center, September 1993. On-line at<http://www.research.digital.com/SRC/publications/src-rr.html>.

[Burd96] Burd, E. L., Munro, M., and Young, P. J., The shape of software to come: Areview of preliminary investigations of the Visualisation Research Group. InProceedings of the 2nd UK Program Comprehension Workshop, Durham,1996.

[Cain99] Cain, J. W., and McCrindle, R. J., Software visualisation using C++ Lenses.In 7th International Workshop on Program Comprehension (IWPC’99), pp. 20– 26, Pittsburgh, Pennsylvania, USA, May 1999.

[CGDI96] Call Graph Drawing Interface Page. On-line at <http://www.ida.liu.se/~vaden/cgdi/>.

[CGI00] CGI Documentation. On-line at <http://stein.cshl.org/WWW/software/CGI/cgi_docs.html>.

[Clarion00] Clarion by SoftVelocity. On-line at <http://www.softvelocity.com/products/products.htm>.

[Cooper95] Cooper, D. R., and Schindler, P. S., Business research methods.Irwin/McGraw-Hill, sixth edition, 1995.

[Datrix99] Bell Canada. DATRIX abstract semantic graph – reference manual. Montreal,Quebec, Canada. January 1999. Available on request from<[email protected]>.

[daVinci00] The Graph Visualization System daVinci. On-line at <http://www.informatik.uni-bremen.de/daVinci/>.

[Desmarais94] Desmarais, M., Hayne, C., Jagannath, S., and Keller, R. K., A survey on userexpectations for interface builders. In Proceedings of the Conference onHuman Factors in Computing Systems (Conference Companion), pp. 279 –280, Boston, MA, April 1994. ACM.

[Discover00] Discover information set. On-line at <http://www.upspringsoftware.com/products/discover/index.html>.

[Domingue92] Domingue, J., Price, B. A., and Eisenstadt, M., A framework for describingand implementing software visualization systems. In Proceedings of GraphicsInterface’92, pp. 53 - 60, Vancouver, Canada, May 1992. On-line at <ftp://watson.open.ac.uk/pub/documents/Domingue-Viz-GI92.ps.Z>.

[Emacs99] GNU Emacs (Free Software Foundation) <http://www.gnu.org/software/emacs/emacs.html>.

95

[Fairchild88] Fairchild, K. M., Poltrock S. E., and Furnas, G. W., Semnet: Three-dimensional graphic representations of large knowledge bases. In CognitiveScience and Its Applications for Human-Computer Interaction, Fairlawn, NJ:Lawrence Erlbaum Associates, 1988. On-line at <http://panda.iss.nus.sg:8000/kids/fair/webdocs/semnet/semnet-1.hml>.

[FrontPage00] Microsoft Office – Microsoft FrontPage. On-line at <http://www.microsoft.com/frontpage/>.

[Fujaba98] Fujaba Homepage. On-line at <http://www.uni-paderborn.de/fachbereich/AG/schaefer/ag_dt/PG/Fujaba/>.

[Goldstein47] Goldstein, H. H., and Von Neumann, J., Planning and coding problems of anelectronic computing instrument. In Von Neumann, J., Collected Works (A.H. Taub, ed.) McMillan, New York, pp. 80 - 151, 1947.

[GraphViz00] GraphViz (AT&T Labs-Research). On-line at <http://www.research.att.com/sw/tools/graphviz/>.

[Grasp00] Grasp: Graphical Representations of Algorithms, Structures, and Processes.On-line at <http://www.eng.auburn.edu/department/cse/research/grasp/>.

[Green00] Green, S. B., Salkind, N. J., and Akey, T. M., Using SPSS for Windows:Analyzing and understanding data. Prentice-Hall Inc., second edition, 2000.

[GV3D95] The GraphVisualizer3D project. On-Line project overview, University ofNew Brunswick, 1995. On-line at <http://www.omg.unb.ca/hci/projects/hci-gv3D.html>.

[Haibt59] Haibt, L. M., A program to draw multi-level flow charts. In Proceedings of theWestern Joint Computer Conference. San Francisco, California, pp. 131 - 137,1959.

[Harel92] Harel, D., Biting the silver bullet. Toward a brighter future for systemdevelopment. IEEE Computer, 25(1), pp. 8 - 20, January 1992.

[Hendley95] Hendley, R. J., Wood, A. M., Beale, R., and Drew, N. S., Narcissus:Visualising information. University of Birmingham, 1995. On-line at <ftp://ftp.cs.bham.ac.uk/pub/authors/R.J.Hendley/ieeeviz.ps.Z>.

[Hueras77] Hueras, J., and Ledgard, H., An automatic formatting program for Pascal.ACM SIGPLAN Notices, 12 (7), pp. 82 - 84, 1977.

[Jagannath93] Jagannath, S., Questionnaire sur les outils de développement de l’interfaceusager. Centre de Recherche Informatique de Montréal (CRIM), October1993. Available also in English.

[JavaScript99] JavaScript Documentation. On-line at <http://developer.netscape.com/docs/manuals/index.html?content=javascript.html>.

[Jerding94] Jerding, D. F., and Stasko, J. T., Using visualisation to foster object-orientated program understanding. GVU Center, College of Computing,Georgia Institute of Technology, Technical Report GIT-GVU-94-33, July1994. On-line at <ftp://ftp.cc.gatech.edu/pub/gvu/tech-reports/94-33.ps.Z>.

96

[Keller95] Keller, R. K., User interface tools: A survey and perspective. In R. N. Taylorand J. Coutaz, editors, Software Engineering and Human-ComputerInteraction, pp. 225-231, 1995. Springer. LNCS 896.

[Keller99] Keller, R. K., Schauer, R, Robitaille, S., and Pagé, P., Pattern-based reverseengineering of design components. In Proceedings of the 21st InternationalConference on Software Engineering (ICSE’99), pp. 226 - 235, Los Angeles,CA, USA, May 1999.

[Kings95] Kings, N. J., Software visualisation. BT Corporate Research Programme,1995.

[Knowlton66a] Knowlton, K. C., L6: Bell telephone laboratories low-level linked listlanguage. Technical Information Libraries, Bell Laboratories, Inc., MurrayHill, New Jersey, 16 mm black and white sound film, 16 minutes, 1966.

[Knowlton66b] Knowlton, K. C., L6: Part II. An example of L6 programming. TechnicalInformation Libraries, Bell Laboratories, Inc., Murray Hill, New Jersey, 16mm black and white sound film, 30 minutes, 1966.

[Koike95] Koike Labs, VisuaLinda: 3D visualisation of parallel Linda programs. On-Line Project Abstract, Koike Labs, University of Electro-Communications inTokyo, 1995. On-line at <http://www.vogue.is.uec.ac.jp/vlinda.html>.

[Kolbeck97] Kolbeck, R. (traducteurs Reitz, F., Consavela, J.-C., et Elie, J.-P.) JavaScript.Micro Application, Paris, France, Collection Grand Livre, 1997.

[Kraemer93] Kraemer, E., and Stasko, J. T., The visualisation of parallel systems: Anoverview. Journal of Parallel and Distributed Computing, (18), pp. 105 - 117,1993.

[Ledgard75] Ledgard, H. F., Programming proverbs. Hayden, Rochell Park, New Jersey,1975.

[Lethbridge00] Lethbridge, T. C., What knowledge is important to a software professional?IEEE Computer, 33(5), pp. 44-50, May 2000.

[Lethbridge97] Lethbridge, T., and Singer, J., Understanding software maintenance tools:Some empirical research. In Workshop on Empirical Studies of SoftwareMaintenance (WESS’97), pp. 157 - 162, Bari, Italy, October 97.

[Linos93] Linos, P., Aubet, L., Dumas, Y., Helleboid, P., Lejeune, P., and Tuluba, P.Facilitating the comprehension of C programs: An experimental study. In 1st

International Workshop on Program Comprehension (IWPC’93), pp. 55 - 63,1993.

[Mayrhauser95] von Mayrhauser, A., and Vans, A. M., Program comprehension duringsoftware maintenance and evolution. IEEE Computer, 28(8), pp. 44-55,August 1995.

[Michail98] Michail, A., and Notkin, D., Illustrating object-oriented library reuse byexample: A tool-based approach. In 13th International Conference onAutomated Software Engineering (ASE’98), pp. 200 - 203, IEEE ComputerSociety Press, 1998.

97

[Miller93] Miller, B. P., What to draw? When to draw? An essay on parallel programvisualisation. Journal of Parallel and Distributed Computing, (18), pp. 258 -264, 1993.

[Mulholland95] Mulholland, P., A framework for describing and evaluating softwarevisualization systems: A case-study in Prolog. PhD Thesis, Knowledge MediaInstitute, The Open University, UK, 1995.

[Müller88] Müller, H., and Klashinsky, K., Rigi – A system for programming-in-the-large. In Proceedings of the 10th International Conference on SoftwareEngineering (ICSE’10), Singapore, pp. 80 – 86, April 1988.

[Muthukumarasamy95]Muthukumarasamy J., and Stasko, J. T., Visualising program executions onlarge data sets using semantic zooming. GVU Center, College of Computing,Georgia Institute of Technology, Technical Report GIT-GVU-95-02, 1995.On-line at <ftp://ftp.cc.gatech.edu/pub/gvu/tech-reports/95-02.ps.Z>.

[Myers90] Myers, B. A., Taxonomies of visual programming and program visualisation.Journal of Visual Languages and Computing, (1), pp. 97 - 123, 1990.

[Myers92] Myers, B. A., and Rosson, M. B., Survey on user interface programming. InProceedings of the Conference on Human Factors in Computing Systems(CHI’92), pp. 195-202, Monterey, CA, USA, May 1992.

[Norušis88] Norušis, M. J., The SPSS guide to data analysis for SPSSx. SPSS Inc.,Chicago, Illinois, 1988.

[PaisleiIDE00] The Paislei IDE and Laleh’s Pattern Matcher. On-line at <http://qtj.dhs.org/~lpm/>.

[PBS98] PBS (Portable Bookshelf). On-line at <http://www.turing.toronto.edu/pbs/>.

[Perl00] The Source for Perl, O’Reilly and Associates, Inc. On-line at <http://www.perl.com>.

[Price93] Price, B. A., Baecker, R. M., and Small, I. S., A principled taxonomy ofsoftware visualisation. Journal of Visual Languages and Computing, No. 4,pp. 211 - 266, 1993. On-line at <http://www-cs.open.ac.uk/~doc/jvlc/JVLC-Body.html>.

[PVMTrace95] The PVMTrace project. On-Line thesis proposal, University of NewBrunswick, 1995. On-line at <http://www.omg.unb.ca/hci/projects/hci-pvmtrace.html>.

[Rajlich94] Rajlich, V., Doran, J., and Gudla, R. T. S., Layered explanations of software:A methodology for program comprehension. In 2nd International Workshop onProgram Comprehension (IWPC’94), pp. 46 - 52, Washington, D.C., USA,1994.

[RationalRose00] Rational Rose. On-line at <http://www.rational.com/products/rose/index.jsp>.

[Reiss94] Reiss, S. P., 3-D Visualization of program information. In Proceedings ofGD’94: DIMACS International Workshop on Graph Drawing, pp. 12 - 24,Princeton, New Jersey, USA, October 1994.

98

[Rhapsody00] Rhapsody (I-Logix). On-line at <http://www.ilogix.com/>.

[Rigi00] Rigi: A Visual Tool For Understanding Legacy Systems. On-line at<http://www.rigi.csc.uvic.ca/>.

[Robitaille00] Robitaille, S., Schauer, R., and Keller, R. K., Bridging programcomprehension tools by design navigation. In Proceedings of the InternationalConference on Software Maintenance (ICSM’00), pp. 22 - 32, San Jose, CA,USA, October 2000.

[Roman92] Roman, G., and Cox, K. C., Program visualization: The art of mappingprograms to pictures. Department of Computer Science, WashingtonUniversity, 1992.

[Roman93] Roman, G., and Cox, K. C., A taxonomy of program visualisation systems.IEEE Computer, December 1993.

[Scanlan89] Scanlan, D. A., Structured flowcharts outperform pseudocode: Anexperimental comparison. IEEE Software, 6 (5), pp. 28 – 36, Septembre 1989.

[Schauer98] Schauer, R., and Keller, R. K., Pattern visualization for softwarecomprehension. In 6th International Workshop on Program Comprehension(IWPC’98), pp. 153 - 160, Ischia, Italy, June 1998.

[Shneiderman80] Shneiderman, B., Software psychology. Cambridge MA: Winthrop PublishersInc., 1980.

[SHriMPage00] SHriMPage. On-line at <http://www.csc.uvic.ca/~wjw/shrimpage.html>.

[SNiFF+00] SNiFF+ (TakeFive). On-line at <http://www.takefive.com/products/sniff+.html>.

[SoftwareThroughPictures98]Software through Pictures (Aonix). On-line at <http://www.aonix.com/Products/SMS/softbench_integ.html>.

[SPSS00] SPSS Statistical Package for the Social Sciences. On-line at <http://www.spss.com/>.

[Srinivasan96] Srinivasan, S. Advanced Perl Programming. O’Reilly and Associates,Sebastapol, California, 1996.

[Stasko92] Stasko, J. T., and Patterson, C., Understanding and characterizing softwarevisualisation systems. In Proceedings of the IEEE 1992 Workshop on VisualLanguages, Seattle, Washington, pp. 3 - 10, 1992.

[Stasko93] Stasko, J. T., and Wehrli, J. F., Three-dimensional computation visualisation.In Proceedings of IEEE/CS Symposium on Visual Languages, Bergen,Norway, pp. 24 - 27, 1993

[Steckel92] Steckel, M., Brade, K., Guzdial, M., and Soloway, E., Whorf: A visualizationtool for software maintenance. In Proceedings 1992 IEEE Workshop onVisual Languages, Seattle, Washington, pp. 148 - 154, 1992.

99

[Storey95] Storey, M.-A. D., and Müller, H. A., Manipulating and documenting softwarestructures using SHriMP views. In Proceedings of ICSM’95, pp. 275 - 284,Opio (Nice), France, October 17 - 20, 1995.

[Storey96] Storey, M.-A. D., Wong, K., Fong, P., Hooper, D., Hopkins, K., and Müller,H. A., On designing an experiment to evaluate a reverse engineering tool. InProceedings of the 3rd Working Conference on Reverse Engineering(WCRE’96), Monterey, California, pp. 31 - 40, 1996.

[Storey97] Storey, M.-A. D., Wong, K., and Müller, H. A., How do programunderstanding tools affect how programmers understand programs? InProceedings of the 4th Working Conference on Reverse Engineering(WCRE’97), pp. 12 - 21, Amsterdam, Holland, October 1997.

[Storey99] Storey, M.-A. D., Fracchia, F. D., and Müller, H. A., Cognitive designelements to support the construction of a mental model during softwareexploration. Journal of Systems and Software, 44 (3), pp. 171 - 185, January1999.

[Swan95] The Swan User’s Manual. On-line at <http://geosim.cs.vt.edu/Swan/manual.pdf>.

[Tilley97] Tilley, S. R., Discovering Discover. Technical Report CMU/SEI-97-TR-012,Pittsburgh, PA, October 1997. On-line at <http://www.sei.cmu.edu/publications/documents/97.reports/97tr012/97tr012title.htm>.

[TkSee96] TkSee (Knowledge-Based Reverse Engineering). On-line at <http://www.site.uottawa.ca/~tcl/kbre/>.

[TogetherJ00] TogetherSoft: Together/J. On-line at <http://www.togethersoft.com/together/togetherJ.html>.

[TomSawyer00a] Tom Sawyer Software: Products and Solutions documentation set. On-line at<http://www.tomsawyer.com/literature/index.html>.

[TomSawyer00b] Tom Sawyer Software: Product Demonstrations. On-line at <http://www.tomsawyer.com/download-soft.html>.

[UltraEdit00] UltraEdit (IDM Computer, Solutions, Inc.). On-line at <http://www.idmcomp.com/products/index.html>.

[UMLStudio00] Stringray UML Studio Product Page. On-line at <http://www.stingray.com/products/umlstudio/>.

[VCG95a] VCG Overview. On-line at <http://www.cs.uni-sb.de/RW/users/sander/html/gsvcg1.html>.

[VCG95b] VCG Documentation. On-line at <ftp://ftp.cs.uni-sb.de/pub/graphics/vcg/doc/vcgdoc.ps.gz>.

[VGJ98] Manual for VGJ. On-line at <http://www.eng.auburn.edu/department/cse/research/graph_drawing/manual/vgj_manual.html>.

[VRG96] Visualisation Research Group. On-line at <http://www.dur.ac.uk/~dcs0elb/visual/>.

100

[Wall97] Wall, L., Christiansen, T., and Schwartz, R. L. Programming Perl. O’Reillyand Associates, Sebastapol, California, 1997.

[Ware93] Ware, C., Hui, D., and Franck, G., Visualizing object oriented software inthree dimensions. In Proceedings of CASCON’93 (IBM Centre for AdvancedStudies), pp. 612 - 620, Toronto, Ontario, Canada, October 1993. On-line at<http://www.omg.unb.ca/hci/papers/IBM-CAS93-visualizing.ps.gz>.

[Watson95] Watson, A. B., and Buchanan, J. T., Towards supporting softwaremaintenance with visualisation techniques. Technical Report R5, Universityof Strathclyde, 1995.

[Weiser84] Weiser, M., Program slicing. IEEE Transactions on Software Engineering, SE- 10 (4), pp. 352 – 357, July 1984.

[Williams92] Williams, F., Reasoning with statistics: How to read quantitative research.Harcourt Brace College Publishers, fourth edition, 1992.

[xSuds98] Telcordia Software Visualization and Analysis Toolsuite documentation set.On-line at <http://xsuds.argreenhouse.com/manual.html>.

[Young96a] Young, P., Program comprehension, Internal Report, Centre for SoftwareMaintenance. University of Durham, May 1996. On-line at <http://www.dur.ac.uk/~dcs3py/pages/work/Documents/index.html>.

[Young96b] Young, P., Software visualisation. Internal Report, Centre for SoftwareMaintenance, University of Durham, June 1996. On-line at <http://www.dur.ac.uk/~dcs3py/pages/work/Documents/index.html>.

Annexe A. Description de la taxonomie de Price et al.

Cette annexe donne une explication brève des différentes propriétés de la taxonomie de

Price et al. [Price93]. Ces explications sont présentées sous forme de questions se

rapportant à chacune des six catégories de la hiérarchie ainsi qu’aux sous-niveaux qui

leur sont liés.

A. Scope (intervalle de logiciels qui peuvent être visualisés)

Quel est l’intervalle de logiciels que l’outil de VL peut prendre comme une entrée pour

la visualisation?

A.1. Generality

L’outil peut-il manipuler un intervalle généralisé de logiciels ou bien affiche-t-il un

ensemble fixe d’exemples?

Note 1: un outil généralisé peut générer des visualisations de logiciels arbitraires à

l’intérieur d’une classe particulière. Il va d’habitude avoir quelques restrictions régissant

ses possibilités (A.1.1. à A.1.4.).

Note 2: un outil exemple affiche une visualisation d’algorithmes particuliers, de

systèmes particuliers ou d’ensemble particulier de logiciels existants.

A.1.1. Hardware

Sur quel hardware s’exécute-t-il?

A.1.2. Operating System

Sur quel système d’exploitation s’exécute-t-il?

ii

A.1.3. Language

Dans quel langage de programmation les logiciels de l’utilisateur devront être écrits?

A.1.3.1. Concurrency

Si le langage de programmation supporte la concurrence, l’outil de VL peut-il visualiser

les aspects concurrents?

A.1.4. Applications

Quelles sont les restrictions sur le genre de logiciels utilisateurs qui peuvent être

visualisés? Ex. des algorithmes de tri, n’importe dans un langage bien particulier,

n’importe, graphe, liste, etc.

A.1.4.1. Specialty

Quel genre de logiciel se prête particulièrement bien à la visualisation (par opposition à

simplement capable d’être visualisé)? Ex. Graphes, algorithmes de tableau, etc.

A.2. Scalability (système à grande échelle)

Jusqu’à quel degré l’outil de VL monte-t-il pour manipuler de grands exemples?

A.2.1. Program

Quel est le plus grand logiciel qui peut être manipulé?

A.2.2. Data Sets

Quel est le plus grand ensemble de données en entrée qui peut être manipulé?

B. Content (les aspects à être visualisés tout comme le code et les types de

données)

Quel sous-ensemble d’information sur le logiciel est visualisé par l’outil de VL?

B.1. Program

Jusqu’à quel degré l’outil de VL visualise-t-il le logiciel implanté?

iii

B.1.1. Code

Jusqu’à quel degré l’outil de VL visualise-t-il les instructions dans le code source du

logiciel?

B.1.1.1. Control flow

Jusqu’à quel degré l’outil de VL visualise-t-il le flot de contrôle dans le code source du

logiciel?

B.1.2. Data

Jusqu’à quel degré l’outil de VL visualise-t-il les structures de données dans le code

source du logiciel?

B.1.2.1. Data flow

Jusqu’à quel degré l’outil de VL visualise-t-il le flot de données dans le code source du

logiciel?

B.2. Algorithm

Jusqu’à quel degré l’outil de VL visualise-t-il l’algorithme de haut niveau qui se trouve

en arrière du logiciel?

B.2.1. Instructions

Jusqu’à quel degré l’outil de VL visualise-t-il les instructions dans l’algorithme?

B.2.1.1. Control flow

Jusqu’à quel degré l’outil de VL visualise-t-il le flot de contrôle des instructions de

l’algorithme?

B.2.2. Data

Jusqu’à quel degré l’outil de VL visualise-t-il les structures de données de haut niveau

dans l’algorithme?

B.2.2.1. Data flow

Jusqu’à quel degré l’outil de VL visualise-t-il le flot de données dans l’algorithme?

iv

B.3. Fidelity and Completeness

Est-ce que les métaphores visuelles présentent-elles le comportement vrai et complet de

la machine virtuelle sous-jacente?

B.3.1. Invasiveness

Si l’outil de VL peut être utilisé pour visualiser des applications concurrentes, est-ce que

son utilisation perturbe la séquence d’exécution du programme?

B.4. Data gathering time

Est-ce que les données sur lesquelles dépend la visualisation sont rassemblées lors de la

compilation, lors de l’exécution ou bien lors des deux étapes?

B.4.1. Temporal control mapping

Quel est le rapport entre l’horloge du logiciel et celui de la visualisation?

B.4.2. Visualization generation time

Est-ce que la visualisation est produite comme étant un “batch job” (post-mortem) à

partir de données enregistrées durant une exécution préalable, ou bien elle est produite

“live” pendant que le logiciel s’exécute?

C. Form

Quelles sont les caractéristiques de la sortie de l’outil de VL (la visualisation)?

C.1. Medium

Quel est le medium cible primaire pour la sortie de l’outil de VL?

C.2. Presentation style

Quelle est l’apparence générale de la visualisation?

C.2.1. Graphical vocabulary

Quels sont les éléments graphiques utilisés dans la visualisation produite par l’outil de

VL?

v

C.2.1.1. Colour

Jusqu’à quel degré l’outil de VL utilise-t-il de la couleur dans les visualisations qu’il

produit?

C.2.1.2. Dimensions

Jusqu’à quel degré les extra-dimensions (3D, 4D) sont utilisées dans la visualisation?

C.2.2. Animation

Si l’outil de VL rassemble des données lors de l’exécution, jusqu’à quel degré la

visualisation résultante utilise l’animation?

C.2.3. Sound

Jusqu’à quel degré l’outil de VL utilise-t-il le son pour transférer l’information?

C.3. Granularity

Jusqu’à quel degré l’outil de VL présente-t-il des détails de coarse-granularity?

C.3.1. Elision

Jusqu’à quel degré l’outil de VL fournit-il des facilités pour cacher temporairement

l’information?

C.4. Multiple views

Jusqu’à quel degré l’outil de VL fournit-il plusieurs vues synchronisées des différentes

parties du logiciel visualisé?

C.5. Program synchronization

L’outil de VL peut-il générer simultanément des visualisations synchronisés de plusieurs

programmes?

D. Method

Comment est-ce que la visualisation est spécifiée?

vi

D.1. Visualisation specification style

Quel style de spécification de visualisation est utilisé? Ex. Fixe, librairie, automatique,

hard-coded.

D.1.1. Intelligence

Si la visualisation est automatique, jusqu’à quel degré l’outil de VL est-il avancé du

point de vue Intelligence Artificielle?

D.1.2. Tailorability

Jusqu’à quel degré l’utilisateur peut-il particulariser la visualisation?

D.1.2.1. Customization language

Si la visualisation est particularisable, comment peut-elle être spécifiée?

D.2. Connection technique

Comment la connexion est faite entre la visualisation et le logiciel visualisé? Ex.

Annotation, probes, etc.

D.2.1. Code ignorance allowance

Si le système de visualisation n’est pas complètement automatique, quel est le niveau de

connaissance du code requis pour produire une visualisation?

D.2.2. System-code coupling

Jusqu’à quel degré l’outil de VL est couplé avec le code?

E. Interaction

Comment l’utilisateur du système SV interagit-il avec le système et contrôle-t-il le

système?

E.1. Style

Quelle méthode l’utilisateur emploie-t-il pour donner des instructions à l’outil de VL?

E.2. Navigation

Jusqu’à quel degré l’outil de VL supporte-t-il la navigation à travers une visualisation?

vii

E.2.1. Elision control

L’utilisateur peut-il cacher de l’information ou supprimer des détails de l’affichage?

(notons que cette propriété n’est qu’une redondance par rapport à la propriété déjà vue

dans C.3.1.)

E.2.2. Temporal control

Jusqu’à quel degré l’outil de VL permet-il à l’utilisateur de contrôler les aspects

temporels de l’exécution d’un logiciel?

E.2.2.1. Direction

Jusqu’à quel degré l’utilisateur peut-il inverser la direction temporelle (revenir en

arrière) de la visualisation?

E.2.2.2. Speed

Jusqu’à quel degré l’utilisateur peut-il contrôler la vitesse d’exécution?

E.3. Scripting facilities

L’outil de VL fournit-il des facilités pour gérer l’enregistrement et le play-back des

interactions avec des visualisations particulières? (Cette facilité est importante lors des

démonstrations.)

F. Effectiveness

Jusqu’à quel degré l’outil de VL est-il capable de communiquer les informations

nécessaires à l’utilisateur?

F.1. Purpose

Pour quel but le système est-il approprié?

F.2. Appropriateness and clarity

Si des visualisations automatiques sont fournies, jusqu’à quel degré sont-elles capables

de communiquer les informations nécessaires sur le logiciel?

viii

F.3. Empirical evaluation

Jusqu’à quel degré l’outil de VL a été sujet à une bonne évaluation expérimentale?

F.4. Production use (publication, vente, distribution, utilisation continue par

des étudiants dans un cours)

Le système était-il en utilisation de production fiable pour une période significative de

temps?

Bibliographie de l’annexe A:

[Price93] Price, B. A., Baecker, R. M., and Small, I. S., A principled taxonomy ofsoftware visualisation. Journal of Visual Languages and Computing,No. 4, pp. 211 - 266, 1993. On-line at <http://www-cs.open.ac.uk/~doc/jvlc/JVLC-Body.html>.

Annexe B. Évaluation de sept outils de VL

Dans cette annexe, nous présentons les six tableaux comportant l’évaluation des sept

outils de VL retenus à la section 3.3 (xSuds, Tom Sawyer Products, Discover, VGJ,

daVinci, Swan et VCG / CGDI). Chacun des tableaux est lié à une catégorie bien

particulière de la taxonomie de Price et al. [Price93] déjà décrite à l’annexe A et

regroupe un grand nombre des caractéristiques de cette catégorie ainsi que leur

applicabilité sur les outils de VL retenus. Il existe des caractéristiques, marquées par des

“?”, pour lesquelles nous n’avons pas pu répondre par manque de connaissance de l’outil

(par exemple, Discover que nous n’avons pas pu évaluer de façon pratique). D’autres

caractéristiques ne s’appliquent pas pour un outil en particulier; les cases

correspondantes sont marquées par “NA”. Une discussion de ces tableaux est présentée à

la section 4.3.

A. Scope

Critères����

Nom del’outil de

VL����

Gén

éral

ité

Syst

ème

d’ex

ploi

tatio

n (+

com

pila

teur

néce

ssai

re si

cec

i est

appl

icab

le)

Lan

gage

App

licat

ions

Spéc

ialit

é

Scal

abili

ty

xSuds Oui Windows 95/NTavec MicrosoftVisual C++

C,C++

N’importe ? Théoriquement, ilsemble ne pas avoirde problème

x

Critères����

Nom del’outil de

VL����

Gén

éral

ité

Syst

ème

d’ex

ploi

tatio

n (+

com

pila

teur

néce

ssai

re si

cec

i est

appl

icab

le)

Lan

gage

App

licat

ions

Spéc

ialit

é

Scal

abili

ty

TomSawyerProducts

Oui Unix, Windows,Mac, OS/2

C,C++,Java

N’importe ? Théoriquement, il estpossible de visualiserdes relations dans deslogiciels à grandeéchelle

Discover Oui Windows NT C,C++

N’importe ? Ça devrait!

VGJ Oui Windows, Unix Tout N’importe ? Non

daVinci Oui Unix avec lesystème defenêtrage Xinstallé et letoolkit Tcl/Tk

Tout N’importe Graphedirigé

Non

Swan . Unix avec lesystème defenêtrage Xinstallé. Compilateur Cou C++ (gcc,g++). Version pourWindows 95. Librairie SAIL. Header filesail.h

C,C++

N’importe Graphes Théoriquement, ilsemble que Swan estutile pour desgraphes relativementpetits

VCG/CGDI

Oui Unix, Windows(Utilisation degprof , de deuxprogrammesfiltres écrits enC, et de VCG)

C,C++

N’importe Program-mes avecbeaucoupd’appelsdefonctions

± (selon l’expériencede Bell Canada)

xi

B. Content

Critères����

Nom del’outil de

VL����

Prog

ram

me

Alg

orith

me

Fidé

lité

etco

mpl

étud

e

Mom

ent d

era

ssem

blem

ent d

esdo

nnée

s

Mom

ent d

egé

néra

tion

de la

visu

alis

atio

n

xSuds Oui Non Oui Compile-et run-time

Post-mortem

TomSawyerProducts

Non Oui Oui NA NA

Discover Oui ? ? ? ?

VGJ Non Tout dépenddu fichierGML

Tout dépend dufichier GML

Compile-time

Post-mortem

daVinci Non Tout dépenddu fichier TR

Tout dépend dufichier TR

Compile-time

Post-mortem

Swan ± Oui Tout dépend del’annotation

Compile-et run-time

Live

VCG/CGDI

Oui Oui Oui Compile-et run-time

Post-mortem

C. Form

Critètes����

Nom del’outil de

VL����

Moy

en d

evi

sual

isat

ion

Voc

abul

aire

grap

hiqu

e

Cou

leur

Dim

ensi

ons

Ani

mat

ion

Son

Gra

nula

rité

Cac

her

l’inf

orm

atio

n

Vue

s mul

tiple

s

Sync

hron

isat

ion

xSuds Moniteurcouleur

Couleur,highlighting,hot spots

Oui Non Non Non Oui Non Non Oui

xii

Critètes����

Nom del’outil de

VL����

Moy

en d

evi

sual

isat

ion

Voc

abul

aire

grap

hiqu

e

Cou

leur

Dim

ensi

ons

Ani

mat

ion

Son

Gra

nula

rité

Cac

her

l’inf

orm

atio

n

Vue

s mul

tiple

s

Sync

hron

isat

ion

TomSawyerProducts

Moniteurcouleur

Possibilitéde sortieenPostScript

Couleur,nœud, arc,shape types(rectangle,ellipse, etc.),layouts(circulaire,hiérarchique,orthogonal,symétrique),etc.

Oui Non Non Non Oui Oui Non Non

Discover Moniteurcouleur

Autreschoses ?

? ? ? ? ? ? ? ? ?

VGJ MoniteurCouleur

Possiblitéde sortieenPostScriptdu fichierGML(texte)

Nœud, arc,différentslayouts(étoile, arbre,etc.), etc.

Oui Oui Non Non Non Non Non Non

daVinci Moniteur

Sur papier

Nœud, arc,etc.

Non Non Non Non Non Oui Non Non

xiii

Critètes����

Nom del’outil de

VL����

Moy

en d

evi

sual

isat

ion

Voc

abul

aire

grap

hiqu

e

Cou

leur

Dim

ensi

ons

Ani

mat

ion

Son

Gra

nula

rité

Cac

her

l’inf

orm

atio

n

Vue

s mul

tiple

s

Sync

hron

isat

ion

Swan Moniteurcouleur

Possiblitéde sortieenPostScript

Graphe,nœud (type,couleur,taille,épaisseur dela ligne), arc(couleur,épaisseur dela ligne),attributsgraphiques(par défautou non),composantesde layout,etc.

Oui Non Non Non Non Non Non Non

VCG/CGDI

Moniteurcouleur

PostScript

Bitmap

Graphe,nœud, arc,couleur,layouts, vues(polarfisheye,cartesianfisheye,normal), etc.

Oui Non Non Non Oui Oui Non Non

xiv

D. Method

Critères����

Nom del’outil de

VL����

Styl

e de

spéc

ifica

tion

de la

vis

ualis

atio

n

Inte

llige

nce

Part

icul

aris

atio

n

Lan

gage

de

part

icul

aris

atio

n

Tec

hniq

ue d

eco

nnex

ion

Code

igno

ranc

eal

lowa

nce

Syste

m-c

ode

coup

ling

xSuds Automatique Non Oui Manipulationinteractive

Productiond’unfichier“.atac”,etproductiond’unfichier“atac.trace”

NA Oui

TomSawyerProducts

Automatique Non Oui Manipulationinteractive

? NA Non

Discover ? Non ? ? ? ? ?VGJ Codée à la

main ou bienutilisation del’outild’édition degraphes deVGJ (cedernier génèreautomatique-ment le codeen GML) oubien écritured’unprogrammede passaged’un certainformat auformat GML(automatique)

Non Oui Manipulationinteractive

Productiond’unfichier“.gml”

Connaissancedu coderequise si lestyle despécificationde lavisualisationn’a pas étérenduautomatique

Non

xv

Critères����

Nom del’outil de

VL����

Styl

e de

spéc

ifica

tion

de la

vis

ualis

atio

n

Inte

llige

nce

Part

icul

aris

atio

n

Lan

gage

de

part

icul

aris

atio

n

Tec

hniq

ue d

eco

nnex

ion

Code

igno

ranc

eal

lowa

nce

Syste

m-c

ode

coup

ling

daVinci Création dufichier enformat TR

Automatiquesi programmeécrit pourpasser duformat TA(par exemple)au format TR

Non Oui Manipulationinteractive

Productiond’unfichier“.davinci”

Connaissancedu coderequise si lestyle despécificationde lavisualisationn’a pas étérenduAutomatique

Non

Swan Librairie(annotation)

Non Oui Manipulationprocédurale&Manipulationinteractive

Annotation Oui Oui

VCG/CGDI

Automatique,utilisant lesdeux filtres duCGDI (g2v etvco)

Non Oui Manipulationinteractive

Productiond’unfichier“.vcg”

Non Oui

E. Interaction

Critères����

Nom del’outil de

VL����

Styl

e

Nav

igat

ion

Con

trôl

e du

tem

ps

Dir

ectio

n

Vite

sse

xSuds Boutons, menus Oui NA NA NA

xvi

Critères����

Nom del’outil de

VL����

Styl

e

Nav

igat

ion

Con

trôl

e du

tem

ps

Dir

ectio

n

Vite

sse

TomSawyerProducts

Boutons, menus Oui NA NA NA

Discover ? ? ? ? ?

VGJ Boutons, menus, radio buttons Oui NA NA NA

daVinci Boutons, menus Oui NA NA NA

Swan Boutons, (pop-up) menus, ligne decommande

Oui Non Non Oui etNon

VCG/CGDI

Boutons, menus, l’utilisateur doitsuivre les instructions affichées enbas de l’écran.

Non NA NA NA

F. Effectiveness

Critères����

Nom del’outil de

VL����

But

Appr

opria

tene

ss e

tcl

arté

Éva

luat

ion

empi

riqu

e

Util

isat

ion

dans

lapr

oduc

tion

xSuds Testing, maintenance, etc. Oui, maisla réponsereste trèssubjective!

Non Oui(C’est unproduitcommercial)

TomSawyerProducts

Construire rapidement des applicationsqui peuvent gérer, analyser, et présenterdes informations dans des diagrammes

Oui, maisla réponsereste trèssubjective!

Non Oui(C’est unproduitcommercial)

xvii

Critères����

Nom del’outil de

VL����

But

Appr

opria

tene

ss e

tcl

arté

Éva

luat

ion

empi

riqu

e

Util

isat

ion

dans

lapr

oduc

tion

Discover Compréhension d’application ? Non Oui(C’est unproduitcommercial)

VGJ Visualiser des graphes en GMLCe dernier étant une tentative pourstandardiser les formats d’entrée degraphe

C’est trèssubjectif!

Non Non

daVinci Visualiser des graphes dirigés. C’est trèssubjectif!

Non Non (pas defaçonrépandue)

Swan Moyen de présentation pour desinstructions dans des cours de structuresde données et d’algorithme

Aide de débogage graphique dans descours de programmation

Une plate-forme pour l’expérimentationavec différents algorithmes de layoutgraphique

Oui ±,mais laréponsereste trèssubjective!

Non Non

VCG/CGDI

Débogage, documentation, etc. Oui, maisla réponsereste trèssubjective!

Non Non (pas defaçonrépandue)

Bibliographie de l’annexe B:

[Price93] Price, B. A., Baecker, R. M., and Small, I. S., A principled taxonomy ofsoftware visualisation. Journal of Visual Languages and Computing,No. 4, pp. 211 - 266, 1993. On-line at <http://www-cs.open.ac.uk/~doc/jvlc/ JVLC-Body.html>.

Annexe C. Questionnaire sur les outils de VL

Nous présentons dans cette annexe les deux parties (I et II) du questionnaire sur lesoutils de VL. Notons que les “o” désignent que le participant ne peut choisir qu’uneseule réponse parmi les choix donnés, alors que les “�” donnent la possibilité de choisirune ou plusieurs réponses.

Cette version (Microsoft Word) n’a servi que pour s’échanger les différentes versions(itérations) du questionnaire. Nous n’avons jamais publié le questionnaire utilisant ceformat. Le chapitre 6 donne les détails de l’implantation du questionnaire qui est baséesur HTML, JavaScript et Perl. Enfin, notons que le questionnaire est disponible on-line,dans des versions anglaises et françaises, à l’adresse <http://www.iro.umontreal.ca/labs/gelo/sv-survey/questionnaire.html>.

Partie I

(I) Renseignements concernant le participant

1 Informations sur le milieu de travail.

o Compagnie

o Université (milieu de recherche)

Nom de l’organisation : ____________________

2 Informations personnelles.

Fonction professionnelle

o Analyste

o Concepteur

o Programmeur

o Testeur

xix

o Débogeur

o Maintainer

o Autre, précisez : ____________________

Adresse électronique : ____________________

3 Taille de l’équipe de travail dont vous faîtes partie (Nombre de personnes affectées

au développement et à la maintenance dans votre équipe de travail).

o <5

o Entre 5 et 10

o Entre 11 et 20

o >20

o Ne sais pas

4 Où avez-vous entendu parler de ce questionnaire?

o Invitation par les auteurs

o Newsgroup

Autre, précisez : ____________________

5 Souhaitez-vous avoir le résultat de cette étude?

o Oui

o Non

6 Veuillez nommer les trois outils de VL les plus utilisés dans votre équipe de travail.

Nom d’outil Nom du distributeurcorrespondant Outil de VL en maina

____________________ ____________________ o

____________________ ____________________ o

____________________ ____________________ o

a L’outil de VL que vous connaissez le mieux et pour lequel vous allez remplir les sections V et VI de

cette partie du questionnaire.

xx

7 A quel niveau se situe votre connaissance…

Trèsbonne Bonne Moyenne Faible Très

faible Aucune

… de l’outil de VL en main? o o o o o o

… des logiciels visualisés

(familiarité avec le code source)?o o o o o o

... du domaine d’application des

logiciels visualisés?o o o o o o

... de programmation dans le langage

d’implantation des logiciels

visualisés?

o o o o o o

(II) Renseignements sur les logiciels visualisés

8 Style(s) de programmation des Logiciels visualisés...

� Orienté Objet

� Procédural

� Déclaratif

� Autre, précisez : ____________________

9 Domaine(s) d’application des Logiciels visualisés...

� Conception assistée par ordinateur

� Application d’entrée de données

� Système de support à la décision

� Système de diagnostique

� Système d’information

� Application multimédia

� Application en temps réel

� Application génie/scientifique

� Simulation

� Autre, précisez : ____________________

xxi

10 Ordre de grandeur (KLOC) des Logiciels visualisés...

0 __ o __ 100 __ o __ 500 __ o __ 1000 __ o __ ++

11 Niveau de complexité...

Complexe Complexitémoyenne Facile Ne sais pas

… des logiciels visualisés o o o o

… de la tâche effectuée sur les

logiciels visualiséso o o o

12 Disponibilité de documentation (au-delà du code source) pour les logiciels

visualisés...Aucune documentation ___ Documentation incomplète ___ Documentation complète

o o o o o

(III) Aspects fonctionnels des outils de VL

13 Voici des fonctionnalités et des capacités liées à des outils de VL. Jusqu’à quel point

ces propriétés vous sont/seraient utiles pour effectuer une certaine tâche?

Absolumentessentielle

Utile, maisnon

essentielle

Pas dutout utile

Ne saispas/Non

applicableVisualisation de code source (vues

textuelles)o o o o

Browsing de code source o o o o

Accès direct (sans passer par des objets de

haut niveau) au code sourceo o o o

Visualisation d’une liste de symboles (ex. les

fichiers du logiciel visualisé, les fonctions définies

et les types de données (variables, constantes,

etc.))

o o o o

Accès facile, à partir de la liste de

symboles, au code source correspondanto o o o

xxii

Visualisation de graphes o o o o

Browsing synchronisé de vues de même

type ou de type différent (ex. browsing

graphique et textuel synchronisé)

o o o o

Passage d’une vue vers une autre de

même type ou de type différent (ex.

passage du code source à une fenêtre

graphique ou vice-versa) (cross-

referencing)

o o o o

Possibilité d’avoir plusieurs vues de

même type ou de type différent liées

visuellement en mettant en évidence

(highlighting) des instances du même

objet dans toutes les vues (ex. possibilité

de lier les nœuds et les arcs dans des

représentations graphiques au code source

correspondant)

o o o o

Capacités de layout automatique o o o o

Capacités de scaling automatique o o o o

Mécanismes d’abstraction (ex. affichage

des nœuds de sous-système et les arcs

composites dans un graphe)

o o o o

Fenêtres d’overview (ex. montrer la

structure hiérarchique du logiciel

visualisé)

o o o o

Outils de recherche d’éléments graphiques

et/ou textuelso o o o

Capacités de filtrage o o o o

Capacités de zoom-in et zoom-out o o o o

Visualisation dynamique (visualisation de

l’exécution, animation)o o o o

xxiii

Représentations hiérarchiques (de sous-

systèmes, de classes, etc.)o o o o

Navigation de hiérarchies (de sous-

systèmes, de classes, etc.)o o o o

Navigation de style hypertexte o o o o

Navigation arbitraireb o o o o

Possibilité de stocker les étapes d’une

navigation arbitraireo o o o

Possibilité de retour en arrière aux étapes

de navigation précédenteso o o o

Sauvegarde de vues, pour une utilisation

futureo o o o

Possibilité d’afficher ou de cacher

l’information selon les besoinso o o o

Program slicingc o o o o

Possibilité de voir le focus courant (ex.

des vues de fish-eye, des vues détaillées

de nœuds intéressants, des nœuds et arcs

highlighted, des images thumbnail de

code source, etc.)

o o o o

Possibilité de voir le chemin qui mène au

focus courant (histories ou breadcrumb

trails)

o o o o

Possibilité de particulariser la

visualisationo o o o

Possibilité de fournir une compréhension o o o o

b Navigation à des emplacements non nécessairement accessibles en suivant des liens déjà définis.c Méthode pour décomposer un programme en des composantes où chaque composante décrit certaines

fonctionnalités du système (un “program slice” contient seulement le code qui est pertinent à cette

fonctionnalité).

xxiv

sommaire (coarse-grained)

Possibilité de fournir une compréhension

détaillée (fine-grained)o o o o

Utilisation de couleurs o o o o

Effets d’animation o o o o

Représentations et layouts en 3D et

techniques de réalité virtuelleo o o o

(IV) Aspects pratiques des outils de VL

14 Veuillez préciser l’importance que vous accordez à chacun des aspects suivants liés

aux outils de VL en général.

Trèsimportant

Relativementimportant

Pasimportant

Ne saispas

Coût de l’outil o o o o

Contenu et qualité de la documentation o o o o

Disponibilité de documentation on-line o o o o

Disponibilité de support technique o o o o

Performance de l’outil (vitesse

d’exécution de l’outil)o o o o

Fiabilité de l’outil (absence d’erreurs) o o o o

Facilité d’apprentissage et d’installation o o o o

Facilité d’utilisation o o o o

Facilité de visualiser des logiciels de

grande tailleo o o o

Visualisation de logiciels écrits en

langages différentso o o o

Disponibilité sur plusieurs plate-formes o o o o

Qualité de l’interface usager o o o o

Possibilité de sortie (output) de la

visualisation en fichiers de différentso o o o

xxv

formats (postscript, pdf, bmp, etc.)

Autre, précisez : ____________________ o o o

Autre, précisez : ____________________ o o o

Autre, précisez : ____________________ o o o

(V) Évaluation cognitive de l’outil de VL en main

15 Veuillez préciser le degré de chacune de ces caractéristiques par rapport à l’outil de

VL en main (celui que vous avez indiqué à la question 6).

Haut Moyen Bas Ne sais pasFacilité d’apprentissage o o o o

Facilité d’utilisation o o o o

Qualité des effets visuels o o o o

Capacité de générer des résultats utiles o o o o

Confiance dans les résultats générés o o o o

Connaissance requise du code source du

logiciel visualisé, pour pouvoir générer

une visualisation

o o o o

16 Jusqu’à quel degré l’outil de VL en main vous aide-t-il à effectuer chacune des

tâches suivantes (liées aux logiciels visualisés)?

Beaucoup Moyennement Pas dutout

Ne saispas/Non

applicableMaintenance o o o o

Débogage o o o o

Testing o o o o

Ajout de nouvelles fonctionnalités o o o o

Perfectionnement o o o o

Analyse du code o o o o

Compréhension du code o o o o

Création de la documentation o o o o

xxvi

17 Selon vous, jusqu’à quel degré les caractéristiques des logiciels visualisés

mentionnées ci-dessous diminuent-elles l’efficacité de l’outil de VL en main?

Beaucoup Moyennement Pas dutout

Ne saispas/Non

applicableComplexité du code o o o o

Taille du code o o o o

Interface très couplée o o o o

Documentation insuffisante o o o o

Manque de documentation sur

l’intention de la conceptiono o o o

Autre, précisez : __________________ o o o o

18 Selon vous, l’outil de VL en main affecte-t-il l’approche prise pour effectuer une

tâche donnée?

Beaucoup ______________ Moyennement ______________ Pas du tout

o o o o o

19 Les résultats obtenus lors de l’application de l’outil en main sont (degré de

satisfaction)…

Très satisfaisants ______________ Satisfaisants ______________ Non satisfaisants

o o o o o

(VI) Bénéfices et améliorations de l’outil de VL en main

20 Veuillez préciser les bénéfices que vous avez retirés suite à l’utilisation de l’outil de

VL en main (Économie financière, économie de temps, etc.).

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

xxvii

21 Selon vous, quelles sont les principales améliorations qui devraient être apportées à

l’outil de VL en main?

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

Partie II

(I) Renseignements techniques sur l’outil de VL en main

1 Nom de l’outil de VL dont vous êtes expert et pour lequel vous allez remplir cette

partie du questionnaire (outil de VL en main).

______________________

2 Nom du distributeur de l’outil de VL en main.

______________________

3 L’outil de VL en main est…

o Un outil commercial

o Un prototype de recherche

4 L’outil de VL en main est formé…

o D’un seul grand outil

o D’un ensemble d’outils

5 Sur quel(s) système(s) d’exploitation l’outil de VL en mains s’exécute-t-il?

� UNIX

� UNIX avec le système de fenêtrage X

� DOS

� DOS avec le système de fenêtrage Microsoft

� OS/2

xxviii

� Windows 95/98

� Windows NT

� Macintosh

� Autre, précisez : ______________________

6 Pour quel(s) but(s) est-ce que l’outil de VL en main peut être utilisé?

� Analyse

� Test

� Débogage

� Maintenance

� Compréhension du logiciel visualisé

� Ajout de nouvelles fonctionnalités

� Création de la documentation

� Autre, précisez : ______________________

7 Dans quel(s) langage(s) de programmation l’outil de VL en main est-il écrit?

� C++

� Java

� Ne sais pas

� Autre, précisez : ______________________

8 Quel est (sont) le(s) style(s) utilisé(s) pour la spécification de la visualisation?

� Automatique à partir du code source directement

� Automatique à partir du code source via la génération de fichiers

intermédiaires

� Annotation manuelle du code source (supportée ou non par une librairie)

� Utilisation d’un outil d’édition graphique

� Autre, précisez : ______________________

xxix

9 L’outil de VL en main est-il (ou bien, fait-il partie d’) un environnement de

développement de logiciel?

o Oui

o Non

10 Dans quel(s) Langage(s) de programmation le logiciel visualisé peut-il être écrit?

� Ada

� C

� C++

� Cobol

� Fortran

� Java

� Pascal

� Prolog

� Smalltalk

� Langage de quatrième génération, précisez : ______________________

� Autre, précisez : ______________________

(II) Support de l’analyse du code par l’outil de VL en main

11 Appels de fonctions

L’outil de VL en main… Oui NonNe saispas/Non

applicable

Non/Ne sais pas,mais je

souhaiteraiscette propriété

... permet-il de visualiser des appels de fonctions? o o o o

... permet-il de visualiser le nombre de fois

qu’une fonction est appelée par une autre

fonction?

o o o o

... fournit-il des fonctionnalités (un outil) pour

identifier des chaînes de récursion?o o o o

... élimine-t-il les fonctions récursives simples? o o o o

xxx

... présente-t-il comme un tout (dans un même

graphe) une chaîne de récursion complexe?o o o o

... représente-t-il par des nœuds les fonctions de la

chaîne de récursion?o o o o

Peut-on accéder directement au code source à

partir des nœuds?o o o o

12 Clonage de fonctions

L’outil de VL en main… Oui NonNe saispas/Non

applicable

Non/Ne sais pas,mais je

souhaiteraiscette propriété

... permet-il d’obtenir les clones d’une fonction? o o o o

Est-il possible de voir le code source de ces

clones?o o o o

Les différences sont-elles mises en évidence par

des changements de couleurs ou de polices?o o o o

Peut-on réduire la granularité des différences?(un

exemple serait le passage du mot à la lettre)o o o o

13 Graphes d’héritage

L’outil de VL en main… Oui NonNe saispas/Non

applicable

Non/Ne sais pas,mais je

souhaiteraiscette propriété

... permet-il de visualiser des graphes d’héritage

(des hiérarchies des classes du système)?o o o o

... optimise-t-il les positions des nœuds? o o o o

... permet-il de détecter un héritage multiple? o o o o

... permet-il de détecter des branches profondes? o o o o

xxxi

14 Graphes d’architecture de sous-systèmes

L’outil de VL en main… Oui NonNe saispas/Non

applicable

Non/Ne sais pas,mais je

souhaiteraiscette propriété

... permet-il de visualiser des graphes

d’architecture de sous-systèmes?o o o o

Existe-t-il un moyen pour pouvoir lier

l’architecture aux autres résultats de l’outil de VL

en main (ex. zones de couleurs différentes sur le

graphe d’architecture)?

o o o o

Est-il possible de voir des clones de sous-

systèmes?o o o o

... permet-il de visualiser l’intérieur d’un sous-

système (ex. les fichiers qui forment un sous-

système)?

o o o o

15 Différents niveaux de détail

L’outil de VL en main… Oui NonNe saispas/Non

applicable

Non/Ne sais pas,mais je

souhaiteraiscette propriété

... permet-il de voir différents niveaux de détail

simultanément dans des fenêtres séparées?o o o o

16 Métriques

L’outil de VL en main… Oui NonNe saispas/Non

applicable

Non/Ne sais pas,mais je

souhaiteraiscette propriété

... permet-il de calculer des métriques? o o o o

... permet-il d’intégrer les métriques et le code

source?o o o o

xxxii

17 Versions multiples

L’outil de VL en main… Oui NonNe saispas/Non

applicable

Non/Ne sais pas,mais je

souhaiteraiscette propriété

... permet-il de travailler avec plusieurs versions

simultanément?o o o o

... permet-il de calculer, pour chaque version les

différences par rapport aux versions précédentes

(ex. le nombre de nouvelles fonctions, de

fonctions non modifiées, de fonctions modifiées,

de fonctions effacées, etc.)?

o o o o

Annexe D. Techniques statistiques

Dans cette annexe, nous expliquons de façon brève les différentes techniques statistiques

utilisées pour l’analyse des données recueillis à partir du questionnaire sur les outils de

VL. Nous avons tenu à présenter un bref aperçu de ces techniques puisque le chapitre 7

en fait souvent référence.

Les techniques statistiques utilisées sont considérées standards par les connaisseurs du

domaine. Elles comportent:

• Des statistiques descriptives, notamment la génération de fréquences

(pourcentages) et de moyennes pour des variables qualitatives. Une variable

qualitative, par opposition à quantitative, est toute variable non numérique, tel que

l’information sur le milieu de travail (compagnie, université), la fonction

professionnelle (analyste, concepteur, etc.), etc.

• Des relations entre des variables ordinales (où l’ordre est important). Un exemple

de variable ordinale serait le “niveau de connaissance” dans la question 7 de la partie

I du questionnaire (voir l’annexe C). En effet, la connaissance dans cette question

varie entre “très bonne” et “aucune” (très bonne, bonne, moyenne, faible, très faible,

aucune). Ces relations sont identifiées d’après le calcul du coefficient de corrélation

bivariée tau-b ou tau-c de Kendall, aussi appelé “mesure d’association”. Notons

qu’un tau-b est calculé lorsqu’on a une table carrée (même nombre de choix de

réponses pour les deux variables pour lesquelles la corrélation est calculée), alors

qu’un tau-c est calculé lorsque la table est rectangulaire (nombre de choix de

réponses différent pour les deux variables pour lesquelles la corrélation est calculée).

Les valeurs de ce coefficient s’étalent entre -1 et 1. Une corrélation de 1 entre deux

variables indique que plus la valeur d’une variable augmente, plus la valeur de

xxxiv

l’autre variable augmente et ceci à un taux constant. Si le coefficient est positif, des

valeurs basses (respectivement, hautes) d’une variable tendent à être associées avec

des valeurs basses (respectivement, hautes) d’une autre variable; en revanche, si le

coefficient est négatif, des valeurs basses (respectivement, hautes) d’une variable

tendent à être associées avec des valeurs hautes (respectivement, basses) d’une autre

variable. Une corrélation de -1 entre deux variables indique que plus la valeur d’une

variable augmente, plus la valeur de l’autre variable diminue et ceci à un taux

constant. Le tableau D.1 permet d’interpréter les valeurs trouvées pour le coefficient

de corrélation. Les intervalles précisés dans la première colonne du tableau sont en

valeurs absolues.

Coefficient Correlation Interpretation

less than .20 slight correlation almost no relationship

.20 to .40 low correlation small relationship

.40 to .70 moderate correlation substantial relationship

.70 to .90 high correlation marked relationship

.90 and above very high correlation solid relationship

• Des vérifications d’hypothèses à propos de deux moyennes indépendantes

utilisant la valeur du t-test ([Norušis88], pp. 190 - 214). Pour tester une hypothèse en

vue de l’accepter ou bien de la rejeter, nous commençons par l’énoncer, c’est-à-dire

par énoncer ce que nous croyons réellement applicable à une population; par

exemple, l’importance en moyenne accordée à l’aspect pratique “coût de l’outil”

dépend du milieu de travail du participant (compagnie ou université (milieu de

recherche)), dans le sens que lorsque les participants proviennent du milieu

académique, ils accordent plus d’importance en moyenne à cet aspect que lorsqu’ils

proviennent du milieu industriel. Après avoir énoncé une hypothèse, nous fixons

l’hypothèse nulle (H0) qui décrit la population lorsque l’hypothèse à laquelle nous

nous intéressons n’est pas vraie, c’est-à-dire lorsqu’elle est nulle. Un exemple de H0

Tableau D.1. Interprétation du coefficient de corrélation de Kendall tau-b/c.(Tiré de [Williams92], p. 137.)

xxxv

pour l’hypothèse que nous venons de citer ci-dessus serait de dire que les

participants du milieu académique et ceux du milieu industriel accordent la même

moyenne d’importance à l’aspect pratique “coût de l’outil”. Ensuite, nous calculons

la probabilité de voir une différence au moins aussi grande que celle observée dans

notre échantillon si H0 est vraie, c’est-à-dire s’il n’y a pas de différence dans notre

population. Si cette probabilité (appelée “the observed significance level” ou bien “le

niveau de signification observé”) est petite (inférieure à 0.05), nous rejetons H0. Par

contre, si elle est grande (supérieure à 0.05), nous ne pourrons pas rejeter H0; ceci ne

signifie pas que nous l’acceptons, mais que nous restons incertains.

En bref, le t-test est utilisé pour tester l’hypothèse que deux moyennes d’une

population (deux moyennes de deux échantillons exclusifs) sont égales. De façon

technique, il s’agit de calculer ces deux moyennes, puis de calculer la valeur du t-test

(qui est égale à la différence entre les deux moyennes divisée par l’erreur standard de

la différence) avec la probabilité liée à cette valeur, et finalement de comparer cette

probabilité avec 0.05. Si elle est inférieure, nous rejetons H0 qui est l’égalité de ces

deux moyennes.

Finalement, tous nos calculs et graphes sont effectués en utilisant la version 10.0 de

SPSS sous Windows NT [Green00, SPSS00].

Bibliographie de l’annexe D:

[Green00] Green, S. B., Salkind, N. J., and Akey, T. M., Using SPSS for Windows:Analyzing and understanding data. Prentice-Hall Inc., second edition,2000.

[Norušis88] Norušis, M. J., The SPSS guide to data analysis for SPSSx. SPSS Inc.,Chicago, Illinois, 1988.

[SPSS00] SPSS Statistical Package for the Social Sciences. On-line at <http://www.spss.com/>.

[Williams92] Williams, F., Reasoning with statistics: How to read quantitativeresearch. Harcourt Brace College Publishers, fourth edition, 1992.