{"id":81,"date":"2012-01-23T18:23:17","date_gmt":"2012-01-23T17:23:17","guid":{"rendered":"http:\/\/dev.qualilogy.com\/es\/?p=81"},"modified":"2013-01-07T09:31:28","modified_gmt":"2013-01-07T08:31:28","slug":"8-criterios-de-eleccion-de-una-herramienta-de-analisis-de-codigo-22","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/es\/8-criterios-de-eleccion-de-una-herramienta-de-analisis-de-codigo-22\/","title":{"rendered":"8 criterios de elecci\u00f3n de una herramienta de an\u00e1lisis de c\u00f3digo (2\/2)"},"content":{"rendered":"<p>En el primer post de esta serie \u00abC\u00f3mo elegir una herramienta de an\u00e1lisis de c\u00f3digo?\u00bb, hemos mencionado cuatro criterios que encontramos a menudo, aunque su importancia var\u00eda en funci\u00f3n de lo que se quiere hacer.<\/p>\n<h3><!--more--><a href=\"http:\/\/vicken.deviantart.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-992\" title=\"Qual8crit2\" alt=\"\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/01\/Qual8crit2.jpg\" width=\"364\" height=\"242\" \/><\/a><span style=\"text-decoration: underline;\">N\u00famero de tecnolog\u00edas analizadas<br \/>\n<\/span><\/h3>\n<p><span id=\"result_box\" lang=\"es\"><span title=\"Ne choisissez pas un outil uniquement parce qu'il sait aussi analyser du PL1 ou du Powerbuilder si ces technologies repr\u00e9sentent moins de 10% de votre syst\u00e8me d'information.\">No elijas una herramienta, \u00fanicamente porque puede analizar <\/span><\/span><span id=\"result_box\" lang=\"es\"><span title=\"Ne choisissez pas un outil uniquement parce qu'il sait aussi analyser du PL1 ou du Powerbuilder si ces technologies repr\u00e9sentent moins de 10% de votre syst\u00e8me d'information.\">tambi\u00e9n <\/span><\/span><span id=\"result_box\" lang=\"es\"><span title=\"Ne choisissez pas un outil uniquement parce qu'il sait aussi analyser du PL1 ou du Powerbuilder si ces technologies repr\u00e9sentent moins de 10% de votre syst\u00e8me d'information.\"> PL1 o Powerbuilder si estas tecnolog\u00edas representan menos de 10 % del sistema de informaci\u00f3n.<\/span><\/span><\/p>\n<p>No se desarrollan nuevas aplicaciones con estos lenguajes, y se espera que las aplicaciones existentes mueran o sean migradas. Y ya sabes bien que la inversi\u00f3n de un editor de software en una tecnolog\u00eda es proporcional a las ventas: un analizador PL1 jam\u00e1s ofrecer\u00e1 el mismo nivel de funcionalidades que un analizador J2EE. No los pongas en el mismo plano.<\/p>\n<h3><span lang=\"es\"><span title=\"Ne choisissez pas un outil uniquement parce qu'il sait aussi analyser du PL1 ou du Powerbuilder si ces technologies repr\u00e9sentent moins de 10% de votre syst\u00e8me d'information.\"><span style=\"text-decoration: underline;\">N\u00famero de m\u00e9tricas<\/span><\/span><\/span><\/h3>\n<p><span id=\"result_box\" lang=\"es\"><span title=\"La plupart des cas d'utilisation d'un outil d'analyse de code \u2013 Continuous Integration \/ Improvement, Quality Gate, Gestion de l'outsourcing \u2013 s'appuient sur ensemble r\u00e9duit de 10 \u00e1 20 m\u00e9triques.\">La mayor\u00eda de los casos de uso de una herramienta de an\u00e1lisis de c\u00f3digo &#8211; Integraci\u00f3n Continua, Mejora de Calidad, Quality Gate y Gesti\u00f3n de outsourcing &#8211; se basa en un conjunto reducido de 10 a 20 m\u00e9tricas. <\/span><span title=\"Identifiez les m\u00e9triques critiques pour les Use Cases que vous souhaitez impl\u00e9menter.\">Identificad las m\u00e9tricas cr\u00edticas para los casos de uso que querreis implementar. <\/span><span title=\"Identifiez ensuite les m\u00e9triques qui vous paraissent int\u00e9ressantes ou utiles.\">Luego los indicadores que parecen interesantes o \u00fatiles. <\/span><span title=\"Le reste est du \u2018nice to have\u2019.\">El resto es \u00abnice to have\u00bb.<\/span><\/span><\/p>\n<h3><span style=\"text-decoration: underline;\"><span id=\"result_box\" lang=\"es\"><span title=\"Possibilit\u00e9 de cr\u00e9er de nouvelles m\u00e9triques\">Capacidad de crear nuevas m\u00e9tricas<\/span><\/span><\/span><\/h3>\n<p><span id=\"result_box\" lang=\"es\"><span title=\"Pourquoi 90% des utilisateurs d'un outil d'analyse de code sont satisfaits des m\u00e9triques fournies ?\">\u00bfPor qu\u00e9 el 90% de los usuarios de una herramienta <\/span><\/span><span id=\"result_box\" lang=\"es\"><span title=\"Pourquoi 90% des utilisateurs d'un outil d'analyse de code sont satisfaits des m\u00e9triques fournies ?\">de an\u00e1lisis de c\u00f3digo son satisfechos con las m\u00e9tricas por defecto? Porque corresponden a est\u00e1ndares del mercado. No jugues al aprendiz de brujo creando tus propios est\u00e1ndares: esto viene con un coste, de desarrollo, de mantenimiento, de implementaci\u00f3n y de soporte a cada upgrade de la herramienta.<\/span><\/span><\/p>\n<h3><span id=\"result_box\" lang=\"es\"><span style=\"text-decoration: underline;\"><span title=\"Liens entre composants\">V\u00ednculos entre los componentes<\/span><\/span><\/span><\/h3>\n<p><span title=\"Sur les 3 technologies le plus souvent rencontr\u00e9es \u2013 J2EE, Cobol, SAP \u2013 seule la premi\u00e8re est multi-tiers.\">De las tres tecnolog\u00edas m\u00e1s encontradas &#8211; J2EE, Cobol, SAP &#8211; solamente la primera es multi-capas. <\/span><span title=\"Si vous utilisez des frameworks J2EE, des m\u00e9triques bas\u00e9es sur les liens entre composants peuvent s'av\u00e9rer utiles.\">Si utilizas frameworks J2EE, las m\u00e9tricas basadas en la relaci\u00f3n entre los componentes pueden ser \u00fatil. <\/span><span title=\"Retenez n\u00e9anmoins qu'elles repr\u00e9sentent une faible proportion du total des r\u00e8gles, et que leur utilisation pr\u00e9sente un co\u00fbt, notamment dans la validation des false-positives.\">Recuerdate, sin embargo, que representan una peque\u00f1a proporci\u00f3n del total de las reglas, y que tienen un coste, especialmente de validaci\u00f3n de falsos positivos.<\/span><\/p>\n<p>Veamos ahora 3 criterios que creo realmente importantes.<\/p>\n<h3><span style=\"text-decoration: underline;\">Modelos multiples de Calidad<\/span><\/h3>\n<p>El conjunto de las m\u00e9tricas y su organizaci\u00f3n en diferentes factores constituyen un modelo de Calidad, la tabla de medidas seg\u00fan la cual vas evaluando la calidad de las aplicaciones. M\u00e1s flexibilidad en la constituci\u00f3n de diferentes modelos, m\u00e1s f\u00e1cil la evaluaci\u00f3n.<\/p>\n<p>\u00bfA partir de cu\u00e1ntas l\u00edneas un programa Cobol es muy voluminoso? \u00bfA partir de cu\u00e1ntos puntos de complejidad (CC) es muy complejo? Los programas Batch son m\u00e1s pesados que los programas TP (transaccionales) y es recomendable poder afectar umbrales diferentes sobre estas m\u00e9tricas. Si no, un equipo de proyecto que debe efectuar el mantenimiento de una aplicaci\u00f3n Batch ser\u00e1 penalizado frente a un equipo que administra una aplicaci\u00f3n TP.<\/p>\n<p>Otros ejemplos:<\/p>\n<ul>\n<li>Una base de datos crece con la acumulaci\u00f3n de datos y, en el curso del tiempo, algunas &#8216;bad practices&#8217; de programaci\u00f3n SQL comenzan a producir efectos nefastos para el rendimiento de las aplicaciones. No esperas a que se pongan en el rojo con los umbrales por defecto: poder subir el nivel de criticidad permite una gesti\u00f3n proactiva de los riesgos para el rendimiento.<\/li>\n<li>\u00bfSabes cu\u00e1nto cuesta un proyecto de upgrade de version SAP? \u00bfSabes el n\u00famero de d\u00edas necesarios para identificar los componentes que dejar\u00e1n de funcionar porque utilizan sintaxis no soportadas por la nueva versi\u00f3n o porque acceden al n\u00facleo de SAP? O tienes una aplicaci\u00f3n C++ destinada a manejar cajas registradoras de diferentes marcas con sistemas operativos distintos. En tales casos, la portabilidad del c\u00f3digo se hace el factor m\u00e1s cr\u00edtico de tu modelo Calidad, aunque no lo es nunca usualmente.<\/li>\n<\/ul>\n<p>No existe un Quality Model \u00fanico: ser\u00eda como medir manzanas y patatas. Poder definir y escoger un modelo de calidad adaptado a una aplicaci\u00f3n es un criterio m\u00e1s importante que los de la lista anterior.<\/p>\n<h3><span style=\"text-decoration: underline;\">Personalizaci\u00f3n del dashboard<br \/>\n<\/span><\/h3>\n<p>Los resultados de las m\u00e9tricas calculadas con el c\u00f3digo fuente de las aplicaciones aparecen en un &#8216;dashboard&#8217; o panel de control del pilotaje de la calidad. La capacidad de personalizar este dashboard basandose en casos de uso, tecnolog\u00edas o incluso una aplicaci\u00f3n es un factor de \u00e9xito de tu proyecto Calidad.<\/p>\n<p>Imaginemos que se te pide efectuar una auditor\u00eda de una aplicaci\u00f3n cr\u00edtica y presentar los resultados a los arquitectos y al equipo de proyecto. En el \u00faltimo momento, antes de entrar en la sala, te anuncian que el director inform\u00e1tico estar\u00e1 presente. \u00c9ste llega para sumergirse inmediatamente en la lectura de sus e-mails en su Blackberry. \u00bfQue haces para interesarle por tu presentaci\u00f3n?<\/p>\n<p>Simple. Muestrale cu\u00e1nto le cuesta esta aplicaci\u00f3n.<\/p>\n<p>Un arquitecto Java o un responsable Calidad sabe lo que es la Complejidad Cyclomatica o una m\u00e9trica tal como LCOM4. Puedo pues presentarles un dashboard con ciertas m\u00e9tricas (LOC, CC, tasa de comentarios o de c\u00f3digo duplicado), pasar a la lista de los defectos m\u00e1s graves y concluir con una evaluaci\u00f3n cualitativa y cuantitativa.<\/p>\n<p>Para un director inform\u00e1tico, un responsable de desarrollo o un manager Outsourcing, voy a comenzar con una evaluaci\u00f3n de costes. Quiero mostrar la deuda t\u00e9cnica en la parte superior de la primera pagina del dashboard, bajar en ejes funcionales tales como la mantenibilidad o la fiabilidad de la aplicaci\u00f3n, luego una lista de indicadores presentes en un SLA (Acuerdo de nivel de servicio) y terminar con un plan de acci\u00f3n.<\/p>\n<p>Imagina que puedes construir cualquier panel de control por drag and drop, con el usuario \u00e1 tu lado, dici\u00e9ndole: &#8216; \u00bfEso quieres? &#8216;, &#8216; \u00bfEste diagrama all\u00ed? &#8216;, &#8216; \u00bfCu\u00e1les indicadores te interesan primero? &#8216;.<\/p>\n<p>Eso s\u00ed es un criterio importante.<\/p>\n<h3><span style=\"text-decoration: underline;\">Integraci\u00f3n con otras herramientas<\/span><\/h3>\n<p>Ya lo sabes, lo m\u00e1s antes un defecto es identificado, lo menos es costoso a resolver. Y lo m\u00e1s antes para identificar un defecto, es cuando el programador acaba de hacerlo. As\u00ed como dec\u00eda un responsable: \u00absi tengo 30 desarrolladores trabajando en una aplicaci\u00f3n, no voy a esperar al final de la semana para arreglar sus bugs\u00bb. A 5 d\u00edas a la semana y por programador, esto hace 150 d\u00edas de defectos que se acumulan. Demasiado tarde.<\/p>\n<p>Idealmente, deseamos:<\/p>\n<ul>\n<li>Poder administrar los componentes de una aplicaci\u00f3n en un repositorio de gesti\u00f3n de versi\u00f3n o de configuraci\u00f3n.<\/li>\n<li>Poder lanzar un &#8216;build&#8217; (nueva versi\u00f3n) de la aplicaci\u00f3n cada vez que un desarrollador crea una nueva versi\u00f3n de un componente en el repositorio. De esa manera, se puede comprobar que la versi\u00f3n compila correctamente y poner en marcha autom\u00e1ticamente un an\u00e1lisis del c\u00f3digo fuente con el fin de identificar cuanto antes todo nuevo defecto.<\/li>\n<li>Disponer de alertas autom\u00e1ticas cuando aparecen ciertos defectos y pedir una correcci\u00f3n.<\/li>\n<li>Actualizar autom\u00e1ticamente la lista de tareas de cada desarrollador con las correcciones que hay que efectuar.<\/li>\n<\/ul>\n<p>Para m\u00e1s detalles, tambi\u00e9n ver &#8216;<a title=\"Mejora contin\u00faa de la calidad\" href=\"http:\/\/qualilogy.com\/es\/mejora-continua-de-la-calidad\" target=\"_blank\">Mejora contin\u00faa de la calidad<\/a>&#8216;.<\/p>\n<h3><span style=\"text-decoration: underline;\">Coste<\/span><\/h3>\n<p>Evidentemente, es un criterio determinante de una elecci\u00f3n de herramientas, y se necesitar\u00eda un post entero con el fin de discutir sobre eso. Simplemente quiero mencionar la aparici\u00f3n de nuevos modelos de coste.<\/p>\n<p>Todo el mundo conoce el modelo tradicional basado en una licencia por usuario que se caracteriza por un coste inicial m\u00e1s o menos elevado &#8211; seg\u00fan el n\u00famero de licencias, de m\u00f3dulos adicionales y de otros factores tales como finales del trimestre o del a\u00f1o cuando un editor de software est\u00e1 m\u00e1s f\u00e1cilmente dispuesto \u00e1 algunas concesiones tarifarias.<\/p>\n<p>El mundo Open Source trajo nuevas pr\u00e1cticas con una licencia por servidor de an\u00e1lisis y no por usuario, y un modelo econ\u00f3mico orientado al servicio: no pagas el mantenimiento sino un soporte de nivel m\u00e1s alto. \u00bfCu\u00e1l es la diferencia? Puedes dejar de pagar sin perder por eso el beneficio de nuevas actualizaciones o el soporte de la comunidad.<br \/>\nPor fin, vemos aparecer cada vez m\u00e1s soluciones de tipo SaaS, con un coste a la utilizaci\u00f3n o en forma de abono.<\/p>\n<p>Hice algunas simulaciones y le animo a hacer lo mismo. Algunas conclusiones, demasiado r\u00e1pidas y que necesitar\u00edamos afinar, pero:<\/p>\n<ul>\n<li>El modelo &#8216;licencia&#8217; es m\u00e1s costoso que el modelo &#8216;suscripci\u00f3n&#8217; (Open Source \/ Saas) en los primeros a\u00f1os; el modelo &#8216;suscripci\u00f3n&#8217; puede &#8211; eventualmente &#8211; volverse m\u00e1s costoso al cabo de un per\u00edodo bastante largo (8 &#8211; 10 a\u00f1os m\u00ednimo).<\/li>\n<li>El \u00e9xito del modelo &#8216;suscripci\u00f3n&#8217; es fuertemente dependiente de la tasa de renovaci\u00f3n.<\/li>\n<\/ul>\n<p>Una diferencia del 5 % en la renovaci\u00f3n de las suscripciones impacta much\u00edsimo la rentabilidad y el valor de un editor tipo SaaS u Open-Source. Entiendes por qu\u00e9 \u00e9l tiene inter\u00e9s en cuidarte.<\/p>\n<p>En conclusi\u00f3n, me parece importante definir los criterios de elecci\u00f3n de una herramienta de an\u00e1lisis de c\u00f3digo con una identificaci\u00f3n precisa de las necesidades, centrada en el portafolio de aplicationes y los casos de utilizaci\u00f3n que se desea implementar.<\/p>\n<p>Intentar\u00e9 ilustrar algunos de estos casos en el futuro. En la espera, no dud\u00e9is en dejar vuestros comentarios en el blog.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el primer post de esta serie \u00abC\u00f3mo elegir una herramienta de an\u00e1lisis de c\u00f3digo?\u00bb, hemos mencionado cuatro criterios que encontramos a menudo, aunque su importancia var\u00eda en funci\u00f3n de lo que se quiere hacer.<\/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-81","post","type-post","status-publish","format-standard","hentry","category-analisis-de-codigo"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/81"}],"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=81"}],"version-history":[{"count":4,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/81\/revisions"}],"predecessor-version":[{"id":199,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/81\/revisions\/199"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/media?parent=81"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/categories?post=81"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/tags?post=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}