java - ejemplos - patrones de diseño para aplicaciones web
¿Hay alguna herramienta para detectar patrones arquitectónicos y de diseño en el código? (4)
Nuestro equipo está realizando ingeniería inversa en una aplicación con documentación prácticamente inexistente. Queremos detectar si hay un uso de patrones arquitectónicos o de diseño. Puede comprender que esta aplicación es grande, por lo que mirar manualmente no tiene sentido para nosotros.
Esta aplicación está escrita en Java y utilizamos Eclipse para IDE, por lo que puede ser un complemento para Eclipse.
Hemos encontrado algunas herramientas, como "Patrones de diseño, detección de similitudes de puntuación", pero no está funcionando muy bien.
Entonces, ¿tales herramientas existen?
¿Has intentado ejecutar javadoc en la base de código? Eso le daría una idea si la estructura (o la falta de ella) del código. Si eres realmente afortunado, los patrones de diseño pueden mencionarse en los comentarios.
Hay muchas otras herramientas para descubrir la jerarquía de clases: ClassCycle, Macker, JDepend, etc.
La detección automática de patrones de diseño sería bastante difícil, creo, porque un patrón de diseño tiene muchas posibilidades de variación.
Dudo que haya herramientas para detectar patrones o diseños en el código
¡Code Bubbles podría ayudar drásticamente al esfuerzo de ingeniería inversa, cuando eventualmente salga!
Últimamente, encuentro extremadamente útil usar herramientas de cobertura de código para identificar qué partes del código se llaman cuando se inicia una acción de usuario / sistema en particular. No es para lo que fueron diseñadas las herramientas, pero cada vez lo encuentro más efectivo que otros enfoques. (Puede publicar un enlace a los detalles aquí si hay demanda para ello)
El siguiente mejor enfoque es usar una herramienta como MaintainJ para rastrear la ejecución del código. Este enlace documenta ese enfoque (cuando el autor habla sobre aspectos) y varios otros enfoques, y habiéndolos probado todos, la cobertura es lo que me he conformado.
No creo que este tipo de herramientas existan, porque eso sería bastante complejo. Otro enfoque podría ser generar algo así como un diagrama UML. Esto debería dar una abstracción del código que podría ayudarlo a identificar el patrón de diseño.
Si tiene el código fuente de la aplicación, lo más probable es que esté reingeniería , en lugar de ingeniería inversa . (Esto último significa recuperar algún tipo de código de nivel superior de máquina o bytecode).
En cualquier caso, desea comprender la aplicación, es decir, construir un modelo mental de ella en su mente. Me temo que las herramientas automáticas no son de mucha ayuda en esto. ¿De qué le serviría obtener una lista de supuestos patrones en el código? ¿Te ayudaría a comprender mejor qué hace realmente el código y por qué ? Especialmente teniendo en cuenta las altas posibilidades de patrones mal utilizados en el código heredado :-(
Al final, debes comenzar a leer el código de todos modos. Pero aquí hay otro hilo similar que con suerte ayuda en la abrumadora tarea de hacerse cargo de una aplicación heredada.