Методы/инструменты для выяснения логики программного обеспечения?

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

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

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

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

Спасибо.

1
задан Gulbahar 22 July 2010 в 09:56
поделиться

2 ответа

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

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

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

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

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

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

2
ответ дан 2 September 2019 в 22:51
поделиться

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

Также посмотрите на более ранние вопросы (поиск, например, "инструменты понимают наследие").

0
ответ дан 2 September 2019 в 22:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: