IntelliJ IDEA Ultimate

DSM : préparez votre application pour la modularité

Aleksandra Zolushkina

Pour réagir au contenu de ce tutoriel, un espace de dialogue vous est proposé sur le forum. Commentez

- Titre : IntelliJ IDEA Ultimate

- Auteur : Aleksandra Zolushkina

- Parution : 15 janvier 2020

- Mise à jour : 13 avril 2020

- Licence : Copyright ® 2020 Aleksandra Zolushkina. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Comment lire la matrice

- III. Remerciements Developpez.com

I - Introduction

Le suivi des dépendances entre les composants d'une application peut être difficile. Des relations compliquées et des dépendances cycliques peuvent gravement affecter les performances et le comportement d'une application, et empêcher la réutilisation de ses composants. Mais qu'en serait-il si vous pouviez voir les dépendances dans votre application ? IntelliJ IDEA Ultimate dispose de l'outil idéal pour cela : DSM analysis.

DSM signifie Dependency Structure Matrix – une méthode qui visualise les dépendances entre les modules, les classes, et les autres composants du projet, et met en évidence le flux d'utilisation entre eux.

DSM analysis peut vous aider à effectuer de nombreuses tâches, y compris dans des contextes délicats. Par exemple, si vous vous apprêtez à migrer vers une version modulaire de Java (version 9 ou ultérieure), DSM analysis peut vous aider à préparer votre application au changement.

Vous pouvez trouver et corriger toutes les dépendances mutuelles, également appelées cycliques, qui ne sont pas autorisées dans le Java modulaire. Ces dépendances sont mises en évidence à l'aide d'un cadre rouge dans la matrice.

Notre matrice montre une interdépendance entre new-module et spring-petclinic. Et si votre application est massive, vous n'avez pas besoin de développer tous les nœuds un par un pour trouver toutes les dépendances cycliques. Il vous suffit d'appuyer sur F2 ou de cliquer sur Go to Next Cycle dans le menu contextuel pour accéder directement au cycle suivant.

Les paquets fractionnés peuvent également représenter un obstacle à la création d'une application modulaire. Dans ces paquets, au moins deux membres sont répartis dans plusieurs modules. Ils compilent sans erreurs en Java 8, mais causent souvent des problèmes lors du passage à Java 9 ou version ultérieure.

Il existe plusieurs façons de résoudre le problème des paquets fractionnés. Vous pouvez par exemple déplacer le paquet de deux modules vers un nouveau module, renommer le paquet de l'un des modules, ou dans certains cas combiner les deux modules en un seul. Il n'existe pas de solution universelle. Cependant, DSM analysis peut vous aider à choisir celle qui convient à votre application : vous pouvez consulter le nombre de dépendances dans chaque composant et anticiper la propagation des changements dans le projet.

II - Comment lire la matrice

Dans la matrice, les dépendances se déploient de haut en bas : une ligne reprend les composants dépendants du haut et une colonne répertorie les dépendances du composant sélectionné en dessous. Voyons comment cela fonctionne concrètement.

Supposons que nous souhaitons connaître toutes les dépendances entre le paquet org.springframework.samples.petclinic.visit et les autres paquets de l'application. Cliquons sur ce paquet.

La ligne affiche les dépendances du composant sélectionné. Cela signifie que les autres composants dépendent du composant sélectionné. Ils sont indiqués en vert dans la matrice. Dans notre exemple, le paquet owner a 18 dépendances à visit.

La colonne affiche les dépendances de ce composant. Cela veut dire que le composant sélectionné dépend des autres, qui sont indiqués en jaune dans la matrice. Dans notre cas, le paquet visit a deux dépendances à model.

Vous pouvez ainsi examiner chaque paquet pour analyser les dépendances entre les classes dans votre application. Notez que ces composants ne sont pas triés par ordre alphabétique. La matrice déplace les composants les plus utilisés vers le bas. Ainsi, s'il n'y a aucun cycle, ou seulement quelques-uns, les composants situés en haut de la matrice dépendent des composants situés sous eux.

À votre tour ! Ouvrez votre projet, sélectionnez Analyze | Analyze Dependency Matrix dans le menu principal, puis indiquez exactement ce que vous souhaitez analyser : le projet entier ou une partie spécifique.

Il se peut que l'EDI vous demande de recompiler le projet afin que tous les composants soient à jour. Cette opération est nécessaire, car DSM analyse le bytecode et non le code source. C'est ce qui fait toute l'efficacité de cet outil : l'analyse de plus de 100 000 classes dans un projet IntelliJ IDEA Ultimate ne prend que deux minutes.

DSM fonctionne dans IntelliJ IDEA Ultimate et nécessite le plugin Dependency Structure Matrix, qui est intégré et activé par défaut. Pour en savoir plus sur cet outil, consultez la page de documentation DSM Analysis. À vous de jouer !

III - Remerciements Developpez.com

Nous tenons à remercier Malick pour la mise au gabarit et Claude Leloup pour la relecture orthographique.