Pour Bill Curtis, connu pour avoir piloté le modèle de développement CMM (capability maturity model), les banques vont conserver leurs applications Cobol monolithiques parce que celles-ci ne présentent pas les mêmes problèmes de sécurité et de performance que Java. Et cela, malgré les pannes importantes subies au cours des derniers mois, par exemple en avril dernier à la Llyods Banking Group et, en mars, à la Royal Bank of Scotland, cette dernière ayant coûté des centaines de milliers de livres sterling au groupe bancaire. Des critiques avaient alors visé le système informatique jugé dépassé.
Bill Curtis, aujourd'hui directeur du CISQ, Consortium for IT Software Quality(*), est également responsable technique (chief scientist) de la société Cast, qui est spécialisée dans l'analyse et la mesure des applications. Il a expliqué à notre confrère de Computerworld UK Derek du Preez que si les banques rencontraient régulièrement des problèmes avec leurs systèmes Cobol, c'était parce que ces programmes n'étaient pas morcelés en modules plus petits, structure qui réduit le nombre d'anomalies. « Les programmes Cobol sont extrêmement complexes, la taille moyenne d'un module est de 600 lignes de code, alors que celle d'un composant Java est en moyenne de 30 lignes », a rappelé Bill Curtis à nos confrères en remettant en mémoire que de nombreuses applications Cobol ont été conçues avant que l'on s'oriente résolument vers la modularité. « Avec Cobol, il y a une forte corrélation entre la taille du système et la densité des défauts. C'est exponentiel. » Plus le système est grand, plus il y a de défaut sur cent lignes. On ne retrouve pas cela avec Java et les autres langages modernes, note le responsable technique. La différence, c'est que la modularité casse cette corrélation parce que les composants sont plus petits.
Ce serait un cauchemar de tout réécrire en Java
Pour Bill Curtis, cette situation représente un problème pour les banques parce que la plupart de leurs systèmes exploitent des « monstres Cobol sur mainframe », mais que ce serait désastreux de les redévelopper en Java. « Si vous essayez de tout réécrire de cette façon, ce sera un cauchemar. Cela peut se faire, mais en traversant une période où le taux de défauts va monter en flèche », assure Bill Curtis. Selon lui, les vieux systèmes Cobol, en dépit des problèmes qu'ils présentent, sont en fait plus sûrs et plus performants quand on les compare aux langages modernes tels que Java. Il donne deux raisons à cela. Cela tient d'une part au fait que les systèmes Cobol ne sont pas exposés à Internet, et d'autre part, à un déficit de compétences au sein de la communauté de développeurs Java.
« Il y a un langage qui présente un taux de sécurité supérieur à n'importe quel autre langage et c'est Cobol », affirme le responsable scientifique. Pourquoi ? Non seulement parce qu'il fonctionne sur des mainframes moins exposés au web, mais aussi parce qu'ils ont été passés au crible par des générations d'informaticiens dans une industrie où la sécurité reste la question centrale, souligne le directeur du CISQ. « L'autre chose que nous savons sur ces programmes, c'est que, comparés à Java, ils sont vraiment très performants. Java présente toutes sortes de problèmes de performance alors que les systèmes Cobol sont très rapides. » Les banques les ont peaufinés pendant des années pour qu'ils s'exécutent de façon très efficace : haut débit, rythme de transactions élevé, environnements mainframe. « Certains langages plus récents ne sont pas ajustés de cette façon. Selon nos données, certaines applications Java présentent de nombreux problème de performance », note-t-il. Une partie de ceux-ci peuvent être dus à la structure du langage, mais d'autres, selon Bill Curtis, viennent du fait que les personnes qui développent en Java ne sont pas toujours les mieux formées.
Analyser le code pour mieux le comprendre
Quoi qu'il en soit, pour maîtriser les pannes et les défauts, les banques devraient analyser leur code pour savoir exactement comment il fonctionne, estime Bill Curtis. Le problème du secteur de la finance, c'est que ses systèmes ont été conçus il y a de nombreuses années et que nombre d'entre eux sont utilisés avec une connaissance réduite sur les raisons qui ont conduit à les développer de cette façon. « Ces programmes sont vieux, dépassés, et ceux qui les ont construits sont probablement morts. Et comme de bien entendu, il n'y a pas de documentation. Ils sont monstrueusement complexes, très difficiles à maintenir et à comprendre », rappelle Bill Curtis. « Ce qu'il faut, c'est en analyser le code », ajoute-t-il.
Cast et d'autres fournisseurs le font, ajoute-t-il. « Il faut vraiment en connaître la structure. C'est constitué de différentes choses intégrées ensemble pour former ce qu'on appelle une application. Je serai très surpris si le groupe bancaire RBS ne faisait pas cela. En fonction de ce que donne l'analyse, on peut alors cibler certaines parties et en réécrire certains éléments. »
(*) Le Consortium for IT Software Quality a été créé en 2009 par Paul Nielsen, CEO du Software Engineering Institute de l'Université Carnegie Mellon, et Richard Mark Soley, chairman et CEO de l'Object Management Group, avec l'objectif de permettre à l'industrie IT de s'entendre sur un système qui puisse mesurer de façon cohérente les caractéristiques des logiciels fournis aux entreprises.
Les banques restent fidèles à Cobol, plus performant que Java
29
Réactions
Selon Bill Curtis, l'un des gourous de la qualité logicielle et pionnier du modèle de développement CMM, Cobol est plus sûr et plus performant que des langages plus récents.
Newsletter LMI
Recevez notre newsletter comme plus de 50000 abonnés
Cobol reste maintenu effectivement par habitude, et surtout par manque de données sur le code source. Sans oublier quelques gros fournisseurs (dont SAP), qui imposent le maintient et l'usage d'un langage dont la fiabilité est douteuse. Les systèmes matériels actuels n'ont rien a voir avec ceux des années 60. On ne code plus sur cartes perforées, des langages fiables et normalisés surs il y en a d'autres (ADA et Java par exemple). Mais surtout (ADA pour le citer), les langages modulaires/objets sont plus lisibles, plus fiables, et aussi coutent moins cher en maintenance (ou le DOD est stupide).
Signaler un abusCobol est vu comme le linéaire B pour les archéologues. Très complexe à traduire, pas de références croisées phonétiques, pas de textes complets, etc. Bref, Cobol doit passer la main, à moins que les sociétés financières soient liées par contrat à reconduction automatique (genre forfait télécom).
Et les soit disant qualités de Cobol sont réduites (à moins d'un accès direct aux modules assembleur/système). La lisibilité, voisine de zéro, autant demander un document administratif en romanche à un suisse allémanique.
La fiabilité, en fait elle tient surtout au filtrage des accès internet des applications, et au rares contacts réalisés, car Cobol n'intègre pas de modules de communication réseau étendu dans sa structure. Et le secret n'est jamais une garantie de fiabilité, cf la crise financière de 2011 due à un dérapage des système de trading automatique (merci Cobol).
La performance, ben voyons, on prend une Ford T de 1912 et on lui fait faire du nascar sans rien changer, juste un meilleur carburant. La voiture ira toujours à 10-12km/h, pareil pour Cobol. Soit le langage devient opensource complet, et est refondu/revu/refait, soit peut importe les modules ajoutés, ses performances resteront limitées par sa structure interne de gestion des données et variables (linéaire en pile, monofile, etc.).
Moi je monte une banque, ou un agence financière, hors les contraintes déclaratives fiscales, je construis un système informatique en utilisant des langages actuels ouverts et viables. Java le permet, ADA aussi, et les deux sont lisibles, ouverts et documentés.
Cobol est encore très présent dans les banques parce que ce langage est porté par IBM qui commercialise également ses systèmes Mainframe et fournit un niveau de support très réactif. Cela rassure les DSI qui ont en face un partenaire capable de maîtriser son environnement de A à Z.
Signaler un abusQui plus est, toute la couche métier a été développée sur ce système depuis des décennies. Tout est éprouvé, prendre le risque de réécrire juste pour changer de langage serait suicidaire. Et IBM continue de proposer du support, alors pourquoi se poser la question.
@Visiteur9815: Oui, enfin là on est plus dans le registre de l'incantation... personnellement je ne suis pas adepte de la méthode du docteur Coué !
Signaler un abusD'accord avec Visiteur4298 :
Signaler un abusAucun cas possible de piratage sous COBOl,
c'est un point Capital.
On peut très bien faire tourner des applications Cobol et mapper par dessus des interfaces IHM en javascript voir en Java,
mais coté sécurité : "Java == 0" , et Java est incapable de traiter des "Billions", je dis "Billions" de lignes de transactions financières par jour à travers le monde entier et sans aucun problème ni de fiabilité ni de sécurité.
La Banque qui s'amusera à réécrire toutes ses lignes de codes en Java, en supposant que celà puisse etre possible, courrera un très grand risque de mettre tot ou tard la clé sous la porte. COBOL a été conçu par des militaires et
avec un rigueur cartésienne déterministe.
Je maintiens :
COBOL est encore là au moins pour 30 ans,
sans compter les évolutions et adaptations possibles, car il y a meme une eu dans les années 90 quelques évolutions Cobol de type "Objet", pas vraiment suivies par les utilisateurs COBOL. Eh oui le Monde Financier repose à plus de 90% sur le COBOL et ce n'est pas par frilosité mais bien parce COBOL est fiable, très sécurisé et multiplateforme.
COBOL n'est en aucun cas un langage préhistorique comme souhaiteraient le croire ceux qui ne le connaissent pas, mais COBOL est Bel et Bien un langage du Temps Présent et aussi du Futur.
La réalité c'est que les banques sont frileuses, ne se tiennet pas au courant des évolutions et restent pendant des années avec des aprioris suite à des expériences malheureuses (je connais des exemples avec Hibernate).
Signaler un abusEt je ne parle même pas de ceux qui ont rendu certains process complexes seulement pour se garantir leur place.
Le problème n'est pas la performance de Cobol par rapport à Java, mais surtout que les appli écrites en Cobol ont plus de 20 ans et donc une logique informatique d'une autre époque.
Java bien? Eh bien non Java pas bien.
Signaler un abusLes pures techniciens n'ont aucune idée de la complexité de la logique "business". Et pour cela, il n'y a pas mieux que Cobol.
Cobol sait tout faire, traitement de données de masse, SQL, XML, SOA, OOP, ... sur toutes platte-formes
Le COBOL est encore là pour trente ans au moins et c'est TANT MIEUX !!!!
Signaler un abusLa vrai question n'est pas un problème de language, mais dans la capacité des équipes à répondre du point de vue architecture technique et fonctionnelle à des besoins métiers qui ont été exprimés et nécessaires aux développements des activités de l'entreprise....
Signaler un abusTout le reste ce n'est que des points de vue de personnes qui ont des intérêts divers
Comme beaucoup de commentateurs l'ont relevé, la question cruciale n'est pas celle du langage de programmation.
Signaler un abusD'abord, dire que "Cobol est plus sûr que Java" ne signifie absolument rien. Plus sûr de quel point de vue ? Le langage n'est qu'un outil: si les développements Cobol sont jugés généralement plus fiables que ceux réalisés en Java, c'est surtout parce que les premiers bénéficient de dizaines d'années de production, et qu'on hésite à y toucher. Forcément, à force de corriger des bugs sans rajouter de fonctionnalités...
Quand à la performance... si Java est jugé moins performant que Cobol c'est surtout parce qu'il est interprété, mais que représente le temps d'interprétation pour un programme de gestion qui passe surtout du temps à attendre des I/O ?
Le problème c'est surtout que les développeurs Cobol sont en voie de disparition: c'est pour cela que le patrimoine applicatif Cobol évolue peu, et c'est surtout pour ça qu'il faudrait le faire évoluer.
Personnellement, je m'étonne que les DSI ne se lancent pas dans une réécriture progressive de leurs applications mainframe, en en profitant pour remplacer des applications 3270 monolithiques par des services aux interfaces bien définies. Et sans oublier de remplacer des sources Pacbase ou Cobol un peu figés dans leurs jus par des développement Java, Scala ou autre langages modernes, plus à même d'être maintenus par les nouvelles générations de développeurs.
La fiabilité sera le résultat de la rigueur dans le développement et de la complétude des recettes.
Combien de programmes COBOL ont été attaqués par des virus? 0, et JAVA des millions, pour une banque ça suffit pour rester COBOL.
Signaler un abusquestion performance, le c a fait ses preuves. Tous le logiciels embarqués, les DBMS, les OS.
Signaler un abusQuestion modularité, le c à fait ses preuves.
Et c'est pas difficile de trouver des developpeurs C !
En fait, Java est tout à fait pertinent pour la construction de référentiel de donnée (type coeur de SI). Non, le vrai problème n'est pas le langage, ce sont les ressources. En effet, que faire d'une centaine de programmeurs Cobol à 5 ans de la retraite. On ne réapprend pas tout si proche de la fin.
Signaler un abusFinalement, les banques ne gardent pas le COBOL parce qu'il est plus performant mais surtout parce qu'il est là ! Le reste, ce ne sont que des guerres de religion...
Pour infos, la NASA a éteint sont dernier mainframe il y a déjà un petit moment !
le cobol est un langage de developpement parmi des dizaines d'autres. Il possede ses avantages, inconvénients et limites comme les autres langages. Il est verbeux, solide, structuré, rapide, multiplateforme. Pour ce qu'il ne sait pas faire ou mal, on peut l'interfacer à d'autres langages, routines...
Signaler un abusPour ce qui est du traitement des fichiers XML, le cobol n'a pas attendu son arrivée pour pouvoir traiter en entrée et sortie de simples fichiers ASCII que sont ces fichiers XML.
Cet article traite fondamentalement de l'évolution de logiciels anciens dans un SI qui doit évoluer et n'apporte rien de nouveau que l'application de généralités au cas particulier de Cobol et des banques.
Signaler un abusRien de nouveau à ce qu'un langage optimisé nativement pour les mainframes et l'accès au SGBDR soit plus performant qu'un langage généraliste fonctionnant dans une machine virtuelle.
Rien de nouveau à ce que la modularité permette de faire un logiciel plus facile à corriger.
Rien de nouveau à ce que la réécriture d'un logiciel de grande taille soit couteux.
Rien de nouveau à ce que l'écriture d'un logiciel de grande taille soit toujours porteur d'une phase de stabilisation où il faudra intégrer les corrections et règles oubliées en spécifications. Phase d'autant plus importante que le domaine couvert est grand.
Rien de nouveau à ce que la rétro-analyse de l'existant soit nécessaire lorsqu'il n'est plus maitrisé pour pouvoir le transposer de langage et le faire évoluer fonctionnellement.
Je remercie Bill Curtis pour nous rappeler tout cela ainsi que l'aide que peut apporter une société dans laquelle il est impliqué (ce qui est bien normal). Je m'étonne toujours des réactions épidermiques dès que l'on aborde les langages de programmation.
Et je m'excuse de ramener le débat à un ensemble de platitudes que le début du titre "les banques restent fidèles à Cobol" laissait entrevoir et je loue l'astuce de plume qui avec "Cobol, plus performant que Java" a su mettre du piment à la lecture de l'article.
Le problème aujourd'hui c'est que la grande majorité des informaticiens développeurs ne programme pas correctement et le résultat c'est que les applications sont piratées à tour de bras, j'ai commencé en 1969 en cobol, le problème en programmation ce n'est pas de connaître le langage mais c'est apprendre la logique pour développer des projets et obtenir des résultats.
Signaler un abusL’effort aujourd’hui est mis sur l’agilité. Ce n'est pas une question d'informaticien, il faut savoir que ce mouvement est porté aussi (voir surtout) par les cabinets les grands cabinets de conseils anglo-saxons.
Signaler un abusEn fait il y a deux enjeux financiers pour l’informatique ce qu'elle coûte et ce qu'elle rapporte. Ce qu’elle coûte c’est une affaire d’épicier ("ils sont vraiment très performants (les pgm Cobol)" se rapporte aux coûts ) mais l’agilité se rapporte au chiffre d’affaires et à sa préservation… C’est ce mouvement qui a conduit à soit des architectures de type SOA (du sol au plafond) soit des progiciels. A se tromper de bataille, on perd la guerre.
Au fait combien d'entreprises du CAC sont "Cobol" Total, 200 M€ CA pas de cobol du SAP...
@Visiteur 2144: COBOL n'est pas idéal pour les banques non plus. Sauf pour celles qui ont 20ans de retards et qui sont enclavée dans un marché national.
Signaler un abusIl y a de moins en moins de problèmes moderne pour lesquels cobol apporte une solution.
Gestion des de code page multiple pour gérer les différents langages: Une banque international doit savoir traiter et restituer des noms et adresses correctement. C'est ingérable avec un langage qui travaille directement sur les zones mémoire.
Les nouvelles interfaces d'échange sont basé sur XML. Ingérable en Cobol.
etc...
Dans tous les cas, l'utilisation d'un langage ou un autre n'a plus aucune importance aujourd'hui. L'architecture des services est la clé pour que le logiciel soit conçu par morceau interchangeable.
@Visiteur2135 : "A part le graphisme, avec COBOL je peux tout faire à l'inverse d'autres langages. J'ai commencé en 1971 avec COBOL, j'ai connu d'autres langages, et je peux vous confirmer qu'il est le MEILLEUR"
Signaler un abusHallucinant de croire qu'un informaticien est capable d'écrire ça...
COBOL excelle sans conteste dans le type de problème pour lequel il a été conçu. Si COBOL était LE meilleur langage de tous les temps et pour tout faire, on l'utiliserait justement pour tout faire... Pourquoi croyez-vous que le C ait été créé ? Imaginez-vous par exemple UNIX écrit en COBOL ?
Imaginez que tous les ingénieurs raisonnent comme vous venez de le faire... Imaginez un mécanicien dire qu'il a essayé les clés plates mais qu'il considère les clés à pipe comme les meilleures...
L'ingénierie, dans le logiciel comme dans toute autre discipline, implique d'appliquer les bonnes solutions aux bons problèmes. COBOL est parfait pour les banques, son principal défaut est malheureusement le manque de développeurs COBOL qui s'accroit...
Nous sommes en train de "chasser" les applications cobol de notre banque comme s'il s'agissait d'un virus.. me dire que cobol est sur oui c'est vrai.. mais c'est pas rapide à generer des ecrans, des rapports laser, des écrans graphique....des web services etc etc
Signaler un abusLa bêtise de l'informatique est surtout de croire que l'aspect langage (et format, syntaxe) est fondamental. Important certes bien sûr, mais ce qui fait marcher les choses cela reste beaucoup plus la mise en place d'espace d'identifiants ou codes partagés. cf "initiative iscn"
Signaler un abusA part le graphisme, avec COBOL je peux tout faire à l'inverse d'autres langages. J'ai commencé en 1971 avec COBOL, j'ai connu d'autres langages, et je peux vous confirmer qu'il est le MEILLEUR
Signaler un abusouai enfin...... y a autre chose que Java, en info. surtout avec le volume d'infos et de traitements qu'il y a à faire, faut proscrire java des banques.
Signaler un abusde plus, avec la régularité des failles de la JVM c'est pas non plus indiqué
Et oui, à ce tarif il y aura bientôt plus que du SAP (ou autre progiciel) dans les banques/assurances, mais ce type sera à la retraite à ce moment là, non! Le métier à plus besoin d'agilité que de performance, mais c'est vrai; amazone, google, facebook c'est que tu cobol sur mainframe ....
Signaler un abus"Ces programmes sont vieux, dépassés, et ceux qui les ont construits sont probablement morts"
Signaler un abusEn effet, mort de rire.
J'ai développé des systèmes de transaction et d'opérations pour une banque et je ne suis pas mort (46 ans) !
Il faudrait surtout que l'informatique sorte un peu de son syndrome paroxystique du cordonnier toujours le plus mal chaussé.
Signaler un abusgg "iscn initiative"
Curtis, c'est pas le mec qui jouait dans "Les Mystères de l'Ouest" ??? Parce qu'à ce niveau de bêtise, il faut être un clown...
Signaler un abusAvc un sommet :
"Ces programmes sont vieux, dépassés, et ceux qui les ont construits sont probablement morts"
Morts de rire, je pense...
Une vision juste pragmatique et réaliste.
Signaler un abusIl est rare de voir autant de bêtises dans un article!
Signaler un abusAujourd'hui la technologie et le logiciel doit devenir interchangeable et non plus un investissement. Pensez en terme de réécriture ou donner de l'importance à tel ou tel langage est une hérésie.
"Bill Curtis, actuellement directeur du CISQ, est l'un de ceux qui a piloté le modèle de développement CMM"
Signaler un abusQui ONT piloté !