第1章 绪论
科学领域有用出版物来评估科研人员、机构和地区科研生产力和影响力的传统[1-2]。出版物构成了学术交流的基础并塑造了科学中的认识论文化[3-4]。科学家对出版物的追捧已经导致出版物数量的快速增长,也导致学术界出现了所谓的“不发表即灭亡”的现象[5-6]。长久以来,各国的科研评价体系一直将出版物视为*重要的研究成果,而往往将软件、数据等数字成果视为科学研究的副产品[7]。随着大数据时代的到来和数据密集型科学研究范式的兴起,数据的价值得到越来越多人的认可。科学数据已经获得学术界和工业界的广泛关注,研究者和实践者已经对科学数据的出版、共享、引用和再利用等诸多方面进行了深入研究。一方面,虽然“几乎所有的数据都需要用软件进行某种形式的处理”[8],但是软件,特别是科学软件的价值,尚未如数据一般获得广泛认可。另一方面,很多科学家需要开发科学软件来解决或帮助解决本领域的研究问题,他们中的一些人将软件共享出来供他人免费使用。学术界对科学软件价值的低估可能会导致科学家不再与他人共享软件,这将造成软件的重复开发和科研资源的浪费,不利于资源的优化配置。
1.1 科学软件的相关背景
1.1.1 科学软件的概念界定
各词典、百科对软件的定义大致相同,如《剑桥词典》将软件定义为“控制计算机行为的指令或电脑程序”,《数学辞海》将软件定义为“计算机系统中规定并直接指挥计算机系统工作的程序及其文档的统称”,维基百科将软件定义为“一套计算机程序和相关的文档和数据”。然而,目前学术界对科学软件尚无统一的定义。Huang等[9]将科学软件(scientific software)广义地定义为用于支持科学研究的各种软件。Kanewala和Bieman[10]将科学软件广泛定义为用于科学目的的软件。Kelly和Sanders[11]认为科学软件是具有大量计算组件并提供决策支持数据的软件。杨波等[12]认为科学软件是用来进行算法实现、海量数据管理和分析的一类软件,是科学家用来发现问题、理解问题和寻找解决方案的重要工具。Sletholt等[13]则将科学软件定义为由科学家为科学家开发的软件。Kelly[14]认为科学软件由如下三个特征定义:①为回答科学问题而开发;②依赖于其科学领域专家的密切参与;③提供了由回答该问题的人检查的数据。Kelly[14]还从科学软件定义中排除了以下软件类型:①主要功能涉及与其他软件和硬件交互的控制软件;②可以提供科学计算的输入和报告的用户界面软件;③科学家可以用来支持开发和执行其软件但本身并不能回答科学问题的任何通用工具。Hannay等[15]认为科学软件的目的通常是帮助理解新问题,科学软件开发与其他软件开发的根本区别在于,科学软件的开发通常需要一定的科学领域知识。Kelly等[16]确定了两种类型的科学软件:一类是为实现科学目标而编写的*终用户应用软件;另一类是支持编写表达科学模型的代码和执行科学代码的工具。
值得注意的是,一些文献使用另外一个术语“研究软件”(research software)来表达相似概念。Gomez-Diaz和Recio[17]认为研究软件是科学软件的一个特殊但基本的子集,是指研究人员在公共机构或公共资助项目中进行科学研究的过程中开发和使用的软件。Hettrick[18]认为研究软件是在学术界开发并用于研究目的(生成、处理和分析结果)的软件,这包括广泛的软件,从具有重要用户基础的高度开发的软件包到研究人员编写的供自己使用的简短程序。美国国家航空航天局(NASA)报告将研究软件定义为研究人员开发的用于辅助他们科学研究的软件[19]。Soito和Hwang[20]认为研究软件专指那些有助于汇编、转换、分析或建模的工具,而不包括那些仅仅促进信息交流和表示的工具。Eisty等[21]将科研人员开发的软件(库、工具和应用程序)称为研究软件。Gomez-Diaz和Recio认为研究软件是由研究团队编写的一组明确的代码,它是已构建并用于产生在某些文章或科学贡献中发表或传播的结果的软件[17]。此外,还有一些文献使用学术软件(academic software)、科研软件(scientific research software)来表达相似概念。例如,陈新兰和顾立平[22]认为学术软件是为学术研究和科研人员服务的科研工具。姚伟欣和顾立平[23]认为科研软件和学术软件是同义概念,是指用于科研目的的计算机软件。
虽然已有学者[17]认为科学软件与研究软件有所不同,但本书将科学软件(scientific software)、研究软件(research software)、学术软件(academic software)、科研软件(scientific research software)视为同义概念,并在后续章节中统一使用科学软件这一术语。上述定义有的要求支持科学研究,有的要求由科研人员/科学家开发,还有的要求这二者兼而有之。本书根据研究需要并借鉴上述相关定义,在不同章节对科学软件的概念作出了不同的界定。为了能更好地与国外相关调查结果进行比较,笔者在“中国科研人员的科学软件使用和引用行为研究”章节中将科学软件定义为被用来生成、处理或分析科学研究结果的软件工具,不包括诸如文字处理软件、搜索引擎、文献管理工具这些用于信息呈现、检索与管理等的相关软件工具。此外,为了便于统计,笔者将“中国科研人员的科学软件开发贡献研究”章节中的科学软件定义为科研人员开发的软件,而将其他章节中的科学软件定义为科研人员在研究过程中使用的软件。
依据不同的标准,可以将科学软件分为不同的类型。*先,按照是否可被访问可将科学软件分为可访问科学软件和不可访问科学软件。其次,按照是否需要付费访问可将科学软件分为需要付费的商业科学软件和无需付费即可获得的非商业科学软件(后文也称其为免费科学软件),其中非商业科学软件又可细分为开源科学软件和非开源免费科学软件。此外,本书还参考Schindler等的软件分类法[24]将科学软件分为应用程序(application)、插件(plugin)、操作系统(operating system)、编程环境(programming environment)四类。其中,应用程序是指针对使用者的某种特殊应用目的所撰写的程序,这些程序可以作为*立软件运行,如Stata、SPSS等。插件是一种遵循一定规范的应用程序接口编写出来的程序,通过和应用程序的互动来替应用程序增加一些所需要的特定功能,不能脱离指定的平台单*运行。操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。编程环境是用于编写和执行程序代码的集成环境,通常会根据不同的编程语言和开发任务进行定制。
1.1.2 科学软件生态系统
尽管商业科学软件的使用对科学研究很重要,但是科学家、软件开发人员和学生自己开发的大量免费科学软件在当今的学术环境中也得到了非常广泛的应用,在推动科学发展中起着不可忽略的重要作用。崔明等[25]对中国图书馆学、情报学领域常用的118种科学软件进行分析发现,56.78%的软件为非商业软件。钱雨菲对从PLoS One期刊上刊载的两万篇论文中识别出的28个被高频使用的科学软件进行分析发现,其中13个(46.43%)为商业软件,15个(53.57%)为非商业软件,而在15个免费科学软件中,有11个科学软件受到了政府或组织机构的资助。2014年的一项对英国罗素大学集团15所成员院校科研人员的调查显示,56%的科研人员开发过他们自己的科学软件[26]。另外一项对普林斯顿大学114名研究人员的调查发现,研究人员平均花费35%的工作时间在软件研发上。与专著、研究论文不同的是,科学软件发布后仍需开发人员不断对其进行维护、更新、升级才能保证其持续可用。然而,在目前主要由出版物驱动的科研评价体系中,科研人员为开发和维护免费科学软件所付出的劳动往往难以像发表学术论文那样获得相应的学术声誉回报。已有调查显示,获得学术声誉是科研人员开发和共享软件的一个重要外在动机[27]。当科研人员对免费科学软件的付出和其从中获得的回报持续失衡时,一方面可能导致越来越多的科研人员致力于发表论文而不是研发软件,另一方面还可能导致科研人员更倾向于*占软件而不是与他人共享。
在此背景下,一些学者开始呼吁完善对免费科学软件开发和维护的激励机制[28],还有一些学者开始对科学软件生态系统中的不同角色及其信息需求进行探究以加深人们对科学软件生态系统的理解[17,29]。例如,Howison等[29]运用访谈和参与观察法来分析科学软件生态系统中不同角色的信息需求。他们认为科学软件生态系统中有如下四个角色:①科学软件终端用户,即科学家,他们使用科学软件进行专业科学研究;②科学软件生产者,他们生产并发布科学软件以便其他人可以使用;③科学软件分发和执行经理,他们管理科学软件安装;④生态系统管理员,他们关注科学软件生态系统的整体运作,包括资深科学家和科学政策制定者,如资助机构及其人员。此外,他们还提出了一个科学软件过程模型框架(图1-1):*先,资源被投入到科学软件的生产;然后,终端用户科学家使用科学软件进行科学研究,从而产生科学影响;*后,科学软件产生的影响力被用来证明资源分配的合理性。从图1-1可以看出,准确测度科学软件所产生的科学影响是科学软件生态系统健康运行和持续发展的重要保障,这是因为资助机构需要用科学软件所产生的影响力来证明其对科学软件生产投入的合理性以及决定投入科学软件生产的新资源额度,而资源的投入程度会直接影响到科学软件的产出数量和质量,进而影响终端用户的使用。此外,测度出科学软件的科学影响力不仅可以加深人们对软件价值的认识和了解,为有关部门将软件纳入科研评价体系提供决策依据,还可以帮助科学软件开发者更好地证明其科学贡献,为开发者获得晋升机会和科研资助提供数据支撑。然而,目前尚不清楚科研人员是如何使用科学软件的,也不清楚科学软件有着怎样的科学影响力,更不清楚如何测度科学软件的科学影响力。
图1-1 科学软件过程模型框架
1.2 本书解决的关键问题
在信息技术迅猛发展的今天,软件被广泛用于数据存储、整合、分析、处理、呈现等各个方面,在提高科研效率方面的重要性日益凸显。虽然学者们在软件对科学研究有用这一点上已有共识,但是软件长久以来一直被认为是支撑科学研究的“服务”,而不是体现科学家价值的正式研究成果[29]。目前存在如下这样一种紧张关系:一方面,科学家花了很多时间和精力在科学软件开发上,他们将自己的科学软件共享出来,这些科学软件在学术界获得了广泛使用,他们希望自己的科学软件开发和共享行为能够获得肯定[27,30];另一方面,在目前由出版物驱动的科研评价体系中,科学家的影响力主要通过其发表的文献来衡量而不是其开发和维护的科学软件来测度,换言之,科学家往往不能通过开发和维护科学软件来获得学术声誉和晋升机会[28,31]。这导致科学家有动力写好论文,却没有动力开发好软件[31]。近年来国内外学者开始关注科学家的科学软件开发贡献和从中所获回报之间的失衡问题以及由此带来的科研资源浪费等一系列问题[27,32-33]。与此同时,一些国外科学资助机构和科研评价系统开始将软件认定为科学家的有效研究成果[34-35],以激励科学家参与开发和共享科学软件。随之而来的问题是如何量化评价科学软件的影响力。然而,学术界,特别是国内学术界,对科学软件学术价值的理解仍有待深入,对科学软件的影响力评价研究也有待推进。此外,在我国大部分科研管理部门尚未将软件认定为有效研究成果、大部分科学资助机构很少资助软件研发项目的今天,我国被限制使用一些国外软件,对科学研究产生了一定影响[36]。