首页 > 最新文献

Science of Computer Programming最新文献

英文 中文
Human-in-the-loop online just-in-time software defect prediction: What have we achieved and what do we still miss? 在线实时软件缺陷预测:我们实现了什么,我们还错过了什么?
IF 1.5 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2025-03-03 DOI: 10.1016/j.scico.2025.103296
Xutong Liu , Yufei Zhou , Yutian Tang , Junyan Qian , Yuming Zhou
Background. The Online Just-In-Time Software Defect Prediction (O-JIT-SDP) employs an online model to predict whether a new software change will introduce a bug. Previous studies have neglected to consider the interaction between Software Quality Assurance (SQA) personnel and the model, potentially missing opportunities to refine prediction accuracy through human feedback. Problem. A recent study introduced the first Human-In-The-Loop (HITL) O-JIT-SDP framework called HumLa, integrating SQA staff feedback without accounting for inspection time to boost the prediction performance of O-JIT-SDP. However, upon a thorough revisit of HumLa, we find that while certain aspects of the HITL O-JIT-SDP system appear feasible in ideal conditions, they prove impractical in real-world context. Objective. We aim to reformulate HITL O-JIT-SDP, which are crucial yet absent for practical application. Method. We propose four crucial enhancements to facilitate practical application of HITL O-JIT-SDP. First, we advocate for the use of observed labels rather than ground-truth labels to evaluate online classifiers in real-world settings. Second, we suggest refraining from utilizing the entire data stream for normalizing features of each new instance, as was done in HumLa. Third, we propose incorporating non-zero SQA inspection time into the formulation of HITL O-JIT-SDP. Fourth, we introduce real-time statistical classifier comparison into the HITL system. Result. Our replication uncovers that the performance evaluation of HumLa under a practical scenario significantly deviate from the originally reported performance under an ideal experimental scenario, potentially diminishing the promise of HITL O-JIT-SDP. Furthermore, with our enhanced HITL O-JIT-SDP framework, we revisit a fundamental question in O-JIT-SDP: the benefits of HITL integration. Our experimental findings demonstrate that HITL not only enhances O-JIT-SDP when SQA feedback surpasses Bug-Fixing Commit (BFC) feedback (by providing training commits with superior label quality in less time) but also improves O-JIT-SDP even when SQA feedback delay equals that of BFC feedback (by consistently delivering training commits with improved label quality). The real-time statistical analysis reveals that HITL approaches generally outperform non-HITL O-JIT-SDP approaches with a statistically significant margin. Conclusion. Our work bolsters model evaluation credibility and holds the potential to substantially enhance the value of HITL O-JIT-SDP for industrial applications.
背景。在线即时软件缺陷预测(O-JIT-SDP)采用在线模型来预测一个新的软件变更是否会引入一个缺陷。以前的研究忽略了考虑软件质量保证(SQA)人员和模型之间的相互作用,潜在地错过了通过人类反馈来改进预测准确性的机会。问题。最近的一项研究引入了第一个名为HumLa的人在环(human - in - loop) O-JIT-SDP框架,该框架集成了SQA员工的反馈,而不考虑检查时间,从而提高了O-JIT-SDP的预测性能。然而,在对HumLa进行彻底的重新审视后,我们发现,虽然HITL O-JIT-SDP系统的某些方面在理想条件下似乎是可行的,但在现实环境中却被证明是不切实际的。目标。我们的目标是重新制定HITL O-JIT-SDP,这是至关重要的,但缺乏实际应用。方法。为了促进HITL O-JIT-SDP的实际应用,我们提出了四个关键的改进。首先,我们提倡使用观察标签而不是真实标签来评估现实世界中的在线分类器。其次,我们建议避免使用整个数据流来规范化每个新实例的特征,就像在HumLa中所做的那样。第三,我们建议将非零SQA检验时间纳入HITL O-JIT-SDP的制定中。第四,在HITL系统中引入实时统计分类器比对。结果。我们的复制发现,HumLa在实际场景下的性能评估与最初报道的理想实验场景下的性能显著偏离,潜在地削弱了HITL O-JIT-SDP的承诺。此外,通过我们增强的HITL O-JIT-SDP框架,我们重新审视了O-JIT-SDP中的一个基本问题:HITL集成的好处。我们的实验结果表明,HITL不仅在SQA反馈超过Bug-Fixing Commit (BFC)反馈时(通过在更短的时间内提供具有更高标签质量的训练提交)增强了O-JIT-SDP,而且在SQA反馈延迟与BFC反馈延迟相同时(通过持续提供具有改进标签质量的训练提交)也改善了O-JIT-SDP。实时统计分析显示,HITL方法通常优于非HITL O-JIT-SDP方法,并且在统计上有显著的差距。结论。我们的工作提高了模型评估的可信度,并有可能大大提高HITL O-JIT-SDP在工业应用中的价值。
{"title":"Human-in-the-loop online just-in-time software defect prediction: What have we achieved and what do we still miss?","authors":"Xutong Liu ,&nbsp;Yufei Zhou ,&nbsp;Yutian Tang ,&nbsp;Junyan Qian ,&nbsp;Yuming Zhou","doi":"10.1016/j.scico.2025.103296","DOIUrl":"10.1016/j.scico.2025.103296","url":null,"abstract":"<div><div><strong>Background.</strong> The Online Just-In-Time Software Defect Prediction (O-JIT-SDP) employs an online model to predict whether a new software change will introduce a bug. Previous studies have neglected to consider the interaction between Software Quality Assurance (SQA) personnel and the model, potentially missing opportunities to refine prediction accuracy through human feedback. <strong>Problem.</strong> A recent study introduced the first Human-In-The-Loop (HITL) O-JIT-SDP framework called HumLa, integrating SQA staff feedback without accounting for inspection time to boost the prediction performance of O-JIT-SDP. However, upon a thorough revisit of HumLa, we find that while certain aspects of the HITL O-JIT-SDP system appear feasible in ideal conditions, they prove impractical in real-world context. <strong>Objective.</strong> We aim to reformulate HITL O-JIT-SDP, which are crucial yet absent for practical application. <strong>Method.</strong> We propose four crucial enhancements to facilitate practical application of HITL O-JIT-SDP. First, we advocate for the use of observed labels rather than ground-truth labels to evaluate online classifiers in real-world settings. Second, we suggest refraining from utilizing the entire data stream for normalizing features of each new instance, as was done in HumLa. Third, we propose incorporating non-zero SQA inspection time into the formulation of HITL O-JIT-SDP. Fourth, we introduce real-time statistical classifier comparison into the HITL system. <strong>Result.</strong> Our replication uncovers that the performance evaluation of HumLa under a practical scenario significantly deviate from the originally reported performance under an ideal experimental scenario, potentially diminishing the promise of HITL O-JIT-SDP. Furthermore, with our enhanced HITL O-JIT-SDP framework, we revisit a fundamental question in O-JIT-SDP: the benefits of HITL integration. Our experimental findings demonstrate that HITL not only enhances O-JIT-SDP when SQA feedback surpasses Bug-Fixing Commit (BFC) feedback (by providing training commits with superior label quality in less time) but also improves O-JIT-SDP even when SQA feedback delay equals that of BFC feedback (by consistently delivering training commits with improved label quality). The real-time statistical analysis reveals that HITL approaches generally outperform non-HITL O-JIT-SDP approaches with a statistically significant margin. <strong>Conclusion.</strong> Our work bolsters model evaluation credibility and holds the potential to substantially enhance the value of HITL O-JIT-SDP for industrial applications.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"244 ","pages":"Article 103296"},"PeriodicalIF":1.5,"publicationDate":"2025-03-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"143551678","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Model checking and verification of a rail-side protection system 轨侧保护系统的模型检验与验证
IF 1.5 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2025-02-28 DOI: 10.1016/j.scico.2025.103286
Fatih Sarikoc
Ensuring safe operation of level crossings is crucial in preventing fatalities and injuries at rail-road intersections. This study presents a Petri Net model of a level-crossing system that includes an obstacle detection system and dedicated protection signal to enhance safety. The model was analyzed using linear temporal logic and computation tree logic, with formal verification performed via TINA and TAPAAL tools. As a result of the model-checking experiments, the proposed Petri Net model successfully complies with the given safety criteria. Additionally, Fault Tree Analysis (FTA) was employed to systematically assess system-level risk, highlighting potential failure points and their impact. FTA provides a quantitative risk evaluation that complements the formal verification process, ensuring a thorough system reliability assessment.
确保平交道口的安全运行是防止铁路公路交叉口伤亡事故发生的关键。本文提出了一种包含障碍物检测系统和专用保护信号以提高安全性的平交道口系统的Petri网模型。采用线性时间逻辑和计算树逻辑对模型进行分析,并通过TINA和TAPAAL工具进行形式化验证。模型检验实验表明,所提出的Petri网模型符合给定的安全准则。此外,采用故障树分析(FTA)系统地评估系统级风险,突出潜在的故障点及其影响。FTA提供了一个定量的风险评估,补充了正式的验证过程,确保了一个彻底的系统可靠性评估。
{"title":"Model checking and verification of a rail-side protection system","authors":"Fatih Sarikoc","doi":"10.1016/j.scico.2025.103286","DOIUrl":"10.1016/j.scico.2025.103286","url":null,"abstract":"<div><div>Ensuring safe operation of level crossings is crucial in preventing fatalities and injuries at rail-road intersections. This study presents a Petri Net model of a level-crossing system that includes an obstacle detection system and dedicated protection signal to enhance safety. The model was analyzed using linear temporal logic and computation tree logic, with formal verification performed via TINA and TAPAAL tools. As a result of the model-checking experiments, the proposed Petri Net model successfully complies with the given safety criteria. Additionally, Fault Tree Analysis (FTA) was employed to systematically assess system-level risk, highlighting potential failure points and their impact. FTA provides a quantitative risk evaluation that complements the formal verification process, ensuring a thorough system reliability assessment.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"244 ","pages":"Article 103286"},"PeriodicalIF":1.5,"publicationDate":"2025-02-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"143580311","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Trusta: Reasoning about assurance cases with formal methods and large language models Trusta:使用形式化方法和大型语言模型对保证案例进行推理
IF 1.5 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2025-02-28 DOI: 10.1016/j.scico.2025.103288
Zezhong Chen , Yuxin Deng , Wenjie Du
Assurance cases can be used to argue for the safety of products in safety engineering. In safety-critical areas, the construction of assurance cases is indispensable. We introduce the Trustworthiness Derivation Tree Analyzer (Trusta), a tool designed to enhance the development and evaluation of assurance cases by integrating formal methods and large language models (LLMs). The tool incorporates a Prolog interpreter and solvers like Z3 and MONA to handle various constraint types, enhancing the precision and efficiency of assurance case assessment. Beyond traditional formal methods, Trusta harnesses the power of LLMs including ChatGPT-3.5, ChatGPT-4, and PaLM 2, assisting humans in the development of assurance cases and the writing of formal constraints. Our evaluation, through qualitative and quantitative analyses, shows Trusta's impact on improving assurance case quality and efficiency. Trusta enables junior engineers to reach the skill level of experienced safety experts, narrowing the expertise gap and greatly benefiting those with limited experience. Case studies, including automated guided vehicles (AGVs), demonstrate Trusta's effectiveness in identifying subtle issues and improving the overall trustworthiness of complex systems.
在安全工程中,保证案例可以用来论证产品的安全性。在安全关键领域,保障案例的构建是必不可少的。我们介绍了可信度推导树分析器(Trusta),该工具旨在通过集成形式化方法和大型语言模型(llm)来增强保证案例的开发和评估。该工具集成了Prolog解释器和像Z3和MONA这样的求解器来处理各种约束类型,提高了保证案例评估的精度和效率。除了传统的形式化方法,Trusta还利用包括ChatGPT-3.5、ChatGPT-4和PaLM 2在内的法学硕士的力量,帮助人们开发保证案例和编写形式化约束。通过定性和定量分析,我们的评估显示了Trusta对提高保证案例质量和效率的影响。Trusta使初级工程师能够达到经验丰富的安全专家的技能水平,缩小了专业知识差距,使经验有限的人受益匪浅。包括自动导引车(agv)在内的案例研究证明了Trusta在识别细微问题和提高复杂系统的整体可信度方面的有效性。
{"title":"Trusta: Reasoning about assurance cases with formal methods and large language models","authors":"Zezhong Chen ,&nbsp;Yuxin Deng ,&nbsp;Wenjie Du","doi":"10.1016/j.scico.2025.103288","DOIUrl":"10.1016/j.scico.2025.103288","url":null,"abstract":"<div><div>Assurance cases can be used to argue for the safety of products in safety engineering. In safety-critical areas, the construction of assurance cases is indispensable. We introduce the Trustworthiness Derivation Tree Analyzer (Trusta), a tool designed to enhance the development and evaluation of assurance cases by integrating formal methods and large language models (LLMs). The tool incorporates a Prolog interpreter and solvers like Z3 and MONA to handle various constraint types, enhancing the precision and efficiency of assurance case assessment. Beyond traditional formal methods, Trusta harnesses the power of LLMs including ChatGPT-3.5, ChatGPT-4, and PaLM 2, assisting humans in the development of assurance cases and the writing of formal constraints. Our evaluation, through qualitative and quantitative analyses, shows Trusta's impact on improving assurance case quality and efficiency. Trusta enables junior engineers to reach the skill level of experienced safety experts, narrowing the expertise gap and greatly benefiting those with limited experience. Case studies, including automated guided vehicles (AGVs), demonstrate Trusta's effectiveness in identifying subtle issues and improving the overall trustworthiness of complex systems.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"244 ","pages":"Article 103288"},"PeriodicalIF":1.5,"publicationDate":"2025-02-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"143529038","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
LayoutOptimizer: A layout rendering performance optimizer for Android application LayoutOptimizer:用于Android应用程序的布局渲染性能优化器
IF 1.5 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2025-02-26 DOI: 10.1016/j.scico.2025.103287
Yue Wu , Zhentao He , Qingnan Wang , Yihui Wang , Huaxiao Liu
The perceived delays experienced by Android application users can have a significant impact on their overall experience. Slow UI rendering is a major factor causing perceived delays. Poorly implemented UI layouts can have a considerable impact on rendering performance. To optimize the rendering performance of a layout, an important way is to solve its hierarchy issues. While there are layout performance analysis tools available, they lack effective solutions for fixing hierarchy issues, which limits their ability to assist developers in resolving such issues. In this paper, we propose a novel approach called LayoutOptimizer, which can automatically identify and solve two common hierarchy issues in Android layouts. The evaluation based on 31 layouts from real-world apps demonstrates that LayoutOptimizer can effectively fix the two common hierarchy issues while ensuring visual consistency.
Android应用程序用户感知到的延迟会对他们的整体体验产生重大影响。缓慢的UI呈现是导致感知延迟的主要因素。执行不当的UI布局会对渲染性能产生相当大的影响。优化布局的呈现性能,一个重要的途径是解决布局的层次问题。虽然有可用的布局性能分析工具,但它们缺乏修复层次问题的有效解决方案,这限制了它们帮助开发人员解决此类问题的能力。在本文中,我们提出了一种名为LayoutOptimizer的新方法,它可以自动识别和解决Android布局中两个常见的层次问题。基于实际应用的31个布局的评估表明,LayoutOptimizer可以有效地解决两个常见的层次问题,同时确保视觉一致性。
{"title":"LayoutOptimizer: A layout rendering performance optimizer for Android application","authors":"Yue Wu ,&nbsp;Zhentao He ,&nbsp;Qingnan Wang ,&nbsp;Yihui Wang ,&nbsp;Huaxiao Liu","doi":"10.1016/j.scico.2025.103287","DOIUrl":"10.1016/j.scico.2025.103287","url":null,"abstract":"<div><div>The perceived delays experienced by Android application users can have a significant impact on their overall experience. Slow UI rendering is a major factor causing perceived delays. Poorly implemented UI layouts can have a considerable impact on rendering performance. To optimize the rendering performance of a layout, an important way is to solve its hierarchy issues. While there are layout performance analysis tools available, they lack effective solutions for fixing hierarchy issues, which limits their ability to assist developers in resolving such issues. In this paper, we propose a novel approach called LayoutOptimizer, which can automatically identify and solve two common hierarchy issues in Android layouts. The evaluation based on 31 layouts from real-world apps demonstrates that LayoutOptimizer can effectively fix the two common hierarchy issues while ensuring visual consistency.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"244 ","pages":"Article 103287"},"PeriodicalIF":1.5,"publicationDate":"2025-02-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"143510919","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Path-guided conformance test case generation for models with data and time using symbolic execution techniques 使用符号执行技术为具有数据和时间的模型生成路径引导的一致性测试用例
IF 1.5 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2025-02-20 DOI: 10.1016/j.scico.2025.103285
Boutheina Bannour , Arnault Lapitre , Pascale Le Gall
This paper presents an approach leveraging symbolic execution techniques to generate test cases from models mixing data and time. Our methodology focuses on symbolic paths, satisfying a trace-determinism property, which allows testing behaviors in the presence of uninitialized state variables. We construct tree-like test cases around these test purposes, with verdicts on their leaves, meticulously crafting verdict conditions from symbolic execution path conditions encoding temporal data-dependent constraints. Our test case generation is implemented within the symbolic execution platform Diversity. Through experiments, we provide metrics and quantify some aspects of the generated test cases, including the reachability of verdicts within observation time frames specified by the tester.
本文提出了一种利用符号执行技术从混合数据和时间的模型中生成测试用例的方法。我们的方法侧重于符号路径,满足跟踪确定性属性,允许在未初始化状态变量存在的情况下测试行为。我们围绕这些测试目的构建树状的测试用例,在它们的叶子上放置判决,从编码时间数据相关约束的符号执行路径条件精心制作判决条件。我们的测试用例生成是在符号执行平台Diversity中实现的。通过实验,我们提供度量并量化生成的测试用例的某些方面,包括在测试人员指定的观察时间框架内判定的可达性。
{"title":"Path-guided conformance test case generation for models with data and time using symbolic execution techniques","authors":"Boutheina Bannour ,&nbsp;Arnault Lapitre ,&nbsp;Pascale Le Gall","doi":"10.1016/j.scico.2025.103285","DOIUrl":"10.1016/j.scico.2025.103285","url":null,"abstract":"<div><div>This paper presents an approach leveraging symbolic execution techniques to generate test cases from models mixing data and time. Our methodology focuses on symbolic paths, satisfying a trace-determinism property, which allows testing behaviors in the presence of uninitialized state variables. We construct tree-like test cases around these test purposes, with verdicts on their leaves, meticulously crafting verdict conditions from symbolic execution path conditions encoding temporal data-dependent constraints. Our test case generation is implemented within the symbolic execution platform Diversity. Through experiments, we provide metrics and quantify some aspects of the generated test cases, including the reachability of verdicts within observation time frames specified by the tester.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"243 ","pages":"Article 103285"},"PeriodicalIF":1.5,"publicationDate":"2025-02-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"143480120","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
SBD: Securing safe rust automatically from unsafe rust SBD:自动从不安全的锈迹中保护安全锈迹
IF 1.5 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2025-02-19 DOI: 10.1016/j.scico.2025.103281
Shaowen Li, Hiroyuiki Sato
System programming expects programmers to have fine control over available resources to ensure both the correctness and efficiency of the system. Programming languages designed for this type of task provide little abstraction of the underlying hardware. With greater power to interact directly with the machine comes greater responsibility for programmers to manage the hardware themselves to avoid any undefined behavior. C and C++ have been the long-standing de facto languages in this field as they offer both the programming experience of a modern language and the ability to manipulate low-level resources with the abstraction of pointers. However, this responsibility is demanding for programmers, leading to numerous bugs caused by improper resource management.
Rust is a rising system programming language aiming to combine both low-level resource manipulation and high-level resource management. The design philosophy of Rust is to make the compiler play a vital role in resource management. A set of static analysis unique to Rust are performed at compile time to ensure resources are handled correctly without runtime cost. Nevertheless, static analysis is inherently conservative and Rust addresses this by providing a feature called unsafe Rust, which is exempt from its strict static checks. Various unsafe operations, such as raw pointer dereferencing and foreign function calls, are only permitted within an unsafe code block. This is essential to make the language sufficiently expressive. Nonetheless, Rust's unsafe block only matters statically for type checking, without any runtime assurance. As a consequence, the effects of unsafe operations within an unsafe block can spread to the outside safe code and jeopardize its safety.
We present Safety Block Division (SBD), a completely automatic solution to isolate safe Rust from unsafe Rust. The fundamental design of SBD is its safety data-flow analysis performed on Rust intermediate representation (IR) to fully incorporate language features. This distinguishes SBD from previous works. Past designs primarily operate on LLVM IR and require manual efforts or external tools. SBD is entirely built into the Rust compiler, and thus no programmer involvement is required. We extensively evaluate SBD on popular Rust crates (libraries). Our experiments reveal that SBD incurs negligible binary size (0.31% increase on average) and runtime (a geometric mean of 7.52% increase across eight benchmarks) overhead. We also demonstrate that SBD is capable of protecting against real-world vulnerabilities.
系统编程要求程序员对可用资源进行精细控制,以确保系统的正确性和效率。专为此类任务设计的编程语言几乎没有对底层硬件进行抽象。随着与机器直接交互的能力增强,程序员有更大的责任自行管理硬件,以避免出现任何未定义的行为。C 和 C++ 一直是这一领域的主流语言,因为它们既能提供现代语言的编程体验,又能利用指针的抽象功能操作底层资源。Rust 是一种新兴的系统编程语言,旨在将底层资源操作和高层资源管理结合起来。Rust 的设计理念是让编译器在资源管理中发挥重要作用。在编译时,Rust 会执行一套独有的静态分析,以确保资源得到正确处理,而不会产生运行时成本。然而,静态分析本质上是保守的,Rust 通过提供一种称为不安全 Rust 的功能来解决这一问题,这种功能不受严格的静态检查的限制。各种不安全操作,如原始指针反引用和外来函数调用,只允许在不安全代码块中进行。这对于使语言具有足够的表现力至关重要。尽管如此,Rust 的不安全代码块只在类型检查中起静态作用,而没有任何运行时保证。因此,不安全代码块中不安全操作的影响可能会扩散到外部安全代码,并危及其安全性。我们提出了安全代码块划分(SBD),这是一种完全自动的解决方案,可将安全的 Rust 代码与不安全的 Rust 代码隔离开来。SBD 的基本设计是在 Rust 中间表示(IR)上进行安全数据流分析,以充分结合语言特性。这使 SBD 有别于以往的工作。以往的设计主要在 LLVM IR 上运行,需要人工或外部工具。SBD 完全内置在 Rust 编译器中,因此不需要程序员的参与。我们在流行的 Rust Crates(库)上对 SBD 进行了广泛评估。实验结果表明,SBD 产生的二进制大小(平均增加 0.31%)和运行时间(在八个基准中几何平均增加 7.52%)开销可以忽略不计。我们还证明,SBD 能够抵御现实世界中的漏洞。
{"title":"SBD: Securing safe rust automatically from unsafe rust","authors":"Shaowen Li,&nbsp;Hiroyuiki Sato","doi":"10.1016/j.scico.2025.103281","DOIUrl":"10.1016/j.scico.2025.103281","url":null,"abstract":"<div><div>System programming expects programmers to have fine control over available resources to ensure both the correctness and efficiency of the system. Programming languages designed for this type of task provide little abstraction of the underlying hardware. With greater power to interact directly with the machine comes greater responsibility for programmers to manage the hardware themselves to avoid any undefined behavior. C and C++ have been the long-standing de facto languages in this field as they offer both the programming experience of a modern language and the ability to manipulate low-level resources with the abstraction of pointers. However, this responsibility is demanding for programmers, leading to numerous bugs caused by improper resource management.</div><div>Rust is a rising system programming language aiming to combine both low-level resource manipulation and high-level resource management. The design philosophy of Rust is to make the compiler play a vital role in resource management. A set of static analysis unique to Rust are performed at compile time to ensure resources are handled correctly without runtime cost. Nevertheless, static analysis is inherently conservative and Rust addresses this by providing a feature called <em>unsafe Rust</em>, which is exempt from its strict static checks. Various unsafe operations, such as raw pointer dereferencing and foreign function calls, are only permitted within an unsafe code block. This is essential to make the language sufficiently expressive. Nonetheless, Rust's <em>unsafe block</em> only matters statically for type checking, without any runtime assurance. As a consequence, the effects of unsafe operations within an unsafe block can spread to the outside safe code and jeopardize its safety.</div><div>We present <em><u>S</u>afety <u>B</u>lock <u>D</u>ivision</em> (SBD), a completely automatic solution to isolate safe Rust from unsafe Rust. The fundamental design of SBD is its safety data-flow analysis performed on Rust intermediate representation (IR) to fully incorporate language features. This distinguishes SBD from previous works. Past designs primarily operate on LLVM IR and require manual efforts or external tools. SBD is entirely built into the Rust compiler, and thus no programmer involvement is required. We extensively evaluate SBD on popular Rust crates (libraries). Our experiments reveal that SBD incurs negligible binary size (0.31% increase on average) and runtime (a geometric mean of 7.52% increase across eight benchmarks) overhead. We also demonstrate that SBD is capable of protecting against real-world vulnerabilities.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"243 ","pages":"Article 103281"},"PeriodicalIF":1.5,"publicationDate":"2025-02-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"143454135","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Extending the EB4EB framework with parameterised events 使用参数化事件扩展EB4EB框架
IF 1.5 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2025-02-19 DOI: 10.1016/j.scico.2025.103279
Peter Rivière, Neeraj Kumar Singh, Yamine Ait-Ameur, Guillaume Dupont
EB4EB, standing for Event-B for Event-B, is a framework that supports the formalisation of Event-B models using first-order logic and set-theory, so that it becomes possible to manipulate them as first-class objects. This framework relies on an Event-B algebraic theory, which serves as a meta-theory formalising, explicitly, all of the features of an Event-B machine. States, events, invariants, variants, etc... are formalised through data-types and operators. When this meta-theory is instantiated, an Event-B model becomes a first-order logic and set-theoretic formula, described in an Event-B context.
Because it can handle machine elements as terms in formulas, the EB4EB framework enables the definition of new specific proof obligations and analyses. Such analyses may then be applied to any EB4EB machines in order to establish advanced properties, not natively present in the Event-B method, such as deadlock-freeness or liveness requirements. These analyses are non-intrusive since they do not require to alter the machine in order to be performed.
In the previous formalisation of the EB4EB framework only states and events were handled, limiting the expressive reasoning power of the framework. This paper presents an extension of the EB4EB framework to support parameterised events, an important feature of Event-B. This extension is not straightforward in EB4EB. Indeed, the typing system supported by Event-B theories is not rich enough to describe such extension in a constructive manner as for the other Event-B features formalised in EB4EB. The proposed solution, described in this paper, consists in defining an axiomatic formalisation of event parameters definitions. We also show that the proof obligations and model analyses we have defined scale to handle event parameters. The approach is illustrated on different case studies we have developed.
EB4EB,代表Event-B的Event-B,是一个使用一阶逻辑和集合论支持Event-B模型形式化的框架,因此可以将它们作为一级对象来操作。这个框架依赖于Event-B代数理论,它作为一个元理论,显式地形式化了Event-B机器的所有特征。状态、事件、不变量、变量等等……通过数据类型和操作符形式化。当这个元理论被实例化时,Event-B模型就变成了在Event-B上下文中描述的一阶逻辑和集合论公式。因为它可以将机器元素作为公式中的术语来处理,所以EB4EB框架可以定义新的特定证明义务和分析。这样的分析可以应用到任何EB4EB机器上,以建立Event-B方法中原生不存在的高级属性,例如死锁自由或活动需求。这些分析是非侵入性的,因为它们不需要为了执行而改变机器。在以前的EB4EB框架的形式化中,只处理状态和事件,限制了框架的表达推理能力。本文提出了EB4EB框架的扩展,以支持参数化事件,这是Event-B的一个重要特征。这个扩展是不直接在EB4EB。事实上,事件- b理论支持的类型系统还不够丰富,无法像在EB4EB中形式化的其他事件- b特性那样以建设性的方式描述这种扩展。本文提出的解决方案包括定义事件参数定义的公理化形式化。我们还展示了我们定义的证明义务和模型分析来处理事件参数。我们开发的不同案例研究说明了这种方法。
{"title":"Extending the EB4EB framework with parameterised events","authors":"Peter Rivière,&nbsp;Neeraj Kumar Singh,&nbsp;Yamine Ait-Ameur,&nbsp;Guillaume Dupont","doi":"10.1016/j.scico.2025.103279","DOIUrl":"10.1016/j.scico.2025.103279","url":null,"abstract":"<div><div>EB4EB, standing for <em>Event-B for Event-B</em>, is a framework that supports the formalisation of Event-B models using first-order logic and set-theory, so that it becomes possible to manipulate them as first-class objects. This framework relies on an Event-B algebraic theory, which serves as a meta-theory formalising, explicitly, all of the features of an Event-B machine. States, events, invariants, variants, etc... are formalised through data-types and operators. When this meta-theory is instantiated, an Event-B model becomes a first-order logic and set-theoretic formula, described in an Event-B context.</div><div>Because it can handle machine elements as terms in formulas, the EB4EB framework enables the definition of new specific proof obligations and <em>analyses</em>. Such analyses may then be applied to any EB4EB machines in order to establish advanced properties, not natively present in the Event-B method, such as deadlock-freeness or liveness requirements. These analyses are <em>non-intrusive</em> since they do not require to alter the machine in order to be performed.</div><div>In the previous formalisation of the EB4EB framework only states and events were handled, limiting the expressive reasoning power of the framework. This paper presents an extension of the EB4EB framework to support parameterised events, an important feature of Event-B. This extension is not straightforward in EB4EB. Indeed, the typing system supported by Event-B theories is not rich enough to describe such extension in a constructive manner as for the other Event-B features formalised in EB4EB. The proposed solution, described in this paper, consists in defining an axiomatic formalisation of event parameters definitions. We also show that the proof obligations and model analyses we have defined scale to handle event parameters. The approach is illustrated on different case studies we have developed.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"243 ","pages":"Article 103279"},"PeriodicalIF":1.5,"publicationDate":"2025-02-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"143480241","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Graph neural network-based long method and blob code smell detection 基于图神经网络的长方法和blob代码气味检测
IF 1.5 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2025-02-18 DOI: 10.1016/j.scico.2025.103284
Minnan Zhang , Jingdong Jia , Luiz Fernando Capretz , Xin Hou , Huobin Tan
The concept of code smell was first proposed in the late nineties, to refer to signals that code may need refactoring. While not necessarily affecting functionality, code smell can hinder understandability and future scalability of the program. As a result, the precise detection of code smell has become an important topic in coding research. However, current detection methods are limited by imbalanced and industrial-irrelevant datasets, a lack of sufficient structural and logical information on the code, and simple model architecture. Given these limitations, this paper utilized an industry-relevant and sufficient dataset and then developed a graph neural network to better detect code smell. First, we identified Long Method and Blob as our research subjects due to their frequent occurrence and impacts on the maintainability of software. We then designed modified fuzzy sampling with focalloss to address the issue of data imbalance. Second, to deal with the large volume of data, we proposed a global and local attention scoring mechanism to extract the key information from the code. Third, in order to design a graph neural network specifically for the abstract syntax tree of code, we combined Euclidean space and non-Euclidean space. Finally, we compared our method with other machine learning methods and deep learning methods. The results demonstrate that our method outperforms the other methods on Long Method and Blob, which indicates the effectiveness of our proposed method.
代码气味的概念最早是在90年代后期提出的,指的是代码可能需要重构的信号。虽然不一定会影响功能,但代码气味会阻碍程序的可理解性和未来的可伸缩性。因此,代码气味的精确检测已成为编码研究中的一个重要课题。然而,目前的检测方法受到不平衡和与行业无关的数据集、缺乏足够的代码结构和逻辑信息以及简单的模型架构的限制。鉴于这些限制,本文利用了一个与行业相关且足够的数据集,然后开发了一个图神经网络来更好地检测代码气味。首先,我们确定了Long Method和Blob作为我们的研究对象,因为它们的频繁出现和对软件可维护性的影响。然后,我们设计了带有焦损的改进模糊采样来解决数据不平衡的问题。其次,为了处理海量数据,我们提出了一种全局和局部关注评分机制,从代码中提取关键信息。第三,将欧几里得空间与非欧几里得空间相结合,设计了专门针对代码抽象语法树的图神经网络。最后,我们将我们的方法与其他机器学习方法和深度学习方法进行了比较。结果表明,该方法在Long method和Blob上优于其他方法,表明了该方法的有效性。
{"title":"Graph neural network-based long method and blob code smell detection","authors":"Minnan Zhang ,&nbsp;Jingdong Jia ,&nbsp;Luiz Fernando Capretz ,&nbsp;Xin Hou ,&nbsp;Huobin Tan","doi":"10.1016/j.scico.2025.103284","DOIUrl":"10.1016/j.scico.2025.103284","url":null,"abstract":"<div><div>The concept of code smell was first proposed in the late nineties, to refer to signals that code may need refactoring. While not necessarily affecting functionality, code smell can hinder understandability and future scalability of the program. As a result, the precise detection of code smell has become an important topic in coding research. However, current detection methods are limited by imbalanced and industrial-irrelevant datasets, a lack of sufficient structural and logical information on the code, and simple model architecture. Given these limitations, this paper utilized an industry-relevant and sufficient dataset and then developed a graph neural network to better detect code smell. First, we identified Long Method and Blob as our research subjects due to their frequent occurrence and impacts on the maintainability of software. We then designed modified fuzzy sampling with focalloss to address the issue of data imbalance. Second, to deal with the large volume of data, we proposed a global and local attention scoring mechanism to extract the key information from the code. Third, in order to design a graph neural network specifically for the abstract syntax tree of code, we combined Euclidean space and non-Euclidean space. Finally, we compared our method with other machine learning methods and deep learning methods. The results demonstrate that our method outperforms the other methods on Long Method and Blob, which indicates the effectiveness of our proposed method.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"243 ","pages":"Article 103284"},"PeriodicalIF":1.5,"publicationDate":"2025-02-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"143488855","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Building augmented reality games with argDSL 用argDSL构建增强现实游戏
IF 1.5 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2025-02-12 DOI: 10.1016/j.scico.2025.103271
Rubén Campos-López, Esther Guerra, Juan de Lara
Augmented Reality (AR) has become popular. It does not require advanced technology, but only a mobile device with a camera to interact with virtual objects. However, developing AR applications – especially games – is time-consuming and requires in-depth knowledge of highly specialised technologies, and mathematical concepts related to the graphics and physics of the virtual objects.
To address this problem, we propose the domain-specific language
for creating AR games. It allows customising the game logic, and the virtual objects' domain, physics and representation. We provide an Eclipse editor to define AR games using the language, and an iOS client to run the games. Our experiments show the versatility of our proposal and the usability of the games.
增强现实(AR)技术已变得十分流行。它不需要先进的技术,只需要一个带有摄像头的移动设备就能与虚拟物体进行交互。然而,开发 AR 应用程序(尤其是游戏)非常耗时,而且需要深入了解高度专业化的技术,以及与虚拟对象的图形和物理相关的数学概念。为了解决这个问题,我们提出了创建 AR 游戏的特定领域语言,它允许自定义游戏逻辑、虚拟对象的领域、物理和表现形式。我们提供了一个 Eclipse 编辑器来使用该语言定义 AR 游戏,并提供了一个 iOS 客户端来运行游戏。我们的实验显示了我们建议的多功能性和游戏的可用性。
{"title":"Building augmented reality games with argDSL","authors":"Rubén Campos-López,&nbsp;Esther Guerra,&nbsp;Juan de Lara","doi":"10.1016/j.scico.2025.103271","DOIUrl":"10.1016/j.scico.2025.103271","url":null,"abstract":"<div><div>Augmented Reality (AR) has become popular. It does not require advanced technology, but only a mobile device with a camera to interact with virtual objects. However, developing AR applications – especially games – is time-consuming and requires in-depth knowledge of highly specialised technologies, and mathematical concepts related to the graphics and physics of the virtual objects.</div><div>To address this problem, we propose the domain-specific language <figure><img></figure>for creating AR games. It allows customising the game logic, and the virtual objects' domain, physics and representation. We provide an Eclipse editor to define AR games using the language, and an iOS client to run the games. Our experiments show the versatility of our proposal and the usability of the games.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"243 ","pages":"Article 103271"},"PeriodicalIF":1.5,"publicationDate":"2025-02-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"143562614","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Modular unification of unilingual pointer analyses to multilingual FFI-based programs 基于多语言ffi程序的单语言指针分析的模块化统一
IF 1.5 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2025-02-11 DOI: 10.1016/j.scico.2025.103278
Jyoti Prakash , Abhishek Tiwari , Christian Hammer
Modular analysis of polyglot applications is challenging because flows of heap objects must be resolved across language boundaries. The state-of-the-art analyses for polyglot applications have two fundamental limitations. First, they assume explicit boundaries between the guest and the host language to determine inter-language dataflows. Second, they rely on specific analyses of the host and guest languages. The former assumption is impractical concerning recent advancements in polyglot programming techniques, while the latter disregards advances in pointer analysis of the underlying languages. In this work, we propose to extend existing pointer analyses with a novel summary specialization technique that unifies points-to sets across language boundaries. Our novel technique leverages combinations of host and guest analyses with minor modifications. We demonstrate the efficacy and generalizability of our approach by evaluating it with two polyglot language models: Java-C communication via Android's NDK and Java-Python communication in GraalVM.
多语言应用程序的模块化分析具有挑战性,因为必须跨语言边界解析堆对象流。针对多语言应用程序的最新分析有两个基本限制。首先,它们假定来宾语言和宿主语言之间有明确的边界,以确定语言间的数据流。其次,他们依赖于对主客语言的具体分析。对于多语言编程技术的最新进展,前一种假设是不切实际的,而后一种假设忽略了底层语言的指针分析方面的进展。在这项工作中,我们建议使用一种新颖的总结专门化技术来扩展现有的指针分析,该技术可以跨语言边界统一点到集。我们的新技术利用主客分析的组合,稍加修改。我们通过使用两种多语言模型来评估我们的方法的有效性和通用性:通过Android的NDK进行Java-C通信和在GraalVM中进行Java-Python通信。
{"title":"Modular unification of unilingual pointer analyses to multilingual FFI-based programs","authors":"Jyoti Prakash ,&nbsp;Abhishek Tiwari ,&nbsp;Christian Hammer","doi":"10.1016/j.scico.2025.103278","DOIUrl":"10.1016/j.scico.2025.103278","url":null,"abstract":"<div><div>Modular analysis of polyglot applications is challenging because flows of heap objects must be resolved across language boundaries. The state-of-the-art analyses for polyglot applications have two fundamental limitations. First, they assume explicit boundaries between the guest and the host language to determine inter-language dataflows. Second, they rely on specific analyses of the host and guest languages. The former assumption is impractical concerning recent advancements in polyglot programming techniques, while the latter disregards advances in pointer analysis of the underlying languages. In this work, we propose to extend existing pointer analyses with a novel summary specialization technique that unifies points-to sets across language boundaries. Our novel technique leverages combinations of host and guest analyses with minor modifications. We demonstrate the efficacy and generalizability of our approach by evaluating it with two polyglot language models: Java-C communication via Android's NDK and Java-Python communication in GraalVM.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"243 ","pages":"Article 103278"},"PeriodicalIF":1.5,"publicationDate":"2025-02-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"143394518","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
期刊
Science of Computer Programming
全部 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