{"id":204,"date":"2012-06-29T10:21:58","date_gmt":"2012-06-29T09:21:58","guid":{"rendered":"http:\/\/dev.qualilogy.com\/fr\/?p=204"},"modified":"2013-01-05T10:22:28","modified_gmt":"2013-01-05T09:22:28","slug":"votre-propre-modele-qualite","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/fr\/votre-propre-modele-qualite\/","title":{"rendered":"Votre propre mod\u00e8le Qualit\u00e9"},"content":{"rendered":"<p><a href=\"http:\/\/vicken.deviantart.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1957\" title=\"QualSonarQualityModel\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualSonarQualityModel.jpg\" alt=\"\" width=\"310\" height=\"461\" \/><\/a>Une r\u00e8gle est connue ou elle ne l\u2019est pas. Une &lsquo;best practice&rsquo; est appliqu\u00e9e ou ne l&rsquo;est pas. Mais si elle n&rsquo;est pas appliqu\u00e9e, serait-ce parce qu&rsquo;elle n&rsquo;est pas applicable ?<\/p>\n<p>Vous devez pr\u00e9senter les r\u00e9sultats de vos premi\u00e8res analyses Cobol et bien s\u00fbr, vous souhaitez que ceux-ci soient les plus pertinents possible afin de prouver la valeur de ces analyses aux \u00e9quipes de projet, providers, stakeholders, etc.<\/p>\n<p>Ceci suppose de d\u00e9finir un mod\u00e8le qualim\u00e9trique \u2013 un ensemble de r\u00e8gles et de niveaux de criticit\u00e9 de celles-ci \u2013 qui permette d\u2019identifier rapidement les \u2018bad practices\u2019 les plus co\u00fbteuses et les plus dangereuses. Evidemment, vous devez \u00e9viter de d\u00e9noncer comme d\u00e9faut grave une violation \u00e0 une &lsquo;best practice&rsquo; qui n&rsquo;est pas en vigueur\u2013 par exemple, l&rsquo;utilisation de code SQL (cf. <a href=\"http:\/\/qualilogy.com\/fr\/sonar-cobol-regles-cobol\" target=\"_blank\">notre dernier post<\/a>).<\/p>\n<p>Quelles sont les r\u00e8gles applicables ou non ? Quels seuils de criticit\u00e9 choisir ? Comment ajuster le mod\u00e8le qualim\u00e9trique en un <a href=\"http:\/\/qualilogy.com\/fr\/quality-profile\" target=\"_blank\">Quality profile Sonar<\/a> pour nos applications Cobol ?<\/p>\n<p>Nous allons montrer dans ce post comment d\u00e9finir votre propre mod\u00e8le Qualit\u00e9, \u00e0 l&rsquo;aide d&rsquo;une View Sonar et d&rsquo;un widget bien utile. <img decoding=\"async\" title=\"More...\" src=\"http:\/\/qualilogy.com\/wp-includes\/js\/tinymce\/plugins\/wordpress\/img\/trans.gif\" alt=\"\" \/><!--more--><\/p>\n<h3><strong>D\u00e9livrer la valeur<\/strong><\/h3>\n<p>L\u2019analyse de code Cobol r\u00e9alis\u00e9e lors de <a href=\"http:\/\/qualilogy.com\/fr\/sonar-cobol-regles-cobol\" target=\"_blank\">notre dernier post<\/a> nous a permis de constater deux types de valeurs diff\u00e9rentes lorsque l\u2019on regarde le nombre de violations d\u2019une r\u00e8gle :<\/p>\n<ul>\n<li>Un nombre tr\u00e8s \u00e9lev\u00e9, jusqu\u2019\u00e0 plusieurs milliers ou plusieurs dizaines de milliers : la r\u00e8gle n\u2019est vraisemblablement pas applicable et il faut probablement l\u2019exclure de notre Quality Model.<\/li>\n<li>Un nombre tr\u00e8s faible : la r\u00e8gle est connue et appliqu\u00e9e, mais vous ne pourrez jamais \u00e9viter totalement le manque d\u2019attention de la part des d\u00e9veloppeurs, et quelques rares d\u00e9fauts mais dont les cons\u00e9quences peuvent s&rsquo;av\u00e9rer tr\u00e8s graves pour les utilisateurs finals.<\/li>\n<\/ul>\n<p>Cependant, il existe des exceptions propres au mod\u00e8le Cobol, comme le IF sans END-IF, \u2018bad practice\u2019 tr\u00e8s ancienne dont les d\u00e9veloppeurs actuels ne peuvent \u00eatre tenus responsables. Nous avons vu que dans ce cas, nous pouvons baisser la s\u00e9v\u00e9rit\u00e9 de cette r\u00e8gle.<\/p>\n<p>Nous pouvons ausi proposer de rehausser la criticit\u00e9 de certaines autres : par exemple, passer la r\u00e8gle prohibant l&rsquo;instruction SORT de &lsquo;Critical&rsquo; \u00e0 &lsquo;Blocker&rsquo;. C\u2019est l\u00e0 qu\u2019un outil d\u2019analyse de code r\u00e9v\u00e8le tous ses b\u00e9n\u00e9fices : dans la d\u00e9tection automatique d\u2019un nombre limit\u00e9 de d\u00e9fauts graves ou critiques que l\u2019on pourra corriger facilement. C&rsquo;est l&rsquo;un des moyens les plus s\u00fbrs de transformer vos r\u00e9sultats d&rsquo;analyse en valeur pour vos interlocuteurs.<\/p>\n<p>Afin de construire un mod\u00e8le qualim\u00e9trique qui maximise cette valeur, il vous faut faire les bons choix sans conna\u00eetre les &lsquo;best practices&rsquo; en vigueur. Afin de d\u00e9couvrir celles-ci, vous pouvez :<\/p>\n<ul>\n<li>Demander le cahier des normes de programmation et autres standards Cobol. Celui-ci est le plus souvent inexistant, et lorsqu\u2019il existe, le plus souvent obsol\u00e8te et inappliqu\u00e9.<\/li>\n<li>Lister l\u2019ensemble des r\u00e8gles Cobol et organisez une r\u00e9union avec l&rsquo;\u00e9quipe Cobol : vous risquez de passer beaucoup de temps \u00e0 expliquer des r\u00e8gles qui ne sont pas appliqu\u00e9es et que vous ma\u00eetrisez mal si votre connaissance du monde Mainframe est limit\u00e9e.<\/li>\n<li>Examiner les r\u00e9sultats de vos analyses afin d\u2019identifier les r\u00e8gles applicables ou non, et proposez un mod\u00e8le Qualit\u00e9.<\/li>\n<\/ul>\n<h3><strong>Plugin Views<\/strong><\/h3>\n<p>Pour cela, nous allons commencer par cr\u00e9er une vue qui regroupe toutes nos analyses Cobol, avec le plugin Views. Il suffit de se connecter en Admin, et d\u2019aller dans le menu \u2018Configuration\u2019, puis \u2018Views\u2019.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolViewCreate.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1975\" title=\"QualCobolViewCreate\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolViewCreate.jpg\" alt=\"\" width=\"424\" height=\"329\" \/><\/a><\/p>\n<p>J\u2019ai cr\u00e9\u00e9 une \u2018View Cobol\u2019 \u00e0 laquelle j\u2019ai affect\u00e9 les projets d\u00e9j\u00e0 analys\u00e9s. Il me faut relancer au moins un de ces projets afin de voir appara\u00eetre ma View Cobol dans le dashboard Sonar. Voici le r\u00e9sultat :<a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolViewResult.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1977\" title=\"QualCobolViewResult\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolViewResult.jpg\" alt=\"\" width=\"684\" height=\"399\" \/><\/a><\/p>\n<p>Comme vous pouvez le constater, nous disposons ainsi d\u2019un \u00e9chantillon int\u00e9ressant : des applications de taille diff\u00e9rente, repr\u00e9sentant plus de 5 millions de lignes Cobol dont plus de 3.3 millions de lignes de code, dans 6 714 fichiers. Seule 1 application n&rsquo;est pas en rouge, toutes les autres pr\u00e9sentent un degr\u00e9 de respect des r\u00e8gles Cobol proche du z\u00e9ro absolu.<\/p>\n<h3><strong>Widget &lsquo;Most violated rules&rsquo;<br \/>\n<\/strong><\/h3>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRulest.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1978\" title=\"QualCobolWidgetRulest\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRulest.jpg\" alt=\"\" width=\"288\" height=\"27\" \/><\/a>Nous allons profiter que nous sommes connect\u00e9s comme &lsquo;Admin&rsquo; pour ajouter un widget qui nous sera bien utile.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRules2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1980\" title=\"QualCobolWidgetRules2\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRules2.jpg\" alt=\"\" width=\"281\" height=\"94\" \/><\/a>S\u00e9lectionnez le menu &lsquo;Configure widgets&rsquo;, puis dans la liste des widgets, ajouter le suivant dans votre dashboard : la liste des r\u00e8gles avec le plus de violations.<\/p>\n<p>Le menu &lsquo;Edit&rsquo; du widget nous permet de modifier ces param\u00e8tres, par exemple afin d&rsquo;afficher les 15 r\u00e8gles les plus souvent en d\u00e9faut :<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRules3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1981\" title=\"QualCobolWidgetRules3\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRules3.jpg\" alt=\"\" width=\"583\" height=\"142\" \/><\/a>Bouton &lsquo;Save&rsquo; afin de sauvegarder ces param\u00e8tres, puis &lsquo;Back to dashboard&rsquo; afin de conna\u00eetre les 15 r\u00e8gles avec le nombre le plus \u00e9lev\u00e9 de violations.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRules4.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1982\" title=\"QualCobolWidgetRules4\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRules4.jpg\" alt=\"\" width=\"563\" height=\"398\" \/><\/a>Vous comprenez maintenant pourquoi presque toutes les applications analys\u00e9es sont en rouge. Si vous montrez ce tableau de bord tel quel aux \u00e9quipes de projet et \u00e0 vos interlocuteurs, ils vous diront que ces analyses n&rsquo;ont aucune valeur puisqu&rsquo;elles prennent en compte des r\u00e8gles qui ne sont pas applicables.<\/p>\n<h3><strong>S\u00e9lection des r\u00e8gles<br \/>\n<\/strong><\/h3>\n<p>Ce widget va nous \u00eatre bien utile afin de rep\u00e9rer des r\u00e8gles que nous pouvons imm\u00e9diatement exclure de notre mod\u00e8le qualim\u00e9trique :<\/p>\n<ul>\n<li>COMP (COMPUTATIONAL) est un type de donn\u00e9es qui laisse au compilateur le choix de d\u00e9finir l\u2019allocation en m\u00e9moire de cette donn\u00e9e. Comme les compilateurs varient selon les plates-formes, cette clause peut poser des probl\u00e8mes de portabilit\u00e9. Or la migration de patrimoine Cobol entre diff\u00e9rent mainframes survient tr\u00e8s rarement, donc cette r\u00e8gle est rarement un souci. D&rsquo;autre part, ce format est privil\u00e9gi\u00e9 car plus performant, puisque proche du compilateur.<\/li>\n<li>&lsquo;Magic Literal&rsquo; \/ &lsquo;Magic Number&rsquo; sont des \u2018best practices\u2019 qui consistent \u00e0 utiliser des constantes et non pas des valeurs (num\u00e9riques ou alphanum\u00e9riques) \u2018en dur\u2019. Ce ne sont pas des r\u00e8gles sp\u00e9cifiques au Cobol, on les rencontre dans tous les langages, mais elles sont peu appliqu\u00e9es dans le monde Mainframe.<\/li>\n<li>&lsquo;Using paragraphs&rsquo;, &lsquo;Perform Paragraph \/ Section&rsquo;. Ce sont des r\u00e8gles de structuration du code Cobol qui, avec plus de 100 000 violations, ne s\u2019appliquent manifestement pas. Elles sont de plus exclusives l\u2019une de l\u2019autre.<\/li>\n<\/ul>\n<p>De nouveau, nous n\u2019allons pas faire un cours de Cobol et pr\u00e9ciser toutes ces r\u00e8gles. L\u2019objectif est de montrer qu\u2019avec notre View Cobol et ce widget, nous pouvons rapidement affiner notre mod\u00e8le qualim\u00e9trique. Les 5 premi\u00e8res r\u00e8gles list\u00e9es ci-dessus peuvent \u00eatre d\u00e9sactiv\u00e9es sans aucun souci.<\/p>\n<p>Autres avantages du widget \u2018Most violated rules\u2019 :<\/p>\n<ul>\n<li>S\u00e9lectionner une criticit\u00e9 afin de noter les r\u00e8gles \u00e0 exclure ou dont changer le seuil de s\u00e9v\u00e9rit\u00e9.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRules5.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1984\" title=\"QualCobolWidgetRules5\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRules5.jpg\" alt=\"\" width=\"575\" height=\"255\" \/><\/a>Ici nous retrouvons les 3 (premi\u00e8res) r\u00e8gles Critical que nous avions souhait\u00e9 \u00e9carter dans <a href=\"http:\/\/qualilogy.com\/fr\/sonar-cobol-regles-cobol\" target=\"_blank\">notre dernier post.<\/a> Nous avions not\u00e9 \u00e9galement de passer le &lsquo;Avoid using SORT statement&rsquo; \u00e0 &lsquo;Blocker&rsquo;.<\/p>\n<p>Je vais \u00e9galement baisser &lsquo;Limit the number of lines in a WHERE clause&rsquo; et &lsquo;Avoid nested SQL SELECT statements&rsquo; \u00e0 une criticit\u00e9 &lsquo;Major&rsquo; car ces &lsquo;best practices&rsquo;, certes critiques pour la lisibilit\u00e9 et la maintenabilit\u00e9 du code, n&rsquo;ont pas d&rsquo;impact sur les utilisateurs. Or je souhaite axer la valeur de mon mod\u00e8le qualim\u00e9trique sur les d\u00e9fauts qui pr\u00e9sentent le plus de risque pour ces derniers, donc les bonnes pratiques en mati\u00e8re de robustesse et de performance. Par exemple, je vais probablement remonter quelques r\u00e8gles SQL vers une s\u00e9v\u00e9rit\u00e9 plus \u00e9lev\u00e9e.<\/p>\n<ul>\n<ul>\n<li>S\u00e9lectionner une r\u00e8gle afin de v\u00e9rifier quelles applications de la View Cobol l&rsquo;appliquent ou non.<\/li>\n<\/ul>\n<\/ul>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRules6.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1986\" title=\"QualCobolWidgetRules6\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/06\/QualCobolWidgetRules6.jpg\" alt=\"\" width=\"451\" height=\"273\" \/><\/a>Ici, nous pouvons voir que la r\u00e8gle prohibant l&rsquo;utilisation de requ\u00eates SQL ne concerne que 4 applications sur les 7 que comptent la View Cobol. Nous avons l\u00e0 un exemple de r\u00e8gle qui s&rsquo;appliquera diff\u00e9remment selon les \u00e9quipes.<\/p>\n<h3><strong>Votre mod\u00e8le Qualit\u00e9<\/strong><\/h3>\n<p>Avec une View Sonar et le widget &lsquo;Most violated rules&rsquo;, vous pouvez facilement d\u00e9finir votre propre mod\u00e9le Qualit\u00e9 en moins d&rsquo;une heure, m\u00eame sans \u00eatre un expert du monde Mainframe.<\/p>\n<p>Vous pouvez identifier les r\u00e8gles qui manifestement ne s&rsquo;appliquent pas, vu le grand nombre de d\u00e9fauts rencontr\u00e9s. Vous pouvez vous concentrer sur celles qui comptent peu de violations car elles sont certainement connues et appliqu\u00e9s par les \u00e9quipes Cobol.<\/p>\n<p>Il vous faut un \u00e9chantillon suffisamment important pour que les nombres de d\u00e9faut prennent tout leur sens. Analysez plusieurs applications et agr\u00e9gez les dans une View Sonar.<\/p>\n<p>Choisissez un axe de valeurs pour vos interlocuteurs:<\/p>\n<ul>\n<li>R\u00e9duire le risque de bugs pour les utilisateurs : privil\u00e9giez les r\u00e8gles affectant la fiabilit\u00e9 des applications et leur performance.<\/li>\n<li>R\u00e9duire les co\u00fbts de maintenance : mettez en avant les r\u00e8gles impactant la maintenabilit\u00e9 et la lisibilit\u00e9 du code.<\/li>\n<\/ul>\n<p>2 posts sur ce sujet : <a href=\"http:\/\/qualilogy.com\/fr\/quelle-est-la-premiere-question\" target=\"_blank\">Quelle est la premi\u00e8re question ?<\/a> et <a href=\"http:\/\/qualilogy.com\/fr\/best-of-both-worlds\" target=\"_blank\">Best of both worlds<\/a>. Afin de privil\u00e9gier certaines r\u00e8gles, passez les en &lsquo;Critical&rsquo; ou &lsquo;Blockers&rsquo;.<\/p>\n<p>D\u00e9finissez un <a href=\"http:\/\/qualilogy.com\/fr\/quality-profile\" target=\"_blank\">Quality profile Sonar<\/a> pour votre nouveau mod\u00e8le Qualit\u00e9. R\u00e9-analysez les applications et regardez les r\u00e9sultats sur votre portefeuille applicatif dans le dashboard Sonar.<\/p>\n<p>Vous constaterez imm\u00e9diatement que vous pouvez maintenant aller directement \u00e0 l&rsquo;essentiel dans l&rsquo;identification des causes principales de risques et de co\u00fbts. Votre pr\u00e9sentation du dashboard Sonar n&rsquo;en aura que plus de valeur.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Une r\u00e8gle est connue ou elle ne l\u2019est pas. Une &lsquo;best practice&rsquo; est appliqu\u00e9e ou ne l&rsquo;est pas. Mais si elle n&rsquo;est pas appliqu\u00e9e, serait-ce parce qu&rsquo;elle n&rsquo;est pas applicable ? Vous devez pr\u00e9senter les r\u00e9sultats de vos premi\u00e8res analyses Cobol et bien s\u00fbr, vous souhaitez que ceux-ci soient les plus pertinents possible afin de [&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-204","post","type-post","status-publish","format-standard","hentry","category-sonar-360"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/204"}],"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=204"}],"version-history":[{"count":1,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/204\/revisions"}],"predecessor-version":[{"id":205,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/204\/revisions\/205"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/media?parent=204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/categories?post=204"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/tags?post=204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}