2009-09-28 2 views
0

У меня есть задача, связанная с проектом ANCIENT C++, который не имеет никакой документации, комментариев вообще, и весь код/​​переменные написаны на иностранном языке. У меня есть шанс проанализировать этот код за 1 рабочий день и создать дизайн/UML для создания новых функций? Я уже три часа сижу, и я чувствую себя такой расстроенной ... Может быть, у кого-то тоже была проблема? Любой совет?Возможно ли программисту быстро проанализировать неизвестный код?

BR,

+4

я не знаю, но частые SO клювы, конечно, не собирается ускорить;) – phoebus

+0

это «разрывы» – phoebus

+0

Насколько велик проект ? Если кодовая база - это размер Windows, то я думаю, что 1 день не реалистичен, но если это довольно маленькая кодовая база, тогда есть шанс. Я не думаю, что знание латыни помогло бы с частями иностранного языка, не так ли? –

ответ

7

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

+2

И/или либерально использовать http://translate.google.com и искать и заменять. Но так легко ошибиться при переводе одного слова ... –

+2

+1, не переводя переменные, это скорее обратный инженерный опыт, чем анализ ;-) –

6

1) Использовать Doxygen. Вы можете настроить doxygen для извлечения структуры кода из недокументированных исходных файлов.

2) Используйте source Insight, Source Insight является расширенный редактор кода и браузер с встроенным анализа для C/C++, C#, а также программы Java

3

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

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

Как только вы знаете, что пытается сделать программное обеспечение, должно быть достаточно просто (даже если оно длительное и сложное) переписать все комментарии на вашем родном языке, чтобы вы могли понять. Я предлагаю сделать это в нижнем подходе: его легче понять малые и тривиальные вещи, которые делает программа, а затем понять логику верхнего уровня - и множество тривиальных вещей, чтобы составить логику программного обеспечения.

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

1

Я был вполне доволен инструментом под названием Understand (имеется 15-дневная лицензия eval) для такого рода задач. Тем не менее, я согласен с Guss в том, что время, которое вам понадобится, зависит от размера кода, и один день, вероятно, достаточно для небольшой программы.

3

Несвободный путь в Windows: Вы можете использовать CppDepend. Это приложение может анализировать ваш визуальный проект или исходные файлы. Это дает вам много информации, как деревья зависимостей. Вы можете попробовать судебное разбирательство (возможно, этого будет достаточно для того, что вам нужно делать).

Свободный путь мультиплатформенный: Вы можете использовать Doxygen со специальной конфигурации (выписка структуры кода из недокументированных кода) и проанализировать результат.

4

Короткий ответ, нет - вы, вероятно, не имеете возможности понять код за один день. Чтение/поддержание кода - одна из самых сложных задач, особенно когда у него отсутствует документация. Тот факт, что код на иностранном языке (!) Делает его еще сложнее.

Похоже, вы находитесь в очень ограниченном (нереалистичном) бюджете времени, но Working With Legacy Software - хорошая книга, если вы работаете с устаревшими системами. Если вы планируете добавлять новые функции в унаследованную систему, вы несете ответственность за то, чтобы ваш менеджмент знал о масштабах операции. Или, по крайней мере, попробуй.

+1

Последнее, что я погрузился в новый код, мне потребовалось около 3 дней иметь высокоуровневое, очень неполное понимание того, как это работает. Тот, который до этого занял у меня около двух недель или около того, чтобы я чувствовал себя очень комфортно, чтобы что-то делать. Я также видел довольно неприятный C++, без комментариев или бесполезных комментариев, и это просто безумие, чтобы попытаться научиться в месяц. И ОП дали день? – Calyth

0

cscope & ctags являются обязательными, когда я делаю свой собственный код и даже больше, когда смотрю на код другого.

Смежные вопросы