对于一个特定的软件包,应该如何判定它是“国产软件”,是一个相当重要的原则问题。当今,要求政府支持“国产软件”的呼声很高。那么,我们首先应当搞清楚什么是“国产软件”,究竟哪些软件产品是“国产软件”。
大家知道,我国政府颁布的《软件政府采购实施办法(试行)》讨论稿中明确了一项判定“国产软件”的准则:在国内的开发成本不低于总开发成本50%。这应当成为判定某个特定软件包是否为“国产软件”的唯一的公认标准。
怎么具体判定“国产软件”的真伪呢?首先应当明确,是否能够被称为“国产软件”,与其开发商的资质(私企、国企、合资和外企)并无多大(本质)关系,更扯不上什么“民族产业”问题。按照《实施办法》(即《软件政府采购实施办法》)的“50%准则”,可以借用国际估算软件开发成本的通用计量模式COCOMO(COnstructive COst MOdel,即“构造价值模型”)来解决(至少可以参照)。COCOMO软件成本估算方法公式虽然比较复杂,但是,它是根据数百个大型软件项目的成本估算实践总结出来的“指数型”(即某种系数α乘以(输入数据)的β指数次方)经验公式,能够相当准确地估算出一个软件包所需要的开发者工作量(即所谓“人月数”)。关于COCOMO模式的评论、介绍文章很多,应用实例也不少,只要认真,便不难掌握。我们建议读者参考“Review of COCOMO ”一文。
运用COCOMO估算软件开发成本(或者开发成本比例),首先需要计算特定软件包的各个组成部分的源代码行数,为此,SLOCCount是个很好的工具。所谓“SLOC”是指“Source Lines Of Code”的字头缩写,即源代码行数的意思,而“Count”就是“计算”之意。比如,Linux 2.6内核以及Debian GNU/Linux发行版(即Sarge版本)的源代码行分析研究就是用SLOCCount做的。最近,运用SLOCCount工具,再结合COCOMO模式,西班牙一个研究小组估算出Debian GNU/Linux发行版的价值高达90亿美元。SLOCCount是一个GPL的开源工具,可以自由下载,现在的最新版本号是2.26,可运行在多种操作系统平台上(注:“if-then-else”语句在用SLOC计算源代码行数时,只能算是一行源代码)。SLOCCount使用很方便,在它后边指定一个子目录,一旦运行该程序,这个子目录(以及所有在其下面的子目录)里面的各个程序的源代码行数就会一目了然,而不论这些程序是用什么编程语言写的,它都能自动识别出来,老实说,这个SLOCCount工具可神了。
结合我们国内情况,冠以“国产”名头的Linux发行版有好几个,不妨都拿出来试试,看看究竟哪一个是“国产软件”,需要得到政府支持。事实很明显,所谓“国产Linux发行版”不过是个好听的“噱头”,以便向政府伸手要钱。在科学估算软件开发成本的显微镜下,“国产说”将不攻自破。呜呼!
“开源软件”与“国产软件”的“判定标准”完全不同,根本不是一个范畴里面的东西。宣传“包括开源软件在内的国产软件”,不仅概念荒谬,而且有误导社会公众和政府官员之嫌。