Relief 1.1, visualisation 3D de projets Java

Posté par . Modéré par Florent Zara.
Tags :
0
4
juil.
2007
Java
Relief est un nouvel outil qui pourrait bien ouvrir des perspectives dans la gestion de projets en accélérant leur prise en main et en facilitant leur maintenance.

Il utilise des caractéristiques visuelles pour décrire entités et relations d'un projet Java : taille, couleur, distance au centre, hauteur et liens.

Cette simplicité permet de saisir rapidement la cohérence et la robustesse d'un projet en détectant le code mort, les relations indésirables, le couplage fort entre entités, l'utilisation de librairies externes, etc.

Relief facilite ainsi la prise en main de nouveaux venus sur un projet, son utilisation par des tiers et l'évaluation par un architecte ou un chef de projet de l'impact de modifications envisagées. En outre il assouplit les relations avec un public non technique, équipe commerciale ou clients, en établissant un langage commun.

NdM : Relief est écrit en Java, est multiplateforme et publié sous licence GPL version 2.
  • # Joli...

    Posté par . Évalué à  1 .

    Effectivement c'est pas mal du tout, l'édition du project.xml est un peu fastidieuse mais je pense que c'est un outil qui a de l'avenir afin d'avoir une vision claire d'un projet. Dès que j'alimente mon compte paypal je fais une donation promis...
  • # Visualisation ?

    Posté par (page perso) . Évalué à  3 .

    Il existe pas mal d'outils de recherche de ce genre, en maintenance/évolution des logiciels.

    Voir par exemple Moose :
    http://moose.unibe.ch/seaside/go/moosepage/gallery

    Il a l'avantage d'être indépendant du langage (il y a des parsers pour Java, C++, Smalltalk, et on pourrait en rajouter sans changer le reste de l'infrastructure), et dispose déjà de nombreux outils et visualisations pour comprendre et maintenir des logiciels. On l'a utilisé sans souci sur une image Squeak complète (2000 classes, 45000 méthodes).
    • [^] # Re: Visualisation ?

      Posté par . Évalué à  4 .

      Merci pour le lien, je ne connaissais pas cet outil.

      Relief parse du code et des binaires Java mais a été conçu pour analyser toutes sortes de structures organisées : le viewer reçoit un arbre d'entités généré par un plugin dont il ne sait rien.

      A ce titre il peut être étendu à n'importe quel langage de programmation mais aussi à des structures sans rapport avec l'informatique.
      Ce pourrait être le personnel d'une multinationale, le jeu complet de pièces d'une voiture, un réseau aérien...

      Pour aller plus loin encore, Relief peut remplacer tout diagramme en 2 ou 3 dimensions : il suffit de redéfinir ce qu'on entend par taille, orbite, profondeur, couleur...

      Les applications ne manquent pas, il faut juste les écrire ;-})
      • [^] # Re: Visualisation ?

        Posté par . Évalué à  2 .

        Au risque de passer pour un néanderthalien rétrograde, je pense que lorsque ce genre d'outil dispensera quelqu'un d'écrire une documentation, il y aura de quoi s'inquiéter à propos de l'informatique en général.

        Ce n'est pas que ce soit quelque chose de complétement inutile, bien au contraire, mais je me préserve de croire que ce genre de chose puisse avoir une utilisation révolutionnaire.

        --
        "Vos jouets technologiques sont bien peu de chose en comparaison de la force."
        Origine inconnue.
        • [^] # Re: Visualisation ?

          Posté par . Évalué à  1 .

          C'est sûr, quand Gutenberg a imprimé sa première Bible les moines copistes se sont sans doute inquiétés pour l'avenir de leurs enluminures (et au passage ils l'ont sans aucun doute méprisé tant les premiers ouvrages imprimés étaient mal finis et couverts de taches d'encre).
          Pas de doute aussi, quand Word et les imprimantes personnelles sont apparus les imprimeurs ont du faire la grimace.

          Maintenant une question : sur quoi le baron Bic et le groupe Lagardère ont-ils fait leur fortune ?

          Je ne crois pas que Relief représente une menace pour l'informatique, à moins qu'avoir plus de contrôle sur un logiciel soit un danger.
          • [^] # Re: Visualisation ?

            Posté par (page perso) . Évalué à  2 .

            Euh ... il y a eu de nombreux traitements de texte avant Word ...

            http://www.computer.org/portal/pages/annals/articles/xtras/a(...)
          • [^] # Re: Visualisation ?

            Posté par . Évalué à  3 .

            les moines copistes se sont sans doute inquiétés pour l'avenir de leurs enluminuresC'est possible. Qui a dit qu'on faisait des enluminures avec des presses? C'est bien l'intérêt d'une enluminure d'être une ½uvre d'art qui la distingue donc de la triste uniformisation induite par la généralisation des techniques de presse.

            ils l'ont sans aucun doute méprisé tant les premiers ouvrages imprimés étaient mal finis et couverts de taches d'encre
            Il est possible que en changeant un toner tu t'en mettes plein les doigts, mais bon la chimie des encres toussa bref je te décerne un beau [HS] pour cette digression.

            Je ne crois pas que Relief représente une menace pour l'informatique, à moins qu'avoir plus de contrôle sur un logiciel soit un danger.
            Mon idée était surtout celle suivant laquelle ce genre de procédé fasse perdre du contrôle à l'utilisateur, avec un codage 100% visuel. Le codage visuel, en sélectionnant des modules à la souris est très pratique pour enseigner ou apprendre l'informatique et les concepts qui la sous-tendent, mais je crois que c'est aussi un moyen de se rendre plus dépendant de son logiciel de visualisation. Je dis : c'est beau, c'est hype, ça rotate dans tous les sens, mais ce n'est pas ça qui va garantir les compétences du développeur. À fortiori je pense que c'est complétement inutile pour quelqu'un qui connaît bien son travail.

            Tout comme le passage du bic au traitement de texte ne servira à rien à un analphabète
            • [^] # Re: Visualisation ?

              Posté par . Évalué à  3 .

              C'est un outil et juste un outil. Bref, comme tout outil, il y en gros 2 cas pour un cadre precis : (1) la personne sait l'utiliser correctement dans un cadre qui convient et elle devient donc plus efficace ; ou bien (2) elle ne sait pas correctement l'utiliser ou le contexte ne convient pas a l'utilisation de l'outil et dans ce cas c'est inutile.
              Ca me parait aussi simple que cela...

              Pour en revenir au sujet, je pense que ce genre d'outil peut-etre complementaire a ceux qui sont traditionnellement utilises pour le developpement logiciel, surtout lorsque l'on veut une vision globale d'un projet sur lequel de nombreuses personnes travaillent (dans ce cas, il est difficile de connaitre tous les composents du projet)... comme toute solution de visualisation (reference au projet de recherche sur la visualisation des donnees de grande taille, tout ca tout ca).

              Mes 2 cents peu utiles,
              • [^] # Re: Visualisation ?

                Posté par . Évalué à  1 .

                pour une présentation de projet, ou une soutenance de 30 minutes, je suis d'accord que ça donne mieux que les schémas infernaux de modélisation :p avec des flèches dans tous les sens.
            • [^] # Re: Visualisation ?

              Posté par . Évalué à  2 .

              Pas assez clair dans mes illustrations on dirait.

              Donc les enluminures ça sert à décorer du texte, écrit à la main, c'est lui qui est menacé par la presse. Aujourd'hui l'art des moines copistes est toujours reconnu mais personne ne ferait appel à eux pour écrire le mode d'emploi d'un PDA.
              Je voulais faire comprendre que Gutenberg ne menaçait pas cet art puisqu'il répondait à d'autres besoins.

              Idem pour les taches : d'un point de vue artistique les premiers livres imprimés ne soutenaient pas la comparaison mais ce n'est pas ce qu'ont vu ceux qui étaient intéressés par une diffusion plus rapide du savoir, ceux-ci ont vu le potentiel de la nouveauté.

              Ton développement de l'idée du premier commentaire éclaire tes réserves et me permet d'y répondre.
              Relief ne modifie pas le code, il fait voir sa structure.
              Il s'emploie en va-et-vient permanent avec un IDE : on visualise une correction à appliquer avec Relief, on l'effectue avec un IDE, puis on retourne dans Relief pour voir le résultat et recommencer.

              Relief est un indicateur de la qualité d'un logiciel, tout comme JDepend ou Checkstyle.
              Son point fort est sa simplicité : comme il se veut d'usage général il évite les concepts propres à un métier et fait appel à des notions communes comme la taille, le poids et la distance au centre.

            • [^] # Re: Visualisation ?

              Posté par (page perso) . Évalué à  2 .

              Mon idée était surtout celle suivant laquelle ce genre de procédé fasse perdre du contrôle à l'utilisateur, avec un codage 100% visuel.

              Euh, un outil de visualisation c'est pas fait pour coder, c'est fait pour visualiser, c.-à-d. présenter le logiciel suivant une perspective (intellectuelle, pas visuelle) différente, qui mette en évidence des structures ou des défauts dans celles-ci. Ça sert à comprendre le logiciel pour savoir où on en est et mieux le faire évoluer.

              À fortiori je pense que c'est complétement inutile pour quelqu'un qui connaît bien son travail.

              Parce que tu es un cowboy qui est prêt à passer des nuits blanches à

              Le codage visuel, en sélectionnant des modules à la souris est très pratique pour enseigner ou apprendre l'informatique et les concepts qui la sous-tendent, mais je crois que c'est aussi un moyen de se rendre plus dépendant de son logiciel de visualisation.

              Et alors ? Le codage textuel te rend dépendant d'une syntaxe, c'est la même chose.
  • # Waaaaa !

    Posté par (page perso) . Évalué à  5 .

    J'vais pouvoir gérer mes projets Java comme le gars de "Opération espadon" :D
    • [^] # Re: Waaaaa !

      Posté par . Évalué à  8 .

      Ne pas oublier le vin rouge et la demoiselle penchée sur tes genoux!

      Tout bon codeur sait qu'il ne peut rien faire sans tout ça :-D
    • [^] # Re: Waaaaa !

      Posté par . Évalué à  1 .

      Je veux un lien !! :-)

      (je ne connais pas opération espadon)

      ^_^
  • # Un outil d'inspection de code à libérer…

    Posté par (page perso) . Évalué à  6 .

    Au deuxième quadrimestre de l'année académique écoulée j'ai dû tester RevJava dans le cadre d'un de mes cours. Ce logiciel m'a paru assez bon car il est capable de détecter énormément de problèmes structurels dans un programme (analyse du bytecode java).

    http://www.serc.nl/people/florijn/work/designchecking/RevJav(...)

    Au cours de mes tests, je me suis bien rendu compte que le développement était abandonné depuis longtemps (2003), probablement par manque de temps pour l'auteur et parce que le logiciel était déjà assez complet en lui-même (bien que d'autres développements pour le support de .net et un plugin Eclipse semblent avoir été engagés).

    Par contre, et ceci est beaucoup plus intéressant, j'ai découvert qu'en réalité l'auteur, qui distribuait déjà ce logiciel comme un freeware, avait proposé de libérer le code, mais qu'apparemment personne ne s'est montré intéressé… Donc si cela intéresse quelqu'un, qu'il n'hésite pas à le recontacter !

    http://article.gmane.org/gmane.comp.programming.refactoring/(...)
  • # Injection de dépendance

    Posté par . Évalué à  2 .

    Ca à l'air très intéressant, ne serait-ce que pour prendre rapidement un gros projet en main, ou faire de l'audit.

    Une question : Comment s'en sort-il avec l'injection de dépendance ?

    Le graphe reste-il parlant, sachant que les seuls liens apparent entre les classes ne sont que des interfaces (en général) ?

    Merci.
    • [^] # Re: Injection de dépendance

      Posté par . Évalué à  2 .

      A ce jour Relief ne prend pas en charge l'IOC : le code est analysé statiquement et donc toute relation que le compilateur ne détecte pas est invisible pour lui, c'est à dire le code chargé par reflection ou celui par des fichiers de configuration comme le fait Spring (et donc par l'usage de la reflection au final).

      Rien n'empêche d'écrire un plugin qui prendrait en charge les fichiers utilisé par Spring afin de détecter ces relations et rendre l'analyse ainsi plus exhaustive... ça fait juste parti des nombreux développements possibles ;-})

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.