{"id":185,"date":"2012-11-19T14:52:28","date_gmt":"2012-11-19T13:52:28","guid":{"rendered":"http:\/\/dev.qualilogy.com\/es\/?p=185"},"modified":"2013-01-05T14:53:16","modified_gmt":"2013-01-05T13:53:16","slug":"sonar-abap-las-preguntas","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/es\/sonar-abap-las-preguntas\/","title":{"rendered":"Sonar ABAP &#8211; Las preguntas"},"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>Seguimos con nuestra serie de an\u00e1lisis de c\u00f3digo ABAP.<\/p>\n<p>Hemos visto en <a title=\"Sonar Abap\" href=\"http:\/\/qualilogy.com\/es\/sonar-abap-lo-que-debes-saber\" target=\"_blank\">el post anterior<\/a> lo que se necesita saber respecto a la tecnolog\u00eda SAP y el c\u00f3digo ABAP.<\/p>\n<p>Ahora, vamos a listar las preguntas que necesitamos examinar con los equipos de proyectos para preparar la descarga del c\u00f3digo.<\/p>\n<p><!--more--><\/p>\n<p>Pues, si conoces Sonar porque est\u00e1s acostumbrado ya en hacer an\u00e1lisis de c\u00f3digo (por ejemplo J2EE) pero no sabes nada de c\u00f3digo ABAP, esta parte te va a interesar.<br \/>\nSi al contrario, conoces bien la tecnolog\u00eda SAP pero nada de Sonar, los pr\u00f3ximos posts donde hablaremos de an\u00e1lisis de c\u00f3digo ABAP con Sonar, te interesar\u00e1n m\u00e1s; aunque previamente, tendr\u00e1s que organizar la entrega de este c\u00f3digo o ver como organizarlo y este post puede ayudarte en eso.<\/p>\n<p>Por suerte, tenemos con nosotros, desde <a title=\"Analizar ABAP con Sonar\" href=\"http:\/\/qualilogy.com\/es\/sonar-y-abap\" target=\"_blank\">los articulos anteriores<\/a>, a Walter que es experto en estos dos temas, calidad de aplicaciones SAP y uso de la plataforma Sonar, entre otras. Y su experiencia y peritaje nos van a ser muy \u00fatil, pues le ped\u00ed que nos comentara esos puntos.<\/p>\n<h3><strong>\u00bfQui\u00e9n es tu cliente?<\/strong><\/h3>\n<p>La primera pregunta, aunque eso no necesitamos preguntarlo porque lo podemos saber ya, es \u00bfPara qui\u00e9n vamos a trabajar? B\u00e1sicamente, o trabajas en una compa\u00f1a en el departamento de TI y tus \u2018clientes\u2019 son usuarios de la compa\u00f1a, pertenecientes a diferentes departamentos de negocio por ejemplo, o trabajas para otra empresa proveedora y tus clientes son otras compa\u00f1as a las cuales prestas servicios de an\u00e1lisis de c\u00f3digo.<\/p>\n<p>Vas a decirme \u00bfqu\u00e9 importa esto, si de todos modos vamos a analizar c\u00f3digo ABAP? Tiene su importancia desde el principio, porque por ejemplo las extracciones, las puedes hacer con relativa facilidad si est\u00e1s en el departamento de TI, si sabes qu\u00e9 extraer, de d\u00f3nde extraer, c\u00f3mo extraer y tienes los permisos necesarios. Sin embargo, si eres de otra empresa,  tienes que gestionar con el departamento de TI, que te proporcionen estos accesos y permisos o que te entreguen el c\u00f3digo, realizando ellos las extracciones o indic\u00e1ndote los objetos (clases, ficheros, etc.) que extraer.<\/p>\n<p>Luego, si trabajas en un proveedor por diferentes clientes, probablemente vas a necesitar diferentes cuadros de mandos para cada uno de ellos, y posiblemente con diferentes \u2018Quality profiles\u2019, es decir diferentes conjuntos de reglas porque cada uno tendr\u00e1 sus propias buenas pr\u00e1cticas, diferentes de otros clientes, o no con el mismo peso, etc.<\/p>\n<p>Otro punto: un proveedor puede ser encargado de manejar un centro de Calidad para un cliente, y analizar todas las entregas de c\u00f3digo de otros proveedores en una Quality Gate \u2013 es el caso del equipo de nuestro amigo Walter, Director de Calidad de Vision IT Group \u2013 o puede ser un proveedor de c\u00f3digo SAP que tiene que entregar diferentes versiones a lo largo del tiempo, y quisiera poner en marcha un proceso de Continuous Integration para mejorar la calidad de estas entregas.<\/p>\n<p>Hay diferentes casos de uso y escenarios posibles y no precipites a lo t\u00e9cnico primero: lo m\u00e1s importante es de definir los objetivos de tus usuarios o de tus clientes, y muy probablemente tendr\u00e1s que presentarles los diferentes casos de uso posibles para que ellos escogen los que responden mejor a sus necesidades. Optimizar los beneficios para el business, siempre.<\/p>\n<p>Las otras preguntas que hacer son m\u00e1s t\u00e9cnicas.<\/p>\n<h3><strong>SAP versi\u00f3n<\/strong><\/h3>\n<p>La primera es sencilla: \u00bfcu\u00e1l es la versi\u00f3n SAP? No hay diferencias a nivel de lenguaje \u2013 pero en el n\u00facleo SAP y en el Workbench s\u00ed. Y el programa que tendremos que implantar para hacer la extracci\u00f3n del c\u00f3digo no ser\u00e1 el mismo.<\/p>\n<h3><strong>SAP areas<\/strong><\/h3>\n<p>Hemos visto en el post anterior que hay diferentes \u00e1reas o m\u00f3dulos SAP: FI, CO, HR son los m\u00e1s frecuentes. Y es as\u00ed que vamos a organizar los an\u00e1lisis con Sonar y tambi\u00e9n los resultados en el dashboard, porque es as\u00ed que el cliente o cualquier equipo de proyecto SAP lo entiende y quiere verlo.<\/p>\n<h3><strong>Servidores SAP<\/strong><\/h3>\n<p>Podemos tener estas diferentes \u00e1reas o m\u00f3dulos SAP en diferentes servidores, cada uno con su Workbench, su n\u00facleo SAP y su c\u00f3digo personalizado. Tienes que pensar en organizar tus procesos de an\u00e1lisis desde el principio, es decir, desde la extracci\u00f3n de c\u00f3digo. Y necesitar\u00e1s hacer tantas extracciones como servidores haya.<\/p>\n<p>Ahora, depende del caso de uso y \/ o del primer punto que hemos visto, y si t\u00fa te encargas de las extracciones o si alguien \u2013 equipo de proyecto, cliente, etc. \u2013 te entrega el c\u00f3digo. Hay clientes que no quieren que se acceda a sus servidores desde el exterior, y te lo van a entregar. O te van a pedir que alguien de tu equipo trabaje desde dentro de sus oficinas para este asunto de seguridad. Pero de todos modos, del numero de servidores depende el numero de extracciones y cualquier sea quien se encarga de eso, es un punto que tomar en cuenta.<\/p>\n<h3><strong>Organizaci\u00f3n de los equipos \/ outsourcers<\/strong><\/h3>\n<p>Este depende tambi\u00e9n del primer punto y de los casos de uso que poner en marcha. Lo m\u00e1s usual es que diferentes proveedores o equipos de proyecto trabajan en un mismo servidor. Pero no siempre en la misma \u00e1rea SAP. Si tienes que poner en marcha un caso de Quality Gate por cada entrega de cada outsourcer , necesitas saber cu\u00e1ntos proveedores trabajan en cuales servidores y \u00e1reas.<\/p>\n<p>Cuidado: hay una cuesti\u00f3n muy habitual y mejor hablar de este tema con el cliente o los equipos de proyecto lo m\u00e1s ante posible. Es que el c\u00f3digo ABAP, como las aplicaciones Cobol, puede ser muy antiguo. Y t\u00fa haces un an\u00e1lisis de este c\u00f3digo para un Quality Gate y encuentras un mont\u00f3n de defectos graves o cr\u00edticos, y muy probablemente no sea el \u00faltimo desarrollador responsable de esos defectos sino todos los programadores anteriores.<\/p>\n<p>Entonces, no puedes decir al equipo de proyecto o el outsourcer que rechazas esta entrega y que ellos tienen que arreglar estos defectos porque no son responsables.<br \/>\nLa sola manera de poder saber quien ha a\u00f1adido nuevos defectos seria de hacer un an\u00e1lisis de todo el c\u00f3digo existente para disponer de una \u2018baseline\u2019 y luego, poder ver los defectos nuevos en los cambios respecto a esta \u2018baseline\u2019. Pero eso significar\u00eda empezar con analizar millones o hasta decenas de millones de l\u00edneas de c\u00f3digo para tener esta foto del portafolio SAP de la compa\u00f1a.<\/p>\n<p>Sonar es una herramienta muy poderosa cuando se trata de analizar c\u00f3digo, pero el esfuerzo puede ser muy alto. De todos modos, depende mucho de los casos de uso y de las relaciones que el cliente quiere mantener con los equipos de proyecto y los proveedores. Pero es un punto importante que ver en la primera reuni\u00f3n.<\/p>\n<h3><strong>Organizaci\u00f3n del c\u00f3digo<\/strong><\/h3>\n<p>Unos clientes organizan el c\u00f3digo personalizado en clases de desarrollo (hemos visto en el post anterior que se trata de m\u00f3dulos y no de clases \u2018Objetos\u2019 como en J2EE). B\u00e1sicamente, una clase corresponde a un directorio dentro de lo cual encontrar\u00e1s los diferentes programas que analizar. No es un problema para Sonar, cualquier sea el numero de programas y el numero de directorios dentro del directorio ra\u00edz (root) de an\u00e1lisis.<\/p>\n<p>Pero necesitas hacer esta pregunta. Unos clientes organizan el c\u00f3digo en clases y otros no. Pues pueden pedirte de extraer tal y tal clase o al contrario, tal y tal programa. Y tendr\u00e1s un cuadro de mandos a 2 niveles: \u00e1rea (FI, CO, etc.) y clases, o un solo nivel: \u00e1rea y todos los ficheros dentro de cada \u00e1rea.<\/p>\n<h3><strong>Nomenclatura SAP<\/strong><\/h3>\n<p>No queremos analizar el c\u00f3digo del n\u00facleo SAP sino solamente el c\u00f3digo personalizado, desarrollado para personalizar el n\u00facleo SAP. Por eso, es usual reconocer este c\u00f3digo con unas nomenclaturas.<\/p>\n<p>Si ves una clase que empieza con Z o ZZ o Y o YY o XX por ejemplo, es c\u00f3digo personalizado y se analiza. Deber\u00eda  ser lo mismo a nivel de programas pero aqu\u00ed las reglas pueden cambiar, seg\u00fan el tipo de programa. Por ejemplo, puede empezar con un \u2018L\u2019 porque es un \u2018load-module\u2019 o \u2018function pool\u2019.<\/p>\n<p>Un ejemplo bastante usual de nomenclatura: <strong>Z[Id]_[t]:*<\/strong>, con<\/p>\n<ul>\n<li>&#8216;Id&#8217;: identificador de la clase o del proyecto en que se realiza el desarrollo<\/li>\n<li>&#8216;t&#8217;: tipo de objeto, R para un programa de tipo Report, I para un include, M para un Modul Pool, etc.<\/li>\n<li>*: una cadena de caracteres que describe lo que hace el c\u00f3digo.<\/li>\n<\/ul>\n<p>Con esta norma, vas a encontrar ficheros como &#8216;ZUC_R_CHECK_FISCAL_CODE.abap&#8217;, por ejemplo.<\/p>\n<p><strong>Normas SAP<\/strong><\/p>\n<p><strong><\/strong>Ultima pregunta, no espec\u00edfica a SAP (hay que preguntarla siempre): si existen estandartes de programaci\u00f3n. Se encuentra m\u00e1s a menudo que en otras tecnolog\u00edas, as\u00ed que es interesante de comprobar si hay alg\u00fan documento que describe estas buenas pr\u00e1cticas y las cuales est\u00e1n presentes en Sonar o no. Eso tambi\u00e9n nos ayuda a poner en marcha los casos de uso que queremos implantar.<\/p>\n<p><em>Walter: \u00bfHay otras preguntas en tu lista cuando pones en marcha un proceso de an\u00e1lisis de c\u00f3digo por un nuevo cliente?<\/em><\/p>\n<p style=\"margin-left: 25px\"><em> \u00bfDe qu\u00e9 volumen de c\u00f3digo a analizar estamos hablando?<br \/>\n<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>Esta volumetr\u00eda puede medirse en la famosa y discutida m\u00e9trica de l\u00edneas de c\u00f3digo (en ingl\u00e9s: LOC \/ Lines of Code) y digo \u201cdiscutida\u201d porque hay una gran discusi\u00f3n en el tema de productividad, si \u00e9sta se puede medir en kLOC (miles de l\u00edneas) o debe hacer por otro medio, como son los Puntos de Funci\u00f3n (FP o Function Points).<br \/>\n<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>Muchas veces, no sabemos de qu\u00e9 volumen tiene nuestro c\u00f3digo; a veces s\u00f3lo se sabe al cabo del an\u00e1lisis. En el caso de SAP ABAP, por ejemplo en su versi\u00f3n ECC 6.0, podemos saberlo de antemano ejecutando un programa nuestro que cuenta el n\u00famero de l\u00edneas.<br \/>\n<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>Esto nos da una idea del tiempo que puede llevar el an\u00e1lisis, y en base a nuestra experiencia en Vision IT Group, podemos saber el esfuerzo necesario para interpretar y presentar los resultados, o predecir un posible Retorno de la Inversi\u00f3n (ROI).<br \/>\n<\/em><\/p>\n<p><em> S\u00ed, es cierto que me hab\u00eda olvidado de eso. \u00bfAlgo m\u00e1s?<br \/>\n<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>\u00bfIntegraci\u00f3n con resultados de otras tecnolog\u00edas o an\u00e1lisis aislado?<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>Otra pregunta a realizarse al inicio del an\u00e1lisis, es si se va a analizar una \u00fanica tecnolog\u00eda (por ejemplo SAP ABAP) y si es necesario combinar los resultados de an\u00e1lisis de c\u00f3digo SAP con an\u00e1lisis de c\u00f3digo Java, COBOL o PL\/SQL. La composici\u00f3n de nuestro equipo t\u00e9cnico puede var\u00edar.<\/em><\/p>\n<p>Gracias Walter. Hay otras cosas que ver en relaci\u00f3n con los casos de uso, pero este post ya es bastante largo. Nos vemos la pr\u00f3xima semana para hablar de eso.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Seguimos con nuestra serie de an\u00e1lisis de c\u00f3digo ABAP. Hemos visto en el post anterior lo que se necesita saber respecto a la tecnolog\u00eda SAP y el c\u00f3digo ABAP. Ahora, vamos a listar las preguntas que necesitamos examinar con los equipos de proyectos para preparar la descarga del c\u00f3digo.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-185","post","type-post","status-publish","format-standard","hentry","category-sonar-abap"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/185"}],"collection":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/comments?post=185"}],"version-history":[{"count":1,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/185\/revisions"}],"predecessor-version":[{"id":186,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/185\/revisions\/186"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/media?parent=185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/categories?post=185"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/tags?post=185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}