Affichage des articles dans Génie Logiciel

Hello Goodbye

La tendance en ce début d’année me semble être à la frilosité, au gel de toute forme d’investissement. On fait le dos rond pour passer la crise, même quand ses propres indicateurs sont au vert. Par exemple, prenez google, pour changer ;-) , cette entreprise se porte plutôt bien, et pourtant ça commence à dégraisser : après lively, c’est au tour de Notebook et plusieurs autres projets de passer à la trappe.

J’en déduis :idea: crise :arrow: réduction des coûts, gel de tout investissement :arrow: retour aux mauvaises habitudes quick-and-dirty :arrow: mauvaise qualité de code.

Il va falloir, avec une réduction du budget, faire aussi bien… or, en informatique non plus il n’y a pas de magie. Les DSI vont devoir continuer à faire évoluer les systèmes, et ça se fera, comme d’habitude, en sacrifiant la qualité. On alimente ainsi une sorte de dette de maintenabilité, on vit d’une certaine manière au détriment des développement futurs. Par exemple je crois que Flex va continuer sa progression et que Flex augmente la productivité immédiate pour faire très vite des clients web sexy. Mon opinion est que Flex reste une solution qui n’encourage en rien le développement maintenable à  l’échelle du gros projet, ne serait-ce que le language actionscript. Malheureusement, la techno diamétralement opposée (non-sexytude, non-démo-immédiate, maintenabilité-nickel), soit GWT, me semble trouver peiner à trouver sa place en entreprise.

Pour résumer : les écrans sexy maintenant, et pour plus tard le développement durable (c-à-d. industrialisé et maintenable).

Lucy in the sky with diamonds

Comment réduire les coûts ? On pourrait penser qu’un élément de réponse est dans ce qu’on appelle le « cloud computing ». Pour résumer le « cloud computing » c’est de faire héberger des applications dans le nuage, vous savez, le reste du monde, le truc que l’on dessine pour figurer internet sur le diagramme qui représente votre réseau :

cloud

Rappelez-vous du slogan de Sun à une époque, « the network is the computer ». On est dans la continuité, on dirait maintenant « the internet is the computer ».

L’idée sous-jacente est que votre métier n’est (probablement) pas de faire tourner des serveurs. Alors, plutôt que de gérer des salles machines, confiez-les à ceux qui ont 1) le savoir-faire et 2) les économies d’échelle.
Citons le fondateur d’Amazon, Jeff Bezos : « We launched our Web services [...]; it’s the equivalent of creating an electric grid, but for computing. Recently, I went to Luxembourg and visited a 300-year-old brewery. It had this gigantic relic of a generator from when it had to make its own electricity. As soon as they could buy off-grid, they did. Making their own electricity didn’t make their beer taste better. It’s the same for running your own data center ». En passant, si vous pensez qu’Amazon est seulement une boutique de vente de livres en ligne, ce n’est plus du tout le cas. Entre autres innovations, Amazon se positionne à travers S3 et EC2 comme un acteur majeur du cloud computing. Disons, qu’au moins cette fois-ci il y a innovation, rappelez-vous de l’affaire du brevet « 1-click » ! :x

Vous voyez le topo. Tout ceci concerne en premier lieu la réduction de coûts, pas vraiment l’apport de fonctionnalités nouvelles. Autre conséquence d’un gel des investissements, on ne fera pas l’investissement de passer ses applications sur le cloud : c’est une lourde ré-ingénierie, pour l’instant non maîtrisée.

J’ajoute donc :idea: passer sur le cloud demande investissement initial :arrow: « le cloud, oui, mais pas cette année » :arrow: désenchantement généralisé et chute du « hype » autour cloud computing. Si j’osais, je dirais sale temps pour le cloud, ha ha ;-) .

Pour toute innovation, il existerait une courbe de ‘hype’ qui serait toujours peu ou prou la même : découverte, attentes déraisonables, désenchantement et finalement compréhension puis productivité. Si vous prenez la courbe publiée par le Gartner de cet été, le cloud computing serait encore avant le « pic d’attentes exagérées ». Et bien ma prédiction est que le cloud va amorcer très vite, dès cette année, la chute des espérances qui se trouve de l’autre côté de l’à-pic. L’avenir (proche) est sombre notamment pour Amazon EC2+S3 justement. En effet, ces technos sont un formidable tremplin à startups, en fournissant un réel service d’élimination de la barrière à l’entrée d’une infrastructure web scalable. Les success-stories d’Amazon sont pour beaucoup des startups qui offrent des SaaS sur le web. Malheureusement, en cette période de crise, les startups explosent au décollage. Et les grands comptes gèlent veille et investissement. Amazon risque d’avoir du mal à atteindre son public et se constituer une clientèle. Même constat pour Google Apps Engine.

Bref, y’en a qui vont un peu trop vite en besogne.

Back in the USSR

Retour aux fondamentaux de la première bulle internet. Hé oui, 1998~2000 : « détourner la page d’accueil vers mon portail pour y afficher de la pub ». C’est devenu en 2008~2010 : « détourner les recherches vers mon moteur pour y afficher de la pub ». Exemple qui m’a frappé récemment : afin d’effectuer un dépannage familial à distance j’installe le tout dernier MSN Messenger Live. A ma grande stupéfaction ça me change mon moteur de recherche dans mozilla ! 8O Sans me demander mon avis, alors que, franchement, ça n’a rien à voir, utiliser un pager et mes recherches internet. C’est un peu comme si je prenais une carte orange et qu’en vertu d’accord RATP-TF1 ma télé se mettait à remplacer mes chaines favorites par TF1 et TF6 ! J’étais furieux : mon ordinateur m’appartient ! :x Winamp : pareil, j’installe un logiciel pour écouter de la musique et ça me propose un moteur de recherche winamp.com dans mozilla. Bref, plus ça va plus j’ai l’impression en installant un logiciel d’avoir un invité indélicat qui mets les pieds sur la table, le bordel dans mes affaires bien rangées (par exemple « Mes Documents », vas-y, fais comme chez toi), et fouille dans mes affaires… Il faudra établir une déontologie ou un label indépendant de non-malware sinon bientôt votre navigateur internet ressemblera à ça :

moteurs

Non, quand une boite ayant pignon sur rue comme Microsoft fait du malware de façon aussi grossière, c’est que quelque chose va très mal quelque part.

Bref, :idea: retour aux fondamentaux.

En parlant de Microsoft, lot de consolation pour eux, en vertu de tout ce qui précède, pas besoin de se presser pour sortir son office-en-ligne-concurrent-de-google-docs… c’est pas encore le moment de tuer la poule aux œufs d’or Office…

Et pour finir, :D je vous souhaite une bonne année 2009 !

L’idée m’est venue en lisant un billet sur Coding Horror. J’aime bien les photos qui illustrent les anti-patterns cités par le billet. On pense souvent dans le métier (et à raison, à mon avis) qu’un diagramme vaut mieux qu’un long discours, mais on pense rarement aux photos. On a peut-être de mauvais souvenirs d’abus de clip-art dans des présentations PointPuissant, toujours les mêmes, de moins en moins drôles à chaque fois.

Pourtant, une photo bien choisie peut illustrer la philosophie, l’idée générale derrière un concept technique, le pourquoi, alors qu’un diagramme va très vite nous emmener dans les détails et dans le comment.

 Tout ça pour dire que je m’amuse à chercher des photos pouvant illustrer les Design Patterns (ceux du GoF pour commencer ça sera déjà pas mal).

J’ai commencé par le plus évident :

Adapter l’Adaptateur

(ou Adapter, dans la langue de shakespeare, enfin, s’il avait vécu à notre époque et avait été informaticien).

Un  peu plus subtil :

Façade la Façade

(ou en anglais Façade ;-) )

Je trouve que ça illustre mieux justement la fonction du pattern que le premier degré du genre de ça :

façade

L’idée est justement de ne pas ouvrir la porte pour se balader dans toutes les pièces mais bien de piloter en ensemble de composants en boîte noire.

 Une autre illustration que j’aime tout particulièrement :

Stratégie la Stratégie 

(ou strategy, pour les plus anglophones d’entre vous).

C’est peut-être déjà un peu plus tiré par les cheveux. Et encore, c’est rien par rapport à des patterns inillustrables, comme le visiteur ou le pont (et, non, pas une photo de pont, ça serait trop simple).

En bonus, une dernière illustration, pas vraiment un pattern, mais de l’orienté objet tout de même :

 Héritage multiple l’héritage multiple :-D

Norman Walsh nous annonce la sortie de DocBook version 5.0. Ça ne fera probablement pas grand bruit… Je suis un fervent défenseur de DocBook pour produire la documentation technique, mais on ne doit pas être assez nombreux, en tout cas l’utilisation de DocBook me semble confidentielle. C’est bien beau le « voici les DTD et les XSLT, démerdez-vous vous avez tout ce qui vous faut », mais l’adoption de DocBook serait facilitée par une chaîne d’édition DocBook libre, facilement installable et utilisable. Faut reconnaitre que le premier « bonjour, monde ! » en DocBook se fait pas en cinq minutes.

Finalisée également la cinquième édition de XML 1.0. Eric Van der Vlist nous explique en quoi cela augure la mort de XML 1.1 et en quoi c’est pas si grave. Les autres annonces de ce déjà fertile mois de Février, PostgreSQL 8.3, WordPress 2.3.3 (un correctif de sécurité avant tout, la mise-à-jour est fortement recommandée si comme moi comme ce site vous êtes sous WordPress) ainsi que les branches 5.5 et 6.0 de Tomcat.

Alors, prenons le prochain ticket d’incident… voilà. bla bla bla… :| mmmh. OK. Ça doit pas être bien compliqué ça devrait se trouver quelque part dans cette classe, là. Tiens, je l’ai jamais ouverte celle-là. Allons-y, Ctrl+Shift+T, OK, de quoi ça a l’air ? 8O Oh meeerde

C’est précisément l’effet « rôh merde » qu’essaie de mesurer l’outil Crap4j, via la métrique CRAP (Change Risk Analysis and Predictions), ou bien, en français, l’ohmerditude. Cette traduction en vaut une autre, et puis j’aime bien le suffixe « -itude » :D .

Ce qui me plaît dans cette métrique, c’est que, pour une fois, on part de la question avant de parler de chiffres. Je n’aime pas l’approche qui consiste à constituer des tableaux de chiffres sans fin, qui certes donnent un air très savant, mais qu’on est bien en peine d’exploiter :roll: . A travers l’ohmerditude, dans le but de vérifier qu’un code est maintenable, on essaie de répondre à la question « un développeur va-t’il trouver risqué de modifier ce code lors d’une maintenance ? ». Si oui, on prend le risque que personne ne touche plus à ce code qu’entre deux doigts, le bras tendu et en se pinçant le nez de l’autre main (voir fig. 2 ;-) ). Les développeurs vont ajouter tout autour de cette boîte noire des couches et des couches de rustines et contournements de moins en moins maintenables :cry: .

:idea: Maintenant que vous touchez du doigt tout l’intérêt potentiel de cette métrique, intéressons-nous à son calcul. La formule est un dosage pifométrique de complexité cyclomatique et de couverture de tests. En gros, un code sera « crappy » (ou « ohmerdique » si vous préférez) si il est (1) très complexe et (2) très peu testé. Un code très simple sans test ou un code complexe mais très bien testé seront considérés comme acceptables.

Crap4j mélange donc le nombre de conditions à tester avec la couverture de lignes des tests… mmmmh. :| bon, on a vu pire. Plus exactement, Crap utilise le taux de lignes non couvertes. Si l’on pose l’hypothèse que les décisions sont uniformément réparties dans les lignes de code, alors cette mesure serait une sorte d’estimation de la quantité de décisions non testées. Malheureusement je ne connais pas d’éléments qui viendraient confirmer cette hypothèse, et ça serait quand même peu fiable.

Quel usage ?

Prise en tant que métrique isolée, cette mesure ne serait pas passionnante. Par contre, je l’utiliserais comme indicateur de testabilité et de possibilité de changement. Selon l’ISO-9126, testability et changeability sont bien des sous-caractéristiques de maintainability, on est bien en élément de réponse à la question initiale. Et comme la norme laisse complètement libre la façon de calculer des indicateurs pour les sous-caractéristiques qualité (ce qui est la façon normative de dire « démerdez-vous on vous donnera pas la formule »), Crap peut être utilisé comme formule de calcul de testabilité « sur étagère », qui présente l’avantage d’être simple à expliquer, rapide à mettre en oeuvre et déjà outillée.

A condition que vous n’ayez pas déjà d’outil de mesure qualité qui vous permette de consolider différentes mesures, et à condition également de calibrer crap4j en fonction de vos exigences, celui-ci peut constituer un premier niveau d’outillage qui vous incitera peut-être à aller plus loin.

On préférera peut-être la version produisant des rapports (via ant, à intégrer à son build continu, donc) que la version plug-in eclipse : le public visé pour cet indicateur de risque qu’un changement soit non testé me semble plutôt le gestionnaire (chef de projet par exemple) que le développeur, qui va probablement garder sous les yeux dans son IDE des règles de codage plus immédiatement « actionnables ».