{"id":210,"date":"2012-07-14T10:38:56","date_gmt":"2012-07-14T09:38:56","guid":{"rendered":"http:\/\/dev.qualilogy.com\/fr\/?p=210"},"modified":"2013-01-05T10:39:28","modified_gmt":"2013-01-05T09:39:28","slug":"benchmark-dapplications","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/fr\/benchmark-dapplications\/","title":{"rendered":"Benchmark d&rsquo;applications"},"content":{"rendered":"<p><a href=\"http:\/\/vicken.deviantart.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-2096\" title=\"QualAppBenchmark\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/QualAppBenchmark.jpg\" alt=\"\" width=\"278\" height=\"417\" \/><\/a>Je pensais que le post pr\u00e9c\u00e9dent sur l\u2019\u00e9valuation de la qualit\u00e9 d\u2019une application \u00e9tait le dernier de notre s\u00e9rie sur l\u2019analyse de code Cobol avec Sonar. Mais j\u2019ai d\u00e9couvert cette semaine un nouveau plugin de eXcentia, tr\u00e8s utile dans le cadre d\u2019un assessment : <a href=\"https:\/\/servicios.excentia.es\/confluence\/display\/QAX\/SONAR+Benchmark+Plugin\" target=\"_blank\">Sonar Benchmark Plugin<\/a>.<\/p>\n<p>Ce plugin permet une \u00e9valuation comparative \u2013 un benchmark \u2013 d\u2019une application par rapport \u00e0 l\u2019ensemble du code pr\u00e9sent dans votre r\u00e9f\u00e9rentiel Sonar.<\/p>\n<p>Vous vous rappelez que j\u2019ai analys\u00e9 diff\u00e9rentes applications Cobol, avec lesquelles j\u2019ai cr\u00e9\u00e9 une <a href=\"http:\/\/qualilogy.com\/fr\/votre-propre-modele-qualite\" target=\"_blank\">View Sonar<\/a>. Sur la base de cette vue, nous avons effectu\u00e9 une <a href=\"http:\/\/qualilogy.com\/fr\/evaluation-de-la-qualite-du-code-cobol-avec-sonar-12\" target=\"_blank\">\u00e9valuation de la qualit\u00e9 d\u2019une application<\/a>, pas forc\u00e9ment la plus volumineuse, mais qui pr\u00e9sentait un nombre important de violations.<\/p>\n<p>Pour celle-ci, nous avons mis en avant un ensemble de valeurs qui nous ont permis d\u2019effectuer notre assessment et formuler plusieurs recommandations. Mais que vaut-elle par rapport aux autres applications existantes ?<\/p>\n<p>C\u2019est ce que nous allons voir avec ce plugin Sonar Benchmark. <!--more--><\/p>\n<h3><strong>Installation<\/strong><\/h3>\n<p>L\u2019installation, comme pour tout plugin Sonar, est tr\u00e8s simple :<\/p>\n<ol>\n<li>Downloader le plugin depuis l\u2019onglet \u2018Descargar\u2019 dans le r\u00e9pertoire <strong>..\/extensions\/plugins\/<\/strong> de votre installation Sonar.<\/li>\n<li>Red\u00e9marrer Sonar\u2026 et voil\u00e0.<\/li>\n<\/ol>\n<h3><strong>Utilisation<\/strong><\/h3>\n<p>Le plugin vient avec son propre tableau de bord (avec la version Sonar 3.1.1 que j\u2019utilise) : choisissez l\u2019application que vous souhaitez \u2018benchmarker\u2019 et s\u00e9lectionnez le menu &lsquo;Benchmark&rsquo; dans la barre de menu.<\/p>\n<p>Nous disposons de deux widgets. Le premier (Benchmark Global) classe les applications par rapport \u00e0 des valeurs minimale, moyenne et maximale.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchLoc1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2103\" title=\"CobolBenchLoc1\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchLoc1.jpg\" alt=\"\" width=\"585\" height=\"270\" \/><\/a><\/p>\n<p>Nous pouvons voir ainsi que :<\/p>\n<ul>\n<li>La taille moyenne des projets de notre portefeuille applicatif est de 424 000 lignes de code.<\/li>\n<li>L\u2019application de plus petite taille comporte 482 lignes : il s\u2019agit du fichier de test que nous avons download\u00e9 depuis le site de Sonar pour effectuer <a href=\"http:\/\/qualilogy.com\/code-analysis-tools\/cobol-source-code-analysis-sonar-jenkins\/\" target=\"_blank\">notre premi\u00e8re analyse<\/a>.<\/li>\n<li>L\u2019application la plus importante comporte plus d\u20191.6 millions de lignes de code.<\/li>\n<\/ul>\n<p>Nous pouvons voir imm\u00e9diatement que nous avons 6 projets de petite taille, 2 de taille tr\u00e8s importante, et aucune application de taille interm\u00e9diaire.<\/p>\n<p>Comment se situe notre application dans ce portefeuille applicatif ? C\u2019est ce que nous montre le second widget.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchLoc2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2104\" title=\"CobolBenchLoc2\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchLoc2.jpg\" alt=\"\" width=\"583\" height=\"271\" \/><\/a><\/p>\n<p>La forme de cette courbe refl\u00e8te le graphique pr\u00e9c\u00e9dent : la plupart des applications se situe sous les 200 000 LOC, et avec 185 000 lignes de code, la notre se situe en-t\u00eate (6\/8) des 6 projets de petite taille.<\/p>\n<p>Nous avions vu lors de notre assessment que cette application avait un niveau de documentation assez peu \u00e9lev\u00e9. Mais c\u2019est le cas de la plupart des projets avec 6 applications sous les 17% de taux de commentaires.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchDoc1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2105\" title=\"CobolBenchDoc1\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchDoc1.jpg\" alt=\"\" width=\"583\" height=\"274\" \/><\/a><\/p>\n<p>Vous voyez comme ce graphique est l\u2019exact inverse du pr\u00e9c\u00e9dent. Et bien la courbe correspondante sera \u00e9galement l\u2019image inverse de la pr\u00e9c\u00e9dente :<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchDoc2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2106\" title=\"CobolBenchDoc2\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchDoc2.jpg\" alt=\"\" width=\"585\" height=\"277\" \/><\/a><\/p>\n<p>Avec un taux de commentaires de 14.7%, notre application se trouve dans la moyenne (5\/8) : c\u2019est l\u2019ensemble du portefeuille applicatif qui souffre d\u2019un d\u00e9faut de documentation.<\/p>\n<p>Vous vous rappelez que notre application comportait un taux \u00e9lev\u00e9 de code dupliqu\u00e9.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchDup1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2108\" title=\"CobolBenchDup1\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchDup1.jpg\" alt=\"\" width=\"586\" height=\"274\" \/><\/a><\/p>\n<p>En fait, c\u2019est le cas de la plupart des projets : 2 avec moins de 20% de lignes dupliqu\u00e9es et 4 avec un taux entre 20% et 40%.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchDup.2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2109\" title=\"CobolBenchDup.2\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchDup.2.jpg\" alt=\"\" width=\"581\" height=\"272\" \/><\/a><\/p>\n<p>Avec 50% de de Copi\u00e9-Coll\u00e9, notre projet est en t\u00eate sur cette m\u00e9trique mais pas tr\u00e8s loin du reste du peloton.<\/p>\n<p>Enfin, nous avions dit que notre application \u00e9tait peu complexe.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchCC1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2110\" title=\"CobolBenchCC1\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchCC1.jpg\" alt=\"\" width=\"583\" height=\"272\" \/><\/a><\/p>\n<p>C\u2019est effectivement le cas, avec moins de 20 points de Complexit\u00e9 Cyclomatique par programme, alors que la moiti\u00e9 des applications approche ou d\u00e9passe les 100 points. Cela refl\u00e8te bien la r\u00e9partition du portefeuille applicatif avec une pr\u00e9dominance d\u2019applications de petite taille et deux applications tr\u00e8s importantes.<\/p>\n<p>La qualit\u00e9 du parc applicatif est assez correcte, avec une moyenne de 75% de respect des bonnes pratiques Cobol \u2026<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchRule1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2111\" title=\"CobolBenchRule1\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchRule1.jpg\" alt=\"\" width=\"585\" height=\"273\" \/><\/a><\/p>\n<p>\u2026 et 5 applications au-dessus de 80%. 3 projets font baisser cette moyenne, dont le notre \u2026<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchRule2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2112\" title=\"CobolBenchRule2\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchRule2.jpg\" alt=\"\" width=\"584\" height=\"271\" \/><\/a><\/p>\n<p>\u2026 l\u00e0 encore parmi les derniers de la classe.<\/p>\n<h3><strong>Personnaliser un tableau de bord<\/strong><\/h3>\n<p>L\u2019int\u00e9r\u00eat de ce plugin est que pouvez cr\u00e9er vos propres widgets avec les m\u00e9triques que vous estimez int\u00e9ressantes.<\/p>\n<p>Dans l\u2019exemple suivant, j\u2019ai personnalis\u00e9 un tableau de bord pour le management avec 2 widgets qui montrent le co\u00fbt de correction des d\u00e9fauts Blockers et Critical, centr\u00e9s dans notre Quality Model sur la performance et la fiabilit\u00e9, donc les d\u00e9fauts les plus risqu\u00e9s pour les utilisateurs.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchCost1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2119\" title=\"CobolBenchCost1\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchCost1.jpg\" alt=\"\" width=\"588\" height=\"272\" \/><\/a><\/p>\n<p>En moyenne, le co\u00fbt de r\u00e9solution de ces d\u00e9fauts est de 135 jours par application, mais 6 projets comptent moins de 126 jours.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchRule21.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2115\" title=\"CobolBenchRule2\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/CobolBenchRule21.jpg\" alt=\"\" width=\"584\" height=\"271\" \/><\/a><\/p>\n<p>Avec 56 jours, notre projet est un des premiers candidats \u00e0 un refactoring.<\/p>\n<p>Je vous disais dans le post pr\u00e9c\u00e9dent que le management vous serait reconnaissant de lui fournir des informations facilitant la prise de d\u00e9cision.<\/p>\n<ul>\n<li>Ce projet constitue-t-il une exception par rapport \u00e0 l\u2019ensemble du portefeuille applicatif ?<\/li>\n<li>Peut-on distinguer des tendances particuli\u00e8res \u00e0 cette application qui am\u00e8neraient \u00e0 prendre certaines mesures sp\u00e9cifiques ?<\/li>\n<li>Ou au contraire, une constatation effectu\u00e9e sur ce code peut-elle s\u2019\u00e9tendre \u00e0 l\u2019ensemble du portefeuille applicatif ?<\/li>\n<\/ul>\n<p>Par exemple, cette application pr\u00e9sente un r\u00e9sultat m\u00e9diocre en mati\u00e8re de documentation mais se r\u00e9v\u00e8le dans la moyenne sur l\u2019ensemble des applications. Egalement, celles-ci comportent en moyenne 40% de code dupliqu\u00e9. Si le management envisage une strat\u00e9gie globale d\u2019outsourcing de son parc applicatif, vous pouvez lui expliquer que le co\u00fbt d&rsquo;une telle mise en oeuvre risque d\u2019\u00eatre sup\u00e9rieur aux gains attendus.<\/p>\n<p>Autre situation : le management doit faire face \u00e0 des utilisateurs m\u00e9contents du nombre de bugs dans ces applications ou de leur faible performance et vous demande de leur proposer un plan de refactoring. Cette application est une bonne candidate \u00e0 une telle op\u00e9ration : quoique peu volumineuse, il existe n\u00e9anmoins des applications de taille plus r\u00e9duite mais plus complexes et avec un co\u00fbt de rem\u00e9diation plus \u00e9lev\u00e9.<\/p>\n<p>Proposez un refactoring en 2 phases : nettoyage des programmes dupliqu\u00e9s et nouvelle analyse afin d\u2019identifier les d\u00e9fauts bloquants et critiques \u00e0 corriger.<\/p>\n<p>Vendre la valeur de vos analyses suppose de d\u00e9livrer des informations objectives qui facilitent la d\u00e9cision. Le plugin Benchmark de eXcentia permet d\u2019affiner votre \u00e9valuation de la qualit\u00e9 des applications et de proposer des solutions bas\u00e9es sur des informations objectives et pr\u00e9cises.<\/p>\n<p>Un outil indispensable \u00e0 tout assessment.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je pensais que le post pr\u00e9c\u00e9dent sur l\u2019\u00e9valuation de la qualit\u00e9 d\u2019une application \u00e9tait le dernier de notre s\u00e9rie sur l\u2019analyse de code Cobol avec Sonar. Mais j\u2019ai d\u00e9couvert cette semaine un nouveau plugin de eXcentia, tr\u00e8s utile dans le cadre d\u2019un assessment : Sonar Benchmark Plugin. Ce plugin permet une \u00e9valuation comparative \u2013 un [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-210","post","type-post","status-publish","format-standard","hentry","category-sonar-360"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/210"}],"collection":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/comments?post=210"}],"version-history":[{"count":1,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/210\/revisions"}],"predecessor-version":[{"id":211,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/210\/revisions\/211"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/media?parent=210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/categories?post=210"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/tags?post=210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}