Лучшие инструменты для разработки сопровождения программного обеспечения

StackOverflow https://stackoverflow.com/questions/127594

  •  02-07-2019
  •  | 
  •  

Вопрос

Да, ужасное слово на букву «М».

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

Чем ты планируешь заняться?

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

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

Это было полезно?

Решение

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

  • Рефакторинг кода
  • Навигация по коду
  • Анализ кода

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

Другие советы

Точно так же, как есть слона — по кусочку за раз :)

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

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

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

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

Пара книг для поднятия настроения:

Удачи :)

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

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

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

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

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

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

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

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

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

Да, попал в самую точку.Оболочка unix и удобный Notepad++ — это то, что я использовал при работе по обслуживанию ColdFusion, PHP, Perl и т. д.Приятно не переключать редакторы и отслеживать все ссылки на имя/параметр/переменную.

Теперь я просто щелкаю правой кнопкой мыши и нажимаю «Найти все ссылки» в Visual Studio, что, честно говоря, похоже на мошенничество.Ребята из PHP крайне завидуют, так как вынуждены использовать vi для редактирования.;)

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

Очень полезно иметь что-то, что может отображать отношения классов (при использовании объектно-ориентированного языка).Возможность отображать (статические) деревья вызовов также очень полезна, если вы хотите оценить влияние изменений, которые вы собираетесь внести.

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

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

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

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

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

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

В спешке вы можете положиться на греп(1с) или лучше - Подтверждаю.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top