Archives pour la catégorie Intégration logicielle

Rambo chez Lenôtre

C’est toujours au moment où je m’y attends le moins que mes collègues m’épatent. Je rentrais gentiment de la cantine, quand un collègue, resté au bureau bien à l’abri du croque-monsieur aux quatre huiles, m’alpague au vol.

Lui – Tiens, j’ai trouvé un défaut là, sur le portage winrt.

Moi – Ha ?

Je sais, j’ai l’air de manquer d’intérêt, mais d’une, je n’ai pas encore versé mon café, deux, ce n’est pas très étonnant que le portage winrt soit buggué, puisque c’est lui qui l’a fait et validé.

Lui – Oui, j’avais une trace « Underflow error », et puis les attentes de tâches de fonctionnaient pas. Enfin là, c’est corrigé. Je vais envoyer une nouvelle version de la lib compilée par mél.

Moi – Le code est en conf ?

Lui – Euh non, pas là, enfin pas encore.

Agile jusqu’au bout des ongles.

Moi – Je préfèrerai qu’on ouvre un Fait Technique, histoire qu’on trace le défaut, et qu’on corrige et livre proprement. Pourquoi, c’est urgent, le client est bloqué ?

Lui – Non, non, le client ne l’a pas encore vu.

Alors effectivement, il est urgent de se tirer une balle dans le pied.

Lui – Non mais t’as raison, je vais faire un FT, comme tu as dit.

Moi – Voilà, je livrerai lundi, au calme, ne t’inquiète pas. Par contre, je ne sais pas comment on compile le portage winrt, tu le feras ?

Lui – Euh, c’est que, je dois partir en vacances.

Comme quoi, répéter toutes les semaines qu’il faut partager la manière de compiler le portage winrt en point d’avancement hebdomadaire est aussi efficace qu’un physicien dans un harem.

Le Chef, qui doit également partir en vacances, et a initié le portage – Oui non mais regarde, c’est facile, tu prends la tablette là, tu branches un clavier, une souris, une alim’, tu te connectes là, tu vires le clavier ou la souris pour brancher une clef USB et monter les sources, tu redébranches, t’ouvres Visual, puis bon voilà hein, tu verras.

Moi – Les libs compilées, elles sortiront où ?

Le Chef – Ha ben je … Il faut regarder les attributs du projet.

Lui – Ou alors c’est dans C:

Moi – Bien. Je me débrouillerai je crois. Et c’était quoi ce défaut ?

Si j’échoue à compiler, je ne crois pas franchement qu’on pourra m’en vouloir après une formation aussi poussée.

Lui – En fait, les tâches en attente restaient bloquées. La tablette est trop lente. Quand on fait un appel du genre « réveille-moi dans 10 ms », le temps qu’on rentre dans la fonction, les 10 ms sont écoulées, du coup on a une échéance dans le passé, et on est bloqué.

Moi – Classique. C’est exactement le même problème qu’on a eu sur deux autres portages, mais OK. Et comment as-tu corrigé ?

Lui – En fait, avant, on ne vérifiait pas le code d’erreur de la soustraction entre l’échéance et la date courante. Comme la tablette est trop lente, la date courante est toujours plus grande que l’heure absolue de l’échéance, donc la soustraction échoue systématiquement, en produisant « Underflow error » et un code de retour FAILURE. Donc maintenant, on vérifie le code de retour.

Comment ? Dans un logiciel temps-réel embarqué, on devrait s’assurer en permanence que « tout marche bien navette » ? J’ai failli faire une descente d’organe.

Moi – Tu ferais mieux de faire une comparaison entre les deux dates, et en fonction tu fais l’appel système ou tu restes passant. Sinon tu vas produire des traces pour rien.

Lui – Ha ! mais non, pas de soucis : je me suis dit que ça ferait faire deux fois la comparaison, alors plutôt, j’ai testé le code de retour de la soustraction, et puis surtout, j’ai supprimé l’émission de la trace « Underflow error ». Tu vois, plus de problème.

Excellent ! Tu supprimes la trace qui t’a permis de pointer du doigt ton problème, et tu joues du tractopelle dans mon jardin à la française, mais continue ! Tu veux pas déféquer sur mon bureau, si ?

Moi – Certainement pas ! C’est un principe de conception ! Quand une fonction ne remplit pas son office, elle trace un problème, vu qu’en C, rien n’oblige à vérifier les codes de retour. ON NE SUPPRIME PAS LES TRACES DE DEBUG. Je pense l’avoir déjà expliqué un certain nombre de fois !

Lui – Oui mais j’avais plein de fois la trace alors qu’il n’y avait pas de problème.

Moi – Ha ben si, y’a un gros problème : comme tu peux vérifier avant d’appeler ta fonction si elle ira au tas ou pas, tu dois le faire, et pas attendre qu’elle échoue pour te dire qu’il y a un problème. Il est prédictible ton problème, c’est fini la programmation à base d’exception, hein, tu peux pas espérer en croisant les doigts que allez, on sait jamais, 2 – 5, cette fois, ça pourrait être positif, va savoir. Sur ce, bonnes vacances, moi, je pars en week-end.

Non mais.

Un nouvel hebdomadaire télé dans vos kiosques

Une petite révolution

Grâce à « Film amorti hebdo », plus de soucis pour planifier votre prochain visionnage de « Retour vers le futur II » ! En effet, ce nouveau magazine y consacre une double page vous indiquant les heures et les chaînes de la TNT qui le diffusent cette semaine. Pareil pour « Indiana Jones et le temple maudit », tout comme « Destination finale » et « Urban legends ». Il était temps ! Au vu des fréquences de rotation de ces œuvres et l’incapacité de la TNT à remplir ses grilles, il devient bien plus facile de programmer son épanouissement culturel.

Un magazine pour toute la famille

Les films de la saga « Star Wars » ont les honneurs d’un mini-livret de 8 pages à assembler soi-même, pour le bonheur de vos enfants. Ou alors, ça vous rappelera les suppléments été du « Journal de Mickey ».

De l’ambition à revendre

Mais les créateurs de « Film amorti hebdo » ne comptent pas s’arrêter là : l’acquisition d’un ensemble de canaux du bouquet Canal Satellite est en projet, qui bas de l’aile à s’entêter à diffuser des films récents. Les films les plus amortis passeront en boucle sur pas moins de deux canaux. Par exemple, vous pourrez choisir entre « Les bronzés font du ski TV » et sa version « + 1h ». Idéal pour ne plus jamais rater le début de votre film culte.

Tags:

Le seul mauvais choix est de ne pas en faire

Ils ont choisi Subversion. Et pourtant, ils connaissaient git. Mais ils ont quand même choisi Subversion. Personnellement, je ne connais pas SVN, mais je pratique git depuis longtemps. Je ne chercherai donc pas à alimenter la guerre stérile qui anime les défenseurs de chaque camp. Ha ! si, quand même, juste une chose : lors d’une coupure de courant, j’ai pu continuer de développer sur mon portable, organiser mes révisions, bref, travailler, quand tous les autres regrettaient que la machine à café ne soit pas sur réseau ondulé en attendant que l’électricité revienne. Les joies du mode déconnecté.

Je commence à bien connaître git ; une seule raison pourrait faire que je ne chercherai pas à l’utiliser d’emblée comme gestionnaire de version sur un projet : le degré d’intégration (de non intégration en fait) à la plateforme de développement. git étant totalement orienté « mode console », ils ont eu raison de choisir SVN pour leur nouveau projet multi-plateforme Windows / MacOS / GNU/Linux.

En ce qui me concerne, git-svn m’a ôté toute velléité d’apprendre à utiliser Subversion, puisque je peux bénéficier localement de toutes les qualités de git en m’interfaçant avec le dépôt central SVN. Par contre, j’ai pu observer leur manière d’utiliser Subversion. Et il en est une qui me choque.

"J'ai comme un goût dans la bouche après ma synchro partielle."

Il y a trop de doigts sur une main pour compter le nombre de participants à mon nouveau projet. Du coup, ambiance plateau de développement, agilité et compagnie. Logique. SVN a cette particularité de permettre de se réaligner partiellement sur la version de référence, ou ce qu’on veut en fait. Difficile d’ailleurs de savoir si c’est une fonctionnalité ou un pis-aller. Personnellement, j’imagine que se réaligner était tellement coûteux (est toujours, en fait), et la gestion des branches suffisamment calamiteuses, pour que les mecs de chez Apache se soient dit : « hé ! mais on devrait avoir le droit de ne récupérer que la nouvelle version des fichiers dont les défauts nous empêchent d’avancer ! » D’où, la synchronisation partielle.

Quand je vois la difficulté de mettre en place, tout comme le gain de temps énorme induit par une gestion correcte des dépendances dans une chaîne de compilation, je suis perplexe face à cette idée de synchronisation partielle. Cela revient quand même à dire que le développeur sait exactement ce dont il a besoin en terme de fichier source (et pas de version) pour corriger un problème auquel il est confronté. Moi, ça me scie. Encore, s’il s’agissait d’introduire localement les modifications issues d’un seul commit plutôt que tout ce qui l’a précédé ou ce qui peut le suivre, je dirais « pourquoi pas » (et c’est d’ailleurs sûrement possible avec SVN), si chaque version est un ensemble homogène et cohérent de modifications ayant trait à un unique sujet, etc. ça peut marcher. Mais non, ils vont piocher un fichier au pif (ou presque) et hop ! ils repartent à 300 km/h sur la piste du développement. Le Ministère de la Justice devrait s’employer à déployer cette technique expéditive, ça a l’air de faire des miracles.

De mon côté, je ne m’étonne plus de constater, lorsque je m’aligne, que le dépôt est vérolé. Ça me semble être la conséquence logique de cette idée de synchronisation partielle : on a (peut-être) testé notre modification dans un espace mal déterminé, on ne va pas recommencer sur l’état à jour. On est agiles ou pas ?

 

Tags: , , ,

Quand les dieux veulent nous punir ils exaucent nos prières

Il existe encore des idéalistes dans le développement logiciel. Attention, des vrais hein, pas des jeunes à peine sorti de l’école, tout bouffis de suffisance, persuadés qu’ils sont que le savoir qu’ils ont accumulé fera d’eux des gagnants et des meneurs. Moi je parle de gens qui y croient encore, et ce malgré leurs six mois d’ancienneté dans n’importe quelle SSII.

Récemment, j’ai rencontré un collègue ivre de joie de participer à un paléogiciel maison afin de le conchier définitivement d’y apporter son lot de corrections en tout genre. Premier constat, on est au moins aussi fort que dans de grands groupes mondiaux.

Nul besoin de test quand on a des utilisateurs. – B. Gates, escroc

Prise en main du logiciel, étude du code induit par spaghetto-génèse accélérée, régalade en tout genre, et soudain, LA révélation : « mais ! ça ne peut pas marcher ! » Hélas ! Que de temps perdu !

Il y avait plus simple ! – B. Renard, boulier

Et oui ! Une simple question aux utilisateurs aurait suffit, comme le lui apprendra la suite de l’aventure. À la question « mais ça, vous vous en servez comment ? », la réponse fuse : « Oh, ça ? On ne s’en sert pas, ça ne marche pas. » Autant dire que la fonctionnalité est essentielle. Suffisamment pour lui éviter d’être supprimée en tout cas. La corriger ? Non plus. On n’est pas payé à corriger des défauts qui ne sont pas vus par les clients. De l’intérêt de faire des formulaires de rapport de défauts bien abscons.

Ho ! non, encore un 'extern' devant une fonction dans un .h

Retour dans les profondeurs du code lasagnesque, version supplément béchamel et pâte trop cuite. Face aux interfaces multiples, redondantes et « toutes pourries » (sic), le collègue, enfin, le sous-traitant avec qui mon humanisme m’a forcé à sympathiser pour qu’il ait au moins une lueur de joie dans sans triste journée d’esclave sur-payé, le collègue, donc, a une idée du tonnerre : proposer sa propre interface. Il branchera les anciennes fonctionnalités dessus quand il aura fini, et il pourra faire disparaître le code de la honte.

Mais c’est super ! C’est un peu vite oublier que le code dont il essaie de se débarrasser est lui-même issu d’autres idéalistes intérimaires qui ont dû tout laisser en plan à mi-chemin parce que leur mission prenait fin brutalement, afin qu’ils puissent démontrer toute l’étendue de leur talent sur ce nouveau poste de plieur de trombone à Calais. Je ne vois pas d’autre raison, franchement.

Cent fois sur le métier remettre son ouvrage

Un pas en avant, et un pas en arrière, c’est toujours de sous dépensés pour rien.

Le Régent a une certaine vision du développement logiciel. Dans cette vision, submergée de papillons et de cornes d’abondance, la logique a fait place à la magie.

Comment être sûr de planter un projet :
- un Chef sans envergure incapable de toute décision ;
- un Régent qui trouve tout trop cher, et donc incapable de lâcher un centime ;
- des Esclaves tellement fouettés qu’ils font tout a minima ;
- un Client qui aurait pu être Chef s’il ne faisait pas partie d’une autre société tellement il ne sait pas ce qu’il veut.

Encore un exemple récent.

Le code est gelé depuis trois semaines, les documents finalisés commencent à sortir. Le Chef a l’excellente idée de se demander, si, finalement, tous ces petits problèmes mineurs le sont vraiment. En effet, il est bien temps ! Après tout, pourquoi les réunions hebdomadaires de trois heures tenues depuis deux mois devraient le rassurer (ou, accessoirement, servir à quelque chose) ?

Après quelques jours d’un effort titanesque, le Chef a retrouvé le nom du logiciel, le chemin d’accès à la base de faits techniques, et les gens du SI lui ont même rappelé ses identifiants, fournis quatorze mois plus tôt. Qui aurait pu deviner que tout cela ait pu servir un jour ? Le Chef peut enfin obtenir la liste des problèmes connus : pour cela, il envoit un mél à un Esclave pour qu’il la lui fournisse fissa.

Aïe ! quel malheur ! mais quelle est donc cet intitulé qu’il trouve sous Excel ? « FT AB13-22 (dit « pan dans ta face ») : problème flou qui fait peur ». Frôlant l’apoplexie, il trouve le temps d’émettre un ordre copieux demandant impérieusement une correction immédiate de ce problème extrêmement sensible. Il peut rentrer sereinement se reposer après ce dur labeur : nous sommes quand même mardi, il est déjà 15h31.

Un Esclave prend le relais. Ne comprenant rien à la description du problème, il peut bien entendu fournir une analyse pertinente sans rien connaître du contexte ni pouvoir rencontrer l’auteur, qui a été dégraissé deux jours plus tôt. Tirant à pile-ou-face-ou-bleu, il explique « il suffit de supprimer une fonction ». Non mais. Encore une victoire de canard : cinq heures de facturées sans coup férir.

Un autre Esclave poursuit. Il supprime la dite fonction, tente de retrouver les tests à passer, qui sont au mieux soit obsolètes, soit pas les bons. Par exemple, la validation des centrales inertielles consiste à vérifier si la température anale du chat de la voisine est bien inférieure à celle de l’ébullition de l’eau sur Jupiter. La réponse est bien évidemment « peut-être », la modification est livrée, le problème considéré corrigé.

Bon, c’est sûr, il faut reprendre une nouvelle fois les documents qui avaient failli ré-émerger du circuit de signature pour les amender, mais quelle satisfaction de savoir le travail bien fait !

Une semaine se passe, le Chef revient tout juste de son repos, mais tout n’est pas bel et bon : depuis que le problème FT AB13-22 a été corrigé, de nouveaux soucis se sont fait jour. D’aucuns diraient que c’est pire qu’avant. Sentant que le moment est idéal pour affirmer sa position en éblouissant ses collaborateurs de tout son savoir, sans omettre d’asseoir un peu plus son charisme animal, le Chef convoque en réunion tous les Esclaves et déclame :

« Bon, ben, tant pis. On revient en arrière. Euh. C’est balistique. Ha ! oui, au fait, bonjour. »

Fin de la réunion. Ça va être un peu compliqué. C’est un peu comme si vous achetiez une planche dans un magasin de bricolage pour monter une étagère, et qu’au moment de passer à la caisse, le responsable du magasin interrompait la vente pour vous annoncer : « désolé monsieur, nous ne pouvons vous vendre ce produit, car nous allons reconstituer l’arbre dont elle est issue afin de le replanter comme si de rien n’était. Les enfants aimaient y faire de la balançoire. »

Même avec la meilleure volonté du monde, on ne peut pas retirer en deux coups de cuiller à pot une vieille modification, d’autant plus si depuis d’autres strates d’améliorations/régressions se sont basées dessus. Faites livrer deux containers d’huile de coude. Paraîtrait qu’ils n’en ont pas au service logistique. Faudrait songer à les virer ceux-là aussi.

Tags: ,