Лучшие инструменты для разработки программного обеспечения - PullRequest
8 голосов
/ 24 сентября 2008

Да, страшное слово «М».

У вас есть рабочая станция, контроль исходного кода и полмиллиона строк исходного кода, который вы не написали. Документация устарела в тот момент, когда она была утверждена и опубликована. Первоначальные разработчики - LTAO, в следующем проекте / стартапе / дурдоме и не отвечающие на электронную почту.

Что ты собираешься делать?

{любимый редактор}, и Grep поможет вам разобраться в этом насквозь изнутри изнутри, но какие еще инструменты должны быть в наборе инструментов для специалистов по обслуживанию?

для начала качения мяча; Я не думаю, что я мог бы жить без source-insight для C / C ++ spelunking. (ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не работаю на них).

Ответы [ 12 ]

4 голосов
/ 24 сентября 2008

Так же, как съесть слона - один укус за раз:)

Иногда большая картина может быть настоящим демотиватором, и вам нужно выбрать место и заняться им по частям.

Конечно, все еще нужно выбрать бит, с которого нужно начинать ... Обычно это происходит в основном за счет пользователей / бизнеса с необходимыми изменениями, относящимися к высшему приоритету (вчера ...), но если у вас есть немного гибкости или времени для ознакомления Метрики часто полезны. Инструменты здесь различаются в зависимости от технологии и языка, но такие инструменты, как NDepend и JDepend , любые встроенные метрики кода (например, в Visual Studio Team System или различные доступные плагины Eclipse) или инструмент, подобный Simian , чтобы понять размер проблемы копирования и вставки.

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

И как уже говорили другие - при условии наличия опций для языка - хорошая IDE с навигацией по коду и автоматическим рефакторингом является обязательной (Eclipse, Visual Studio (с или без ReSharper).

Пара книг, повышающих моральный дух:

Удачи:)

3 голосов
/ 24 сентября 2008

Одним из лучших инструментов в пространстве .Net является ReSharper . Этот инструмент сэкономил мне время во всех аспектах жизненного цикла разработки. Они также помогли мне выжить, присоединившись к недокументированным проектам / решениям.

  • Код рефакторинга
  • Код навигации
  • Анализ кода

это некоторые из множества функций, которые помогают выполнять трудоемкие задачи.

2 голосов
/ 23 августа 2009

Поисковые системы кода могут помочь вам найти путь к огромной исходной базе.

Можно найти поисковую систему с исходным кодом, чувствительную к языку. Исходный код SD Поисковая система . Он может обрабатывать много языков одновременно. Поиск может быть выполнен для шаблонов в определенном языке, или шаблоны для разных языков (например, «найти идентификаторы с учетом TAX»). Благодаря чувствительности к токенам языка количество ложных срабатываний уменьшается, экономия времени для пользователя. Он понимает C, C ++, C #, COBOL, Java, ECMAScript, Java, XML, Verilog, VHDL и ряд других языков.

(я архитектор инструмента).

1 голос
/ 24 сентября 2008

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

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

Письменный журнал также полезен, так что вы можете документировать систему по мере продвижения.

1 голос
/ 24 сентября 2008

В таких ситуациях я бы использовал Понимание для C ++

1 голос
/ 24 сентября 2008

Я запусту какой-нибудь инструмент UML (может быть, простой блокнот с ручкой =)) и / или инструменты для построения классов, вызовов, иерархий методов (интегрированы в IDE). Затем я буду наблюдать за динамикой с помощью отладчика или простых юнит-тестов. С помощью этого материала я попытаюсь выполнить какое-то обратное проектирование, чтобы выяснить дизайн.

1 голос
/ 24 сентября 2008

Я обычно начинаю с Emacs + CScope в Linux. Visual Studio имеет несколько инструментов проверки, которые предоставляют аналогичные возможности для Windows. Doxygen также может быть очень полезным - он генерирует документы, которые могут быть полезны, даже если источники не имеют комментариев к документации.

0 голосов
/ 01 сентября 2010

NDepend - это инструмент, предназначенный для реинжиниринга устаревшего кода , особенно больших запутанных устаревших кодовых баз Отказ от ответственности: я один из разработчиков инструментов

Цитируя Скотт Хансельман, который однажды написал в своем блоге : "NDepend дает мне представление о моих приложениях, которых у меня не было раньше (...) Как только я понял глубину и Широта информации, которую я искал, я был похож на ребенка в кондитерской. "

Некоторые функции NDepend, полезные для реинжиниринга:

0 голосов
/ 06 октября 2008

Вы должны иметь возможность перемещаться по всей базе кода. Если ваша любимая среда IDE разрешает это, то вы можете использовать индексатор, такой как Understand for C ++ (уже упоминалось), lxr или OpenGrok .

В спешке вы можете положиться на grep (1s) или - лучше - Ack .

0 голосов
/ 24 сентября 2008

Я считаю, что Reflector Лутца полезен для этого, особенно когда у вас есть смесь кода и двоичных файлов. Вы получаете графы вызовов и зависимостей (в зависимости от того, используются, предоставляются, создаются и т. Д.), Графы сборок и некоторые замечательные плагины.

...