THESE

icon

372

pages

icon

Français

icon

Documents

Le téléchargement nécessite un accès à la bibliothèque YouScribe Tout savoir sur nos offres

icon

372

pages

icon

Français

icon

Documents

Le téléchargement nécessite un accès à la bibliothèque YouScribe Tout savoir sur nos offres

THESE
présentée par
Jean Marie FAVRE
pour obtenir le titre de
Docteur de l’Université Joseph Fourier - Grenoble I
(arrêtés ministeriels du 5 juillet 1984 et du 30 mars 1992)
Spécialité : Informatique
Une approche pour la maintenance et
la ré-ingénierie globale des logiciels
date de soutenance : 26 octobre 1995
Composition du Jury :
J.P. Verjus
K. Bennett
J. Estublier
G. Kahn
S. Krakowiak
A. Van Lamsweerde
Thèse préparée au sein
du Laboratoire de Génie Informatique - Institut Imag à Carolina et à notre famille ❤


Je tiens vivement à remercier les membres du jury pour m’avoir fait l’honneur d’y participer et
pour le temps qu’ils ont consacrés à cette thèse malgré leurs emplois du temps souvent
surchargés :
Monsieur Jean-Pierre Verjus, Professeur à l’Institut National Polytechnique de Grenoble,
Directeur de l’Institut de Mathématique Appliquée de Grenoble (IMAG), Directeur de l’INRIA
Rhône-Alpes, pour m’avoir fait l’honneur de présider le jury de cette thèse.
Monsieur Keith Bennett, Professeur à l’université de Durham, Directeur du Laboratoire pour la
Maintenance à Durham, Editeur du journal international “Software Maintenance”, pour son
accueil à Durham le mois dernier, pour avoir lu en détails cette thèse bien qu’elle soit écrite dans
la langue de Molière et pour être venu d’Angleterre malgré un calendrier bien chargé.
Monsieur Gilles Kahn, Directeur de recherche INRIA, Directeur Scientifique de l’INRIA France,
et Monsieur Axel Van Lamsweerde, Professeur à ...
Voir icon arrow

Publié par

Nombre de lectures

97

Langue

Français

Poids de l'ouvrage

1 Mo

THESE présentée par Jean Marie FAVRE pour obtenir le titre de Docteur de l’Université Joseph Fourier - Grenoble I (arrêtés ministeriels du 5 juillet 1984 et du 30 mars 1992) Spécialité : Informatique Une approche pour la maintenance et la ré-ingénierie globale des logiciels date de soutenance : 26 octobre 1995 Composition du Jury : J.P. Verjus K. Bennett J. Estublier G. Kahn S. Krakowiak A. Van Lamsweerde Thèse préparée au sein du Laboratoire de Génie Informatique - Institut Imag à Carolina et à notre famille ❤ ❤ ❤ Je tiens vivement à remercier les membres du jury pour m’avoir fait l’honneur d’y participer et pour le temps qu’ils ont consacrés à cette thèse malgré leurs emplois du temps souvent surchargés : Monsieur Jean-Pierre Verjus, Professeur à l’Institut National Polytechnique de Grenoble, Directeur de l’Institut de Mathématique Appliquée de Grenoble (IMAG), Directeur de l’INRIA Rhône-Alpes, pour m’avoir fait l’honneur de présider le jury de cette thèse. Monsieur Keith Bennett, Professeur à l’université de Durham, Directeur du Laboratoire pour la Maintenance à Durham, Editeur du journal international “Software Maintenance”, pour son accueil à Durham le mois dernier, pour avoir lu en détails cette thèse bien qu’elle soit écrite dans la langue de Molière et pour être venu d’Angleterre malgré un calendrier bien chargé. Monsieur Gilles Kahn, Directeur de recherche INRIA, Directeur Scientifique de l’INRIA France, et Monsieur Axel Van Lamsweerde, Professeur à l’Université Catholique de Louvain (Belgique), éditeur du journal international “Transactions on Software Engineering and Methodology” pour avoir consacré de leur temps à rapporter sur ce travail et pour les remarques qu’ils m’ont faites. Monsieur Jacky Estublier, Directeur de cette thèse, Directeur de recherche CNRS, Directeur de l’équipe ADELE, pour m’avoir accueilli dans son équipe et pour m’avoir toujours fait confiance. Je tiens également à lui témoigner ma reconnaissance pour m’avoir permis de travailler dans d’aussi bonnes conditions. Monsieur Sacha Krakowiak, Professeur à l’Université Joseph Fourier, Co-directeur du projet Guide et de l’unité de recherche Bull-Imag, pour m’avoir accueilli en stage, il y a déjà bien longtemps, dans le projet Guide, et pour l’honneur qu’il me fait aujourd’hui de participer à ce jury. Je voudrais aussi remercier tous les membres de l’équipe ADELE qui, de deux personnes lors de mon arrivée, est passée à plus d’une dizaine aujourd’hui. Tous m’ont permis d’une manière ou d’une autre de travailler dans la joie et la bonne humeur... Je tiens aussi à remercier les membres de la escuela de computaciòn qui m’ont si bien accueilli lors de mon séjour à l’Universidad Central de Venezuela en tant que coopérant. Je garde un très bon souvenir de ces deux années et de l’accueil exceptionnel qui m’a été fait. Finalement, ou plutôt avant tout, je tiens à remercier ma famille pour sa patiente et son soutient inconditionnel ainsi que Carolina pour son courage et son amour . A tous, merci !!! Introduction Alors que l’informatique est résolument tournée vers l’avenir, cette thèse se concentre sur le passé ; non pas par nostalgie mais plutôt parce que le futur des logiciels âgés est une question d’actualité. I.1 Contexte Présentons tout d’abord le contexte général, puis le contexte spécifique. I.1.1 Contexte général : maintenance, programmation globale et ré-ingénierie Trop souvent recherche et industrie s’opposent, tout comme théorie et pratique, comprendre et faire, développer et maintenir, etc. Cette thèse se réclame comme faisant partie du Génie Logiciel et à ce titre ces oppositions devraient plutôt être vues comme des complémentarités. En effet, le génie logiciel, comme toute discipline d’ingénierie, est la rencontre entre la science et l’industrie [Shaw90]. Cette définition marque la direction à suivre, même si l’on a parfois tendance à l’oublier. Le génie logiciel est en effet une discipline très large. Selon que l’on se place dans un milieu académique ou un milieu industriel, sa signification est susceptible de changer. Pour certains ce terme fait référence à des méthodes abstraites qu’il est aujourd’hui impossible d’appliquer en pratique. Pour d’autres, il fait référence à des pratiques éloignées de tout fondement scientifique. Quoi qu’il en soit ces deux visions ne sont que les extrêmes d’un spectre voué à être équilibré. Cette thèse retient trois thèmes du génie logiciel : la maintenance, la programmation globale et la ré-ingénierie. Ces thèmes correspondent à des préoccupations industrielles particulièrement importantes et pourtant elles sont souvent regardées avec dédain dans le monde académique. Cette tendance est sans doute liée au fait que les notions et les concepts sous-jacents sont particulièrement flous. Mais n’est ce pas justement parce qu’il y a des problèmes que l’on doit chercher des solutions? En fait, ces trois thèmes correspondent en eux même à des oppositions. 1 2 La maintenance s’oppose au développement. Bien que les problèmes qu’elle pose soient très importants, pendant longtemps ils ont tout simplement été ignorés. Bien qu’aujourd’hui la situation se soit améliorée, la maintenance reste l’une des principales zones d’ombre du génie logiciel. Maintenance et rapiéçage sont encore trop souvent associés dans la réalité. En génie logiciel, presque tous les efforts pour diminuer les coûts de la maintenance consistent à améliorer la qualité des logiciels développés. Cette approche est indispensable. Pourtant elle est loin d’être suffisante : (1) Tout au long de la maintenance, les modifications successives du logiciel détériore sa qualité initiale. (2) La notion même de qualité évolue dans le temps, tout comme la technologie. (3) Améliorer la qualité des logiciels lors du développement n’est valable que pour le futur ; le problème de la maintenance consiste à considérer le passé et le présent. La programmation globale s’oppose à la programmation détaillée. Dès le début de l’informatique, ce sont les notions de la programmation détaillée qui ont été étudiées : les algorithmes et les structures de données. Après plus de 5 décennies, cette discipline a acquis un niveau de maturité important. Dans ce domaine des théories sont parfois utilisées. Il est par exemple possible de décrire formellement la sémantique d’un langage de programmation. Au contraire la programmation globale est basée sur des notions floues. On parle de versions, de configurations et d’objets dérivés, sans pour autant que les concepts associés soient toujours les mêmes ; en tout cas ils ne sont que rarement définis formellement. Il est vrai que ce thème a reçu bien peu d’attention par rapport à la programmation détaillée : ce n’est qu’au cours de la dernière décennie que des recherches actives y ont été consacrées. Aujourd’hui de nombreux systèmes de programmation globale voient le jour. Pourtant les fondements sur lesquels ceux-ci sont basés ne sont pas toujours très clairs. Dans ces conditions comparer et évaluer ces différents systèmes est difficile. Dans bien des cas, l’apparition d’un nouveau système correspond plus à des variations de surface qu’à des améliorations de fond. Cette situation pourrait être comparée, dans le domaine de la programmation détaillée, à la prolifération de nouveaux langages de programmation dans les années 60. Par contre, dans ce dernier cas, ces apparitions ont étés suivies par un processus de classification et de rationalisation. Remarquons finalement que dans le domaine de la programmation globale, l’état de la pratique est encore dominé par l’utilisation de techniques rudimentaires conçues dans les années 70. La ré-ingénierie est liée à la différence entre l’état de l’art et l’état de la pratique. Il s’agit d’une approche pour diminuer le coût de la maintenance. Comme son nom l’indique, l’idée sous jacente est de “refaire” en utilisant des méthodes et des techniques (plus) adaptées. Refaire, non seulement parce que quelque chose a été mal fait, mais aussi parce que la manière de faire a changé. En fait la ré-ingénierie est un support pour l’évolution des logiciels existants mais peut être vue aussi comme un moyen facilitant le transfert de technologie. La rétro-ingénierie est l’une des composantes de la ré-ingénierie. Comme son nom le suggère, il s’agit de “faire les choses à l’envers”. Une telle approche est contestable dans bien des cas ; mais elle peut aussi être utile. Les fonctionnalités offertes par les logiciels âgés ont souvent été affinées au cours de longues années et il peut être préférable d’examiner le logiciel existant que de faire une nouvelle analyse des besoins. La ré-ingénierie s’est surtout intéressée à la programmation détaillée. Par contre son intersection avec la programmation globale est quasi-inexplorée. 3 I.1.2 Contexte spécifique : maintenance en présence de préprocesseurs Le point de départ de cette thèse est plus spécifique. Nous nous intéressons aux problèmes posés par l’utilisation de préprocesseurs dans le domaine de la programmation globale et de son rapport avec la maintenance et la ré-ingénierie. Le cas du préprocesseur CPP est plus particulièrement étudié. CPP est le préprocesseur du langage C. Pour les chercheurs il s’agit d’un outil dépassé et pourtant il est cité dans de nombreux articles... Pour beaucoup de programmeurs il s’agit d’un outil du passé mais aussi du présent ; dans le futur, il risque d’être encore présent... L’utilisation extensive et excessive des préprocesseurs rend les programmes impossibles à lire ; pourtant ils sont utilisés pour écrire de grands volumes de code... L’utilisation des préprocesseurs rend la maintenance difficile et pourtant ils sont largement utilisés par les chargés de maintenance... La présence des préprocesseurs est un problème pour les programmeurs, les chargés de maintenance, les constructeurs d’outils et pourtant ils sont toujours là... Malgré les problèmes occasionnés par les préprocesseurs, aucun support ne leur est dédié... Ces paradoxes forment le
Voir icon more
Alternate Text