{"id":238,"date":"2012-11-19T14:53:30","date_gmt":"2012-11-19T13:53:30","guid":{"rendered":"http:\/\/dev.qualilogy.com\/fr\/?p=238"},"modified":"2013-01-05T14:54:21","modified_gmt":"2013-01-05T13:54:21","slug":"sonar-abap-les-questions","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/fr\/sonar-abap-les-questions\/","title":{"rendered":"Sonar ABAP &#8211; Les questions"},"content":{"rendered":"<p><a href=\"http:\/\/vicken.deviantart.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-2601\" title=\"QualilogyAbap31\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/11\/QualilogyAbap31.jpg\" alt=\"\" width=\"350\" height=\"235\" \/><\/a>Nous poursuivons notre s\u00e9rie sur l&rsquo;analyse de code ABAP.<\/p>\n<p>Nous avons vu dans <a title=\"Sonar Abap\" href=\"http:\/\/qualilogy.com\/fr\/sonar-abap-ce-quil-faut-savoir\" target=\"_blank\">le post pr\u00e9c\u00e9dent<\/a> ce que vous devez savoir sur la technologie SAP et sur le code ABAP.<\/p>\n<p>Nous allons maintenant lister les questions \u00e0 poser aux \u00e9quipes de projet afin de pr\u00e9parer l\u2019extraction du code et l\u2019organisation des analyses dans le tableau de bord Sonar. <!--more--><\/p>\n<p>Si vous connaissez d\u00e9j\u00e0 Sonar parce que vous avez l&rsquo;habitude de r\u00e9aliser des analyses, par exemple de code J2EE, mais que vous ne savez rien de SAP, cette partie vous int\u00e9ressera surement.<br \/>\nSi par contre, vous \u00eates familiers de la technologie SAP mais ignorez tout de Sonar, les prochains posts consacr\u00e9s \u00e0 l&rsquo;analyse de code ABAP avec Sonar vous int\u00e9resseront, bien qu\u2019il vous faudra d\u2019abord organiser la livraison de ce code, ce en quoi ce post peut vous \u00eatre utile.<\/p>\n<p>Heureusement, <a title=\"Sonar Abap Walter Strobl\" href=\"http:\/\/qualilogy.com\/fr\/sonar-et-abap\" target=\"_blank\">nous avons avec nous Walter<\/a> qui est expert dans ces deux domaines, la qualit\u00e9 des applications SAP avec la plateforme Sonar, et nous fera b\u00e9n\u00e9ficier de son exp\u00e9rience et son expertise.<\/p>\n<h3><strong>Qui est le client ?<\/strong><\/h3>\n<p>La premi\u00e8re question, m\u00eame si vous n\u2019avez pas besoin de la poser aux \u00e9quipes SAP car vous pouvez y r\u00e9pondre d\u00e9s \u00e0 pr\u00e9sent, est de savoir pour qui vous travaillez :<\/p>\n<ul>\n<li>soit dans le d\u00e9partement informatique de votre entreprise, auquel cas vos \u2018clients\u2019 sont des \u00e9quipes de projet ou des stakeholders au sein de diff\u00e9rents d\u00e9partements,<\/li>\n<li>soit dans une soci\u00e9t\u00e9 de services et vos clients sont d&rsquo;autres entreprises auxquels vous rendez des services Qualit\u00e9 et d&rsquo;analyse de code, ainsi que tr\u00e8s probablement les \u00e9quipes de projet internes \u00e0 votre soci\u00e9t\u00e9.<\/li>\n<\/ul>\n<p>Vous allez me dire : qu&rsquo;est ce que \u00e7a peut faire, de toute fa\u00e7on, si dans les deux cas nous allons analyser du code ABAP? La question a son importance, parce que les les extractions de code peuvent se r\u00e9aliser avec une relative facilit\u00e9 si vous \u00eates dans le d\u00e9partement IT de votre entreprise, et si vous savez quel code downloader depuis quel serveur (Workbench) SAP et obtenir les autorisations n\u00e9cessaires.<\/p>\n<p>Par contre, si vous travaillez pour un provider, il vous faudra voir avec le service informatique de chaque client s&rsquo;il peut vous fournir un tel acc\u00e8s et les autorisations correspondantes afin d&rsquo;extraire le code qu&rsquo;il vous indiquera (classes, fichiers, etc.). Mais la plupart des clients n&rsquo;aiment pas donner des acc\u00e8s ext\u00e9rieurs aux applications les plus critiques au coeur de leur m\u00e9tier, ce qu&rsquo;il signifie que ceux-ci devront mettre ce code \u00e0 votre disposition, et vous allez devoir g\u00e9rer ce processus et une certaine tra\u00e7abilit\u00e9, comme garder chaque image de livraison pendant un certain temps, afin de pouvoir proc\u00e9der \u00e0 des retours arri\u00e8re ou tout simplement d\u00e9montrer, en cas de doute, qu&rsquo;il n&rsquo;y a pas eu d&rsquo;erreurs d&rsquo;analyse et que les r\u00e9sultat dans le tableau de bord portent bien sur la livraison effectu\u00e9e par le client.<\/p>\n<p>Ensuite, que vous soyez en interne ou non, il y a de bonnes chances que l&rsquo;on vous demande d&rsquo;analyser le code fourni par diff\u00e9rents providers (90% des applications SAP sont outsourc\u00e9es). Et donc vous allez probablement devoir g\u00e9rer le processus d&rsquo;extraction et d&rsquo;analyse en autant de fois que vous aurez d&rsquo;outsourcers, mais \u00e9galement en fonction des cas d&rsquo;usage.<\/p>\n<p>Cest le cas de notre ami Walter, Directeur Qualit\u00e9 de Vision IT Group, responsable d&rsquo;un centre de qualit\u00e9 pour diff\u00e9rents client, qui analyse toutes les livraisons de code provenant de diff\u00e9rents fournisseurs en un processus de Quality Gate, mais effectue \u00e9galement des benchmarks de ces diff\u00e9rents providers, tr\u00e8s appr\u00e9ci\u00e9s des clients qui peuvent se baser sur ces analyses pour g\u00e9rer des SLA (Service Level Agreement ou Accords de Niveau de Service). Sans compter des audits mensuels ou trimestriels de la qualit\u00e9 de code et de son \u00e9volution, \u00e0 destination du management.<\/p>\n<p>Il existe diff\u00e9rents cas d&rsquo;utilisation et diff\u00e9rents sc\u00e9narios qui peuvent se combiner entre eux, et c&rsquo;est le premier point le plus important \u00e0 d\u00e9finir avec vos utilisateurs et vos clients. Toujours optimiser les b\u00e9n\u00e9fices pour les utilisateurs, les stakeholders, le management, bref le business.<\/p>\n<p>Nous verrons ces diff\u00e9rents cas d&rsquo;usage avec Walter dans le prochain post, pour r\u00e9server cet article aux questions plus techniques.<\/p>\n<h3><strong>Version SAP<\/strong><\/h3>\n<p>La premi\u00e8re question est simple : quelle est la version SAP utilis\u00e9e ? Aucune diff\u00e9rence au niveau du langage &#8211; mais si au niveau du Workbench SAP lui-m\u00eame, et donc le programme d&rsquo;extraction de code \u00e0 mettre en oeuvre ne sera pas le m\u00eame.<\/p>\n<p><strong>Areas SAP <\/strong><\/p>\n<p>Nous avons vu dans <a title=\"Sonar Abap - Ce qu'il faut savoir\" href=\"http:\/\/qualilogy.com\/fr\/sonar-abap-ce-quil-faut-savoir\" target=\"_blank\">le post pr\u00e9c\u00e9dent<\/a> qu&rsquo;il existe des domaines ou modules SAP diff\u00e9rents : FI, CO, HR sont les plus fr\u00e9quemment rencontr\u00e9s. Et c&rsquo;est en fonction de ceux-ci que nous allons organiser nos analyses et les r\u00e9sultats dans le tableau de bord, parce que c&rsquo;est ainsi que votre client ou toute \u00e9quipe de projet SAP comprend les applications et souhaite voir celles-ci.<\/p>\n<p><strong>Serveurs SAP <\/strong><\/p>\n<p>Ces diff\u00e9rentes &lsquo;areas&rsquo; ou domaines peuvent \u00eatre r\u00e9partis sur diff\u00e9rents serveurs, chacun avec son Workbench et son code ABAP personnalis\u00e9. Vous devez penser \u00e0 l&rsquo;organisation de votre processus d&rsquo;analyse depuis le d\u00e9but, c&rsquo;est \u00e0 dire depuis l&rsquo;\u00e9tape d&rsquo;extraction de code, que vous deverz r\u00e9aliser sur chaque serveur que vous indiquera le client ou l&rsquo;\u00e9quipe de projet, pour les diff\u00e9rentes &lsquo;areas&rsquo; SAP.<\/p>\n<p>Cela dit, cela d\u00e9pend du ou des cas d&rsquo;utilisation et \/ ou du premier point, selon que vous \u00eates en charge ou non d&rsquo;effectuer les extractions. Mais de toutes fa\u00e7ons, du nombre de serveurs d\u00e9pend le nombre d&rsquo;extractions et de celles-ci d\u00e9pendent le processus d&rsquo;analyse.<\/p>\n<h3><strong>Organisation des \u00e9quipes<br \/>\n<\/strong><\/h3>\n<p>L\u00e1 encore, ce point va d\u00e9pendre des cas d&rsquo;utilisation \u00e0 mettre en \u0153uvre. La situation la plus fr\u00e9quente est lorsque des providers diff\u00e9rents travaillent sur le m\u00eame serveur. Donc si vous devez mettre en place, par exemple, une Quality Gate pour valider la livraison de chaque prestataire, il est n\u00e9cessaire de savoir qui travaille sur quel serveur et dans quel domaine SAP.<\/p>\n<p>Attention: ceci appelle une question tr\u00e8s habituelle et qu&rsquo;il vaut mieux pr\u00e9ciser et \u00e9tudier avec votre client le plus t\u00f4t possible. Le code ABAP, comme beaucoup d&rsquo;applications Cobol, peut \u00eatre assez voire tr\u00e8s ancien. Et vous faites une analyse de ce code pour une Quality Gate et rencontrez un nombre \u00e9lev\u00e9 de d\u00e9fauts graves ou critiques, et le plus souvent le responsable de ces d\u00e9fauts ne sera pas le dernier d\u00e9veloppeur qui a effectu\u00e9 les derni\u00e8res modifications, sinon tous les programmeurs qui l&rsquo;ont pr\u00e9c\u00e9d\u00e9. Donc, vous ne pouvez pas dire \u00e0 l&rsquo;\u00e9quipe de projet ou au sous-traitant que vous allez rejeter cette livraison et qu&rsquo;ils doivent corriger des d\u00e9fauts, puisqu&rsquo;ils ne sont pas responsables de ceux-ci.<\/p>\n<p>Le seul moyen de savoir qui a ajout\u00e9 de nouveaux d\u00e9fauts serait d&rsquo;analyser tout le code existant pour fournir une &lsquo;baseline&rsquo; et voir alors appara\u00eetre les nouveaux d\u00e9fauts dans les modifications de code de cette &lsquo;baseline&rsquo;. Mais cela voudrait dire que vous allez d\u00e9buter votre processus par l&rsquo;analyse de millions ou de dizaines de millions de lignes de code afin de cr\u00e9er cette image &lsquo;de base&rsquo; du portefeuille d&rsquo;applications SAP. Sonar est un outil tr\u00e8s puissant quand il s&rsquo;agit de l&rsquo;analyse du code, mais cela repr\u00e9senterait un effort tr\u00e8s \u00e9lev\u00e9, pour un b\u00e9n\u00e9fice qui va beaucoup d\u00e9pendre des cas d&rsquo;utilisation, mais aussi des relations que votre client souhaite avoir avec ses \u00e9quipes de projet et ses providers. C&rsquo;est de toutes fa\u00e7ons un point \u00e0 aborder d\u00e9s la premi\u00e8re r\u00e9union.<\/p>\n<h3><strong>Organisation du code<br \/>\n<\/strong><\/h3>\n<p>Certains clients organisent leur code (personnalis\u00e9) dans des classes (nous avons vu dans le post pr\u00e9c\u00e9dent qu&rsquo;il s&rsquo;agit de modules et non pas de classes Objet comme en J2EE). Fondamentalement, une classe est un r\u00e9pertoire dans lequel vous trouverez des programmes diff\u00e9rents \u00e0 analyser. Pas un probl\u00e8me pour Sonar, quel que soit le nombre de programmes et le nombre de r\u00e9pertoires dans le r\u00e9pertoire racine (root) de l&rsquo;analyse.<\/p>\n<p>Mais vous devez demander \u00e0 votre client s&rsquo;ils organisent son code en classes ou non, car ce n&rsquo;est pas le cas de tous. Cela aura \u00e9galement des incidences en mati\u00e8re d&rsquo;extraction \/ de livraison du code \u00e0 analyser, puisque dans certains cas elles porteront sur des classes SAP qui constitueront autant de r\u00e9pertoires, ou au contraire sur diff\u00e9rentes fichiers assembl\u00e9s dans un unique dossier. Et dans le premier cas, vous aurez un tableau de bord \u00e0 2 niveaux: le domaine (FI, CO, etc.) puis les classes avec chacune son code, et un seul niveau dans le second cas: chaque domaine avec les fichiers directements sous ceux-ci.<\/p>\n<p>En fonction du cas d&rsquo;utilisation, vous pouvez d\u00e9cider d&rsquo;autres niveaux (dates, num\u00e9ro de livraison, version applicative, etc.).<\/p>\n<h3><strong>Conventions de nommage<\/strong><\/h3>\n<p>Nous ne voulons pas analyser le code du noyau SAP, mais seulement le code d\u00e9velopp\u00e9 pour personnaliser le noyau SAP. Par cons\u00e9quent, il est habituel de reconna\u00eetre ce code avec des conventions de nommage assez bien normalis\u00e9es (je veux dire, vous les retrouverez \u00e0 peu pr\u00e9s partout).<\/p>\n<p>Si vous voyez une classe qui commence par Z ou Y ou YY ou ZZ ou XX, il s&rsquo;agit de code personnalis\u00e9 que vous pouvez analyser. Il doit en \u00eatre de m\u00eame au niveau du programme, mais ici, les r\u00e8gles peuvent changer en fonction du type de celui-ci. Par exemple, vous pouvez voir un nom de programme commencer avec la lettre \u00abL\u00bb pour indiquer un &lsquo;load-module&rsquo;.<\/p>\n<p>Voici un exemple assez habituel de nomenclature:<strong> Z [Id] _ [t]_*<\/strong>, avec :<\/p>\n<ul>\n<li>&lsquo;Id&rsquo; : identifiant de la classe ou du projet<\/li>\n<li>&lsquo;T&rsquo; : type d&rsquo;objet, R pour un programme de type rapport, I pour un Include, etc.<\/li>\n<li>* : une cha\u00eene d\u00e9crivant ce que fait le code.<\/li>\n<\/ul>\n<p>Avec cette r\u00e8gle, vous trouverez des fichiers comme &lsquo;ZUC_R_CHECK_FISCAL_CODE.abap&rsquo;, par exemple.<\/p>\n<p><strong>Normes SAP<\/strong><\/p>\n<p><strong><\/strong>Derni\u00e8re question, pas sp\u00e9cifique \u00e0 SAP (toujours poser cette question dans quelque cas que ce soit) : existe-t-il des normes de programmation ? On en rencontre plus souvent dans le monde SAP qu&rsquo;avec d&rsquo;autres technologies, et il est donc int\u00e9ressant de v\u00e9rifier si vous pouvez mettre la main sur un document qui d\u00e9crive ces bonnes pratiques. Cela nous aidera aussi dans la mise en oeuvre des cas d&rsquo;utilisation.<\/p>\n<p><em>Walter: vois-tu d&rsquo;autres questions \u00e0 aborder, lorsque tu entames un processus d&rsquo;analyse de code ABAP avec un nouveau client?<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>J&rsquo;essaie de savoir quel est le volume de code \u00e0 analyser.<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>Cette volum\u00e9trie peut se mesurer en lignes de code (LOC ou Line Of Code), m\u00eame si cette m\u00e9trique est parfois d\u00e9cri\u00e9e au profit des points de fonction (FP ou Function Points). Mais pour ce que nous souhaitons faire en l&rsquo;occurence, elle sera suffisante. De plus, en cas de version SAP ECC 6.0, nous avons un programme ABAP qui nous permet de mesurer ce nombre de lignes. <\/em><\/p>\n<p style=\"margin-left: 25px\"><em>Ceci nous permet de nous faire une id\u00e9e du temps n\u00e9cessaire pour r\u00e9aliser une analyse et d\u00e9livrer le service \u00e0 un client, et donc en connaissant l&rsquo;effort \u00e0 r\u00e9aliser, d&rsquo;estimer le ROI de ce service.<br \/>\n<\/em><\/p>\n<p><em> Oui, il est vrai que j&rsquo;avais oubli\u00e9 ce point. Autre chose ?<br \/>\n<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>L&rsquo;int\u00e9gration \u00e9ventuelle d&rsquo;autres technologies. Parfois un client va souhaiter \u00e9galement effectuer des analyses pour du code Java ou PL\/SQL. Dans ce cas, la composition de l&rsquo;\u00e9quipe technique peut varier.<\/em><\/p>\n<p>Merci Walter. Il y a beaucoup d&rsquo;autres points \u00e0 aborder, en relation avec les cas d&rsquo;utilisation, mais comme ce post est d\u00e9j\u00e0 trop long, nous r\u00e9serverons ces questions pour le prochain article. On se revoit la semaine prochaine pour en parler.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nous poursuivons notre s\u00e9rie sur l&rsquo;analyse de code ABAP. Nous avons vu dans le post pr\u00e9c\u00e9dent ce que vous devez savoir sur la technologie SAP et sur le code ABAP. Nous allons maintenant lister les questions \u00e0 poser aux \u00e9quipes de projet afin de pr\u00e9parer l\u2019extraction du code et l\u2019organisation des analyses dans le tableau [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-238","post","type-post","status-publish","format-standard","hentry","category-sonar-abap"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/238"}],"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=238"}],"version-history":[{"count":1,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/238\/revisions"}],"predecessor-version":[{"id":239,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/238\/revisions\/239"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/media?parent=238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/categories?post=238"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/tags?post=238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}