modèles de conception ne semblent généralement pas directement dans le code; Habituellement, le code contient une implémentation d'un motif de conception.
Pour faire une telle reconnaissance de modèle dont vous avez besoin:
- La capacité à analyser de manière fiable la langue source
- La capacité de reconnaître des modèles de code de bas niveau qui font allusion à un modèle de niveau supérieur
- La capacité pour lier ensemble des ensembles de correspondances de bas niveau ensemble via la proximité ou plus généralement le contrôle et le flux de données
Il n'y a pas beaucoup d'outils qui peuvent le faire. Bien que nous ne recherchions pas explicitement les modèles de conception généraux, nous avons construit un outil qui répond aux critères ci-dessus: notre DMS Software Reengineering Toolkit. DMS peut analyser C, Java et COBOL avec le même niveau de précision que leurs compilateurs, les modèles peuvent correspondre à l'aide de modèles explicites et calculer l'analyse des flux de contrôle et de données pour ces langages. Une application intéressante de DMS était de reconnaître le "modèle de conception" pour produire des écrans interactifs dans une application de 35 millions de lignes. Vous connaissez ce modèle de conception: "utilisez printf pour produire des fragments de la sortie d'écran". Alors qu'il est facile de reconnaître des fragments du modèle (la plupart des appels sont des exemples), le vrai problème est de reconnaître l'image de l'écran elle-même à partir d'une pile de code emmêlée qui l'implémente. La tâche que nous avons accomplie consistait à extraire une image d'une sortie d'écran imprimée (rapportée sous la forme d'un fichier XML contenant du texte littéral d'écran et des balises XML représentant une sortie à contenu variable) en reliant les différents appels printf. Les détails pour accomplir ceci sont assez compliqués; vous devez trouver des séquences de printfs qui traversent généralement les appels de fonction et sont contrôlées par beaucoup de conditions (le XML a aussi enregistré la partie conditionnelle des écrans). L'outil produit des images d'écran pour tous les écrans imprimables par le code à partir de principal.
Si vous espérez trouver une solution facile pour la reconnaissance de modèle de conception, je pense que vous n'aurez pas beaucoup de chance, mais c'est possible.
wiki communautaire? – Younes