首页 > 最新文献

Journal of Computer Languages最新文献

英文 中文
On the use of statistical machine translation for suggesting variable names for decompiled code: The Pharo case 关于使用统计机器翻译为反编译代码建议变量名:Pharo 案例
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-04-19 DOI: 10.1016/j.cola.2024.101271
Juan Pablo Sandoval Alcocer , Harold Camacho-Jaimes , Geraldine Galindo-Gutierrez , Andrés Neyem , Alexandre Bergel , Stéphane Ducasse

Adequately selecting variable names is a difficult activity for practitioners. In 2018, Jaffe et al. proposed the use of statistical machine translation (SMT) to suggest descriptive variable names for decompiled code. A large corpus of decompiled C code was used to train the SMT model. Our paper presents the results of a partial replication of Jaffe’s experiment. We apply the same technique and methodology to a dataset made of code written in the Pharo programming language. We selected Pharo since its syntax is simple – it fits on half of a postcard – and because the optimizations performed by the compiler are limited to method scope. Our results indicate that SMT may recover between 8.9% and 69.88% of the variable names depending on the training set. Our replication concludes that: (i) the accuracy depends on the code similarity between the training and testing sets; (ii) the simplicity of the Pharo syntax and the satisfactory decompiled code alignment have a positive impact on predicting variable names; and (iii) a relatively small code corpus is sufficient to train the SMT model, which shows the applicability of the approach to less popular programming languages. Additionally, to assess SMT’s potential in improving original variable names, ten Pharo developers reviewed 400 SMT name suggestions, with four reviews per variable. Only 15 suggestions (3.75%) were unanimously viewed as improvements, while 45 (11.25%) were perceived as improvements by at least two reviewers, highlighting SMT’s limitations in providing suitable alternatives.

对于从业者来说,适当选择变量名是一项困难的活动。2018 年,Jaffe 等人提出使用统计机器翻译(SMT)为反编译代码建议描述性变量名。他们使用了大量反编译 C 代码语料库来训练 SMT 模型。我们的论文介绍了部分复制 Jaffe 实验的结果。我们将相同的技术和方法应用于一个由 Pharo 编程语言编写的代码组成的数据集。我们选择 Pharo 是因为它的语法很简单--只需半张明信片就能写完,而且编译器的优化仅限于方法范围。我们的结果表明,根据训练集的不同,SMT 可以恢复 8.9% 到 69.88% 的变量名。我们的复制结论是(i) 准确性取决于训练集和测试集之间的代码相似性;(ii) Pharo 语法的简洁性和令人满意的反编译代码对齐方式对预测变量名有积极影响;(iii) 相对较小的代码语料足以训练 SMT 模型,这表明该方法适用于不太流行的编程语言。此外,为了评估 SMT 在改进原始变量名方面的潜力,十名 Pharo 开发人员审查了 400 个 SMT 名称建议,每个变量审查四次。只有 15 项建议(3.75%)被一致认为是改进,而 45 项建议(11.25%)被至少两名评审者认为是改进,这突出表明了 SMT 在提供合适替代方案方面的局限性。
{"title":"On the use of statistical machine translation for suggesting variable names for decompiled code: The Pharo case","authors":"Juan Pablo Sandoval Alcocer ,&nbsp;Harold Camacho-Jaimes ,&nbsp;Geraldine Galindo-Gutierrez ,&nbsp;Andrés Neyem ,&nbsp;Alexandre Bergel ,&nbsp;Stéphane Ducasse","doi":"10.1016/j.cola.2024.101271","DOIUrl":"https://doi.org/10.1016/j.cola.2024.101271","url":null,"abstract":"<div><p>Adequately selecting variable names is a difficult activity for practitioners. In 2018, Jaffe et al. proposed the use of statistical machine translation (SMT) to suggest descriptive variable names for decompiled code. A large corpus of decompiled C code was used to train the SMT model. Our paper presents the results of a partial replication of Jaffe’s experiment. We apply the same technique and methodology to a dataset made of code written in the Pharo programming language. We selected Pharo since its syntax is simple – it fits on half of a postcard – and because the optimizations performed by the compiler are limited to method scope. Our results indicate that SMT may recover between 8.9% and 69.88% of the variable names depending on the training set. Our replication concludes that: (i) the accuracy depends on the code similarity between the training and testing sets; (ii) the simplicity of the Pharo syntax and the satisfactory decompiled code alignment have a positive impact on predicting variable names; and (iii) a relatively small code corpus is sufficient to train the SMT model, which shows the applicability of the approach to less popular programming languages. Additionally, to assess SMT’s potential in improving original variable names, ten Pharo developers reviewed 400 SMT name suggestions, with four reviews per variable. Only 15 suggestions (3.75%) were unanimously viewed as improvements, while 45 (11.25%) were perceived as improvements by at least two reviewers, highlighting SMT’s limitations in providing suitable alternatives.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"79 ","pages":"Article 101271"},"PeriodicalIF":2.2,"publicationDate":"2024-04-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"140643845","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
An empirical approach to understand the role of emotions in code comprehension 以实证方法理解情感在代码理解中的作用
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-03-02 DOI: 10.1016/j.cola.2024.101269
Divjot Singh, Ashutosh Mishra, Ashutosh Aggarwal

Programming and cognitive skills are two pivotal abilities of programmers to maintain software products. First, this study included a systematic literature review on code comprehension, emotions, cognitive psychology, and belief-desire-intention domains to analyse various code comprehension monitoring techniques, performance metrics, and computational methodologies. Second, a case study is conducted to examine the influence of various emotional stages on programmers’ programming and cognitive skills while comprehending the software code. The categorization of the participants is done empirically based on their expertism level, and the same results are verified using various machine learning models and performance metrics.

编程和认知技能是程序员维护软件产品的两种关键能力。首先,本研究对代码理解、情绪、认知心理学和信念-愿望-意图领域进行了系统的文献综述,分析了各种代码理解监测技术、性能指标和计算方法。其次,通过案例研究,考察程序员在理解软件代码时,不同情绪阶段对其编程和认知能力的影响。根据专家水平对参与者进行了经验性分类,并使用各种机器学习模型和性能指标验证了相同的结果。
{"title":"An empirical approach to understand the role of emotions in code comprehension","authors":"Divjot Singh,&nbsp;Ashutosh Mishra,&nbsp;Ashutosh Aggarwal","doi":"10.1016/j.cola.2024.101269","DOIUrl":"https://doi.org/10.1016/j.cola.2024.101269","url":null,"abstract":"<div><p>Programming and cognitive skills are two pivotal abilities of programmers to maintain software products. First, this study included a systematic literature review on code comprehension, emotions, cognitive psychology, and belief-desire-intention domains to analyse various code comprehension monitoring techniques, performance metrics, and computational methodologies. Second, a case study is conducted to examine the influence of various emotional stages on programmers’ programming and cognitive skills while comprehending the software code. The categorization of the participants is done empirically based on their expertism level, and the same results are verified using various machine learning models and performance metrics.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"79 ","pages":"Article 101269"},"PeriodicalIF":2.2,"publicationDate":"2024-03-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"140052825","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
WARDuino: An embedded WebAssembly virtual machine WARDuino:嵌入式 WebAssembly 虚拟机
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-02-13 DOI: 10.1016/j.cola.2024.101268
Tom Lauwaerts, Robbert Gurdeep Singh , Christophe Scholliers

Creating IoT programs for resource-constrained microcontrollers differs significantly from conventional computer programming. Microcontrollers are traditionally programmed using low-level programming languages with poor debugging facilities. By contrast, general-purpose systems can be programmed with high-level languages, which make programming easier by providing many useful tools such as advanced debuggers, strong type systems, and/or automatic memory management. Most existing solutions for programming microcontrollers with high-level languages are strongly tied to a specific microcontroller architecture, which makes porting code difficult or impossible. In addition, compiling and flashing software onto a microcontroller is time-consuming, slowing down development.

To solve these problems we present WARDuino, a WebAssembly virtual machine that runs on microcontrollers and provides WebAssembly primitives to control embedded hardware and IoT functionality. WARDuino runs programs written in a plethora of high-level languages that compile to WebAssembly. We give a general approach for language integration libraries to expose the peripherals and networking capabilities of the device following the idioms of the host language.

To ease development, we extend WebAssembly with support for remote debugging and over-the-air reprogramming. WARDuino can remotely instruct a microcontroller to pause, to step, or to dump its state, and to replace local variables, functions or even the entire running program. We use the remote debugger of the virtual machine to create a visual debugging environment in VS Code for WARDuino, that can debug WebAssembly and AssemblyScript. Aside from these important tools, we provide a novel mechanism to handle asynchronous interrupts in WebAssembly, a fundamental building block for responsive embedded applications. Our extensions are implemented in the WARDuino virtual machine and presented as formal extensions to the WebAssembly operational semantics. We use the formalization to proof observational equivalence for the core debugger semantics.

We compared the computational performance and memory size with native C code, Espruino, and WASM3 which compiles WebAssembly ahead-of-time. The comparison shows that WARDuino’s performance is acceptable. Although WARDuino is on average 425.93 times slower than native code and 37.96 times slower than WASM3, it outperforms the popular Espruino runtime by a factor of 11.66. Additionally, we show that WARDuino is fast enough to program traditional IoT applications that handle network and device interrupts with a classic smart lamp application written in AssemblyScript.

为资源有限的微控制器创建物联网程序与传统的计算机编程有很大不同。微控制器传统上使用低级编程语言进行编程,调试功能较差。相比之下,通用系统可以使用高级语言编程,高级语言提供了许多有用的工具,如高级调试器、强大的类型系统和/或自动内存管理,从而使编程变得更加容易。大多数现有的使用高级语言对微控制器进行编程的解决方案都与特定的微控制器架构紧密相关,这使得代码移植变得困难或不可能。为了解决这些问题,我们推出了 WARDuino,它是一个可在微控制器上运行的 WebAssembly 虚拟机,提供了控制嵌入式硬件和物联网功能的 WebAssembly 基元。WARDuino 可运行以大量高级语言编写并编译为 WebAssembly 的程序。为了简化开发,我们扩展了 WebAssembly,支持远程调试和空中重新编程。WARDuino 可以远程指示微控制器暂停、步进或转储其状态,并替换局部变量、函数甚至整个运行程序。我们使用虚拟机的远程调试器在 VS Code 中为 WARDuino 创建了一个可视化调试环境,可以调试 WebAssembly 和 AssemblyScript。除了这些重要工具外,我们还提供了一种新颖的机制来处理 WebAssembly 中的异步中断,这是响应式嵌入式应用程序的基本构件。我们的扩展在 WARDuino 虚拟机中实现,并作为 WebAssembly 操作语义的形式化扩展呈现。我们将计算性能和内存大小与本地 C 代码、Espruino 和提前编译 WebAssembly 的 WASM3 进行了比较。比较结果表明,WARDuino 的性能是可以接受的。虽然 WARDuino 平均比本地代码慢 425.93 倍,比 WASM3 慢 37.96 倍,但比流行的 Espruino 运行时要高出 11.66 倍。此外,我们还展示了 WARDuino 的速度足以对传统的物联网应用进行编程,这些应用通过用 AssemblyScript 编写的经典智能灯应用来处理网络和设备中断。
{"title":"WARDuino: An embedded WebAssembly virtual machine","authors":"Tom Lauwaerts,&nbsp;Robbert Gurdeep Singh ,&nbsp;Christophe Scholliers","doi":"10.1016/j.cola.2024.101268","DOIUrl":"10.1016/j.cola.2024.101268","url":null,"abstract":"<div><p>Creating IoT programs for resource-constrained microcontrollers differs significantly from conventional computer programming. Microcontrollers are traditionally programmed using low-level programming languages with poor debugging facilities. By contrast, general-purpose systems can be programmed with high-level languages, which make programming easier by providing many useful tools such as advanced debuggers, strong type systems, and/or automatic memory management. Most existing solutions for programming microcontrollers with high-level languages are strongly tied to a specific microcontroller architecture, which makes porting code difficult or impossible. In addition, compiling and flashing software onto a microcontroller is time-consuming, slowing down development.</p><p>To solve these problems we present WARDuino, a WebAssembly virtual machine that runs on microcontrollers and provides WebAssembly primitives to control embedded hardware and IoT functionality. WARDuino runs programs written in a plethora of high-level languages that compile to WebAssembly. We give a general approach for language integration libraries to expose the peripherals and networking capabilities of the device following the idioms of the host language.</p><p>To ease development, we extend WebAssembly with support for remote debugging and over-the-air reprogramming. WARDuino can remotely instruct a microcontroller to pause, to step, or to dump its state, and to replace local variables, functions or even the entire running program. We use the remote debugger of the virtual machine to create a visual debugging environment in VS Code for WARDuino, that can debug WebAssembly and AssemblyScript. Aside from these important tools, we provide a novel mechanism to handle asynchronous interrupts in WebAssembly, a fundamental building block for responsive embedded applications. Our extensions are implemented in the WARDuino virtual machine and presented as formal extensions to the WebAssembly operational semantics. We use the formalization to proof observational equivalence for the core debugger semantics.</p><p>We compared the computational performance and memory size with native C code, Espruino, and WASM3 which compiles WebAssembly ahead-of-time. The comparison shows that WARDuino’s performance is acceptable. Although WARDuino is on average 425.93 times slower than native code and 37.96 times slower than WASM3, it outperforms the popular Espruino runtime by a factor of 11.66. Additionally, we show that WARDuino is fast enough to program traditional IoT applications that handle network and device interrupts with a classic smart lamp application written in AssemblyScript.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"79 ","pages":"Article 101268"},"PeriodicalIF":2.2,"publicationDate":"2024-02-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"139891428","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Developers’ information seeking in Question & Answer websites through a gender lens 从性别视角看开发人员在问答网站上的信息搜索行为
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-02-03 DOI: 10.1016/j.cola.2024.101267
Abim Sedhain , Vaishvi Diwanji , Helen Solomon , Shahnewaz Leon , Sandeep Kaur Kuttal

Question & Answer websites for developers, such as Stack Overflow, contain enormous programming knowledge which can be redundant and cost substantial time and cognitive effort. We investigated the information seeking behavior of developers on Stack Overflow using Information Foraging Theory. To understand the influence of gender on foraging patterns, we conducted a gender-balanced think-aloud lab study with 12 participants, followed by retrospective interviews. The participants performed two debugging tasks: (1) understand foraging between question variants and (2) understand foraging between answer variants, on Stack Overflow. Various cues and strategies were utilized by the participants to find relevant question and optimal answer on Stack Overflow. The effect of gender on their foraging pattern was observed as male participants used 19.7% more cues and spent 55% more time than female participants. We also categorized various cues in terms of cost-value proposition and reported a debugging foraging model for Stack Overflow. Our study has implications for Question and Answer websites as well as Information Foraging Theory.

面向开发人员的问答网站(如 Stack Overflow)包含大量编程知识,这些知识可能是多余的,而且会耗费大量时间和认知精力。我们利用信息觅食理论研究了开发人员在 Stack Overflow 上的信息觅食行为。为了了解性别对觅食模式的影响,我们对 12 名参与者进行了性别均衡的思考-朗读实验室研究,随后进行了回顾性访谈。参与者在 Stack Overflow 上完成了两项调试任务:(1)理解问题变体之间的觅食;(2)理解答案变体之间的觅食。参与者利用各种线索和策略在 Stack Overflow 上寻找相关问题和最佳答案。我们观察到性别对觅答模式的影响,男性参与者比女性参与者多使用 19.7% 的线索,多花费 55% 的时间。我们还根据成本-价值主张对各种线索进行了分类,并报告了 Stack Overflow 的调试觅食模型。我们的研究对问答网站和信息觅寻理论都有启发意义。
{"title":"Developers’ information seeking in Question & Answer websites through a gender lens","authors":"Abim Sedhain ,&nbsp;Vaishvi Diwanji ,&nbsp;Helen Solomon ,&nbsp;Shahnewaz Leon ,&nbsp;Sandeep Kaur Kuttal","doi":"10.1016/j.cola.2024.101267","DOIUrl":"10.1016/j.cola.2024.101267","url":null,"abstract":"<div><p>Question &amp; Answer websites for developers, such as Stack Overflow, contain enormous programming knowledge which can be redundant and cost substantial time and cognitive effort. We investigated the information seeking behavior of developers on Stack Overflow using Information Foraging Theory. To understand the influence of gender on foraging patterns, we conducted a gender-balanced think-aloud lab study with 12 participants, followed by retrospective interviews. The participants performed two debugging tasks: (1) understand foraging between question variants and (2) understand foraging between answer variants, on Stack Overflow. Various cues and strategies were utilized by the participants to find relevant question and optimal answer on Stack Overflow. The effect of gender on their foraging pattern was observed as male participants used 19.7% more cues and spent 55% more time than female participants. We also categorized various cues in terms of cost-value proposition and reported a debugging foraging model for Stack Overflow. Our study has implications for Question and Answer websites as well as Information Foraging Theory.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"79 ","pages":"Article 101267"},"PeriodicalIF":2.2,"publicationDate":"2024-02-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"139688544","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
τJUpdate: An update language for time-varying JSON data τJUpdate:时变 JSON 数据的更新语言
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-01-11 DOI: 10.1016/j.cola.2024.101258
Zouhaier Brahmia , Fabio Grandi , Safa Brahmia , Rafik Bouaziz

Time-varying JSON data are being used and exchanged in various today’s application frameworks like IoT platforms, Web services, cloud computing, online social networks, and mobile systems. However, in the state-of-the-art of JSON data management, there is neither a consensual nor a standard language for updating (i.e., inserting, modifying, and deleting) temporal JSON data, like the TSQL2 or SQL:2016 languages for temporal relational data. Moreover, existing JSON-based NoSQL DBMSs (e.g., MongoDB, Couchbase, CouchDB, OrientDB, and Riak) and both commercial relational DBMSs (e.g., IBM DB2 12, Oracle 19c, and MS SQL Server 2019) and open-source ones (e.g., PostgreSQL 15, and MySQL 8.0) supporting JSON documents do not provide any facility for maintaining temporal JSON data. Also in our previously proposed temporal JSON framework, called τJSchema, there was no feature for temporal JSON instance updates. For these reasons, we propose in this article a temporal update language, named τJUpdate (Temporal JUpdate), for JSON data in the τJSchema environment. We define it as a temporal extension of our previously introduced non-temporal JSON update language, named JUpdate (JSON Update). Both the syntax and the operational semantics of the data modification operations of JUpdate have been extended to support temporal aspects. τJUpdate allows to specify temporal JSON updates in an expressive and user-friendly manner, and to efficiently execute them in the τJSchema environment.

时变 JSON 数据正在物联网平台、网络服务、云计算、在线社交网络和移动系统等当今各种应用框架中使用和交换。然而,在最先进的 JSON 数据管理中,还没有一种用于更新(即插入、修改和删除)时变 JSON 数据的共识或标准语言,就像用于时变关系数据的 TSQL2 或 SQL:2016 语言一样。此外,现有的基于 JSON 的 NoSQL DBMS(如 MongoDB、Couchbase、CouchDB、OrientDB 和 Riak)以及支持 JSON 文档的商业关系 DBMS(如 IBM DB2 12、Oracle 19c 和 MS SQL Server 2019)和开源 DBMS(如 PostgreSQL 15 和 MySQL 8.0)都没有提供任何维护时态 JSON 数据的设施。此外,在我们之前提出的名为 τJSchema 的时态 JSON 框架中,也没有时态 JSON 实例更新功能。基于这些原因,我们在本文中提出了一种时态更新语言,命名为 τJUpdate(时态 JUpdate),用于 τJSchema 环境中的 JSON 数据。我们将其定义为之前推出的非时态 JSON 更新语言的时态扩展,命名为 JUpdate(JSON 更新)。JUpdate 的语法和数据修改操作的操作语义都得到了扩展,以支持时态方面。τJUpdate 允许以一种富有表现力和用户友好的方式指定时态 JSON 更新,并在 τJSchema 环境中高效地执行这些更新。
{"title":"τJUpdate: An update language for time-varying JSON data","authors":"Zouhaier Brahmia ,&nbsp;Fabio Grandi ,&nbsp;Safa Brahmia ,&nbsp;Rafik Bouaziz","doi":"10.1016/j.cola.2024.101258","DOIUrl":"10.1016/j.cola.2024.101258","url":null,"abstract":"<div><p><span>Time-varying JSON data are being used and exchanged in various today’s application frameworks like IoT<span><span> platforms, Web services, cloud computing, </span>online social networks<span><span><span>, and mobile systems. However, in the state-of-the-art of JSON data management, there is neither a consensual nor a standard language for updating (i.e., inserting, modifying, and deleting) temporal JSON data, like the TSQL2 or SQL:2016 languages for temporal </span>relational data. Moreover, existing JSON-based NoSQL </span>DBMSs<span><span> (e.g., MongoDB, Couchbase, CouchDB, OrientDB, and Riak) and both commercial relational DBMSs (e.g., IBM DB2 12, Oracle 19c, and MS SQL Server 2019) and open-source ones (e.g., </span>PostgreSQL 15, and MySQL 8.0) supporting JSON documents do not provide any facility for maintaining temporal JSON data. Also in our previously proposed temporal JSON framework, called </span></span></span></span><span><math><mi>τ</mi></math></span>JSchema, there was no feature for temporal JSON instance updates. For these reasons, we propose in this article a temporal update language, named <span><math><mi>τ</mi></math></span>JUpdate (Temporal JUpdate), for JSON data in the <span><math><mi>τ</mi></math></span><span>JSchema environment. We define it as a temporal extension<span> of our previously introduced non-temporal JSON update language, named JUpdate (JSON Update). Both the syntax and the operational semantics of the data modification operations of JUpdate have been extended to support temporal aspects. </span></span><span><math><mi>τ</mi></math></span>JUpdate allows to specify temporal JSON updates in an expressive and user-friendly manner, and to efficiently execute them in the <span><math><mi>τ</mi></math></span>JSchema environment.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"79 ","pages":"Article 101258"},"PeriodicalIF":2.2,"publicationDate":"2024-01-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"139460031","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
AI-based clustering of similar issues in GitHub’s repositories 基于人工智能的 GitHub 仓库类似问题聚类
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-01-04 DOI: 10.1016/j.cola.2023.101257
Hamzeh Eyal Salman

Issues are highly prevalent on GitHub due to the increasing scale of its software repositories. These issues are submitted to the issue tracking system for several reasons: reporting a bug, asking a question, or other maintenance activities. The attractive repositories on Github receive a large number of issues daily. Assigning similar issues individually to different developers for validating and fixing introduces inconsistencies when asynchronously independent developers fix them, in addition to slowing the fixing process. However, grouping similar issues into clusters and assigning each cluster to the same and appropriate developer/team speeds up the fixing process. In this paper, a machine learning algorithm-based approach has been proposed to support issue management on GitHub by grouping similar issues together. For validity, the proposed approach was applied to 13 software components from different and large repositories. Findings reveal that the proposed approach identifies similar clusters of issues with promising results using widely used evaluation measures in this subject: Precision, Recall, and F-measure.

由于 GitHub 软件仓库的规模不断扩大,问题在 GitHub 上非常普遍。向问题跟踪系统提交这些问题有几个原因:报告错误、提出问题或其他维护活动。Github 上极具吸引力的软件源每天都会收到大量问题。将类似的问题单独分配给不同的开发人员进行验证和修复,除了会减慢修复进程外,还会在独立开发人员异步修复问题时引入不一致性。然而,将类似问题分组并将每个分组分配给相同且合适的开发人员/团队,可以加快修复过程。本文提出了一种基于机器学习算法的方法,通过将类似问题分组来支持 GitHub 上的问题管理。为了验证该方法的有效性,我们将其应用于来自不同大型软件库的 13 个软件组件。研究结果表明,所提出的方法能识别出类似的问题群组,并在该领域广泛使用的评估指标中取得了良好的结果:精确度、召回率和 F-测度。
{"title":"AI-based clustering of similar issues in GitHub’s repositories","authors":"Hamzeh Eyal Salman","doi":"10.1016/j.cola.2023.101257","DOIUrl":"10.1016/j.cola.2023.101257","url":null,"abstract":"<div><p>Issues are highly prevalent on GitHub due to the increasing scale of its software repositories. These issues are submitted to the issue tracking system for several reasons: reporting a bug, asking a question, or other maintenance activities. The attractive repositories on Github receive a large number of issues daily. Assigning similar issues individually to different developers for validating and fixing introduces inconsistencies when asynchronously independent developers fix them, in addition to slowing the fixing process. However, grouping similar issues into clusters and assigning each cluster to the same and appropriate developer/team speeds up the fixing process. In this paper, a machine learning algorithm-based approach has been proposed to support issue management on GitHub by grouping similar issues together. For validity, the proposed approach was applied to 13 software components from different and large repositories. Findings reveal that the proposed approach identifies similar clusters of issues with promising results using widely used evaluation measures in this subject: Precision, Recall, and F-measure.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"78 ","pages":"Article 101257"},"PeriodicalIF":2.2,"publicationDate":"2024-01-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"139095633","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
LEV4REC: A feature-based approach to engineering RSSEs LEV4REC:基于特征的工程 RSSE 方法
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-12-18 DOI: 10.1016/j.cola.2023.101256
Claudio Di Sipio, Juri Di Rocco, Davide Di Ruscio, Phuong T. Nguyen

To facilitate the development of recommender systems for software engineering (RSSEs), this paper introduces LEV4REC, a model-driven approach supporting all RSSE development stages, from design to deployment. It enables parameter fine-tuning, enhancing the developer and user experience by using a dedicated feature model for early configuration. We evaluated LEV4REC by applying it to two existing RSSEs based on different algorithms.

Results demonstrate its ability to recreate suitable recommendations and outperform a state-of-the-art approach. Qualitative findings from a focus group study further validate LEV4REC’s effectiveness, while indicating the need for extension points to support additional systems.

为了促进软件工程推荐系统(RSSE)的开发,本文介绍了 LEV4REC,这是一种模型驱动方法,支持从设计到部署的所有 RSSE 开发阶段。它可以进行参数微调,通过使用专用功能模型进行早期配置来增强开发人员和用户的体验。我们将 LEV4REC 应用于两个基于不同算法的现有 RSSE,对其进行了评估。结果表明,LEV4REC 能够重新创建合适的建议,并优于最先进的方法。焦点小组的定性研究结果进一步验证了 LEV4REC 的有效性,同时也表明需要扩展点来支持其他系统。
{"title":"LEV4REC: A feature-based approach to engineering RSSEs","authors":"Claudio Di Sipio,&nbsp;Juri Di Rocco,&nbsp;Davide Di Ruscio,&nbsp;Phuong T. Nguyen","doi":"10.1016/j.cola.2023.101256","DOIUrl":"10.1016/j.cola.2023.101256","url":null,"abstract":"<div><p><span>To facilitate the development of recommender systems<span> for software engineering (RSSEs), this paper introduces LEV4REC, a model-driven approach supporting all RSSE development stages, from design to deployment. It enables parameter fine-tuning, enhancing the developer and </span></span>user experience by using a dedicated feature model for early configuration. We evaluated LEV4REC by applying it to two existing RSSEs based on different algorithms.</p><p>Results demonstrate its ability to recreate suitable recommendations and outperform a state-of-the-art approach. Qualitative findings from a focus group study further validate LEV4REC’s effectiveness, while indicating the need for extension points to support additional systems.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"78 ","pages":"Article 101256"},"PeriodicalIF":2.2,"publicationDate":"2023-12-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138741160","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
A test amplification bot for Pharo/Smalltalk 用于 Pharo/Smalltalk 的测试放大机器人
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-12-11 DOI: 10.1016/j.cola.2023.101255
Mehrdad Abdi , Henrique Rocha , Alexandre Bergel , Serge Demeyer

Test amplification exploits the knowledge embedded in an existing test suite to strengthen it. A typical test amplification technique transforms the initial tests into additional test methods that increase the mutation coverage. Although past research demonstrated the benefits, additional steps need to be taken to incorporate test amplifiers in the everyday workflow of developers. This paper describes a proof-of-concept bot integrating Small-Amp with GitHub-Actions. The bot decides for itself which tests to amplify and does so within a limited time budget. To integrate the bot into the GitHub-Actions workflow, we incorporate three special-purpose features: (i) prioritization (to fit the process within a given time budget), (ii) sharding (to split lengthy tests into smaller chunks), and (iii) sandboxing (to make the amplifier crash-resilient). We evaluate our approach by installing the proof-of-concept extension of Small-Amp on five open-source projects deployed on GitHub. Our results show that a test amplification bot is feasible at a project level by integrating it into the build system. Moreover, we quantify the impact of prioritization, sharding, and sandboxing so that other test amplifiers may benefit from these special-purpose features. Our proof-of-concept demonstrates that the entry barrier for adopting test amplification can be significantly lowered.

测试放大技术利用现有测试套件中蕴含的知识来加强测试套件。典型的测试放大技术将初始测试转化为额外的测试方法,从而提高突变覆盖率。尽管过去的研究证明了这种技术的好处,但要将测试放大技术融入开发人员的日常工作流程中,还需要采取更多的措施。本文介绍了一个与 GitHub-Actions 集成的概念验证机器人。该机器人自行决定放大哪些测试,并在有限的时间预算内完成。为了将机器人集成到 GitHub-Actions 工作流中,我们加入了三个特殊用途功能:(i) 优先级排序(在给定的时间预算内完成流程),(ii) 分片(将冗长的测试分割成较小的块状),(iii) 沙箱(使放大器具有抗崩溃能力)。我们在 GitHub 上部署的五个开源项目上安装了概念验证扩展 ofamp,对我们的方法进行了评估。我们的结果表明,通过将测试放大机器人集成到构建系统中,它在项目层面上是可行的。此外,我们还量化了优先级、分片和沙箱的影响,以便其他测试放大机器人能从这些特殊用途功能中受益。我们的概念验证表明,采用测试放大工具的入门门槛可以大大降低。
{"title":"A test amplification bot for Pharo/Smalltalk","authors":"Mehrdad Abdi ,&nbsp;Henrique Rocha ,&nbsp;Alexandre Bergel ,&nbsp;Serge Demeyer","doi":"10.1016/j.cola.2023.101255","DOIUrl":"10.1016/j.cola.2023.101255","url":null,"abstract":"<div><p>Test amplification exploits the knowledge embedded in an existing test suite to strengthen it. A typical test amplification technique transforms the initial tests into additional test methods that increase the mutation coverage. Although past research demonstrated the benefits, additional steps need to be taken to incorporate test amplifiers in the everyday workflow of developers. This paper describes a proof-of-concept bot integrating <span>Small-Amp</span> with <span>GitHub-Actions</span>. The bot decides for itself which tests to amplify and does so within a limited time budget. To integrate the bot into the <span>GitHub-Actions</span> workflow, we incorporate three special-purpose features: (i) prioritization (to fit the process within a given time budget), (ii) sharding (to split lengthy tests into smaller chunks), and (iii) sandboxing (to make the amplifier crash-resilient). We evaluate our approach by installing the proof-of-concept extension of <span>Small-Amp</span> on five open-source projects deployed on GitHub. Our results show that a test amplification bot is feasible at a project level by integrating it into the build system. Moreover, we quantify the impact of prioritization, sharding, and sandboxing so that other test amplifiers may benefit from these special-purpose features. Our proof-of-concept demonstrates that the entry barrier for adopting test amplification can be significantly lowered.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"78 ","pages":"Article 101255"},"PeriodicalIF":2.2,"publicationDate":"2023-12-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138565824","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Improved software fault prediction using new code metrics and machine learning algorithms 使用新的代码度量和机器学习算法改进软件故障预测
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-12-02 DOI: 10.1016/j.cola.2023.101253
Manpreet Singh, Jitender Kumar Chhabra

Many code metrics exist for bug prediction. However, these metrics are based on the trivial count of code properties and are not sufficient. This research article proposes three new code metrics based on class complexity, coupling, and cohesion to fill the gap. The Promise repository metrics suite's complexity, coupling, and cohesion metrics are replaced by the proposed metrics, and a new metric suite is generated. Experiments show that the proposed metrics suite gives more than 2 % improvement in AUC and precision and approximately 1.5 % in f1-score and recall with fewer code metrics than the existing metrics suite.

存在许多用于bug预测的代码度量。然而,这些指标是基于代码属性的琐碎计数,是不够的。本文提出了基于类复杂性、耦合性和内聚性的三种新的代码度量来填补这一空白。Promise存储库度量套件的复杂性、耦合性和内聚性度量被提议的度量所取代,并生成一个新的度量套件。实验表明,与现有度量套件相比,所提出的度量套件在AUC和精度方面提高了2 %以上,在f1得分和召回率方面提高了约1.5 %,代码度量更少。
{"title":"Improved software fault prediction using new code metrics and machine learning algorithms","authors":"Manpreet Singh,&nbsp;Jitender Kumar Chhabra","doi":"10.1016/j.cola.2023.101253","DOIUrl":"10.1016/j.cola.2023.101253","url":null,"abstract":"<div><p>Many code metrics exist for bug prediction. However, these metrics are based on the trivial count of code properties and are not sufficient. This research article proposes three new code metrics based on class complexity, coupling, and cohesion to fill the gap. The Promise repository metrics suite's complexity, coupling, and cohesion metrics are replaced by the proposed metrics, and a new metric suite is generated. Experiments show that the proposed metrics suite gives more than 2 % improvement in AUC and precision and approximately 1.5 % in f1-score and recall with fewer code metrics than the existing metrics suite.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"78 ","pages":"Article 101253"},"PeriodicalIF":2.2,"publicationDate":"2023-12-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138508597","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
CHESSIoT: A model-driven approach for engineering multi-layered IoT systems CHESSIoT:用于多层物联网系统工程的模型驱动方法
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-11-30 DOI: 10.1016/j.cola.2023.101254
Felicien Ihirwe , Davide Di Ruscio , Simone Gianfranceschi , Alfonso Pierantonio

Context:

The current technology revolution, which places the highest value on people’s welfare, is frequently seen as being mainly supported by Internet of Things (IoT) technologies. IoT is regarded as a powerful multi-layered network of systems that integrates several heterogeneous, independently networked (sub-)systems working together to achieve a shared purpose.

Objective:

In this article, we present CHESSIoT, a model-driven engineering environment that integrates high-level visual design languages, software development, safety analysis, and deployment approaches for engineering multi-layered IoT systems. With CHESSIoT, users may conduct different engineering tasks on system and software models under development to enable earlier decision-making and take prospective measures, all supported by a unique environment.

Methodology:

This is achieved through multi-staged designs, most notably the physical, functional, and deployment architectures. The physical model specification is used to perform both qualitative and quantitative safety analysis by employing logical Fault-Trees models (FTs). The functional model specifies the system’s functional behavior and is later used to generate platform-specific code that can be deployed on low-level IoT device nodes. Additionally, the framework supports modeling the system’s deployment plan and run-time service provisioning, which would ultimately be transformed into deployment configuration artifacts ready for execution on remote servers.

Results:

To showcase the effectiveness of our proposed approach, as well as the capability of the supporting tool, a multi-layered Home Automation system (HAS) scenario has been developed covering all its design, development, analysis, and deployment aspects. Furthermore, we present the results from different evaluation mechanisms which include a comparative analysis and a qualitative assessment. The evaluation mechanisms target mainly completeness of CHESSIoT by addressing specific research questions.

背景:当前的技术革命以人类福祉为最高价值,通常被视为主要由物联网(IoT)技术支持。物联网被认为是一个强大的多层系统网络,它集成了几个异构的、独立的网络(子系统),共同工作以实现一个共同的目的。目的:在本文中,我们介绍了CHESSIoT,一个模型驱动的工程环境,它集成了高级视觉设计语言、软件开发、安全分析和工程多层物联网系统的部署方法。使用CHESSIoT,用户可以在正在开发的系统和软件模型上执行不同的工程任务,从而实现早期决策并采取前瞻性措施,所有这些都由独特的环境支持。方法:这是通过多阶段设计来实现的,最明显的是物理、功能和部署架构。物理模型规范通过逻辑故障树模型(FTs)进行定性和定量的安全分析。功能模型指定系统的功能行为,随后用于生成可部署在低级物联网设备节点上的平台特定代码。此外,该框架支持对系统的部署计划和运行时服务供应进行建模,这些最终将被转换为部署配置构件,以便在远程服务器上执行。结果:为了展示我们提出的方法的有效性,以及支持工具的能力,开发了一个多层家庭自动化系统(HAS)场景,涵盖了其所有设计,开发,分析和部署方面。此外,我们还介绍了不同评估机制的结果,包括比较分析和定性评估。评估机制的主要目标是通过解决具体的研究问题来实现CHESSIoT的完整性。
{"title":"CHESSIoT: A model-driven approach for engineering multi-layered IoT systems","authors":"Felicien Ihirwe ,&nbsp;Davide Di Ruscio ,&nbsp;Simone Gianfranceschi ,&nbsp;Alfonso Pierantonio","doi":"10.1016/j.cola.2023.101254","DOIUrl":"10.1016/j.cola.2023.101254","url":null,"abstract":"<div><h3>Context:</h3><p>The current technology revolution, which places the highest value on people’s welfare, is frequently seen as being mainly supported by Internet of Things (IoT) technologies. IoT is regarded as a powerful multi-layered network of systems that integrates several heterogeneous, independently networked (sub-)systems working together to achieve a shared purpose.</p></div><div><h3>Objective:</h3><p>In this article, we present CHESSIoT, a model-driven engineering environment that integrates high-level visual design languages, software development, safety analysis, and deployment approaches for engineering multi-layered IoT systems. With CHESSIoT, users may conduct different engineering tasks on system and software models under development to enable earlier decision-making and take prospective measures, all supported by a unique environment.</p></div><div><h3>Methodology:</h3><p>This is achieved through multi-staged designs, most notably the physical, functional, and deployment architectures<span>. The physical model specification is used to perform both qualitative and quantitative safety analysis by employing logical Fault-Trees models (FTs). The functional model specifies the system’s functional behavior and is later used to generate platform-specific code that can be deployed on low-level IoT device nodes. Additionally, the framework supports modeling the system’s deployment plan and run-time service provisioning, which would ultimately be transformed into deployment configuration artifacts ready for execution on remote servers.</span></p></div><div><h3>Results:</h3><p>To showcase the effectiveness of our proposed approach, as well as the capability of the supporting tool, a multi-layered Home Automation system (HAS) scenario has been developed covering all its design, development, analysis, and deployment aspects. Furthermore, we present the results from different evaluation mechanisms which include a comparative analysis and a qualitative assessment. The evaluation mechanisms target mainly completeness of CHESSIoT by addressing specific research questions.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"78 ","pages":"Article 101254"},"PeriodicalIF":2.2,"publicationDate":"2023-11-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138508567","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
期刊
Journal of Computer Languages
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1