@SURTITRE 1:MAINTENANCE ET ORIENTATION OBJET

@TITRE 1:Des gains certains, mais des inconv‚nients possibles

@CHAPO:L'orientation objet am‚liore toujours la maintenance ‚volutive, parfois dans de fortes proportions (jusqu'… 50%). En maintenance curative, le bilan se fait plus contrast‚, surtout si le langage … objets n'est pas l'aboutissement d'une vraie conception par objets.

@TEXTE:ThŠme … la mode, l'orientation objet, dŠs ses origines, a vis‚ la r‚-utilisabilit‚ du code. Objectif deproductivit‚, donc, mais du mˆme coup am‚lioration de la maintenance. Au moins la maintenance ‚volutive, c'est … dire l'adaptation au fil du temps des programmes aux ‚volutions des besoins comme des possibilit‚ de la technologie.

Il ne s'agit, en effet, que d'une prolongation du produit d'origine. L'exp‚rience confirme les espoirs: aprŠs quelques ann‚es de pratique, les experts font preuve d'une belle unanimit‚ pour reconnaŒtre les effets positifs de l'orientation objet sur la maintenance ‚volutive. Jean-Marie Letourneux (Directeur recherche et d‚veloppement, GSI-IS) ‚value … 50% le gain sur la maintenance d'un gros produit bancaire (110 ex‚cutables de 800-900 K chacun, en C++ sous Unix). Il serait de 25 … 30% sur le projet Nemesis de la CEE (Objective C et C++, 200 000 lignes de code sous Unix sur Sun et RS 6000).

Une seule r‚serve: la programmation objet ne peut encore pr‚tendre … la maturit‚ d'une technologie ‚prouv‚e. Les premiers compilateurs Ada valid‚s datent de 1985, et l'exp‚rience des problŠmes rencontr‚s ne peut donc se comparer … celles des langages traditionnels (Cobol et Fortran).

@INTER:Attention … la maintenance corrective

@TEXTE:En revanche, pour la maintenance curative (ou corrective) les avis divergent sur les effets de l'orientation objet. Les uns relŠvent les effets positifs dus … une bonne structuration, d'autres observent des effets pervers d‚coulant des principes mˆmes de la programmation objet ou des pratiques qu'elle encourage.

Baudoin Roger (directeur g‚n‚ral, IGL Technologies), observe des gains trŠs importants. Une bogue est plus facile … traquer, les donn‚es sont encapsul‚es, l'interface parfaitement d‚fini. Habib Achkar (directeur, direction technique recherche et d‚veloppement, Sema Group) pr‚cise: "Le temps pass‚ … une correction se d‚compose entre identification de l'erreur (25% du temps), ex‚cution de la modification (25%) et suivi des impacts de la modification (50%). Les gains les plus importants s'observent sur ce dernier point, car les effets de bord sont explicitement d‚finis.

Parmi les observateurs plus critiques se comptent les universitaires am‚ricains intervenus en octobre dernier … la Conference on Software Maintenance de Sorrente (Italie). Pour eux, la programmation objet peut fortement compliquer la tƒche du correcteur, surtout dans les interventions d'urgente.

En effet, l'h‚ritage et les liens dynamiques multiplient les lieux possibles de l'erreur qui a caus‚ le problŠme. Elle peut se trouver dans le code d'une classe donn‚e mais aussi d'une de ses super-classes. Mˆme une fois la fonction fautive identifi‚e, il peut s'av‚rer difficile de savoir exactement quelle version surcharg‚e de cette fonction est fautive.

Ross Huitt (Bellcore), pr‚cise "De nombreuses tƒches s'‚crivent sous forme de m‚thodes trŠs brŠves, qui se contentent de faire passer un message … une autre m‚thode en accomplissant peu de traitements. Un systŠme peut donc se composer d'un grand nombre de trŠs petits modules... sur un ‚chantillon de 2224 m‚thodes du systŠme Smalltalk V, 40,6% comprenant deux lignes ou moins... une partie de la litt‚rature sur la bonne programmation orient‚e objet encourage ce style...". Pour la maintenance, cela implique que le code relatif … une tƒche donn‚e risque de trouver largement dispers‚ dans l'ensemble du programme.

@INTER:Se m‚fier du C++ gadget

@TEXTE:Bref, les affres du "Cobol spaghetti" se retrouvent dans les hi‚rarchies et treillis multiples qui structurent objets et m‚thodes. Ces constatations conduisent les experts … converger vers trois recommandations.

D'abord, ne pas se croire vraiment "orient‚ objet" si l'on se contente de programmer dans un langage portant ce label. C++ se pr‚sente comme une extension de C par l'ajout de structures objet. Rien n'oblige le programmeur … bien s'en servir (ni mˆme d'ailleurs … s'en servir). Tout en se targuant d'une orientation objet, il peut continuer … travailler en C et … en conserver le laxisme permis par ce langage, voire encourag‚ par un "esprit C" trŠs ‚loign‚ des bonnes disciplines industrielles.

Attention, inversement, … vouloir trop bien faire … ce niveau "L'abus de hi‚rarchies complexes conduit … des pratiques pires qu'en C", avertit Baudoin Roger.

Enfin, l'ergonomie mˆme des interfaces graphiques encourage … l'abus du couper-coller. Ce mode de d‚veloppement, naturel avec la structure fonctionnelle du langage C. En maintenance ‚volutive, il introduit le risque d'une ‚volution mal coordonn‚e des fonctions ainsi obtenues. En programmation objet, l'emploi m‚thodique de l'h‚ritage corrige ce d‚faut... mais les facilit‚s de la programmation "… la souris" peuvent le r‚-introduire.

@INTER:Ce qui se con‡oit bien se programme proprement

@TEXTE:Ces inconv‚nients et ces d‚rives conduisent les sp‚cialistes … quelques recommandations pour que la maintenance b‚n‚ficie vraiment des nouvelles orientations.

Point primordial: la conception compte plus que la programmation. Les applications ‚volueront facilement si les objets ont ‚t‚ bien choisis. Le choix d'un langage objet en d‚coulera naturellement, car il permettra de bien r‚aliser ce qui a ‚t‚ con‡u. Encore qu'un utilisateur comme la CNRO (Caisse nationale de retraite des ouvriers du bƒtiment) continue de programmer en PL/I, conform‚ment … ses standards maison, mˆme pour une grande application qu'elle reprend … la base "en s'appuyant sur une m‚thodologie objet", comme nous l'a pr‚cis‚ Jean-No‰l Massot, directeur informatique.

DeuxiŠme point, ne pas multiplier les objets. Benoit Faller (responsable du p“le "techniques innovatives", Cap Sesa D‚fense) recommande "un d‚coupage en objets … taille humaine", et introduit le concept de sch‚ma, ou ensemble de classes: "Si un systŠme branche en rateau sur 5000 classes, impossible … la maintenance de s'y retrouver. Avec trente sch‚mas interm‚diaires, ‡a va".

@INTER:Un bon environnement n'est pas un luxe

@TEXTE:Ensuite, offrir aux concepteurs un environnement suffisamment puissant, soutenant les "deux nouveaux gestes du programmeur: navigation et coup‚-coll‚" (J.M. Letourneux) et les ins‚rant correctement dans l'ensemble du processus de conception. La documentation papier n'arrive plus … suivre la course … la complexit‚ impos‚e par l'orientation objet. Les environnements de compilateurs commerciaux (d'Eiffel … Turbo C++) apportent progressent en ce sens, de mˆme que les ateliers de g‚nie logiciel, comme l'ObjectCenter (pour C++), d'IGL.

Les outils de navigation m‚ritent d'ˆtre particuliŠrement muscl‚s pour les phases de diagnostic de panne. Ils font l'objet de recherches comme celles de Lejter, Meyers et Reiss … la Brown University. Leur prototype XRef/XRefDB sont con‡us pour faciliter la maintenance en soutenant le suivi des graphes de d‚pendance entre objet et m‚thodes, grƒce … une base d'informations sur des programmes C++ (mais aussi C et Pascal).

Enfin, les applications orient‚es objets ne pourront ˆtre maintenues … des co-ts raisonnables que si les ‚quipes comp‚tentes sont suffisamment ‚toff‚es. Sur ce point, la situation ‚volue favorablement, par l'effet conjugu‚ de la formation permanente et de l'arriv‚e de nouvelles g‚n‚rations d'informaticiens.

@INTER:Chi va piano va sano

@TEXTE:Mais les mutations culturelles prennent du temps. Baudoin Roger recommande donc la progressivit‚. Commencer par un petit projet. Une interface homme-machine, par exemple, a l'avantage de bien introduire … la technologie objet tout en limitant les risques en cas de problŠme. Une fois acquise la maŒtrise du concept, on s'attaquera … des applications de plus grande envergure, et la comp‚tence en maintenance se renforcera au rythme du d‚veloppement des projets.

@SIGNATURE:PIERRE BERGER

LEGENDE:Une bonne interface graphique facilite sensiblement la navigation dans l'‚cheveau des d‚pendances entre classes et m‚thodes (document Borland).