Partage
  • Partager sur Facebook
  • Partager sur Twitter

Reprise de code

    9 janvier 2012 à 16:57:39

    Bonjour à vous,

    Je vous résume la situation : Je dois actuellement finir le travail d'un autre stagiaire qui avait pour tâche de concevoir un logiciel (dont je ne peux dire la fonctionnalité pour cause de confidentialité).
    Seulement mon problème est que ce stagiaire n'est plus présent, et qu'il m'as laissé du code sans commentaires aucuns :( , sans notice technique...bref RIEN.

    Le but de mon post est donc de quérir vos conseils, vos méthodes (si il y en a) , afin de reprendre du code.

    Peut-être existe t-il une méthode?... HELP !

    Merci d'avance pour vos réponses !
    • Partager sur Facebook
    • Partager sur Twitter
      9 janvier 2012 à 17:00:42

      Quel type de logiciel ? Un logiciel en ligne de commande ? une interface web ? un logiciel "client lourd" en Swing ?

      • Partager sur Facebook
      • Partager sur Twitter
        9 janvier 2012 à 17:04:40

        C'est un logiciel "client lourd" en swing c'est ça. De gestion plus précisément(a peut pas dire de quoi).
        • Partager sur Facebook
        • Partager sur Twitter
          9 janvier 2012 à 17:12:49

          Ce que je ferai si j'étais à ta place c'est choper le point d'entrée (la fenêtre principale) puis essayer de lister un à un les composants qui y sont ajoutés.

          Pense à une représentation graphique "papier-crayon" (l'UML si tu connais, mais une représentation "informelle" peut faire l'affaire).

          S'il existe un mécanisme de stockage de données (Base de données, fichiers textes, xml, ...) essaie d'identifier la "couche d'accès aux données", un ensemble de classes dans lesquelles tu trouveras les mécaniques (requêtes SQL, ...) permettant d'accéder aux données.


          Une fois que tu as listé les composants graphiques et les couches d'accès aux données (ça devrait être le plus simple logiquement), essaie de trouver du code "métier" (qui en toute logique devrait se trouver dans un ensemble de packages différents. En gros, le code "fonctionnel", le code "qui fait", qui contient les règles de gestion du logiciel.

          Enfin essaie si tu peux de lister les composants unitaires (boutons, combo box, tables, ...) et la "mécanique" de l'interface graphique (en récupérant l'ensemble des Listeners par exemple).


          Bon c'est assez abstrait et pas très évocateur (et surtout y'a 50000 façons différentes d'appréhender le problème), mais c'est difficile de t'aider mieux...
          • Partager sur Facebook
          • Partager sur Twitter
            9 janvier 2012 à 17:18:26

            Ouaip j'avais déjà commencé a faire sur word un "suivi d’enchaînement des fenêtres", sauf que la je suis dans un cul de sac xD.

            Mais tu as raison, je n'avais point pensé au bon vieux crayon et à la bonne vieille feuille!

            Après je vais "trier" toutes les classes, celles qui font la partie graphique, celles qui font la partie "fonctionnelle" , les listeners et les requêtes SQL.

            J’espère vraiment y voir plus clair car c'est pas très agréable de nager dans du code sans trop comprendre le déroulement des choses !

            Merci à toi en tout cas.

            Bonne fin de journée
            • Partager sur Facebook
            • Partager sur Twitter
              9 janvier 2012 à 20:28:26

              Salut,

              un truc qui peut t'aider mais sur lequel il ne fait pas passer trop de temps c'est de tracer l'UML du logiciel, Bouml le fait par exemple.

              Grace au lien tu peut arriver à voir qui hérite de quoi et faire des groupes. Tu peut aussi voir les associations pour voir quelles classes vont ensemble. des classes qui vont ensemble participent probablement à la réalisation de la même tâche.

              Cependant il ne faut pas y passer trop de temps parce que ça te donnera qu'une approximation (à moins que tu saches ce que tu cherche) et que si t'as beaucoup de classe, tu ne pourra pas démêler l'enchevêtrement de lien.

              Après, le nom des classes, des méthodes (les outlines sous eclipse), le nom des package. Les fonctionnalité que tu peux voir en lançant le programme...

              Hedi

              PS: bonne chance ;)
              • Partager sur Facebook
              • Partager sur Twitter
                10 janvier 2012 à 15:01:57

                Ce que tu peux faire également c'est utiliser les Logger du package:
                org.apache.commons.logging

                Tu fou des logger partout. Et a chaque cliques ou données saisies tu saura ou tu te situe (package, classe et ligne)

                Plusieurs avantages:
                - tu peux les activer et desactiver a partir d'un simple fichier xml
                - tu as 6 niveaux de précision (Info, Trac, Warn, Error, Fatal et Debug)
                - un peu comme un sytem.out.println tu peux y insérer des objets.

                Avec ça tu pourra non seulement construire un diagramme de classe mais également des diagrammes de séquences précises ainsi que des diagrammes de uses cases.

                En tant qu'apprentis j'utilise tout le temps ça lorsqu'on me confie quelque chose que je ne comprends pas. De plus je n'utilise plus de system.out.println qui sont carrément moins précis et qu'on est obligé de de supprimer un par un.

                Si tu as besoin de plus d'infos n'hésite pas MP moi!
                • Partager sur Facebook
                • Partager sur Twitter
                  10 janvier 2012 à 15:30:31

                  Citation : speedflyer06

                  utiliser les Logger du package:
                  org.apache.commons.logging


                  Citation : speedflyer06

                  Tu fou des logger partout. Et a chaque cliques ou données saisies tu saura ou tu te situe (package, classe et ligne)


                  Si tu fais cela assez souvent, tu devrais songer à utiliser une API de programmation orientée aspect (Spring AOP, ou autre).
                  Assez pénible à comprendre et pour "se plonger dedans", mais tu gagneras un temps considérable au final :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 janvier 2012 à 15:58:50

                    Je vois pas trop ce que tu proposes? Mais je suis preneur d'une bonne explication si ça peut finir par me faciliter la vie!
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      10 janvier 2012 à 16:05:32

                      Citation : speedflyer06

                      Ce que tu peux faire également c'est utiliser les Logger du package:
                      org.apache.commons.logging

                      Tu fou des logger partout. Et a chaque cliques ou données saisies tu saura ou tu te situe (package, classe et ligne)



                      Si c'est juste pour savoir par ou on passe autant utiliser le mode debug, c'est fait pour ça.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 janvier 2012 à 16:22:13

                        @speedflyer06

                        Citation : shakhal

                        Si c'est juste pour savoir par ou on passe autant utiliser le mode debug, c'est fait pour ça.


                        C'est un bon conseil, c'est bien plus simple si tu disposes d'un outil qui possède cette fonctionnalité (ton IDE par exemple).


                        Si jamais ma solution t'intéresse, cherche du côté de la programmation orientée aspect. C'est un "paradigme" (je voudrais pas galvauder le mot) intéressant à des fins "pédagogiques", et tu pourrais être amené à l'utiliser si tu as une utilisation professionnelle de Java.
                        Il s'agit d'"observer" le programme de façon transversale. En gros tu définis des points de coupe ("pointcut") à certains endroits dans ton code, (via des annotations par exemple). A chaque fois que le code "passe" par un pointcut, une méthode est appelée (par exemple une méthode de logging).

                        Employé à bon escient c'est très intéressant (ça sert à bien d'autres choses qu'à logger des appels de méthode, fort heureusement). Donc à des fins de "curiosité" ça peut valoir le coup d'oeil, si par contre ton seul objectif est de logger et de gagner en productivité, adopte la solution de shakhal.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 janvier 2012 à 16:42:11

                          Je vais jeter un oeil! Merci du tuyau! ^_-
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 janvier 2012 à 9:37:15

                            Bonjour,

                            Merci de vos réponses, je vais essayer tout sa. J'ai effectué d'autres tâches en attendant car je n’avançais pas très vite. C'est pour cela que je ne suis pas revenu pour voir si il y avais d'autres posts.

                            J'ai essayé de debogger, mais j'arrive à un endroit ou sa boucle à l'infini >.<'
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Reprise de code

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown