Tengo que auditar una aplicación Java/J2ee web grande que ha evolucionado durante varios años . Ha sido escrito por otra empresa, no para la que estoy trabajando. En es difícil evolucionar y mantener su estado actual, las nuevas funcionalidades de son difíciles de agregar y a menudo provocan errores que en algún momento aparecen en la producción de . Parece que hay algún código de copia/pegado que dio como resultado la duplicación del código. La aplicación actual es algún tipo de compra en línea con contenido cms por aquí y por allá. Es principalmente Struts y algunos Spring en partes más nuevas del código, tal vez algunos ejbs lanzados para buena medida. Hay algunas pruebas unitarias disponibles, pero no muchas. Estas son cosas que me han dicho, aún no he visto el código real.Cuál es el mejor enfoque para auditar una gran aplicación web java/j2ee
Mi compañía hará una proposición para reescribir partes de esta aplicación para reducir la complejidad de , mejorar la calidad y la modularidad, y hacer posible agregar nuevas funcionalidades sin regresiones. Antes de hacer ningún comentario, les gustaría tener algún tipo de aprecio de la calidad del código existente y calcular cuánto de él puede ser reutilizado, para que tenga más que una conjetura en lo que tendrá que ser hecho - reescritura completa o parcial reescritura.
El problema es que tendré que hacer esto en un período muy corto (un par de días), así que estoy tratando de elaborar un plan para lo que se puede hacer en tan poco tiempo. Lo que estoy thiking es:
- la salida "básicos" cosas - tratamiento de excepciones, el registro
- a extraer el nivel de estratificación (vistas, controladores, capa DAO)
- medir la cobertura real de la unidad de prueba
- quizá ejecutar algunas Checkstyle, Findbugs y PMD en los proyectos
- ...
Así que la pregunta real es qué otras cosas sh ¿debería tomar en cuenta/verificar/medir/etc.?
no estoy seguro de qué tipo de números que pudiera salir de esto y si realmente significaría algo, tengo la sensación de que lo que la gestión está pidiendo es una especie de enfoque equivocado, por lo que la segunda pregunta sería: ¿alguien tiene una mejor idea?
Agradeceré cualquier idea, sugerencia, comentario al respecto.
Editar: Voy a ser la adición de dos detectores de código muerto a la mezcla: UCD y DCD
Realmente tiene las manos ocupadas. No confiaría en las pruebas unitarias existentes sin verificarlas. Definitivamente va a necesitar algún tipo de prueba de regresión para asegurarse de que el código reescrito todavía cumpla con los requisitos funcionales.Los elementos en su lista son un buen comienzo, especialmente las herramientas de análisis estático que mencionó. – rich