Du code jusqu'à la nausée (12/02/2011)

0.PNGL'informatique est malade de lignes de code. D'où est venue cette nausée? Quelles en sont les raisons et les aboutissements?

Il y a quelques années, je me souviens d'un CEO qui assistait à la présentation des liens qui existaient entre les applications de gestion, faisait la constatation suivante:

- Cela ressemble à du spaghetti.

Des organigrammes expliquaient pourtant de manière claire, les liens et les processus entre les informations à partir des "input", pour arriver aux "output" conformes aux desiderata de lui-même en tant que CEO.

Si j'avais été à sa place, j'aurais dit,

- C'est de la théorie et je suis ici en tant que vendeur et pas créateur. Les spaghettis sont toujours secs. C'est à vous, client, qu'il s'agit d'y ajouter de la sauce tomate pour que cela ait un goût plus savoureux.

Sa logique, à lui, n'était pas passée aussi loin que la difficulté des tâches en présence. Il voulait seulement garder le brin d'humour par sa déclaration d'impuissance.

Il n'avait pas tout à fait tort, pourtant. Tout était, déjà, complexe. Les processus comportaient des décisions, des aiguillages, des enchevêtrements de blocs d'instructions pour répondre à la logique humaine tout aussi complexe. S'il fallait refaire l'exercice, aujourd'hui, pas sûr qu'il y verrait plus de clarté. Il ne s'en rendait pas compte et en plus, s'il avait dû expliquer dans un cahier des charges, ses desiderata peut-être aurait-il été fort dépourvu quand la brise serait venue. Même le "jongleur de chiffres" ne peut expliquer d'où ils viennent. Il ne voit que les résultats. Les sources l'indisposent. 

Cette complexité n'a, malheureusement, fait qu'augmenter à tout niveau. Si les principes de base des applicatifs de gestion sont restés ce qu'ils ont toujours été, des facturations, des comptabilités, les machines ont permis d'aller plus loin, de réactualiser pour exploiter encore mieux, tout azimut et triturer, au mieux, ces données et ces chiffres.

Même si les langages de programmation se sont rapprochés de ceux de l'homme, que l'Assembler n'est qu'un lointain souvenir, les difficultés se sont multipliées d'autant dans de nombreux processus. Les professionnels ont appris à vaincre ce grand écart entre le raisonnement humain et celui de la machine en y accordant beaucoup de temps, souvent beaucoup de sueur et de stress. 

Les temps ont changé. L'informatique s'est tournée vers n'importe qui en passant par n'importe quoi. Tous les utilisateurs se sont vus désignés pour "produire" par eux-mêmes, en y intégrant leur propres compétences dans un "Do it yourself". Cela a commencé par l'introduction des données par les utilisateurs et non plus par des gens dont c'était la profession.

Le langage Basic a apporté, au départ, une "certaine facilité d'utilisation". Le marketing a imposé à l'informatique d'être "convivial", "user friendly", "Plug and Play" comme le disait la publicité, plutôt mensongère, des premiers softwares de Microsoft. L'informatique rendue accessible par tous et pour tous.

La 4ème génération des softwares a apporté plus de souplesse. Cette génération L4G s'est avérée ensuite comme trop libertaire et encline aux excès chez des apprentis sorciers, qui sans guide, se sont mis en tête de remplacer ceux qui étaient étudiés "pour". Il a fallu revenir à l'étape précédente, de la centralisation, celle de plus de rigueur. Revenus dans le giron des professionnels, ces développements parallèles à eux, souvent, il ne s'agissait plus de spaghettis mais de cannellonis qu'il fallait réécrire.

Entre-temps, la facturation n'était plus restée une facturation simple. Elle s'intégrait dans une série d'autres processus périphériques pour lui donner un aspect contextuel, plus intégré et, de fait, plus complet. Validation à l'entrée et à la sortie ne suffisaient plus. Des bases  énormes de données pour le stockage, puisque celui-ci avait baissé considérablement de prix. 1.jpg

A la suite de ce besoin, le nombre de processus est devenu tellement gourmand en fonctionnalités, en lignes de codes  et en complexités que la nausée des codes est en passe d'étouffer ses professionnels. La cote d'alerte, pour écrire ces codes et ensuite pour les maintenir, est atteinte, comme le remarque l'article du Science et Vie de février 2011. Article "L'informatique,  malade des lignes de code".

BUGS LOGICIELS. PC, téléphones, GPS, mais aussi moteurs automobiles et aériens....les programmes informatiques sont partout, et de plus en plus sophistiqués. Problème: en raison de cette inflation galopante des lignes de code, les informaticiens avouent ne plus pouvoir assurer la fiabilité de leurs systèmes.

Les softwares ont considérablement explosé en richesse de fonctions et de fonctionnalités.

Les compilateurs assurent la vérification du vocabulaire, de la syntaxe, mais pas des erreurs de logique. Les interpréteurs de langages, s'ils empêchent le temps de compilation préliminaire, ne sécurisent pas plus. L'hypersensibilité aux erreurs se fait sentir plus tard lors de la confrontation avec le monde du réel. Tester tous les cas est devenu impossible à réaliser dans un temps qui se veut court  et dans la limite du "contrat" avec l'utilisateur impatient.

Au niveau de base, la gestion globale du l'"Operating System", de l'OS demande déjà de plus en plus de maintenance, de mise à jour, une fois lancé dans la nature de la production. En 1993, Windows NT 3.1 comptait 3 millions de lignes de code. En 2003, Windows server en demandait 50 millions. La version Seven ne doit plus être "avare". 

Nous sommes, de moins en moins, à l'époque de la création "pur jus", "from scratch" comme on le disait. La réécriture d'un logiciel ne se conçoit plus souvent. Les packages ont remplacé le "clé sur porte". Pour la maintenance, on y joue, désormais, avec des bouclettes, des interfaces entre un ensemble d'objets, autour du cœur du système que l'on espère garder en vie.

La version Windows Seven de Microsoft, ce sont les utilisateurs, eux-mêmes, qui ont apporté leur concours par des tests et l'apport d'idées d'amélioration, avec des versions "beta". Une fois, distribué, l'utilisateur continuera à participer aux frais des corrections par sa propre expérience. Seule la diffusion mondiale permet d'affiner tout logiciel.

Le software est plus sensible aux erreurs que le hardware. Moins rigide, adaptable aux besoins par la "customisation", le logiciel souffre, ainsi, d'un potentiel de "bugs" grandissant. Statistiquement, en bureautique, il est raisonnable de penser qu'au moins, un bug se cache derrière chaque  millier de lignes de code.  Face aux millions de lignes, il est un peu normal que les informaticiens déclarent forfait et ne peuvent plus assurer leur production sans risques. 

Les informations, elles, sont devenues tentaculaires, parfois, d'origines non certifiées, ce qui rend les erreurs exponentielles, sans même avoir commencé le traitement. Les modules de processing sont écrits par des équipes différentes, ce qui ajoute à la difficulté. Les fonctionnalités s'empilent, couche après couche, comme des poupées russes avec l'aide d'interfaces et de paramétrages à tous les étages. Ce processus de mise en boîte est là, en principe, pour faciliter la tâche de l'informaticien. Le problème, c'est que ces boîtes deviennent mouvantes, que les cœurs des systèmes ne sont plus rigides, mais dépendants du hardware en évolution rapide. Car la puissance du matériel augmente les potentiels à une vitesse stratosphérique. Potentiels qu'il faut utiliser au plus vite pour gagner une guerre contre la concurrence. 

La documentation, quand elle existe, prend un temps important, en parallèle et à toutes les étapes: analyses, implications environnementales, conceptions, réalisations et plus tard, pour les mettre mises à jour. Si l'on suit la procédure Oracle (AIM), pour le design, il y a pas moins de 12 types différents à compléter. 

2.jpg Ambitions et fiabilités ne font pas bon ménage.

La crise du logiciel guette, comme le constate Kévin Sullivan du Software Engineering Institute de Carnegie Mellon. La gestion comporte un ensemble de logiciels dont les versions doivent rester compatibles entre elles. Chaque logiciel devrait rester, en principe, compatible avec lui-même, dans une version antérieure (en down grade). Cette idée permet d'espérer postposer l'implémentation de la dernière version. C'est vrai, pendant très peu de temps,  en définitive. Le risque de ne plus pouvoir se connecter avec tous les logiciels satellites est important. Dès qu'un autre partenaire sort des sentiers battus, pour n'importe quelle raison, les autres devront se mettre à niveau pour continuer à garder les "lunettes" à la bonne focale. De moins en moins de consolidations pour s'en assurer. Plus le temps, tout simplement. Le nouveau software est là et il faut s'y greffer et le flou s'installe. Les artefacts se bousculent.

Quand on se rappelle que l'informatique s'impose, partout, dans tous les secteurs de l'entreprise, ainsi que chez les particuliers, ce n'est pas là pour rassurer.  Les millions de lignes se voient complétés de patches, de corrections de milliers de lignes en un patchwork que personne ne peut plus s'assurer de l'efficacité ou de l'utilité. On s'inquiète de leurs dernières utilisations par un inventaire. Mais, on implémente, en aveugle, "parce qu'on ne sait jamais", en creusant de plus en plus le fossé entre l'usage, l'obsolescence, la création et la maintenance. Les risques ne font pas plus de vagues dans l'esprit des décideurs qui en ont pris l'habitude.

Pour assurer l'ensemble, les tests se déroulent sur des machines  différentes de la "création" du programme, jusqu'à la production, en passant par tous les intermédiaires en testeurs fonctionnels. Relais qui passe par un souci de compréhension. Les backups n'existent plus dans les ressources humaines encore disponibles.  1.jpg

Face à cette situation, les programmeurs semblent de plus en plus débordés en partageant leur temps entre analyses, maintenances et meetings pour rester informés de la stratégie, qu'il faudra ensuite "mettre en musique" avec les projets dont on attend les résultats avec toujours plus d'impatience.

Les utilisateurs finaux, eux, n'ont de cesse de râler sur les programmes et l'informatique en général. Toujours en manque de l'information indispensable et qui n'a pas été prévue par les logiciels.

La plainte est toujours la même: 

- Je donne tout ce que je peux à cette bécane et j'en reçois très peu en échange.  

Ne vous inquiétez pas, chers utilisateurs, les professionnels râlent autant, face à une situation qui se détériore et dont ils ne sont plus totalement responsables.  Ils sont maintenus à distance de la production, cantonnés sur des systèmes de test qui n'ont pas les mêmes objectifs.

0.jpgL'époque du  développement "clé sur porte", du "sur mesure" est presque obsolète. Différents fournisseurs apportent des solutions intégrées au prix d'une inflation d'instructions inutiles. Qui peut le plus, peut le moins, c'est évident, mais ce n'est pas gratuit.

Sécuriser, assurer l'intégrité des données et les résultats s'est imposé au travers d'une hiérarchie d'utilisateurs dans un jeu de rôles sous la surveillance de workflows rigides.

L'internet des objets est le dernier gadget à disposition de l'informaticien. Véritable saucissonnage des instructions, qui ne permet plus la vue d'ensemble d'un projet pour le professionnel. Celui-ci doit faire une confiance aveugle aux premières tranches du saucisson, en n'oubliant pas que la première tranche peut très bien influencer la dernière.

Mais tous ces softwares sont vendus avec une notice d'acceptation contractuelle qui impose à l'utilisateur de prendre toutes les protections nécessaires pour sécuriser son exploitation. Les véritables erreurs seront corrigées dans une version ultérieure. Tout est donc réglé. Au suivant...

Les risques sont évidemment dépendants du secteur d'activités. La gestion automatisée du transport aérien ne travaille pas dans le même niveau de sécurité que de l'exploitation d'une entreprise commerciale. La sophistication de la sécurité est encore plus importante. Son implication augmente en fonction de la modernité et du type d'appareil. La commande de vol de l'Airbus A380 est dix fois plus lourde que sur l'A320 pour seulement donner de meilleures qualités de vol. La sécurité, la qualité du software n'a pas de prix, la quantité d'instructions sous-jacent, bien. Les automatismes s'intéressent à la sécurité et au confort des passagers. Plus un seul avion moderne qui ne soit pas piloté par une armada d'équipements électroniques et d'ordinateurs. On ajoute de la sécurité par la redondance du matériel. Malgré les négations des concepteurs des avions, les bugs existent à bord de leurs beaux engins volants. Sujets embarrassants pour les constructeurs qui prennent le maximum de rigueur dans le codage de leurs programmes, mais nous ne sommes  toujours pas à l'ère de se demander s'il y a un pilote dans l'avion. Le top 10 des bugs de programmations est éloquent.

Les machines deviennent de plus en plus précises et rapides pour traiter les données, toujours plus nombreuses, mais les connaissances ne suivent pas le rythme et se perdent dans des "overheads" qui ne révèlent pas leur ampleur au départ. 

Pour remédier aux "bottle necks" du code, il faut paramétrer pour décupler les forces, concaténer et rendre polymorphes les bouts de codes. On ne cherche même plus, pas de temps, les sources d'un problème. On le corrige, c'est tout. S'il se représente, on repassera pour la même occasion. Les boîtes noires n'existent et n'ont d'importance que dans le domaine de l'aviation, parce que les dédommagements sont plus importants.

1.jpgRendre les langages plus simples, plus compréhensibles ne laisse entrevoir le sommet de l'iceberg. Pour suivre l'évolution effrénée des usages spécifiques, 7000 langages de programmation auraient été créés.  Le langage C est actuellement celui qui est le plus  utilisé. Pas plus simple pour autant et cela ne l'empêche pas d'avoir des codes erronés.

L'innovation produit un effet de couloir d'attente du type "first in, first out". A côté, des 32% des projets réussis et qui tiennent la route, 44% sont en difficulté, pour des causes diverses suite à une analyse pas assez prévisionnelle et 24% sont abandonnés avant d'arriver à la production et à maturité. Même réussi, un projet le restera-il très longtemps?

On pourrait croire qu'augmenter les effectifs humains allait régler le déficit. Pénurie d'informaticiens? Pas vraiment. Les bataillons d'informaticiens existent. Ils sortent des écoles, américaines, européennes, indiennes ou d'ailleurs, mais cela ne change pourtant pas la donne. Il reste des goulots d'étranglement qui empêchent de démultiplier à l'infini le nombre des forces de développement sans perte d'efficacité et sans progrès notables. Le manager des projets est souvent en proie à la crise de nerf, perdu dans le contrôle de l'ensemble, tout en s'efforçant, lui-même, de ne pas trop s'impliquer dans le codage. Cela, c'est en espérant que le cahier des charges est suffisamment précis et ne nécessite aucune révision ou réajustement en cours d'élaboration. Les différences de cultures apportent le dernier obstacle dans le cas d'équipes dispersées dans le monde.

Pour éviter ces genres de bévue, certaines entreprises, poussées vers la facilité, sont parties dans les délocalisations de leur exploitation dans des pays qui n'ont pas le même environnement ou, plus loin encore, se retrouvent dans les "nuages", dans le "cloud computing". Se déchargeant des risques de leur gestion interne sur d'autres. Miroir aux alouettes, que de pouvoir accéder de manière évolutive à de nombreux services en ligne sans avoir à gérer l'infrastructure. Le service bureau d'antan revient, alors, en background. Le principe pourrait, comme le dit  Richard Stalleman, se mettre à la merci d'une nébuleuse avec les risques de perte de know how et de l'option d'espionnage toujours possible. Piège possible, prévenait Stalleman en protégeant sa vision du libre. Même Apple ne jouerait pas franc jeu en tuant Internet dans l’œuf et en enfermant ses utilisateurs dans une prison dorée.

"Tim Berners-Lee, l’un des inventeurs du Web,  affirmait en novembre: «(Avec iTunes), vous n’êtes plus sur le Web. Ce monde est centralisé et entouré de barrières. Vous êtes emprisonné dans un magasin unique, plutôt que d’être sur un marché ouvert. Ce magasin a beau avoir des fonctionnalités merveilleuses, son évolution est limitée au bon vouloir d’une seule société». Mi-janvier, Jimmy Wales, fondateur de Wikipédia, renchérit, à propos du magasin d’applications d’Apple: «Quand vous possédez un appareil et que vous voulez acheter un logiciel, vous ne devriez pas devoir obtenir la permission de quelqu’un d’autre. Je pense que c’est très important. Les applications sont une menace à l’ouverture du système», affirmait-il.

Si l'informatique était un métier en soi, il est devenu plus un outil qu'une niche à part entière. Les objectifs demandés sont devenus plus spécifiques et pointus que ne pourraient jamais offrir ni les nuages ni les programmes vendus dans le commerce. Rester standard est un vœu pieu. Elle nécessite des compétences d'adaptation pour corriger les "usines à gaz".

Alors, le plus souvent, on "bogue", à tous niveau. Avant, pendant et après le projet, toujours à la recherche du produit miracle qui se mettrait en parallèle avec les fonctions, qui s'auto-construirait dans le respect de standards, qui s'auto-testerait avec efficacité avec un pont qui irait alternativement entre aller et retour vers chacune des phases.

Sans fantasmes, l'enfer de la vérification se cherche toujours, avec un salut dans la redondance.

Dès 1930, Alan Turing et Kurt Gödel avaient bien établi qu'aucune machine ne pouvait déterminer si sa compagne qui duplique la tâche, faisait des erreurs ou si c'était elle-même qui était en défaut. Une machine peut simplement dire qu'elle arrive à un résultat différent que son équivalente en laissant la bride sur coup à l'humain de choisir la meilleure version la plus adéquate. Certains pionniers, comme Patrick Cousot, ont fait un pas de recul dans l'abstraction pour englober les valeurs possibles en les modélisant théoriquement avec des outils de conception ou de simulation. Cette approche reste imparfaite  et non exhaustive.

Les failles de sécurité que laisse passer l'Explorer d'Internet, sont aussi une cause d'instabilité. Ces failles sont vite découvertes par les pirates modernes. Ceux-ci deviennent  des testeurs de l'impossible tout en étant des chevaux de Troie de la Toile entière. Il y a aussi les pirates qui s'ignorent. Quelque 25% des entreprises sont également considérées comme pirates en laissant leurs logiciels, sans licences officielles, s'introduire dans leur parc de programmes informatiques. Sans garantie d'utilisation, ces logiciels peuvent véroler la totalité du réseau. Parfois en connaissance de cause mais, aussi, par la seule ignorance lors d'un rachat ou d'une fusion d'entreprises. L'inventaire de ce parc est loin d'être une sinécure. 

En gros, le numérique fait bien partie des sciences exactes. L'analogique, des sciences humaines. "Le fossé se creuse entre le potentiel offert par le matériel informatique et notre maîtrise intellectuelle", dit Joseph Sifakis du CNRS.

La jointure entre les deux n'a pas compté sur les différences d'estimations et de subtilités qui existent entre un 0 et un 1, entre une porte ouverte ou fermée. L'analogique sait que celle-ci, peut être, s'entrouve dans son langage à lui. 

Le pourcentage d'erreurs entre analogique et numérique va trouver en chemin dépendra de la longueur de temps pour passer de l'un à l'autre.1.jpg

L’informatique, au départ, travaillait à la source, au cœur des systèmes. Des "boîtes" ont remplacé les codes conçus ensemble. Boîtes qu’il ne fallait plus ouvrir mais seulement paramétrer avant d'utiliser. Le métier s'est transformé d'autant et ressemble par sa philosophie et en oubliant le positionnement des codes, à un langage de paramétrage comme l'était le RPG (Report Program Generator) et qui existe encore en une version IV, totalement réactualisée.
Patcher, ajouter des corrections et cacher le sein des seins que l’on ne veut plus voir. Pour les erreurs d'intégrité des données, des programmes de "coups de seringues" ont été développés. Coups de seringues qui ne se préoccupaient plus des raisons et de la source des "bugs". Des antibiotiques de plus en plus lourds et qui ne répondaient plus qu'en partie aux problèmes structurels.

Les anciens informaticiens à la base des vieux « machins » ne sont plus là. Des spécialistes, des experts, ont été créés pour tel ou tel morceau du « gâteau » sans plus de vue généraliste sur l'ensemble.  Ces nouveaux sont prêts pour l’étape suivante, pour la relève, mais ne connaissent plus rien de la précédente.

Dans la semaine, le journal de France2 parlait des "techno-bambins". Les tablettes numériques, les smartphones attirent les plus jeunes vers les technologies. Une nouvelle génération d'intéressés arrive-t-elle? Ces "bambins" y ont trouvé le plaisir, les facilités à peindre l'écran avec les doigts qu'avec des crayons de couleurs sur du papier. L'informatique, ce n'est pas uniquement des couleurs. Rien ne sert de dessiner avec des doigts, il faudra toujours garder, quelque part, la logique de la machine et oublier celle de l'humain.

La révolution de l'informatique, il faut l'avouer, est encore en pleine jeunesse. Elle s'est installée dans le grand public en moins de 30 ans, même si des précurseurs existaient déjà dans les années 70. L'informatique cherche son chemin au travers de "bugs", de surprises dans une spirale infernale, peut-être, logique, mais qui, pour son grand malheur, n'a pas le temps d'assurer ses arrières.

L'histoire de l'informatique a été jalonnée de tellement de concurrences, de pragmatismes au point que l'informatique a été la "mal aimée". L'alerte lancée par le "Science et Vie" mériterait une attention particulière pour rationaliser les processus et ainsi réduire la fracture numérique de manière plus solidaire entre utilisateurs et fournisseurs.    

Putains de bugs...de logiciels... de temps... de logique!!!

Marie Paule Belle avait une chanson "Si la photo est bonne" qui m'a donné l'idée d'un pastiche plus spécifique à notre sujet:

Si la logique est bonne,
Plus d'instructions en colonnes,
Y a le programmeur du jour,
Qui a une petite fougue en retour,
Dans la rubrique "services",
C'est pas l'assassin de service,
Avec son code pas l'air méchant,
Qui a plutôt l'air intéressant,
Coupable ou non coupable,
S'il doit le mettre sur table,
Que j'aimerais qu'il ne tienne,
Un raisonnement de sa chienne,

Si la logique est bonne,
Elle est bien sûr pas conne,
N'a pas plus l'air de spaghettis,
Qu'avec des fils de bigoudis,
Ce coding de potence,
Pas sorti de l'enfance,
Va faire sa dernière chimère,
Pour n'avoir pas trouvé la paire,
Bref, des instructions malheureuses,
Qui faisaient des boucles trop généreuses,

Moi qui suis un ancien un peu chiant,
Avec une expérience d'autant,
De voir tomber des têtes,
A la fin, ça m'embête,
Et mon chef, le Président,
Qui m'aimait bien, qui surveillait tant,
Quand j'ai des idées qui puaient le rance,
Je ne tripotais pas avec la chance,

Si la logique est bonne,
Qu'on m'amène ce jeune homme,
Ce programmeur, qui sait tout dire,
Ce rêveur au doux sourire,
Ce grand gars aux codes tendres,
Qu'on n'a pas pu reprendre,
Je sens que je vais le séduire,
Sur un chemin pour réfléchir,
Pour l'avenir de la danse,
Contre ses folles espérances,
Que la théorie fasse le premier geste,
Que la raison fasse le reste,
Surtout qu'il soit solidaire,
Et pas tout à fait primaire,
A l'image de son charisme,
Qu'il rassemble les schismes,
Avec ses belles prétentions,
Pour lui accorder mon pardon,

Qu'on m'amène ce jeune homme,
Si la logique est bonne,

Si la logique est bonne,
Si sa logique est bonne...


 

L'enfoiré,

 

Citations:

 
0.jpgMise à jour 22 août 2013: Le NASDAQ a pété les plombs.
En cause, une pièce, le SIP (Security Information Processor) qui a lâché. Il gérait les transactions d'achats et de ventes pour consolider les cours.
La complexité et la connectique en cause.
50% de trading en semi-automatique.
Trop poussé sur l'accélérateur et l'online explose.
Précédent le 6 mai 2010, le crash éclair. 
 

| Lien permanent | Commentaires (15) |  Imprimer