Upgrade SonarQube

Upgrade SonarQubeHace ya bastante tiempo que no he actualizado mi entorno SonarQube. Al menos seis meses o más: todavía estoy en la versión 4.2, mientras que la última versión disponible es la 4.5.1 LTS (Long Term Support). Por lo tanto una versión sumamente candidata a una instalación.

Este artículo en el blog SonarSource describe los objetivos de dicha versión: Walking the Tightrope: Balancing Agility and Stability. La 4.5.1 no sólo ofrece correcciones, sino también muchos cambios y nuevas características.

Sigue leyendo

3 velas para Qualilogy

Qualiloty Analytics 2014Qualilogy tiene 3 años desde la semana pasada, ya que escribí el primer artículo el 21 de noviembre 2011.

10 000 visitantes únicos en el primer año, 36 000 después de dos años y cerca de 100 000 páginas vistas. Para este tercer aniversario, se superó la línea de los 65 000 visitantes en 90 000 sesiones y 165 000 páginas vistas.

Una vez más, estas cifras de Google Analytics no son absolutamente precisas, especialmente que él se pone en huelga a veces en mi blog, pero en cualquier caso, no son supervaloradas. Sigue leyendo

Aplicación Legacy – Reingeniería con SonarQube

Application Legacy - Réingenierie avec SonarQubeHemos definido nuestro proyecto de reingeniería como la reescritura de nuestra aplicación Legacy con un nuevo lenguaje o su migración a una nueva tecnología, a diferencia de una refactorización que implica la reorganización del código y la corrección de ciertos defectos con el fin de hacerlo más mantenible y reducir la deuda técnica.

También vimos, con SonarQube y el plugin SQALE diferentes planes de refactorización más o menos ambiciosos, desde la resolución de los defectos más críticos hasta reducir la deuda técnica para llevarla a un nivel (rating SQALE) ‘A’.

Sin embargo, ¿qué es lo más interesante y productivo entre un proyecto de reingeniería y una refactorización? Sigue leyendo

Aplicación Legacy – Objetivos de una reingeniería

Application Legacy - Objectifs d'un reengineeringUna reingeniería no siempre significa la reescritura de nuestra aplicación Legacy en un lenguaje generalmente más reciente, pero, sin embargo, es la opción que hemos elegidos.

Cuando se trata ‘simplemente’ de reorganizar el código para que sea más fácil de mantener, pero sin portarlo en una nueva plataforma de software o de hardware – migración de Mainframe-Cobol a una arquitectura Unix por ejemplo – yo prefiero hablar de refactorización.

Os recuerdo que este blog no tiene pretensiones académicas, así que no voy a preocuparme de definiciones meticulosamente exactas, que conducen con mayor frecuencia en discusiones quadripelotectomias (1) entre especialistas que no tienen nada más que hacer que glosar sobre cada palabra. Sigue leyendo

Aplicación Legacy – Deuda técnica y ROI de una refactorización

Application Legacy - Techncal Debt et le ROI d'un RefactoringCuando se trata de retorno de inversión (ROI), no me complico la vida: mi hipótesis es que los costes de mantenimiento se reducen en una proporción igual a la reducción de la deuda técnica.

Es una hipótesis que puedes encontrar simplista y por lo tanto discutible, pero nuestra ambición no es de conseguir una precisión absoluta – sería pretencioso y poco realista – pero proporcionar los elementos que facilitan la decisión.
Y creo que el management prefiere una hipótesis simple y clara en lugar de una fórmula compleja que no es necesariamente más realista.
Sigue leyendo

Aplicación Legacy – Refactoring con el plugin SQALE (II)

LegacyTechDebtRefactoring3Como le hemos visto en el post anterior, no he personalizado el Quality Profile de SonarQube ni el modelo SQALE, para nuestra aplicación Legacy,  según nuestro contexto y  la orientación que queremos para la evaluación du su deuda técnica.

De hecho, hemos utilizado los resultados ‘out of the box’ para ilustrar un posible enfoque en la valoración del coste de refactorización, y presentar al equipo del proyecto y a los managers algunas ideas y áreas de mejora.

En otras palabras, nos interesa más el proceso que los resultados, por lo menos en el contexto de estos artículos.

Veamos ahora unas propuestas de plan de acción. Sigue leyendo

Aplicación Legacy – Refactoring con el plugin SQALE (I)

Application Legacy - Refactoring Technical Debt with the plugin SQALE SonarQubePara hacer una estimación del coste de refactorización de nuestra aplicación Legacy, voy a utilizar el plugin SQALE de SonarQube, utilizado más a menudo con el fin de medir la deuda técnica.

Ya hemos presentado este plugin con una aplicación Legacy PL/SQL. Así que recordaremos solamente que el plugin SQALE se basa en el modelo de calidad SQALE, y también en un método para adaptar este modelo según diversos objetivos de negocio, la tecnología utilizada o el contexto de la aplicación. Sigue leyendo

Aplicación Legacy – ¿Refactorización o reingeniería? (VII)

Qualilogy Legacy Application Refactoring ReengineeringHemos visto en el post anterior cómo usar el dashboard SonarQube para estimar el esfuerzo de pruebas de caracterización, pruebas recomendadas por Michael Feathers en su libro “Working Effectively with Legacy Code”.

Hemos clasificado los componentes de nuestra aplicación Legacy (Microsoft Word 1.1a) en diferentes grupos de funciones: las más simples con Complejidad Ciclomática (CC) de menos de 20 puntos, las complejas y muy complejas hasta 200 puntos de CC, y finalmente 6 componentes ‘monstruosos’.

Hemos definido una fórmula basada en la Complejidad Ciclomática y un factor de legibilidad (Reading Factor%) para evaluar el esfuerzo de pruebas en cada uno de estos grupos. Sigue leyendo

Aplicación Legacy – ¿Refactorización o reingeniería? (VI)

Qualilogy -Application Legacy - Effort de testHemos presentado en los dos articulos anteriores la noción de prueba (unitaria) de caracterización propuesta por Michael Feathers en su libro « Working Effectively with Legacy Code ».

Hemos visto brevemente cómo podemos utilizar este tipo de pruebas con el fin de adquirir los conocimientos del comportamiento de las aplicaciones. Digo brevemente porque, idealmente, tendríamos que desarrollar y presentar algunas pruebas como ejemplo, pero esta serie es ya muy larga. Mejor leer el libro de Michael Feathers.

Estas pruebas facilitarán la transferencia de conocimientos de nuestra aplicación Legacy, y cualquier operación posterior de refactorización o de reingeniería será más rápida y más segura. Sigue leyendo