【发布时间】:2011-03-07 19:41:23
【问题描述】:
我记得在过去我发现了一些统计数据,这些统计数据表明基于 SLOC 和编程语言的程序的预期大小。
我想做一个粗略的估计,以便在 Python 中重新实现一个假设是 100k SLOC C++ 项目。
有人知道我在哪里可以找到这些号码吗?
【问题讨论】:
标签: programming-languages estimation software-estimation
我记得在过去我发现了一些统计数据,这些统计数据表明基于 SLOC 和编程语言的程序的预期大小。
我想做一个粗略的估计,以便在 Python 中重新实现一个假设是 100k SLOC C++ 项目。
有人知道我在哪里可以找到这些号码吗?
【问题讨论】:
标签: programming-languages estimation software-estimation
您可能想试试sloccount 程序。它能够估计各种语言的 SLOC,甚至可以在多种操作系统上运行
【讨论】:
好吧,要获得 C++ 等语言的初始计数,我会尽可能做最简单的事情:
grep -c ";" *.h *.cpp
还有更性感的方法,你可以争辩说它低估了一些东西,高估了一些东西,但 SLOC 无论如何都是一个愚蠢的指标,所以花更多的时间而不是必要的时间真的是浪费。
现在要转换为 Python 吗?好吧,如果我们谈论的是机械端口,那么我会说使用 C++ 编号。如果您说的是完全重新编码,那么我会乘以表现力因子。维基百科为此提供了一个很好的expressiveness chart。同样,这些数字是值得商榷的,但争论是不值得的。如果我们将 C++ 的 2.5 除以 Python 的 6,我们得到 0.416(6 重复)。因此,将该数字乘以您从 grep 获得的总数,就得到了您的数字。
现在,让我花一点时间说,除了切换语言之外别无其他原因,用另一种语言重新实现工作软件是一个非常愚蠢的想法。 充其量,如果没有任何问题,您将基本上只拥有您开始使用的程序。更有可能的是,为了回到以前的状态,您需要进行大量的调试工作。
【讨论】:
首先要估算一下原始C++源代码的开发时间,我建议使用ProjectCodeMeter之类的工具并扫描源代码(它会告诉你代码的行数)代码并告诉你一个普通程序员从头开始需要多少小时),然后你可以将它除以某个因素,以说明它更容易重新编码而不是从头开始编码(我猜大概是 1/4时间,但这只是一个猜测)。
【讨论】: