{"id":1051,"date":"2014-03-08T09:32:34","date_gmt":"2014-03-08T08:32:34","guid":{"rendered":"http:\/\/qualilogy.com\/es\/?p=1051"},"modified":"2014-03-10T11:27:59","modified_gmt":"2014-03-10T10:27:59","slug":"analisis-plsql-con-sonarqube-evaluar-la-calidad-3","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/es\/analisis-plsql-con-sonarqube-evaluar-la-calidad-3\/","title":{"rendered":"An\u00e1lisis PL\/SQL con SonarQube \u2013 Evaluar la calidad (3\/3)"},"content":{"rendered":"<p><a href=\"http:\/\/500px.com\/Vicken\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1698\" alt=\"PLSQL_TechnicalDebt\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/03\/PLSQL_TechnicalDebt.jpg\" width=\"283\" height=\"450\" \/><\/a>\u00daltimo post de nuestra serie sobre el <a href=\"http:\/\/qualilogy.com\/es\/category\/sonar\/sonarqube-plsql\/\" target=\"_blank\">an\u00e1lisis de la calidad de c\u00f3digo PL\/SQL con SonarQube<\/a>.<\/p>\n<p>La evaluaci\u00f3n de la calidad de una aplicaci\u00f3n no es s\u00f3lo el an\u00e1lisis de c\u00f3digo: eso, cualquiera puede hacerlo. El trabajo del consultor se basa en las siguientes preguntas: qu\u00e9, por qu\u00e9, c\u00f3mo, cu\u00e1nto.<\/p>\n<ul>\n<li>Qu\u00e9: analizar los resultados. El <a href=\"http:\/\/qualilogy.com\/es\/analisis-plsql-con-sonarqube-evaluar-la-calidad-1\/\" target=\"_blank\">tama\u00f1o<\/a>, <a href=\"http:\/\/qualilogy.com\/es\/analisis-plsql-con-sonarqube-evaluar-la-calidad-2\/\" target=\"_blank\">la complejidad y la duplicaci\u00f3n de c\u00f3digo<\/a>, esto es lo que hemos visto en los articulos anteriores. Se examinan las cifras globales, el promedio, as\u00ed como las tendencias en el tiempo, si hay varias versiones. Luego nos fijamos en las principales violaci\u00f3nes de buenas pr\u00e1cticas, principalmente los Blockers y Criticals.<\/li>\n<li>\u00bfPor qu\u00e9 estos resultados?: investigamos las causas de los datos en el cuadro de mando SonarQube, el origen de los resultados encontrados.<\/li>\n<li>\u00bfC\u00f3mo remediar?: proponer un plan de acci\u00f3n. De hecho, varias propuestas de acci\u00f3n. M\u00e1s adelante veremos que pensamos en diferentes planes en el corto, mediano y largo plazo.<\/li>\n<li>\u00bfCu\u00e1nto cuesta?: evaluar el coste de cada plan.<!--more--><\/li>\n<\/ul>\n<p>Por ejemplo:<\/p>\n<ul>\n<li>Qu\u00e9: encontramos un defecto cr\u00edtico para la seguridad.<\/li>\n<li>Por qu\u00e9: es probable que al menos una persona en el equipo de proyecto no conoce esta regla. O esta buena pr\u00e1ctica se conoce, pero siempre es posible un error por falta de atenci\u00f3n.<\/li>\n<li>C\u00f3mo: la remediaci\u00f3n puede consistir en una simple correcci\u00f3n del defecto en el c\u00f3digo o una capacitaci\u00f3n en estas buenas pr\u00e1cticas.<\/li>\n<li>C\u00f3mo : aqu\u00ed es donde el plugin SQALE ser\u00e1 \u00fatil.<\/li>\n<\/ul>\n<p>No voy a explicar en detalle el m\u00e9todo SQUALE y el plugin SQALE de SonarQube. Tal vez tendremos la oportunidad de hacerlo en un futuro post, pero ya hay suficiente informaci\u00f3n sobre el tema. Le aconsejo ver estos enlaces:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.sqale.org\/\" target=\"_blank\">http:\/\/www.sqale.org\/<\/a><\/li>\n<li><a href=\"http:\/\/www.sonarqube.org\/sqale-models-more-than-just-tiny-cities\/\" target=\"_blank\">http:\/\/www.sonarqube.org\/sqale-models-more-than-just-tiny-cities\/<\/a><\/li>\n<\/ul>\n<p>Para nuestros c\u00e1lculos, consideramos que el equipo del proyecto para mantener este c\u00f3digo SQL se compone de 3 personas. En general , una aplicaci\u00f3n de tipo Legacy no cambia con mucha frecuencia, por lo que consideramos que el equipo produce cuatro versiones por a\u00f1o.<br \/>\nRecordemos que un a\u00f1o-hombre es igual a 52 semanas, menos las vacaciones y otras fiestas (u otro tipo de ausencias. por enfermedad por exjempo), o 45 semanas o 225 d\u00edas (en Francia). Esta cifra puede variar entre pa\u00eds, pero no tanto.<\/p>\n<h2>La deuda t\u00e9cnica en PL\/SQL<\/h2>\n<h3>Plan de corto plazo &#8211; Quitar las amenazas<\/h3>\n<p>El m\u00e1s importante y prioritario es eliminar todo lo que constituye una amenaza para el usuario final, lo m\u00e1s r\u00e1pido y lo m\u00e1s ante posible. Este es el nivel m\u00ednimo, esencial, en corto plazo entonces.<\/p>\n<p>Hemos centrado nuestro Perfil de Calidad en violaci\u00f3nes de seguridad, robustez y rendimiento, que tienen impacto con el usuario. Obviamente los bloqueadores y defectos criticos son las amenazas m\u00e1s graves.<\/p>\n<p>El plugin SQALE nos permite comprobar el coste de remediaci\u00f3n para ellos: unos 113 d\u00edas.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/03\/BlockersCriticals.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1690\" alt=\"BlockersCriticals\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/03\/BlockersCriticals.jpg\" width=\"582\" height=\"179\" \/><\/a><\/p>\n<p>El plan a corto plazo ser\u00e1 un proyecto de refactorizaci\u00f3n de 6 meses\/hombre, o sea dos meses para las 3 personas de nuestro equipo de proyecto.<\/p>\n<p>Cu\u00e1ndo: tan pronto como sea posible, para la pr\u00f3xima versi\u00f3n dentro de 3 meses. Es perfectamente aceptable presentar a los stakeholders el plan de posponer las evoluciones no esenciales en la versi\u00f3n siguiente, para que el equipo de proyecto pueda realizar los dos meses de refactorizaci\u00f3n primero, y luego trabajar el \u00faltimo mes en las mayores funcionalidades. Si son demasiadas, es posible jugar con el tiempo, desplazando la pr\u00f3xima versi\u00f3n en 4 meses. O hacer una versi\u00f3n &#8216;refactorizada&#8217; en 2 meses, y la siguiente en 4 meses.<\/p>\n<p>Beneficios: una aplicaci\u00f3n m\u00e1s segura, m\u00e1s robusta y eficiente, gracias a la eliminaci\u00f3n de las amenazas m\u00e1s urgentes y m\u00e1s graves.<\/p>\n<h3>Plan de mediano plazo &#8211; Alinear TI con los objetivos de deuda t\u00e9cnicas<\/h3>\n<p>Nunca debemos olvidar que la estrategia de TI, y entonces la gesti\u00f3n del portafolio de aplicaciones, siempre se alinea con la estrategia de negocio. Un mercado puede ser:<\/p>\n<ul>\n<li>Maduro, con una estrategia de preservaci\u00f3n de la cuota de mercado y de los m\u00e1rgenes financieros, por lo que el cumplimiento de los presupuestos y los costes ser\u00e1n un objetivo esencial de la estrategia de TI. Para el equipo del proyecto, esto significa centrarse en la mantenibilidad y la capacidad de evoluci\u00f3n de la aplicaci\u00f3n. No deje que se deriva la deuda t\u00e9cnica para estos dos factores.<\/li>\n<li>Nuevo, con una estrategia de ganancias de cuotas de mercado, time-to-market de las aplicaciones, robustez y rendimiemto: esta es la orientaci\u00f3n que hemos dado a nuestro perfil de calidad y el an\u00e1lisis de la calidad de la aplicaci\u00f3n.<\/li>\n<\/ul>\n<p>Por consiguiente, nuestro plan de mediano plazo tendr\u00e1 como objetivo corregir todos los defectos que afectan a la seguridad, el rendimiento y la fiabilidad, y no s\u00f3lo a los Blockers y Criticals. La pir\u00e1mide SQALE nos permite calcular el coste de este plan de mediano plazo:<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/03\/TechDebPyramid.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1692\" alt=\"TechDebPyramid\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/03\/TechDebPyramid.jpg\" width=\"578\" height=\"248\" \/><\/a><\/p>\n<p>Un total de 395,6 d\u00edas. Con 3 personas, esto es un trabajo de 7 meses completos. Dif\u00edcil de parar el proyecto durante m\u00e1s de la mitad del a\u00f1o.<\/p>\n<p>Sin embargo , estos 395 d\u00edas incluyen los 113 del plan a corto plazo, por lo que es en realidad un periodo adicional de 282 d\u00edas, o 15 meses de una persona o cinco meses para cada una de las tres personas del equipo de el proyecto. Podemos pensar en varias sugerencias:<\/p>\n<ul>\n<li>Limitar el n\u00famero de nuevas funcionalidades en las pr\u00f3ximas cinco versiones para liberar un mes en cada versi\u00f3n para cada miembro del equipo y que se concentren en estas remediaciones. Es posible si esta aplicaci\u00f3n ya no evoluciona demasiado y si los usuarios requieren mejoras en la fiabilidad y el rendimiento.<\/li>\n<li>Si muchas nuevas caracter\u00edsticas son cr\u00edticas y que la carga de cambio no se puede reducir, entonces los stakeholders deben estar dispuestos a pagar para agregar una cuarta persona en el equipo del proyecto, que se centrar\u00e1 exclusivamente en la correcci\u00f3n de estos defectos en las 5 pr\u00f3ximas entregas.<\/li>\n<\/ul>\n<p>Como se puede ver, este plan es en el horizonte de los pr\u00f3ximos 18 meses, incluyendo el plan a corto plazo, pero es posible presentar diferentes hip\u00f3tesis, m\u00e1s aceptables para las partes interesadas y para un Director de TI preocupado con su presupuesto. Una vez m\u00e1s, el plugin SQALE permite que vayamos a lo esencial.<\/p>\n<p>En el siguiente SQALE Sunburst, podemos ver que, en t\u00e9rminos de rendimiento (eficiencia ), se necesitan 104 d\u00edas para corregir violaci\u00f3nes de una regla relativa a los tipos de datos.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/03\/PLSQLSunburst.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1693\" alt=\"PLSQLSunburst\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/03\/PLSQLSunburst.jpg\" width=\"592\" height=\"642\" \/><\/a><\/p>\n<p>Creo que es en la versi\u00f3n Oracle 11g que un nuevo tipo de datos ha mejorado hasta en un 50% el rendimiento de algunos procedimientos almacenados. Si el tiempo de respuesta de la aplicaci\u00f3n no es un problema importante para los usuarios, entonces podemos retrasar la remediaci\u00f3n de esta regla Major a m\u00e1s largo plazo y ganar 104 d\u00edas o 21 semanas, alrededor de 7 semanas por cada miembro del equipo de proyecto. Por supuesto, la idea no es de reducir el plan de mediano plazo a corto plazo, sino concentrarse en lo esencial, con la ayuda de este gr\u00e1fico donde se muestra la distribuci\u00f3n de la deuda t\u00e9cnica sobre diferentes tipos de riesgos para la aplicaci\u00f3n.<\/p>\n<h3>Plan a largo plazo &#8211; Alinear la deuda t\u00e9cnica con la estrategia de aplicaci\u00f3n<\/h3>\n<p>El plan a largo plazo debe tratar de una pregunta obvia : \u00bfqu\u00e9 hacer con este\u00a0<a href=\"http:\/\/qualilogy.com\/fr\/analyse-plsql-avec-sonarqube-evaluer-la-qualite-1\/\" target=\"_blank\">componente monstruoso <\/a>que integra toda la l\u00f3gica de negocio de la aplicaci\u00f3n? El plugin SQALE calcula que la deuda t\u00e9cnica para este componente es 1 431,9 d\u00edas, el 75 % de la deuda t\u00e9cnica total para la aplicaci\u00f3n (m\u00e1s de 6 a\u00f1os).<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/03\/PLSQLSqaleHighest.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1696\" alt=\"PLSQLSqaleHighest\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/03\/PLSQLSqaleHighest.jpg\" width=\"583\" height=\"193\" \/><\/a><\/p>\n<p>De hecho , la pregunta es \u00bfqu\u00e9 hacer con esta aplicaci\u00f3n? Todo depende del nivel de criticidad.<\/p>\n<p>Si una aplicaci\u00f3n con una deuda t\u00e9cnica muy alta no es cr\u00edtica, la soluci\u00f3n es simple: abandonala. Sigue a costar m\u00e1s mantenerla que sustituirla, ya sea por un software o por una aplicaci\u00f3n desarrollada en una nueva tecnolog\u00eda m\u00e1s reciente. Debido a que la aplicaci\u00f3n no es cr\u00edtica, no es esencial mantener el control o el conocimiento, por lo que podemos, o bien externalizar este desarrollo a una empresa de outsourcing, o realizar un RPF para poner en competici\u00f3n editores de software e integradores. En todos los casos, el partner seleccionado mantendr\u00e1 la soluci\u00f3n, normalmente con menor coste, pero con la complejidad a\u00f1adida de gestionar un proveedor externo.<\/p>\n<p>Si la aplicaci\u00f3n es cr\u00edtica, entonces necesitar\u00e1s manejar el problema por t\u00ed mismo, ya que no quieres dejar a un tercero la gesti\u00f3n del riesgo de negocio que esta aplicaci\u00f3n puede representar para la empresa. Hay entonces dos posibilidades: una refactorizaci\u00f3n de la aplicaci\u00f3n o una reescritura completa.<\/p>\n<p>En este caso, corregir todos los defectos encontrados en este componente monstruoso y dejarlo tal como es, eso no tiene mucho sentido. La refactorizaci\u00f3n debe centrarse con prioridad en un nuevo dise\u00f1o de la aplicaci\u00f3n, que en realidad promueve la soluci\u00f3n de reescribirla con una nueva tecnolog\u00eda.<\/p>\n<p>Hemos visto que esta base de datos contiene 687 tablas, sin contar las vistas, pero con una importante duplicaci\u00f3n de estructuras de datos. Mi recomendaci\u00f3n para un plan a largo plazo ser\u00e1 la siguiente:<\/p>\n<ul>\n<li>Llevar a cabo una retro-documentaci\u00f3n para enumerar los diferentes componentes presentes en esta aplicaci\u00f3n y los enlaces entre ellos.<\/li>\n<li>\u00a0Para llevar a cabo un redise\u00f1o conceptual y una mapa de los objetos funcionales, inicialmente en el mismo per\u00edmetro, luego tomando en cuenta los cambios funcionales deseados por los usuarios.<\/li>\n<\/ul>\n<p>Es posible subcontratar este trabajo a un proveedor de servicios, sobre todo si el equipo de proyecto actual ha experimentado un turnover importante durante la vida de esta aplicaci\u00f3n y ha perdido un poco el conocimiento de ella.<\/p>\n<p>Sin embargo, este proveedor debe estar equipado con herramienta para automatizar esta retro-documentaci\u00f3n: 150.000 l\u00edneas de c\u00f3digo y de comentarios no es enorme, pero este trabajo no puede ser manual. Se necesita una herramienta que permite rastrear todos componentes y sus relaciones en una cartograf\u00eda de la aplicaci\u00f3n.<\/p>\n<p>Pues esto es estupendo: SonarSource tiene previsto un proyecto para una herramienta de este tipo. Nuestra aplicaci\u00f3n PL\/SQL ser\u00e1 entonces un buen candidato para una prueba de esta futura producci\u00f3n de SonarSource.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00daltimo post de nuestra serie sobre el an\u00e1lisis de la calidad de c\u00f3digo PL\/SQL con SonarQube. La evaluaci\u00f3n de la calidad de una aplicaci\u00f3n no es s\u00f3lo el an\u00e1lisis de c\u00f3digo: eso, cualquiera puede hacerlo. El trabajo del consultor se basa en las siguientes preguntas: qu\u00e9, por qu\u00e9, c\u00f3mo, cu\u00e1nto. Qu\u00e9: analizar los resultados. El [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"class_list":["post-1051","post","type-post","status-publish","format-standard","hentry","category-sonarqube-plsql"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/1051"}],"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=1051"}],"version-history":[{"count":21,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/1051\/revisions"}],"predecessor-version":[{"id":1053,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/1051\/revisions\/1053"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/media?parent=1051"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/categories?post=1051"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/tags?post=1051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}