Question

Oui, le mot redouté "M".

Vous avez un poste de travail, un contrôle de source et un demi-million de lignes de code source que vous n'avez pas écrits. La documentation était périmée au moment où elle a été approuvée et publiée. Les développeurs originaux sont LTAO, lors du prochain projet / démarrage / loony bin et ne répondent pas au courrier électronique.

Qu'est-ce que tu vas faire?

{éditeur favori} et Grep vous permettront de commencer votre spéléologie à travers les entrailles de la base de code, mais quels autres outils devraient figurer dans la boîte à outils des ingénieurs de maintenance?

Pour commencer le roulement; Je ne pense pas que je pourrais vivre sans la source-insight pour la spelunking C / C ++. (AVERTISSEMENT: je ne travaille pas pour eux).

Était-ce utile?

La solution

L’un des meilleurs outils de l’espace .Net est ReSharper . Cet outil m'a permis de gagner du temps dans tous les aspects du cycle de vie du développement. Ils m'ont également aidé à survivre en rejoignant des projets / solutions non documentés.

  • Refactoring de code
  • Navigation dans le code
  • Analyse de code

Ce sont quelques-unes des nombreuses fonctionnalités qui vous aident à effectuer des tâches fastidieuses.

Autres conseils

Juste comme manger l'éléphant - une bouchée à la fois:)

Parfois, la situation dans son ensemble peut être un véritable démotivateur, et vous devez choisir un point et le traiter pièce par pièce.

Bien sûr, vous devez toujours choisir le bit sur lequel commencer… Typiquement, cela dépend principalement des utilisateurs / entreprises avec des changements spécifiques de haute priorité requis (hier ...), mais si vous avez un peu de flexibilité ou de temps de familiarisation , les métriques sont souvent utiles. Les outils proposés ici varient en fonction de la technologie et de la langue, mais des outils tels que NDepend et JDepend , toute métrique de code intégrée (comme dans Visual Studio Team System, ou les divers plugins Eclipse disponibles) ou un outil comme Simian pour avoir une idée de la taille du problème de copier / coller.

Espérons que le nombre de tests unitaires et de couverture est supérieur à zéro. Une bonne première étape consiste donc à obtenir tous les tests que vous pouvez exécuter dans un environnement d'intégration continue, en vue de l'ajout de nouveaux tests à mesure que vous apprenez.

Et comme d’autres l’ont dit, à supposer que des options soient disponibles pour la langue, il est indispensable de disposer d’un bon IDE avec navigation par code et refactoring automatisé (Eclipse, Visual Studio (avec ou sans ReSharper).

Quelques livres stimulant le moral:

Bonne chance:)

Les moteurs de recherche de code peuvent vous aider à trouver votre chemin dans une base de données énorme.

Un moteur de recherche de code source sensible aux langues peut être trouvé sur le moteur de recherche de code source SD . Il peut gérer plusieurs langues en même temps. Des recherches peuvent être effectuées pour des motifs dans une langue donnée, ou des modèles dans toutes les langues (tels que "trouver des identificateurs impliquant TAX"). En étant sensible aux jetons de langue, le nombre de faux positifs est réduit, gagner du temps pour l'utilisateur. Il comprend les langages C, C ++, C #, COBOL, Java, ECMAScript, Java, XML, Verilog, VHDL et plusieurs autres langages.

(je suis l'architecte de l'outil).

Je commence généralement par Emacs + CScope sous Linux. Visual Studio propose des outils d’inspection qui vous offrent une capacité similaire pour Windows. Doxygen peut également être très utile - il générera des documents utiles même si les sources ne contiennent pas de commentaires sur la documentation.

Je vais utiliser un outil UML (peut-être un simple bloc-notes avec un stylo =)) et / ou des outils pour la construction de classes, d'appels, de hiérarchies de méthodes (intégrés à l'EDI). Ensuite, je regarderai la dynamique avec le débogueur ou de simples tests unitaires. Avec ce matériel, je vais essayer de faire de l’ingénierie inverse pour comprendre le design.

Dans de telles situations, j'utiliserais comprendre pour C ++

.

L'utilisation d'un sondage sur la signature est un bon moyen de bien comprendre le code. Avec un bon langage de script et un mojo à utiliser, construire un levé de signatures hautement personnalisé pour votre propre base de code, quelle que soit votre langue, n'est pas une tâche difficile.

Le logiciel de suivi des bogues, en particulier s’il est relié à votre logiciel de contrôle de source, sera précieux, car il pourrait vous aider à comprendre pourquoi certaines mauvaises décisions ont été prises. Ceci est encore plus important si le programmeur de maintenance envisage également de procéder à une refactorisation.

Un journal écrit est également utile pour vous permettre de documenter le système au fur et à mesure.

Oui, frappez le clou sur la tête. Un shell unix et le très pratique Notepad ++ sont ceux que j’utilisais lorsque je travaillais à la maintenance sous ColdFusion, PHP, Perl, etc. Il est agréable de ne pas changer d’éditeur et de rechercher toutes les références à un nom / paramètre / variable.

À présent, je clique avec le bouton droit de la souris sur "Trouver toutes les références" dans Visual Studio, ce qui semble être une tricherie. Les gars de PHP sont extrêmement jaloux, car ils sont obligés d'utiliser vi pour l'édition. ;)

L’outil essentiel serait quelque chose qui vous permettrait de naviguer (et d’éditer) la base de code afin d’aider votre compréhension.

Il est très utile d’avoir quelque chose qui puisse afficher la relation de classe (si vous utilisez le langage OO). La possibilité d’afficher des arborescences d’appels (statiques) est également très utile lorsque vous souhaitez évaluer l’impact d’un changement que vous allez effectuer.

Vous parlez de source-insight. Le navigateur de source est un projet open source de longue durée. Il semble que le développement ait repris après avoir été stagnant pendant un certain temps.

Je trouve que le réflecteur de Lutz est utile à cet égard, en particulier lorsque vous utilisez un mélange de code et de fichiers binaires. Vous obtenez des graphes d'appel et de dépendance (dépend de, utilisés par, exposés par, instanciés par, etc.), des graphes d'assemblage et de superbes plugins.

NDepend est un outil dédié à la reconfigurer le code hérité , en particulier les grandes bases de code héritées enchevêtrées . Clause de non-responsabilité: je suis l'un des développeurs de l'outil

Pour citer Scott Hanselman qui a écrit une fois sur son blog : " ; NDepend me donne un aperçu de mes applications que je ne connaissais pas auparavant (...) Une fois que je me suis rendu compte de la profondeur et de la richesse des informations que j’examinais, j’étais comme un gamin dans un magasin de bonbons. "

Certaines fonctionnalités de NDepend utiles pour la réingénierie sont les suivantes:

Vous devez pouvoir naviguer dans la base de code. Si votre IDE préféré le permet, vous pouvez utiliser un indexeur tel que comprendre pour C ++ . (déjà cité), lxr , ou OpenGrok .

Vous pouvez vous appuyer rapidement sur grep (1s) ou - mieux - Ack .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top