|
Définition
de l'architecture logique.
Avec SonarJ, vous contrôlez en temps
réel la conformité de vos sources Java et de vos
classes compilées à une architecture logique
donnée. Pour cela, vous définissez cette
architecture logique et vous l'introduisez dans SonarJ comme le plan de
votre système.
SonarJ définit plusieurs éléments qui
vous permettent de développer par incrément votre
vision de la structure interne de votre système. Pour
structurer votre système, vous commencez par le
découper horizontalement en couches techniques (ie :
interface utilisateur, logique métier, accès aux
données). Ainsi, le premier élément
d'architecture défini dans SonarJ est une "couche
horizontale".
Dans l'étape suivante, vous utilisez des aspects
fonctionnels du domaine pour découper votre
système en "tranches verticales". Ainsi, "la tranche
verticale" est le deuxième élément
technique pour décrire votre architecture logique dans
SonarJ.
Regardez maintenant la structure qui en résulte: elle
ressemble à un damier. Les cases de ce damier sont ce que
nous appelons des "sous-systèmes". Ils sont le
troisième élément utilisé
dans SonarJ. Chaque couche horizontale doit contenir au moins un
sous-système. Chaque sous-système doit
être affecté à exactement une couche
horizontale. De plus, un sous-système peut aussi appartenir
à une tranche verticale, s'il a le même nom que
cette tranche. Donc l'affectation d'un sous-système
à une tranche verticale se fait par convention de nommage.
Après avoir découpé votre
système horizontalement et verticalement (optionnel) vous
définissez maintenant les relations d'usage que vous
autorisez entre vos couches horizontales. Une de vos règles
sera par exemple "mon interface utilisateur peut utiliser ma logique
métier". Ensuite, vous définissez les relations
que vous autorisez entre vos tranches verticales, comme par exemple "ma
tranche verticale Contrat peut utiliser ma tranche Client". En
précisant les relations d'usage autorisées entre
les couches et celles autorisées entre les tranches, vous
réduisez considérablement les relations d'usage
autorisées entre les sous-systèmes. En fait, il
est facile de calculer les relations d'usage autorisées
restantes à partir des règles définies
sur les éléments de haut niveau "couche
horizontale" et " tranche verticale".
SonarJ vous aide ensuite à définir encore plus
finement votre architecture en limitant certaines relations d'usages au
niveau des sous-systèmes.
Vous décrivez votre architecture logique en utilisant un
éditeur graphique qui est basé sur la notation
UML.
Mapping de l'architecture
logique sur le code Java.
Dès que vous avez défini
votre architecture jusqu'au niveau des sous-systèmes, vous
pouvez la mapper sur votre code Java. Il vous suffit de placer chaque
package dans un des sous-systèmes. Techniquement, vous
pouvez voir un sous-système comme un ensemble de packages
Java. Vous pouvez aussi décider d'ignorer certains packages
ou certaines classes (par exemple du code de test ou java.lang ).
Grâce aux interfaces nommées de SonarJ, vous
gérez l'accès à vos
sous-système. Pour chaque sous-système, vous
limitez les API accessibles à un sous-ensemble des classes
publiques exportées par les packages qui s'y trouvent.
|
|
Vérifier les
violations d'architecture et les dépendances cycliques.
Maintenant, vous avez une architecture logique
et un mapping de cette architecture sur votre code Java. SonarJ analyse
vos classes compilées et vos fichiers sources pour
créer en mémoire un modèle de votre
logiciel. Il analyse toutes les dépendances internes et
vérifie qu'elles respectent les règles
définies dans votre architecture logique. Chaque violation
d'architecture est affichée immédiatement. De
plus, SonarJ vous apporte suffisamment d'informations pour vous
faciliter la résolution du problème.
Même sans architecture logique, SonarJ est capable de vous
signaler toutes les dépendances cycliques entre packages (ou
même entre unités de compilation le cas
échéant). Le navigateur de cycles liste toutes
les dépendances qui créent le cycle et vous aide
à identifier le lien qui vous permettra de casser ce cycle
avec le moindre effort.
Des métriques qui
vous aident à surveiller votre qualité technique.
En plus de sa capacité à
faire respecter une architecture logique et d'identifier les
dépendances cycliques, SonarJ peut aussi calculer un
ensemble de métriques utiles :
* ACD (average component dependency – niveau moyen de
dépendances directes et indirectes : traduit le niveau de
couplage interne )
* LOC (lines of code – nombre de lignes de code :
où sont les masses de code ?)
* Complexité cyclomatique (où est la
complexité ?)
* Utilisation des assertions
* Cohésion relationnelle
* Métriques de Robert C. Martin (abstraction,
instabilité etc.)
*
etc.
Vous pouvez définir des seuils pour ces
métriques. Par exemple, fixer la limite maximale pour la
complexité cyclomatique à la valeur 15. Un
développeur qui essaye de créer une
méthode avec une complexité plus grande sera
immédiatement averti. Il pourra alors découper sa
méthode en plusieurs parties moins complexes.
SonarJ agrège toutes les métriques jusqu'au
niveau le plus élevé. Vous pouvez donc facilement
trouver la complexité cyclomatique d'une couche horizontale
ou du code appartenant à une tranche verticale.
Tâches ANT pour
les "nightly build".
SonarJ est utilisable sur vos serveurs via une
tâche ANT. Appelée par votre automate de
compilation nocturne, cette tâche ANT va créer un
rapport au format XML qui contient toutes les statistiques et les
métriques clés pour votre projet. Il contient
aussi la liste de toutes les violations d'architectures et les
dépassements de seuils qui sont restés dans le
code de votre logiciel. Grâce au convertisseur XSLT fourni
avec SonarJ, vous obtenez un rapport HMTL que vous pouvez lire
facilement chaque matin. En conservant le rapport XML dans une base de
donnée, vous pourrez voir sur le long terme les tendances et
les changements de votre projet.
Démonstrations et informations complémentaires.
Pour plus de détails, vous pouvez consulter le Livre blanc .
Vous pouvez également télécharger
SonarJ et l'essayer gratuitement.
Cette vidéo vous explique comment démarrer sur votre propre projet.
Nous serons aussi très heureux de vous faire une
démonstration. Vous pouvez nous contacter pour cela.
|