Je dois auditer une application web Java/J2ee de grande taille qui a évolué sur plusieurs années . Il a été écrit par une autre société, pas celle pour laquelle je travaille. En c'est l'état actuel, il est devenu difficile d'évoluer et de maintenir, les nouvelles fonctionnalités sont difficiles à ajouter et conduisent souvent à des bugs qui apparaissent parfois dans la production . Il semble y avoir du code copié/collé qui a entraîné la duplication de code. L'application actuelle est une sorte de magasinage en ligne avec du contenu de type cms ici et là. Il s'agit principalement de Struts et du ressort dans les nouvelles parties du code, peut-être quelques ejbs lancées pour bonne mesure. Certains tests unitaires sont disponibles, mais pas beaucoup. Ce sont des choses qu'on m'a dites, je n'ai pas encore vu le code réel.Quelle est la meilleure approche pour auditer une grande application web java/j2ee?
Mon entreprise fera une proposition pour réécrire des parties de cette application afin de réduire la complexité, améliorer la qualité et la modularité, et permettre d'ajouter nouvelles fonctionnalités sans régressions. Avant de faire un engagement, ils aimeraient avoir une sorte d'appréciation de la qualité du code existant et d'évaluer combien de celui-ci peut être réutilisé, afin d'avoir plus qu'une estimation de ce qu'il doit y avoir done - réécriture complète ou partielle réécriture. Le hic, c'est que je vais devoir le faire dans une très courte période (quelques jours), donc je suis essayant de trouver un plan pour ce qui peut être fait en si peu de temps. Ce que je suis thiking est:
- vérifier les choses « de base » - traitement des exceptions, l'exploitation forestière
- vérifier le niveau de superposition (vues, contrôleurs, couche dao)
- mesurer la couverture réelle de la tests unitaires
- courent peut-être un peu Checkstyle, Findbugs et PMD sur les projets
- ...
la question réelle est ce que d'autres choses sh ould je prends en compte/check/measure/etc?
Je ne sais pas quel genre de chiffres que je pouvais sortir de cette situation et si cela signifie vraiment quelque chose, j'ai le sentiment que ce que la direction demande est en quelque sorte l'approche mal, donc la deuxième question serait: quelqu'un a-t-il une meilleure idée?
J'apprécierai toute idée, suggestion, commentaire à ce sujet.
Edit: Je vais ajouter deux détecteurs de code mort au mélange: UCD et DCD
Vous avez vraiment les mains pleines. Je ne ferais pas confiance aux tests unitaires existants sans les vérifier. Vous allez certainement avoir besoin de tests de régression pour vous assurer que le code réécrit répond toujours aux exigences fonctionnelles.Les éléments de votre liste sont un bon début, en particulier les outils d'analyse statique que vous avez mentionnés. – rich