计算机科学杂志

发表咨询:400-808-1731

订阅咨询:400-808-1751

计算机科学杂志 北大期刊 CSCD期刊 统计源期刊

Computer Science

  • 50-1075/TP 国内刊号
  • 1002-137X 国际刊号
  • 0.94 影响因子
  • 1-3个月下单 审稿周期
计算机科学是国家科技部西南信息中心主办的一本学术期刊,主要刊载该领域内的原创性研究论文、综述和评论等。杂志于1974年创刊,目前已被维普收录(中)、北大期刊(中国人文社会科学期刊)等知名数据库收录,是国家科学技术部主管的国家重点学术期刊之一。计算机科学在学术界享有很高的声誉和影响力,该期刊发表的文章具有较高的学术水平和实践价值,为读者提供更多的实践案例和行业信息,得到了广大读者的广泛关注和引用。
栏目设置:网络与通信、信息安全、软件与数据库技术、人工智能、图形图像与模式识别

计算机科学 2017年第11期杂志 文档列表

图像去雾霾算法的研究现状与展望1-8

摘要:雾霾天气下拍摄的图像往往会因空气中的气溶胶粒子散射而降质,并因此影响后续的室外计算机视觉系统的应用。为此,研究者提出了大量方法来复原雾霾图像的质量。文中归纳总结了图像去雾霾方法的研究现状,重点研究和分析了基于图像增强和基于物理模型这两大类方法,深入探讨了其中一些已被广泛认可的经典算法的优劣,并分析了几种雾霾天气复原图像客观评价的方法。最后,提出了图像去雾霾算法未来的几种研究思路,并展望了未来的发展趋势。

自适应软件的策略自动生成与演化9-14

摘要:随着软件功能的日益强大和运行环境的日益复杂,软件要求能够及时感知环境和需求的变化,并做出相应的反应。自适应系统是一种能够通过感知环境和运用自身知识决策自身行为的软件框架。策略集是自适应系统的核心知识,但是现有自适应研究都缺少对策略的生成、维护、演化等的关注。借鉴决策树算法,提出一种使用策略树来自动生成、演化和维护策略集的方法,使得自适应软件能够更好地使用知识,排除人为制定策略对自适应软件效果的影响;同时,以RubiS网站为基础,通过仿真实验验证了方法的可行性。

软件集成开发环境的技术债务管理研究15-21

摘要:软件技术债务是运用经济学中"债务"的概念来描述软件开发中因项目短期利益而实施的技术折中。但从长期来看,技术债务会影响软件的质量、成本和开发效率,因此有必要对其进行有效管理。现有的技术债务管理工具数量少且存在各种局限性,难以实现有效的管理。主流的软件集成开发环境功能强大且应用广泛,可以为技术债务管理服务。以具有代表性的集成开发环境Visual Studio 2015企业版为研究对象,通过C#实例发现其管理4类与代码直接相关的技术债务的能力,并将其与4种专门的技术债务管理工具进行对比,为开发团队的日常实践提供技术债务管理支持。结果表明,Visual Studio能够提供更好的技术债务管理功能,并能应用多种方法对项目中存在的各类技术债务进行不同程度的管理。

一种基于动态插桩的JavaScript反事实执行方法22-26

摘要:目前,静态分析技术已被广泛用于JavaScript程序的安全性分析。但是由于JavaScript支持通过eval等方法在运行时动态生成代码,仅靠静态分析难以取得动态生成代码。一种可行的解决方法是通过动态运行目标程序取得动态生成代码,再对其进行静态分析。然而,动态运行目标程序只能覆盖有限的执行路径,会遗漏其他执行路径中的动态生成代码。针对这一问题,基于动态插桩实现了一个反事实执行方法。该方法通过修改JavaScript引擎,在其语法解析阶段动态插入反事实执行体,使条件不成立的分支路径和当前执行路径均能够得到执行。通过该插桩方式,即使嵌套调用eval等方法,也能在其动态生成代码中完成插桩。同时,还实现了一种按需undo方法,以消除反事实执行体中赋值操作带来的影响,且能够避免冗余操作。实验结果表明,实现的方法能够有效地扩大动态分析中执行路径的覆盖面。

基于测试例生成的Android应用数据竞争验证方法27-32

摘要:Android应用是一种事件驱动的并发程序。后台线程与异步事件执行顺序的不确定,导致数据竞争在Android应用中普遍存在。现有的针对Android应用的竞争检测工具会产生大量误报,且不能确定地重现竞争。针对以上问题,在现有的竞争检测结果的基础上,提出了一种基于测试用例生成的Android应用数据竞争验证方法。该方法首先构建应用的状态转化图,并基于状态转化图和现有竞争检测工具的检测结果自动生成包含潜在数据竞争的测试用例,然后在测试用例执行的过程中通过控制事件分发和线程的执行顺序来暴露竞争,观察竞争是否会引起程序异常。实验结果表明,该方法能有效地重现数据竞争引起的并发错误,并指出检测结果中的误报。

一种面向云构软件的云操作系统33-40

摘要:云计算和互联网的兴起不仅带来了数据中心的变化,也带来了软件的开发、部署、运维和使用上的变革。随着当前云计算和网络环境的不断完善,传统软件如何更好地利用云计算平台并服务于终端用户是计算机软件领域的研究热点,具有广泛的现实意义。近年来,随着实时互联网、微服务、云端渲染、容器等技术和理念发展的不断深入,软件(Software)形态将进一步朝着云件(Cloudware)形态的方向发展。文中主要探究了在云计算和互联网环境下"云件"这一新型软件范型,并针对该软件范型提出了一种新型的云操作系统:GalaxyOS。GalaxyOS可以在不修改传统软件的情况下直接将软件部署到云端运行,并通过浏览器实时投射到终端用户,实现传统软件的新型服务模式。通过采用微服务架构设计,使得该云操作系统具有较好的可扩展、容灾性和灵活配置等特性。通过对实际的GalaxyOS原型系统的实现和交互时延及资源占用进行实验,验证了所提方法在用户体验上的有效性。

基于Mozilla的安全性漏洞再修复经验研究41-49

摘要:相较于其他类型的漏洞,安全性漏洞更容易发生再修复,这使得安全性漏洞需要更多的开发资源,从而增加了这些安全性漏洞修复的成本。因此,减少安全性漏洞再修复的发生的重要性不言而喻。对安全性漏洞再修复的经验研究有助于减少再修复的发生。首先,通过对Mozilla工程中一些发生再修复的安全性漏洞的安全性漏洞类型、发生再修复的原因、再修复的次数、修改的提交数、修改的文件数、修改的代码行数的增减、初始修复和再修复的对比等数据进行分析,发现了安全性漏洞发生再修复是普遍存在的,且与漏洞发生原因的识别的复杂程度和漏洞修复的复杂程度这两个因素有关;其次,初始修复涉及的文件、代码的集中程度是影响再修复的原因之一,而使用更复杂、更有效的修复过程可有效避免再修复的发生;最后,总结了几种安全性漏洞发生再修复的原因,使开发人员有效地识别不同类型的安全性漏洞再修复。

砂岩显微图像分析方法及其工具实现50-55

摘要:图像分析是研究砂岩薄片的重要手段。研究适用于砂岩薄片的图像分析的方法并进行工具实现,在岩石学研究、油气勘探等方面具有重要意义。文中设计开发了砂岩显微图像分析软件系统。首先,提出基于超像素分割和聚类的图像分割方法来分割砂岩薄片显微图像,形成只具有单一矿物成分的超像素;然后,以矿物显微图像作为训练数据,提取颜色和局部等特征参数来训练分类器分类超像素;最后,合并相邻超像素从而形成完整的矿物颗粒,并标定其类别成分。在对方法进行研究的基础上,进行软件设计实现,对砂岩薄片显微图像中的矿物组分和组构特征进行分析。对一些采自西藏的典型砂岩薄片显微图像的分析表明,该方法具有良好的实用价值,但还需要进一步完善和优化。

一种面向SaaS多租户的多层模型56-63

摘要:SaaS(Software as a Service)伴随云计算而出现,它与传统软件的区别较大。根据SaaS软件的特点,提出支持SaaS软件成熟度的SaaS软件分层元模型,使用形式化方法对每一层进行建模描述。受面向对象Petri网(ObjectOriented Petri Nets,OOPN)和有色Petri网(Colored Petri Nets,CPN)思想的启发,提出面向服务网结构SOP(ServiceOriented Petri Nets)和CSOP(Colored Service-Oriented Petri Nets)。一方面,使用封装的库所元素代表服务,体现了服务对外不可见,且内部结构影响系统运行。另一方面,不同的颜色集代表不同租户请求,突出了SaaS多租户的特点。这不仅为复杂的SaaS软件建模提供了方法,还能够折叠系统变迁,压缩状态空间。最后,以一个客户关系管理(Customer Relationship Management,CRM)SaaS软件系统为例,验证了文中工作的可行性。

基于语义补丁的Linux驱动程序后向移植技术64-68

摘要:使用语义补丁技术对Linux的网卡驱动程序的后向移植方法进行研究。通过分析多个不同内核版本的驱动程序代码,在兼容库代码的支持下,提出了一种使用语义补丁进行驱动程序后向移植的方法。针对符号和函数分别开发了语义补丁,解决了后向移植过程中代码冗余以及补丁文件过多的问题,提高了后向移植的效率。实验分析表明,所使用的语义补丁的代码行数比普通补丁减少了很多,使得移植过程更加高效。在后向移植的过程中,对兼容库的构造方法进行了总结,使得移植后的代码可读性更强。所提方法对实现其他驱动程序的后向移植提供了借鉴意义。

一种基于UML关系的Java代码库构造方法69-79

摘要:关系信息是体现代码结构和语义的最重要的一类信息,如继承、聚合、组合、依赖、调用和创建实例等。为了更好地支持开源代码的理解与复用,提出了一种基于UML2关系的代码库构造方法。它以图数据库为实现平台,采用语言工程中经典的抽象语法树作为基础,并针对Java语言的特性和机制,设计富语义的Java代码属性图数据模型,在此基础上使得Java代码的图结构持久化。同时,为了屏蔽各种编程语言社区对代码中关系信息理解的差异性,采用UML2.4国际标准版本中定义的关系类型及语义解释,设计相应的代码关系抽取算法,为图节点添加对应的关系边。针对代码图化后的膨胀及代码库的空间存储消耗情况,选取9个常见的开源项目进行了实验评估。最后,给出了基于此代码库的查询应用实例。

构件系统建模及其动态演化一致性验证方法80-86

摘要:基于构件的软件开发已成为软件开发的主流方法,但针对构件系统动态演化后的一致性保持问题,目前尚缺乏统一的标准,为此提出一种验证构件系统动态演化一致性的方法。首先,应用进程代数构造构件模型,并在此基础上得到粗粒度的构件系统模型;然后,根据构件系统模型及其状态的变化,提出构件系统外部行为提取算法,并基于弱互模拟理论定义构件系统动态演化一致性的验证准则;最后,提取演化前后构件系统的行为,并将其转换成便于Pi演算自动工具MWB(Mobility Workbench)识别的格式,以进行行为一致性验证。案例研究表明,该方法是可行且有效的。

上下文敏感的控制流完整性保护的改进方法87-90

摘要:面对控制流劫持攻击的威胁,业界使用控制流完整性保护技术来保障进程的执行安全。传统的控制流完整性验证保护机制依赖于动态二进制改写技术,在分析、实施等过程中难度较大,且有可能带来二进制兼容的问题。通过研究近几年提出的上下文敏感的控制流保护技术PathArmor,分析了其检测进程控制流的时机。然后针对PathArmor只在进程做系统调用时才进行检测的机制,提出了改进的方法。该方法依据内核页错误中断处理机制,通过修改用户页面的保护属性主动触发可执行页面的执行错误;接着,修改页错误中断处理过程,钩挂do_page_fault以处理主动触发的执行错误。用户进程代码和数据的完整性得以保证的同时,得到了更多陷入内核接受检查的机会。在Nginx,bzip2,SQLite等典型应用环境下的实验结果表明,改进的方法能够明显增加系统安全分析的粒度,更好地保护程序的控制流。

基于数据库事务的不变式推导91-97

摘要:作为数据处理和并发控制的基本单位,数据库事务被广泛应用于软件系统的业务逻辑中。通过收集运行时数据库事务中的数据,推导这些数据之间满足的不变式,建立相应的数据契约关系,是软件维护过程中对系统的内部状态进行监控的重要方法之一。目前,在不变式推导领域,主要的方法和工具都是基于代码进行分析的,缺少与基于数据分析相关的研究和成果。为了解决这一问题,首先提出了基于数据的推导代数等式形式的不变式的算法,然后设计并实现了基于数据库事务的不变式推导的原型工具,最后通过相关实验分析和验证了原型工具的有效性。实验结果表明,原型工具有良好的推导准确率和运行性能,能够弥补现有工具和方法在基于数据的分析领域的不足。

一种基于文档的移动平台间UI控件对应方法98-103

摘要:多平台开发是移动应用软件开发的一个重要特点,同时还具有版本演化快和开发周期短的要求,这给移动开发带来了巨大的挑战。由于目前主流的移动平台大多采用MVC架构模式,并且在开发上体现出了UI驱动和事件驱动的特点,因此不同平台(如iOS和Android等)之间的UI控件具有较强的对应性,这给移动应用的开发人员在多平台开发时提供了重要的参考。提出了一种基于文档来理解不同平台之间UI控件对应性的方法,该方法以iOS和Android两种移动平台为研究对象,通过自然语言处理技术来分析从官方文档中抓取的UI控件描述文字,基于空间向量模型计算控件之间的相似度,并针对移动应用的特点设计了同义词集来保证匹配的准确性。基于所提方法,对iOS和Android平台上的典型UI控件进行了具体实验,结果表明,在单控件对应性方面,该方法能找到大部分的控件对应性,具有较高的准确度。

面向对象的可信构件网的组装研究104-108

摘要:以当前可信软件研究中的一个热点问题——基于构件的可信软件构造及其关键理论和技术为主要内容开展研究工作。在前期的工作中,根据面向对象的思想对Petri网进行扩展,提出了基于面向对象思想的可信构件网,从而对构建的基于构件的可信软件模型中的可执行的构件集进行描述。在描述的可信构件网模型框架中,将讨论两个构件基于连接件的并行组装、选择组装、顺序组装、循环组装。通过连接件的连接作用,根据一定的组织关系协调构件之间的关系,最终将组合的构件形成一个有机的整体。

运用变异测试的并行程序测试用例最小化算法109-113

摘要:在并行程序测试中,测试输入和线程交互时序是影响并行错误检测的两个关键因素。以缩减并行错误检测的输入空间为目标,给出一种基于变异测试的测试用例最小化算法。首先对并行程序进行研究,选取与并行错误密切相关的9个变异算子,并以此为基础为待测程序生成多种变异体;采用JPF作为线程调度工具来执行测试用例,根据变异评分与平均时间成本对测试用例进行排序,在优化后的测试用例集中选取检测能力不重复的测试用例,从而得到面向并行错误检测的最小测试用例集。实验结果证明,该方法能有效减小测试用例集的规模,并大幅缩短运行时间,从而提高了并行程序的测试效率。

线程级猜测并行系统代码自动生成工具的设计与实现114-119

摘要:虽然线程级猜测(Thread Level Speculation,TLS)执行机制可以简化多线程编程模型接口,并能获得较高的性能加速,但其并行程序的开发仍然比较困难。面向一个高效的软件TLS模型HEUSPEC,研究了代码自动生成工具C2H的设计与实现方法。具体包括3部分内容:首先,为HEUSPEC设计简单的标注语句,标注出可并行段的一些特征;其次,提出将标注语句和可并行段转换为猜测线程函数的算法;最后,设计生成HEUSPEC并行代码的算法。该方法已在开源编译器Clang上实现。面向Rodinia,OmpScr等基准程序的测试结果表明,C2H能够将带有简单标注语句的串行C代码转换为HEUSPEC并行代码,且其性能与手工编写的HEUSPEC并行代码的性能十分接近。