Какие инструменты и методики существуют для изучения больших проектов?

Всем добрый день.

В этом году я подал заявку на участие в Intel Summer School и, как следствие, проходил телефонное собеседование с сотрудником Intel. В ходе него ментор одной из команд особенно интересовался наличием опыта изучения больших (действительно больших, студенческий проект в 120 тыс. строк кода в качестве примера не был принят категорически) проектов, и спросил: «А как бы вы изучали большой проект? Какие инструменты использовали?» Меня, признаться, немного обескуражил этот вопрос. Я стал отвечать, перечисляя то, что мне приходило в голову:

1. Чтение официальной документации, вики, статей и публикаций, созданных в рамках проекта
2. Изучение автоматически генерируемой документации, например, doxygen'овской, благо, она ещё и простейшие диаграммы классов содержит
3. Отладка: запуск под консольным отладчиком, графическим, может быть даже, отладочная печать
4. Чтение кода и навигация по нему средствами современных IDE.
5. Чтение тестов, если они есть. Часто тест — неплохой пример правильного использования модулей и классов внутри проекта.
6. Эксперимент и попытка модификации.
7. Общение с членами команды разработчиков, если это возможно
8. Создание дополнений и исправлений к проекту, закрытие issues из багтрекера проекта, запросы на слияние сделанных изменений.

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

Спасибо.
  • Вопрос задан
  • 3652 просмотра
Пригласить эксперта
Ответы на вопрос 4
@DancingOnWater
Скорее всего человека ожидал услышать процесс разбора, а не используемые методы. Т.е. то, что вы перечислили это все верно, но теперь из этого надо выстроить логическую схему где и когда из этих инструментов применять.

К примеру:
1) Нахожу точку входа в программу.
2) Глядя в код определяю какие классы создаются и что они запускают.
3) Если есть дока — читаю, что эти классы делают
4) С помощью навигации по коду вычленяю какой код за какие функции отвечает.
5) Ну и т.д.
Ответ написан
pomeo
@pomeo
Есть такая книга «Анализ программного кода на примере проектов Open Source „, там разбирается ядро линукса, апач, freebsd и т.д. Можете её полистать.
Ответ написан
Комментировать
Xlab
@Xlab
grep и изучение call stack от самых верхов до самых низов.
Ответ написан
ixSci
@ixSci
На тупой вопрос Вы ответили более чем развёрнуто. Я бы на него ответил более просто: «Взял бы и изучал». Вопрос, действительно, идиотский.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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