Методы / инструменты для выяснения логики программного обеспечения? - PullRequest
1 голос
/ 22 июля 2010

(Если вы считаете, что другой сайт в StackExchange или где-либо еще является лучшим местом для вопросов такого типа, укажите мне правильное направление.)

Что используют опытные разработчики, чтобы выяснить, как работает кодсуществующей прикладной работы, прежде чем вы сможете изменить / добавить ее?

Есть ли более продуктивный способ, чем проходить построчно с ручкой / бумагой, пока вы не разберетесь?Я считаю, что это отнимает много времени, и мне трудно сохранить общую картину и не потеряться в деталях.

Например, есть ли какое-то приложение, которое будет анализировать исходный код и каким-то образом рисовать диаграмму, показывающую логику в некотором родемасштабируемой раскадровки?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 22 июля 2010

Есть ли более продуктивный способ, чем проходя построчно с ручка / бумага удобна, пока не разберёшься из

На самом деле, «карандаш и бумага» - лучший способ понять, как работает приложение. Любые инструменты могут ускорить этот процесс, но не дадут вам универсального ответа на ваши вопросы - вам все равно придется анализировать картину, и анализ занимает гораздо больше времени, чем просто рисование этой картинки.

Если у вас есть интерес к методам, я использую следующий подход:

  1. Найти точки приложения "верхнего уровня" (где поступают запросы пользователей или тому подобное);

  2. Копайте код до нужного вам уровня.

Строго просматривая весь код, почти не нужно понимать общую рутину какого-либо процесса в программном обеспечении. Просто возьмите элементы верхнего уровня и разложите их, пока черные ящики, используемые в анализе, не станут достаточно маленькими, чтобы понять, что вам нужно. Никогда не пытайтесь разложить любой «черный ящик», который вы видите, пока вам действительно не нужны мелкие детали. Это действительно редко требуется, пока вы не начнете добавлять и изменять код. Цель состоит в том, чтобы узнать, где найти смысл начинать исправление ошибок или реализацию новых функций, а не запоминать каждую строку кода в любом компоненте.

0 голосов
/ 22 июля 2010

Вы не найдете один инструмент, который адресован всем языкам и системам.Быть конкретными.

Кроме того, посмотрите на ранее вопросов (найдите, например, «инструменты понимают наследие»).

...