{"id":153,"date":"2012-07-03T10:26:37","date_gmt":"2012-07-03T09:26:37","guid":{"rendered":"http:\/\/dev.qualilogy.com\/es\/?p=153"},"modified":"2013-01-05T10:29:05","modified_gmt":"2013-01-05T09:29:05","slug":"auditoria-de-codigo-cobol-con-sonar-12","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/es\/auditoria-de-codigo-cobol-con-sonar-12\/","title":{"rendered":"Auditoria de c\u00f3digo Cobol con Sonar (1\/2)"},"content":{"rendered":"<p><a href=\"http:\/\/vicken.deviantart.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-2013\" title=\"QualCobolAssess1\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/QualCobolAssess1.jpg\" alt=\"\" width=\"266\" height=\"400\" \/><\/a> La calidad de c\u00f3digo de las aplicaciones es una preocupaci\u00f3n constante desde siempre. Las malas pr\u00e1cticas de programaci\u00f3n son responsables de defectos que impactan a los usuarios y los costes de mantenimiento. La Deuda T\u00e9cnica, simple met\u00e1fora al principio, se ha convertido en una herramienta para medir la calidad y estos costes.<\/p>\n<p>Unos cuantos a\u00f1os antes, los softwares que permiten la identificaci\u00f3n de estos defectos eran raros y costosos. Hoy en d\u00eda, herramientas Open Source tales como Sonar permiten que todos \u2013 equipos de proyectos, proveedores, consultores de Calidad, etc. \u2013 puedan detectar de manera sencilla y a buen precio estas malas pr\u00e1cticas.<\/p>\n<p>El mundo Open Source ha sufrido durante mucho tiempo de una imagen de &#8216;geek&#8217;, porque primero fueron los entusiastas del mundo J2EE que utilizaron estas herramientas. Pero los tiempos cambian y ahora es posible analizar c\u00f3digo Legacy como Cobol y ABAP con Sonar.<\/p>\n<p>Este es el objetivo de nuestra serie de posts: demostrar que es posible evaluar la calidad de las aplicaciones Cobol sin saber nada del mundo Mainframe. <!--more--><\/p>\n<p>Hemos visto anteriormente:<\/p>\n<ul>\n<li><a href=\"http:\/\/qualilogy.com\/es\/sonar-cobol-lo-que-debes-saber\" target=\"_blank\">Los pocos conceptos<\/a> que se necesitan para poder sentarse en una mesa con Cobol-ers y saber <a href=\"http:\/\/qualilogy.com\/es\/sonar-cobol-las-preguntas\" target=\"_blank\">cuales preguntas<\/a> hacer para preparar la entrega de una aplicaci\u00f3n Cobol.<\/li>\n<li>\u00bfC\u00f3mo <a href=\"http:\/\/qualilogy.com\/es\/sonar-analisis-cobol-con-jenkins\" target=\"_blank\">organizar un an\u00e1lisis Cobol <\/a>con un <a href=\"http:\/\/qualilogy.com\/es\/quality-profile\" target=\"_blank\">Quality profile<\/a> Sonar.<\/li>\n<li>\u00bfC\u00f3mo definir su propio <a href=\"http:\/\/qualilogy.com\/es\/tu-proprio-modelo-de-calidad\" target=\"_blank\">Quality model<\/a> y agregar los resultados de an\u00e1lisis de distintas aplicaciones en una \u00fanica View Sonar.<\/li>\n<\/ul>\n<p>Estos pots anteriores han despertado la curiosidad (a juzgar por el n\u00famero de visitantes en el blog) y levantaron preguntas relativas a los resultados de estos an\u00e1lisis. Esto es lo que vamos a ver ahora: \u00bfQu\u00e9 recomendaciones podemos formular basandonos en los resultados de an\u00e1lisis y el dashboard Sonar.<\/p>\n<p>En primer lugar, no voy a realizar una auditor\u00eda. Son entre 15 y 20 horas para realizar un trabajo por lo menos un poco serio y necesitar\u00eda un post de 30 o 40 p\u00e1ginas. El objetivo es ense\u00f1ar  c\u00f3mo traducir los resultados en valor, es decir, en informaci\u00f3n para la decisi\u00f3n.<\/p>\n<p>Tampoco vamos a llevar a cabo un an\u00e1lisis exhaustivo de los resultados, pero tratar\u00e9 de mostrar con algunos ejemplos sencillos c\u00f3mo utilizar el cuadro de mando de Sonar para evaluar la calidad del c\u00f3digo de una aplicaci\u00f3n Cobol.<\/p>\n<p>Previamente, recordemosnos que hemos centrado nuestro modelo de calidad en la detecci\u00f3n de violaciones de rendimiento y de robustez, para identificar los defectos que puedan afectar a los usuarios. As\u00ed que los problemas de legibilidad y de mantenimiento no son nuestra principal preocupaci\u00f3n. Podr\u00edan ser, pero este no es el caso, o al menos no ahora.<\/p>\n<p>Y no se necesita ser un experto del mundo Mainframe para demostrar a esos expertos c\u00f3mo nuestros an\u00e1lisis les pueden ayudar. La forma m\u00e1s sencilla de lograrlo es identificar los graves defectos que pueden corregirse con facilidad, no con el c\u00e1lculo de una deuda t\u00e9cnica de miles y miles de d\u00edas que nadie puede resolver.<\/p>\n<h3><strong>M\u00e9tricas<\/strong><\/h3>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/QualCobolAsses2b.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-2016\" title=\"QualCobolAsses2b\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/QualCobolAsses2b.jpg\" alt=\"\" width=\"337\" height=\"284\" \/><\/a>En primer lugar, me gustar\u00eda saber lo que se me espera: una peque\u00f1a y bonita aplicaci\u00f3n o un monstruo grande y feo, muy com\u00fan en el mundo Mainframe. Recuerdate que la deuda t\u00e9cnica en este mundo se mide en d\u00e9cadas.<\/p>\n<p>El cuadro de mando Sonar nos permite descubrir que, entre las aplicaciones analizadas, \u2018Cobol \u2013 Tax\u2019 es la m\u00e1s voluminosa con la aplicaci\u00f3n \u2018Cobol \u2013 Big Banking app\u2019. Pero es \u2018Cobol \u2013 Billing\u2019 que tiene la calidad m\u00e1s a riesgo.<\/p>\n<p>Miramos un poco m\u00e1s de cerca esta aplicaci\u00f3n:<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/QualCobolAssesSize.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2018\" title=\"QualCobolAssesSize\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/QualCobolAssesSize.jpg\" alt=\"\" width=\"584\" height=\"143\" \/><\/a><\/p>\n<p>M\u00e1s de 180 000 l\u00edneas de c\u00f3digo en menos de 1 400 archivos: esta es una peque\u00f1a aplicaci\u00f3n. Puedes ver que m\u00e1s de la mitad de las l\u00edneas est\u00e1 en \u2018Data Divisions\u2019, la parte de un programa Cobol que define los datos utilizados.<\/p>\n<p>Esto indica una aplicaci\u00f3n orientada a &#8216;datos&#8217;, probablemente una aplicaci\u00f3n Batch que gestiona ficheros, por ejemplo, libros de contabilidad para registrar los movimientos realizados en cuentas bancarias. Puedes comprobar con el equipo Cobol al hacer tu presentaci\u00f3n pero tambi\u00e9n, lo que hago es echar un ojo en unos programas: los comentarios te dicen de que se trata.<\/p>\n<p>En la mayor\u00eda de los casos, el equipo de proyecto sabe decir si la aplicaci\u00f3n es peque\u00f1a o grande, compleja o no, pero por lo general, no conocen estos n\u00fameros con exactitud y probablemente ser\u00e1n sorprendidos e interesados al descubrir la distribuci\u00f3n de l\u00edneas de c\u00f3digo entre \u2018Data Divisions\u2019 dedicadas a datos o \u2018Procedure Divisions\u2019 para los tratamientos.<\/p>\n<p>El nivel de comentario es bajo para una aplicaci\u00f3n Mainframe: el promedio es usualmente entre 20% (m\u00ednimo) y 30% (correcto). Al menos, estos comentarios est\u00e1n en los tratamientos, pero nos damos cuenta de que una gran parte es \u00aben blanco\u00bb es decir, vac\u00edo. Por otra parte, no vamos a tener documentaci\u00f3n para entender las estructuras de datos que, sin embargo, prevalecen en el c\u00f3digo.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/QualCobolAssesCC.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2019\" title=\"QualCobolAssesCC\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/07\/QualCobolAssesCC.jpg\" alt=\"\" width=\"584\" height=\"119\" \/><\/a><\/p>\n<p>Como se puede ver, esta aplicaci\u00f3n no es muy compleja, con una Complejidad Ciclom\u00e1tica de 17,5 por archivo. Pero el n\u00famero de l\u00edneas de c\u00f3digo duplicado es muy alto, por encima del 50%, probablemente por la culpa de los 184 programas duplicados, un 13% de la aplicaci\u00f3n. \u00bfCu\u00e1l es el origen de estos archivos duplicados? Simplemente, debido a las copias de seguridad. El mundo Mainframe no es el m\u00e1s avanzado en gesti\u00f3n de versiones. La forma m\u00e1s f\u00e1cil, cuando uno no est\u00e1 seguro de la funcionalidad que tiene que implementar, es poner el c\u00f3digo en comentario o, m\u00e1s r\u00e1pido, copiar el archivo para realizar la evoluci\u00f3n deseada mientras se mantiene una copia de seguridad, lo que permite un retroceso si se necesita. Estas copias se acumulan a lo largo del tiempo si nadie piensa hacer una limpieza de cuando en vez.<\/p>\n<p>Mensaje para el management: puede parecer interesante externalizar esta aplicaci\u00f3n debido a que:<\/p>\n<ul>\n<li>Su peque\u00f1o tama\u00f1o significa que los costes de subcontrataci\u00f3n no ser\u00e1n altos.<\/li>\n<li>No es una aplicaci\u00f3n compleja y por lo tanto, no f\u00e1cil de entender.<\/li>\n<li>Una aplicaci\u00f3n Batch rara vez es una aplicaci\u00f3n cr\u00edtica, por lo que el riesgo de dependencia con el proveedor externo se reduce.<\/li>\n<\/ul>\n<p>Sin embargo, un bajo nivel de documentaci\u00f3n equivale a una transferencia de conocimiento m\u00e1s dif\u00edcil y m\u00e1s larga, una perdida de tiempo \u2013 y por lo tanto de dinero \u2013 para el proveedor que se encarga de la externalizaci\u00f3n. Por otra parte, el alto porcentaje de c\u00f3digo duplicado significa m\u00e1s trabajo para realizar cualquier modificaci\u00f3n en todos los bloques de c\u00f3digo copiado y pegado.<\/p>\n<p>Un proveedor externo no puede permitirse el lujo de perder dinero, por lo que estas tareas disminuir\u00e1n a\u00fan m\u00e1s el tiempo disponible para realizar el mantenimiento, con el riesgo de hacer un mal trabajo. No es apropiado dar este c\u00f3digo a un proveedor sin un trabajo previo de refactorizaci\u00f3n para eliminar archivos duplicados y redocumenter esta aplicaci\u00f3n, especialmente con respecto a los archivos de datos.<\/p>\n<p>M\u00e1s en nuestro pr\u00f3ximo post, que se centrar\u00e1 en violaci\u00f3nes encontradas y las recomendaciones finales.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La calidad de c\u00f3digo de las aplicaciones es una preocupaci\u00f3n constante desde siempre. Las malas pr\u00e1cticas de programaci\u00f3n son responsables de defectos que impactan a los usuarios y los costes de mantenimiento. La Deuda T\u00e9cnica, simple met\u00e1fora al principio, se ha convertido en una herramienta para medir la calidad y estos costes. Unos cuantos a\u00f1os [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-153","post","type-post","status-publish","format-standard","hentry","category-sonar-cobol"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/153"}],"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=153"}],"version-history":[{"count":2,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/153\/revisions"}],"predecessor-version":[{"id":155,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/153\/revisions\/155"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/media?parent=153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/categories?post=153"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/tags?post=153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}