Note de lecture : Beyond Legacy Code, par David Scott Bernstein

Note : 4 ; Beaucoup de verbiage et peu d’illustration

Une nouvelle déconvenue, je dois bien l’avouer. Non pas que le style de l’auteur soit mauvais, il est plutôt tonique avec de bonnes qualités de « story telling ». Non pas qu’il n’ait rien à dire, bien au contraire : il transparait du texte une maîtrise, une compréhension et une solide vision de son sujet. Non, l’auteur échoue à développer convenablement son sujet, à l’appuyer sur de solides exemples. Au lieu de cela, il semble préférer discourir en se servant du texte comme une tribune. Pourtant le contenu est au coin de la rue, il ne demande qu’à se révéler : ce sont les 9 principes qui constituent l’essence de l’ouvrage.

L’ouvrage, justement n’est pas excessivement volumineux, avec ses 230 pages. Mais attention : il s’agit exclusivement de texte ! Il est découpé en 2 parties très inégales, la première servant d’introduction avec 3 chapitres sur 40 pages, la seconde développant les 9 pratiques sur le reste du livre.

La première partie s’ouvre sur le triste constant du code legacy et de ses causes : une industrie d’amateurs comme le dit l’auteur. Rien de vraiment neuf, mais c’est bien écrit et guère ennuyeux. Le second s’attaque sur une douzaine de pages au fameux CHAOS report, mais de façon critique, ce qui est assez original, et pertinent en l’occurrence. Mais c’est aussi pour dire qu’il partage les conclusions, mais pas l’analyse. Enfin cette 1ère partie se referme sur un petit chapitre introductif à la seconde partie (les 9 pratiques) et comme quoi notre focus sur l’agile nous a fait perdre de vue la nécessité de solides pratiques de conception (ou d’ingénierie) qui en forment les fondations. Je suis bien d’accord.

Lire la suite

Publicité

Note de lecture : The Mikado Method, par Ola Ellnestam & Daniel Brolund

Note : 2 ; Que de remplissage !

Les auteurs ont découvert un bon truc pour refactorer du code legacy. Une technique à la fois simple et pratique, donc réellement bonne. Et ils ont voulu en faire un livre. Seulement voilà, parce qu’elle est simple, cette technique tient en 20 pages, guère plus !

2 parties totalisant 7 chapitres sur 140 pages constituent le corps de l’ouvrage. La première partie « The basics of the Mikado Method » se satisfait de 4 chapitres avec 65 pages environ. On ouvre le bal avec « meet the Mikado method ». En fait, tout est dit, ou presque, dans ce premier chapitre d’une quinzaine de pages. La démarche en fait très simple (c’est sa qualité première) est décortiquée pas à pas. La seule chose qui manque est un exemple. C’est ce que l’on escompte avec le chapitre 2 « hello, Mikado Method ». L’exemple est hélas un peu simpliste, mais la vingtaine de pages illustre un peu tout, y compris le « revert » à l’aide d’un petit exemple en Java. L’utilisation du gestionnaire de version, partie intégrante de l’approche, fait partie du lot. Il y a déjà pas mal de répétitions avec le chapitre précédant, mais cela reste intéressant.

Le chapitre 3, « goals, graphs and guidelines » est là pour nous donner un peu de recul sur ce qu’est un bon objectif de Mikado. C’est très abstrait et ne nous emmène pas très loin. Au chapitre 4, les auteurs explorent des variations de l’approche Mikado avec « Organizing your work ». En l’occurrence ils déclinent l’approche Mikado en isolation, en pair et en équipe. L’aspect « équipe » rappelle un peu le « Mob Programming », mais il ne m’apparait pas évident que la mise en œuvre ait été sérieusement expérimentée… Cela conclut la première partie du livre.

Lire la suite

Note de lecture : Working Effectively with Legacy Code, par Michael C. Feathers

Note : 9 ; Le refactoring repensé pour le legacy. Book of the year 2018 !

Appréhender la remise sous contrôle du code legacy est à mon avis une discipline à part entière. C’est en partie de l’architecture, tout en empruntant au refactoring avec une démarche de tests bien à elle. Entre autres choses. Mais peu d’ouvrages sont dédiés à la question, il faut dire que celle-ci n’est pas la plus sexy qui soit. Le livre de Michael Feathers se tient au sommet de cet édifice depuis plus d’une douzaine d’années et pour de bonnes raisons.

Michael Feathers nous propose une approche dans la ligne de l’approche extrême programming, en s’appuyant sur une vision code adossé à des tests unitaires. D’ailleurs sa définition du code legacy s’en inspire directement : du code legacy, c’est du code sans tests !

Avec 420 pages, ce n’est pas un petit volume que nous avons entre les mains. Il se découpe en 3 parties. La première d’entre-elle « the mechanics of change » est aussi la plus courte avec une cinquantaine de pages en 5 chapitres. Il s’agit bien d’une introduction assez exhaustive à l’approche que propose l’auteur et que j’appelle le « inside out ». Elle répond aux questions suivantes :

Lire la suite

Note de lecture : Object-Oriented Reengineering Patterns, par Serge Demeyer, Stéphane Ducasse & Oscar Nierstrasz

Note : 4; Un sujet important, mais auquel le format « pattern language » ne rend pas justice.

Le reengineering d’application est un sujet souvent passé sous silence, les auteurs préférant parler des applications débutées depuis une page blanche, ce qui ne constitue pas finalement la plus grande part des projets. Dans cet ouvrage, les auteurs nous proposent une démarche en 9 étapes, qui va de la rencontre avec le legacy au système restructuré.

Le découpage du texte se calque sur les étapes de réengineering proposées, donc 10 chapitres en comptant l’introduction, pour un total d’environ 250 pages sans les annexes (par ailleurs assez courtes). L’ensemble est principalement structuré en deux parties, avec un premier chapitre servant d’ouverture à l’ensemble. Les auteurs viennent du monde des patterns, c’est d’ailleurs dans une de ces conférences que je les ai rencontrés. La quinzaine de pages de ce premier chapitre nous explique la « forme pattern » empruntée (en l’occurrence la forme Alexandrienne) et la démarche de reengineering que j’ai évoquée plus haut.

La première partie s’intitule « reverse engineering » et compte 4 chapitres sur une centaine de pages. Le second chapitre « setting directions » nous propose des patterns pour orienter notre travail, tel que le « most valuable first » ou le « if it ain’t broke, don’t fix it ». Rien de bien palpitant pour l’instant, c’est l’échauffement. Suit « first contact » où, comme le titre l’indique, on va récolter nos premières informations. C’est plus concret, avec « interview during demo » ou l’intéressant « read all the code in one hour ». En fait, tous les patterns de ce chapitre recèlent quelque chose d’intéressant !

Lire la suite

Note de lecture : Re-Engineering Legacy Software, par Chris Birchall

Note : 3 ; Une expérience vécue solide pour l’auteur, mais un peu léger voir naïf pour un livre !

Dans l’ensemble, l’auteur s’est contenté d’évoquer ses quelques expériences (surtout une en fait) de travail sur du code Legacy. Certes, l’expérience est assez solide, mais présente aussi d’importantes lacunes dont je parlerai, je pense surtout aux tests.

L’ouvrage en lui-même n’est pas un jour sans fin : il compte 200 pages, réparties en 3 parties qui totalisent 10 chapitres. La première partie « getting started » comprend 2 chapitres qui comptent pour 45 pages. Au premier d’entre-eux, « understanding the challenges of legacy projects », on fait le point sur une douzaines de pages sur les problèmes rencontrés sur du legacy. Des problèmes que l’on connaît fort bien, ce ne sont donc pas des découvertes, le sujet est même traité un peu façon « tarte à la crème » !

Avec une trentaine de pages, le second chapitre « finding your starting point » est plus conséquent. La stratégie apparaît quand même étonnante et même peu pertinente : on y évoque de l’exploratory refactoring (donc du refactoring sans filet ) et l’usage des outils de métrique comme PMD. Mais point encore de tests qui justement me semble le bon point de départ !

Lire la suite