Как оценить размер проекта в SLOC при переписывании приложения с одного языка на другой?

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

Я хотел бы сделать приблизительную оценку для реализации проекта, скажем, 100k SLOC C++ в Python.

Кто-нибудь знает, где я могу найти эти цифры?

3 ответа

Решение

Вы можете попробовать программу sloccount, Он способен оценивать SLOC на множестве языков и даже работает на нескольких ОС

Ну, чтобы получить ваш начальный счет на языке, подобном C++, я бы просто сделал самую простую из возможных вещей:

grep -c ";" *.h *.cpp

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

Теперь, чтобы перейти на Python? Ну, если мы говорим о механическом порте, то я бы сказал, использовать номер C++. Если вы говорите полное перекодирование, то я бы умножил на коэффициент выразительности. В Википедии есть хорошая диаграмма выразительности для этого. Опять же, цифры являются спорными, но обсуждение не стоит усилий. Если мы разделим C++ 2,5 на 6 Python, мы получим 0,416(6 повторений). Так что умножьте это число на сумму, полученную от вашего grep, и у вас есть свой номер.

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

Прежде всего, чтобы оценить время разработки исходного исходного кода C++, я бы порекомендовал взять такой инструмент, как ProjectCodeMeter, и отсканировать исходный код (он даст вам количество строк кода и скажет, сколько часов понадобилось среднему программисту чтобы сделать это с нуля), то вы можете разделить его на некоторый фактор, чтобы учесть тот факт, что легче перекодировать, чем кодировать с нуля (я думаю, что-то около 1/4 времени, но это только предположение).

Другие вопросы по тегам