Program slicing techniques and its applications
程序理解是软件维护与再工程的一个重要方面。对程序的理解与程序的执行行为和程序中变量之间的关系有关。查找程序中所有直接或间接影响变量值的语句的任务,给出了可以在程序中某个点影响变量值的语句集,称为程序切片。程序切片是一种通过跟踪程序的控制和与某个数据项相关的数据流来抽取部分计算机程序的技术。这种技术适用于各种领域,例如调试,程序理解和理解,程序集成,内聚测量,重新设计,维护,测试,其中能够专注于大型程序的相关部分是有用的。本文重点介绍了静态切片、准静态切片、动态切片和条件切片等切片技术。本文还介绍了各种切片方法,如前向切片、后向切片、句法切片和语义切片。程序的切片是使用Java进行的,Java是一种面向对象的程序设计语言。
2011-08-05 cs.SE
Slicing of Constraint Logic Programs
切片是一种最初为命令式语言开发的程序分析技术。它有助于理解数据流和调试。本文讨论了约束逻辑程序的切片问题。约束逻辑程序设计(CLP)是一种新兴的软件技术,其应用越来越广泛.约束程序中的数据流不是显式的,因此切片的概念和命令式语言的切片技术不能直接应用。本文阐述了适用于CLP的切片的声明性概念。它们为定义基于变量共享的切片技术(动态和静态)提供了基础。通过使用接地信息进一步扩展的技术。一个原型的CLP程序实现所提出的思想的动态切片器进行了简要描述,连同一些切片实验的结果。
2000-12-18 cs.SE
Specification Slicing for VDM-SL
本文针对 VDM-SL 可执行规格难以阅读和调试的问题,借鉴程序切片技术提出规格切片方法,并在 ViennaTalk 上实现,可应用于浏览器和调试器。
2024-10-04 cs.SE
Katana: Dual Slicing-Based Context for Learning Bug Fixes
上下文信息在软件开发人员理解和修复错误时起着至关重要的作用。因此,基于深度学习的程序修复技术利用上下文进行错误修复。然而,现有的技术以任意的方式处理上下文,通过在封闭文件、类或方法内提取与错误语句非常接近的代码,而不进行任何分析以找到与错误的实际关系。为了减少噪音,它们对用作上下文的令牌数量使用预定义的最大限制。我们提出了一个程序切片为基础的方法,而不是任意包括作为上下文的代码,我们分析的语句有一个控制或数据依赖的错误语句。我们提出了一个新的概念,称为双切片,它利用的上下文中的错误和固定版本的代码来捕获相关的修复成分。我们提出了我们的技术和工具,称为武士刀,第一个应用基于切片的上下文程序修复任务。结果表明,Katana有效地保留了足够的信息,供模型选择上下文信息,同时降低噪声。我们比较了最近四个国家的最先进的上下文感知程序修复技术。我们的研究结果表明,Katana修复的错误是现有技术的1.5到3.7倍。
2022-12-05 cs.SE
Techniques and Applications of Computation Slicing
编写正确的分布式程序很难。尽管进行了广泛的测试和调试,但即使在商业级软件中,软件故障也会持续存在。许多分布式系统,特别是那些在安全关键环境中使用的系统,即使在软件故障的情况下也应该能够正常运行。监视分布式系统的执行,并在检测到故障时启动适当的纠正措施是容忍此类故障的重要方法。这就产生了谓词检测问题,它需要找到一个满足给定全局谓词(如果存在)的给定计算的一致切割。然而,在计算中检测谓词是一个NP完全问题。为了改善相关的组合爆炸问题,我们引入了计算切片的概念。形式上,相对于谓词的计算的切片是具有最少数量的一致切割的(子)计算,其包含满足谓词的计算的所有一致切割。为了检测谓词,搜索切片的状态空间要比搜索计算的状态空间有效得多。我们证明了片存在,是唯一定义的所有谓词。我们提出了有效的切片算法的几个有用的类的谓词。我们开发了有效的启发式算法计算的近似切片的谓词,计算切片,否则证明棘手。我们的实验结果表明,切片可以导致一个指数级的改进,在时间和空间方面的谓词检测现有的技术。
2003-03-15 cs.DC cs.SE
Applying Software Craftsmanship Practices to a Scrum Project: an Experience Report
软件工匠宣言定义了软件开发团队应该遵循的价值观和原则,以提供满足功能和非功能需求的高质量软件,而无需处理大量的技术债务。软件开发的软件工艺方法优先考虑技术实践,以提供干净的代码库。这项工作分析了一组实践,可以应用于一个旨在纳入软件工艺价值观的SocketProject。所描述的过程实现对于那些也打算在他们的项目中实现Software Craftsman的软件开发团队来说可能是一个有用的贡献。
2016-11-17 cs.SE
Experience on Re-engineering Applying with Software Product Line
在本文中,我们提出了我们的经验的基础上,再工程项目。软件项目是对企业原有的系统进行重新设计,以满足新的需求和业务功能的变化。再工程是一个不仅涉及软件系统,而且涉及底层业务模型的过程。特别是,新的商业模式是与新技术一起设计的,以支持新系统。本文介绍了应用软件产品线方法开发支持原有业务功能和新业务功能的新系统的经验。
2012-06-19 cs.SE
Applying FCA toolbox to Software Testing
软件测试使用各种不同的工具来增强定义被测系统质量的复杂过程。形式概念分析(FCA)为我们提供了从一组对象及其属性导出形式本体的算法。使用FCA可以大大提高测试用例生成的效率。此外,基于FCA的机器学习系统支持回归测试结果的分析。
2015-05-06 cs.SE
Semantic Slicing of Architectural Change Commits: Towards Semantic Design Review
软件架构变更涉及多个模块或组件,与本地代码变更相比,分析起来很复杂。旨在审查变更提交的架构方面(设计)的开发团队考虑许多基本场景,例如访问规则和跨模块使用程序实体的限制。此外,当适当的架构公式对于开发和部署系统至关重要时,设计审查是必不可少的。理清架构更改、恢复语义设计和生成设计注释是设计评审过程的关键任务。为了支持这些任务,我们构建了一个轻量级工具[4],可以检测和分解包含架构实例的提交的语义切片。语义切片由变更实例中所涉及的模块、它们的类、方法和连接的模块的关系信息的描述组成,这对于审查者来说很容易理解。我们从源代码中提取各种目录和命名结构(DANS)属性来开发我们的工具。利用DANS属性,我们的工具首先根据我们定义的指标检测架构更改实例,然后分解切片(基于字符串处理)。我们对10个开源项目(用Java和Kotlin开发)的初步调查显示,DANS属性在检测和生成建筑切片时产生了高度可靠的精确度和召回率(93-100%)。我们提出的工具将作为初步的方法,语义设计恢复和设计摘要生成的项目版本。
2021-09-02 cs.SE
Applying empirical software engineering to software architecture: challenges and lessons learned
在过去的15年中,软件体系结构已经成为管理大型软件密集型系统的开发和维护的重要软件工程领域。软件架构社区已经开发了许多方法、技术和工具来支持架构过程(分析、设计和评审)。从历史上看,软件架构的大多数进步都是由人才和行业经验推动的,但现在越来越需要系统地收集有关工具和方法的优势或其他方面的经验证据,而不仅仅是依靠宣传轶事或修辞。本文的目的是促进和促进软件体系结构的经验范式的应用。为此,我们描述了在评估软件架构研究时所遇到的挑战和经验教训,这些研究使用了受控实验、复制、专家意见、系统的文献综述、观察性研究和调查。我们的研究将支持一个知识体系的出现,包括更广泛接受的和良好的形式的软件架构理论。
2017-01-21 cs.SE
Towards Applying Text Mining Techniques on Software Quality Standards and Models
许多质量方法在数百页的文本中进行了描述。人工处理信息会消耗大量资源。在这份报告中,我们提出了一个文本挖掘方法应用于CMMI,一个众所周知的质量方法。文本挖掘分析可以提供有关质量方法范围的快速概述。分析的结果可以促进对质量方法的理解和选择。
2013-11-11 cs.SE
Ways of Applying Artificial Intelligence in Software Engineering
随着人工智能(AI)技术变得越来越强大和易于使用,它们越来越多地被部署为现代软件系统的关键组件。虽然这可以实现新的功能,并且通常可以更好地适应用户需求,但它也为软件工程师带来了额外的问题,并使公司面临新的风险。为了更好地理解软件工程和人工智能之间的相互作用,我们已经做了一些工作,但我们缺乏方法来分类在软件系统中应用人工智能的方式,并分析和理解这带来的风险。只有这样做,我们才能制定工具和解决方案,帮助减轻这些问题。本文介绍了SE应用级别中的AI(AI-SEAL)分类法,该分类法根据AI应用点、所使用的AI技术类型和允许的自动化级别对应用程序进行分类。我们展示了这种分类法的有用性,通过对RAISE研讨会以前版本的15篇论文进行分类。结果表明,该分类法允许对不同的AI应用程序进行分类,并提供了有关与之相关的风险的见解。我们认为,这对于公司决定如何在其软件应用程序中应用人工智能并为其使用制定策略至关重要。
2018-02-07 cs.SE
Applying Declarative Analysis to Software Product Line Models: An Industrial Study
软件产品线(SPL)是从一组公共工件开发的相关软件产品的系列。大多数现有的分析工具可以一次应用于单个产品,但不能应用于整个SPL。一些工具已经被重新设计/重新实现,以支持SPL中显示的可变性,但这通常需要花费大量的精力,并且容易出错。在以前的工作中,用Datasheet等语言编写的声明性分析已经被集体提升为SPL,这使得将现有的声明性分析应用于产品线的过程更加简单。在本文中,我们采取现有的声明性分析(行为改变)写在Grok声明性语言,端口到Datasheet,并将其应用到一组汽车软件产品线从通用汽车。我们讨论了在这个过程中使用的分析管道的设计,提出其可扩展性的结果,并提供了一种手段来可视化的分析结果的一个子集的产品过滤功能表达式。我们还反思了整个项目中的一些经验教训。
2021-07-31 cs.SE
NeuSemSlice: Towards Effective DNN Model Maintenance via Neuron-level Semantic Slicing
Huazhong University of Science and Technology(华中科技大学);Nanyang Technological University(南洋理工大学)
本文提出 NeuSemSlice 框架,利用神经元级语义切片识别、分类并合并关键神经元,并配套重构、重适配与增量开发策略,在三类 DNN 维护任务上显著优于基线。
2025-07-26 cs.LG cs.SE
Practical experiences and value of applying software analytics to manage quality
背景资料:尽管软件分析平台在行业中的使用越来越多,但关于从业者面临的挑战以及这些平台提供的价值,几乎没有经验证据。目的:本研究的目标是探索使用软件分析平台管理质量的从业者的好处。方法:在一个技术转让项目中,学术界和工业界合作伙伴逐步开发了一个软件分析平台,以解决他们的软件质量问题。本文重点探讨了这个软件分析平台在两个试点项目中提供的价值。结果如下:从业人员强调了主要的好处,包括提高产品质量和工艺性能,以及提高对产品就绪性的认识。他们特别认为软件分析平台生成质量需求的半自动化功能对他们来说是最具影响力和最具新颖价值的好处。结论:从业者可以从现代软件分析平台中受益,特别是如果他们有时间仔细采用这样的平台并将其集成到质量保证活动中。
2019-10-24 cs.SE
Investigating the Awareness of Applying the Important Web Application Development and Measurement Practices in Small Software Firms
本文旨在讨论约旦小型软件公司目前的发展和测量实践的试点研究和分析。之所以这样做,是因为大多数开发人员在构建Web应用程序时没有使用任何特定的开发方法,也不知道如何在过程中集成合适的度量,以改善和减少开发生存周期的缺陷、时间和返工。此外,这项试点研究的目标是首先确定约旦小型软件公司的实际特点。其次,调查当前的开发和测量实践。第三,研究小型软件公司对构建Web应用程序的新开发方法的需求。因此,在约旦小型软件公司进行了试点调查。采用描述性统计分析,根据其重要性对开发和测量方法进行排序。本文介绍了试点调查的数据、分析和发现。这些实际调查结果将有助于建立新的方法,开发Web应用程序的小型软件公司考虑到如何将合适的测量程序集成到整个开发过程中,也将提供有用的信息,那些谁是在同一领域的研究。
2012-01-10 cs.SE
Applying software engineering solutions to law management, Nigeria as a case study
本文调查了尼日利亚律师事务所的技术采用程度,通过系统性文献综述识别知识空白,并开发了自动化工作流程的软件解决方案,包括物业管理模块和语音转文本工具。
2025-04-02 cs.SE
From Textual to Verbal Communication: Towards Applying Sentiment Analysis to a Software Project Meeting
情感分析在软件工程中得到越来越多的关注,研究人员提供了新的见解和新的工具。现有的用例和工具旨在用于文本通信,例如对协作版本控制系统的评论。虽然这已经可以为开发团队提供有用的反馈,但大量的交流发生在会议上,不适合当前的工具设计和概念。在本文中,我们提出了一个概念,能够处理现场会议音频和分类转录语句到情感极性类。我们结合了开源语音识别的最新进展和以前在情感分析方面的研究。我们在一个学生软件项目会议上测试了我们的方法,以获得概念证明,在我们的工具和会议音频上的人类观察员之间显示出适度的一致性。尽管我们的研究的初步性质,我们看到有前途的结果,激励未来的研究在情感分析会议。例如,极性分类可以扩展到检测可能危及项目成功的破坏性行为。
2021-08-04 cs.SE
Studying the Feasibility and Importance of Software Testing: An Analysis
软件测试是软件质量保证的关键要素,代表了对规格、设计和编码的最终审查。软件测试是通过运行软件来测试软件的功能性和正确性的过程。软件测试通常出于以下两个原因之一而执行:缺陷检测和可靠性评估。将软件测试应用于缺陷检测的问题在于,软件只能提示缺陷的存在,而不能提示缺陷的不存在(除非测试是详尽的)。将软件测试应用于可靠性估计的问题是用于选择测试用例的输入分布可能是有缺陷的。软件测试的关键是试图找到失败的模式-这需要在所有可能的输入上对代码进行详尽的测试。软件测试,取决于所采用的测试方法,可以在开发过程中的任何时候实施。
2010-01-23 cs.SE
Applying multi product lines to equity market software ecosystem
内容:近几十年来,许多金融市场及其参与者已经从完全手工和传统的工作方式转变为自动化的工作方式,并受益于复杂的软件系统。有不同的方法来开发这样的软件系统。目的:研究多产品线方法在证券市场软件生态系统中的应用。通过从MPL方法的概念和实践中获益,我们希望设计一个SECO,使市场参与者的软件之间的金融交易数据的实时和自动化流动成为可能。方法:我们首先提供了一些背景信息,股票市场,其参与者和他们的关系,和两个主要的订单生命周期,这些球员合作。在此之后,我们分析了每个市场参与者的软件的可变性。接下来,我们描述所采用的架构和实现方法。最后,我们讨论了三种情况下,整个建议的SECO进行了测试和验证。结果如下:为了实施上述工作方法,即直通式处理(STP),不同的技术和非技术要素的贡献是必不可少的。成功开发证券市场的SECO解决了技术方面的问题,并为其余工作准备了技术基础设施。结论:股票市场SECO的成功验证表明,采用MPL方法是发展股票市场SECO的可行战略。这也表明,这种方法值得更多的关注和投资。
2022-02-12 cs.SE
Applying Software Defect Estimations: Using a Risk Matrix for Tuning Test Effort
应用软件缺陷模拟技术,并在一个紧凑而有影响力的决策表中展示这些信息,可以向协作团队清楚地说明这个位置在整个开发周期中的重要性。这里描述的测试风险矩阵已经被证明是对管理工具和方法的一个有价值的补充,这些管理工具和方法用于在几个版本上开发大规模软件。在开发计划会议中使用该矩阵可以澄清伴随的风险和执行或绕过特定测试活动的可能后果。
2007-11-11 cs.OH cs.SE
Applying AOSE Concepts to Model Crosscutting Variability in Variant-Rich Processes
软件过程模型需要是丰富的变体,在这个意义上,它们应该是系统地可定制的特定项目目标和项目环境。由于现代过程建模语言中缺少可变性机制,因此目前对富可变过程(VRP)进行建模非常困难。来自其他领域的可变性机制,如程序设计语言,可能适合于可变性的表示,并可以适应于软件过程的建模。软件产品线工程(SPLE)的机制和面向方面的软件工程(AOSE)的概念在建模可变性时显示出特别的前景。本文提出了一种方法,集成可变性的概念,从SPLE和AOSE在设计的VRP方法的系统支持裁剪软件过程。这种方法也已经在SPEM中实现,从而产生了vSPEM符号。它已被用于一个试点应用程序,这表明我们的方法的基础上AOSE可以使过程剪裁更容易和更有成效。
2013-12-02 cs.SE
Benefits of Applying Software Design Patterns to Backend Rust Applications
NORDAKADEMIE Hochschule der Wirtschaft(诺达卡德米经济高等学校);Otto GmbH & Co. KGaA(奥托有限公司)
通过对生产后端应用三个代表性组件的案例研究,探讨模式对软件质量和不变量编译时强制的影响,开发评估框架,应用模式改进代码,为Rust中设计模式研究奠定基础。
2026-07-07 cs.SE
Chain of Draft for Software Engineering: Challenges in Applying Concise Reasoning to Code Tasks
本研究将草稿链(CoD)方法拓展至软件工程,设计适配代码任务的CoD变体,经SWE-bench实验验证其token用量仅为思维链的55.4%、效率提升约45%,且保持90%以上的代码质量,为平衡开发效率与质量提供实用指导。
2025-03-12 cs.SE
An Experience Report On Applying Software Testing Academic Results In Industry: We Need Usable Automated Test Generation
软件工程研究对当前工业实践的影响是什么?在本文中,我报告了我作为博士/博士后在软件工程研究项目中工作的直接经验,然后在接下来的五年里在两家不同的公司担任工程师(第一家是我在博士后期间合作的公司)。鉴于我有软件工程研究的背景,在开发和测试这些公司的系统时,我在日常工作中使用了哪些学术界的尖端技术和工具?关于确认和验证(我的主要研究领域),答案相当简短:据我所知,只有FindBugs。在本文中,我报告了为什么会出现这种情况,并讨论了我们在工业中面临的所有具有挑战性的,复杂的开放性问题,这些问题在学术界被“忽视”了。特别是,我将首先讨论我在日常工作中可以使用的实际工具,例如JaCoCo和Selenium。然后,我将讨论我面临的主要开放问题,特别是与环境模拟器,单元和Web测试有关的问题。然后介绍了当前学术界的热门话题,如UML、回归测试和变异测试。然后讨论了他们对我在工业界工作的项目类型缺乏影响。最后,从这个行业的经验,我提供了我的意见,如何改善这种情况,特别是有关如何评估学者,并倡导更多地参与开源项目。
2019-01-12 cs.SE
Applying User Experience and User-Centered Design Software Processes in Undergraduate Mobile Application Development Teaching
本文介绍一门融合 Scrum、极限编程、UX 与 UCD 的本科 Android 开发课程,通过理论与真实客户工作坊提升产品使用质量并获得多方认可。
2023-08-14 cs.SE
Applying Adapted Big Five Teamwork Theory to Agile Software Development
团队合作是敏捷软件开发的核心原则,各种团队合作理论部分解释了这种背景下的团队合作。大五团队理论是最有影响力的团队理论之一,但先前的研究表明,该理论中的团队领导理念并不适用于敏捷软件开发。本文将大五团队理论应用于敏捷软件开发的案例。三个独立的案例来自一个组织。这确保了对影响团队合作的背景因素的一定程度的控制。研究结果表明,大五团队理论的改编形式,包括共享的团队领导概念,完全适用于某些形式的敏捷软件开发,但不是所有的。对于实践者,提供了哪些敏捷实践支持团队合作的见解。
2016-06-11 cs.CY cs.SE
Towards Evaluating Size Reduction Techniques for Software Model Checking
形式化验证技术被广泛用于检测软件系统中的设计缺陷。形式化验证可以通过将已经实现的源代码转换为形式化模型并尝试证明模型的某些属性(例如,在执行期间不会出现错误状态)来完成。不幸的是,从源代码到正式模型的转换通常会产生大型复杂的模型,这使得验证过程效率低下且成本高昂。为了减小结果模型的大小,可以使用优化变换。这样的优化包括从编译器设计和不同的程序切片技术已知的常见算法。我们的论文描述了一个框架转换为一个正式的模型,增强了各种优化的大小减少C程序。我们评估和比较几种优化算法对模型大小和验证效率的影响。结果表明,不同的优化更适合某些模型,证明需要一个框架,包括几个算法。
2017-08-24 cs.PL cs.SE
Results from a replicated experiment on the affective reactions of novice developers when applying test-driven development
测试驱动开发(TDD)是软件开发的一种增量方法。尽管它声称可以提高软件质量和开发人员的生产力,但关于TDD效果的研究迄今为止还没有得出结论。一些研究人员将这些不确定的结果归因于TDD会引起的负面情感状态。因此,以前的(基线)实验研究了(新手)开发人员的情感反应-即,29名计算机科学(CS)三年级的本科生-在实践TDD来实现软件时。为了验证基线实验的结果,我们进行了一个重复实验,研究新手开发人员在应用TDD开发软件时的情感反应。治疗组的开发人员使用TDD执行开发任务,而对照组的开发人员使用非TDD方法。为了测量开发人员的情感反应,我们使用了自我评估假人仪器补充喜欢的尺寸。基线实验和重复实验之间最重要的区别是:(i)参与实验的新手开发人员的类型-来自两所不同大学的CS专业的三年级和二年级本科生;以及(ii)他们的数量-29对59。重复实验的结果并没有显示出新手开发者的情感反应有任何差异。相反,基线实验的结果表明,与非TDD方法相比,开发人员似乎更不喜欢TDD,并且遵循TDD的开发人员似乎比其他开发人员更不喜欢实现代码,而测试代码似乎使他们更不快乐。
2020-04-16 cs.SE
Software (Re-)Engineering with PSF III: an IDE for PSF
我们描述了一个集成开发环境(IDE)的PSF的设计。在软件工程过程中,我们使用PSF形式的进程代数来规范IDE的体系结构。通过应用垂直和水平实现技术,该规范被细化为IDE系统作为工具总线应用程序的PSF规范。我们实现了指定的各种工具,并使用从系统规范中提取的ToolBus脚本将它们连接起来。
2007-12-19 cs.SE
Semantics and Algorithms for Parametric Monitoring
执行轨迹分析在许多程序分析方法中起着基础性的作用,如运行时验证、测试、监控和规范挖掘。执行跟踪通常是参数化的,即,它们包含带有参数绑定的事件。每个参数跟踪通常由许多合并在一起的有意义的跟踪切片组成,每个切片对应于一个参数绑定。这为参数跟踪分析提供了一种基于语义的解决方案。介绍了一种通用的参数化轨迹切片技术,该技术将参数化轨迹中的每个事件分配到相应的轨迹切片中。通过在每个迹线切片上应用常规的非参数迹线分析技术,该参数迹线切片技术可以与任何常规的非参数迹线分析技术结合使用。作为一个实例,然后提出了一个参数化的性能监测技术。所提出的参数跟踪切片和监测技术已经实施和广泛的评估。运行时开销的测量确认,所讨论的技术的一般性不来在性能上的代价相比,现有的参数跟踪监视系统。
2012-02-21 cs.LO cs.PL cs.SE
Applying Fuzzy ID3 Decision Tree for Software Effort Estimation
Mohammed Vth –Souissi University(穆罕默德五世苏伊西大学);ENSIAS(国立应用科学与技术学院)
Web工作量估算是一个预测任何软件项目系统在资金、进度和人员方面的工作量和成本的过程。在过去的三十年里,许多估算模型已经被提出,并且被认为是必须的,以用于:预测,风险分析,项目计划和控制,以及项目改进投资分析。本文研究了模糊ID3决策树在软件成本估算中的应用,该模型结合了ID3决策树的原理和模糊集合论的概念,使模型在描述软件项目时能够处理不确定和不精确的数据,大大提高了估算的准确性。MMRE和Pred被用作本研究预测准确性的测量。一系列的实验报告使用两个不同的软件项目数据集,即Tukutuku和COCOMO'81数据集。将结果与ID3决策树的简洁版本所产生的结果进行比较。
2011-11-01 cs.AI cs.SE
Applying Bayesian Analysis Guidelines to Empirical Software Engineering Data: The Case of Programming Languages and Code Quality
本文面向实证软件工程改编贝叶斯数据分析指南,并通过重新分析编程语言与代码质量的 GitHub 数据集,展示构建严谨灵活分析流程的方法及价值。
2021-07-28 cs.SE
Applying Multi-Core Model Checking to Hardware-Software Partitioning in Embedded Systems (extended version)
我们提出了一种替代方法来解决硬件(HW)和软件(SW)分区问题,它使用基于可满足性模理论(SMT)的有界模型检验(BMC)结合使用开放多处理的多核支持。基于多核SMT的BMC方法允许基于模型检查器可用的处理器核数初始化许多验证实例。每个实例检查不同的最优值,直到满足优化问题。我们的目标是表明,多核模型检查技术可以是有效的,在特定情况下,找到最佳的解决方案的HW-SW分区问题使用基于SMT的BMC方法。实验结果表明,该方法与传统的线性规划算法和遗传算法相比具有更好的收敛性。
2015-09-08 cs.LO cs.SE
What prevents Finnish women from applying to software engineering roles? A preliminary analysis of survey data
芬兰被认为是一个在性别平等方面有着良好记录的国家。虽然统计数据支持芬兰在工作场所平等方面与许多其他国家相比表现良好的观点,但仍有许多领域需要改进。本文重点讨论了一些妇女在获得软件工程角色时所面临的问题。我们对252名受访者的调查数据进行了初步分析。这些主要是妇女,她们通过加入Mimmit koodaa倡议,表现出对获得编程角色的兴趣,该倡议旨在增加软件行业的平等和多样性。这项调查试图了解早期的经历可能会影响后来的职业选择,以及追求技术相关职业所需的效能感和信心。这些初步的研究结果表明,妇女的感觉计算自我效能和态度软件工程的早期经验的形状。更多的负面经历会降低未来从事软件工程工作的可能性,尽管他们对该领域感兴趣。
2020-02-05 cs.CY cs.SE
Applying CodeBERT for Automated Program Repair of Java Simple Bugs
软件调试和程序修复是软件工程中最耗时和劳动密集型的任务之一,自动化将使其受益匪浅。在本文中,我们提出了一种基于CodeBERT的新型自动程序修复方法,CodeBERT是一种基于变换器的神经架构,在大型源代码语料库上进行了预训练。我们在ManySStuBs 4J小型和大型数据集上微调我们的模型,以自动生成修复代码。结果表明,我们的技术在19-72%的情况下准确地预测了开发人员实现的固定代码,具体取决于数据集的类型,每个错误不到一秒。我们还观察到,我们的方法可以生成不同长度的修复(短和长),并可以修复不同类型的错误,即使在训练数据集中只存在这些类型的错误的几个实例。
2021-03-30 cs.SE
Experiences and Insights from Applying GQM+Strategies in a Systems Product Development Organisation
将软件相关活动与公司战略和目标保持一致变得越来越重要,原因有几个,例如提高客户对基于软件的产品和服务的满意度。已经提出了几种方法来创建这样的对齐。GQM+Strategies是一种将度量原则应用于组织不同层次的目标和战略之间的方法。在本文中,我们描述的经验,从应用GQM+战略,以引出,链接,并在多个组织层次的集成系统产品开发组织的目标。我们提供了GQM+策略在五个月内如何应用的见解。本文介绍了制定的应用过程和主要经验教训。此外,还介绍了相关的方法,并对今后的工作进行了展望。
2013-11-07 cs.SE
Towards a Pattern-based Automatic Generation of Logical Specifications for Software Models
这项工作涉及到自动生成的逻辑规范,被认为是一套时间逻辑公式,直接从开发的软件模型中提取。提取过程是基于这样的假设,即整个开发模型的结构只使用预定义的工作流模式。提出了一种工作流模式到逻辑规范的自动转换方法。应用所提出的概念,使弥合之间的差距的正确性验证过程中获得完整的逻辑规范的困难和演绎推理的好处。
2014-06-26 cs.SE
Applying Model-based Requirements Engineering in Three Large European Collaborative Projects: An Experience Report
在本文中,我们报告我们5年的设计,开发,然后部署基于模型的需求工程(MBRE)的方法和语言的背景下,三个不同的大型欧洲合作项目提供复杂的软件解决方案的实践经验。基于在项目执行过程中收集的数据和通过之后实现的调查,我们打算表明这种方法可以在可扩展性方面带来有趣的好处(例如,大量已处理的需求)、异质性(例如,具有不同类型可再生能源背景的合作伙伴),可追溯性(例如从需求到软件组件)、自动化(例如需求文档生成)、有用性或可用性。为了说明我们的贡献,我们将MBRE方法和语言的应用与来自这些欧洲研究项目之一的具体元素结合起来。我们还进一步讨论了使用这种MBRE方法和相应的语言的一般好处和目前的局限性。
2021-05-07 cs.SE
Moldable Development Patterns
可模塑开发通过使软件系统可解释来支持决策制定。这是通过降低向软件中添加大量自定义工具的成本来实现的,将其转变为一个活的、可探索的领域模型。基于多年来在开源和工业系统中应用可模塑开发的经验,我们确定了几个相互支持的模式来解释可模塑开发在实践中是如何工作的。本文的目标是(i)好奇了解可模塑开发的读者,(ii)想要学习最佳实践的Glamorous Toolkit可模塑IDE的当前用户,以及(iii)有兴趣使用其他平台和技术应用可模塑开发的开发人员。
2024-09-27 cs.SE
Applying Inter-rater Reliability and Agreement in Grounded Theory Studies in Software Engineering
近年来,应用扎根理论对经验型软件工程进行定性研究的现象越来越多。扎根理论(GT)是一种基于理论采样,编码,常数比较,记忆和饱和度作为主要特征,从定性数据中归纳迭代地发展理论的技术。大型或有争议的GT研究可能涉及多个研究人员的协作编码,这需要一种严格性和共识,而单个编码人员则不需要。虽然许多定性研究人员拒绝定量措施,赞成其他定性标准,但许多其他人致力于通过评分员间可靠性(IRR)和/或评分员间协议(IRA)技术来衡量共识,以发展对所研究现象的共同理解。然而,在GT的迭代过程中,没有关于如何以及何时应用IRR/IRA的具体指导方针,因此多年来研究人员一直使用临时方法。本文提出了一个过程,系统地应用IRR/IRA GT的研究,满足迭代性质的定性研究方法,这是支持以前的系统文献综述应用IRR/RA GT研究在软件工程。这一过程允许研究人员逐步产生一个理论,同时确保对支持它的结构达成共识,从而提高定性研究的严谨性。这种形式化有助于研究人员在编码过程中使用不同的评分者时将IRR/IRA应用于GT研究。衡量评分者之间的共识可以促进研究的可沟通性、透明度、自反性、可复制性和可信度。
2021-07-23 cs.SE stat.ME
Test It Before You Trust It: Applying Software Testing for Trustworthy In-context Learning
Advanced Institute of So-Go-Chi (Convergence Knowledge) Informatics(融合知识研究院);Tohoku University(东北大学);Japan Advanced Institute of Science and Technology(日本先进科学研究院);Faculty of Information and Communication Technology(信息与通信技术学院);Mahidol University(玛希敦大学)
本文提出受软件测试启发的MMT4NL框架,通过构造蜕变对抗性示例评估大型语言模型上下文学习的可信度,并在情感分析和问答任务中揭示语言错误。
2025-09-08 cs.AI cs.SE
Design of the Inspection Process Using the GitHub Flow in Project Based Learning for Software Engineering and Its Practice
基于项目的学习(PBL)的软件开发(我们称之为软件开发PBL)已获得关注,作为一种实用的教育方法。许多研究报告了在软件开发PBL中引入GitHub等社交编码工具的情况。在教育中,向学习者提供反馈(建议,错误更正等)是很重要的,特别是在软件开发PBL中,因为几乎所有的学习者都是第一次从技术和管理方面的角度来处理实际的软件开发。本研究将在一般软件开发活动中进行的检查视为提供反馈的机会,并提出了使用GitHub上的拉取请求的检查过程。通过将所提出的过程应用到实际的软件开发PBL中,我们能够对学习者创建的工件的准确位置进行反馈。
2020-02-06 cs.SE
Applying Machine Learning Analysis for Software Quality Test
Ala-Too International University(阿拉托国际大学)
本文应用机器学习分析静态源代码库中的软件指标与缺陷数据,通过相关性方法筛选指标并预测软件残留缺陷,旨在降低大型复杂软件的维护成本并提高缺陷预测准确性。
2023-05-16 cs.LG cs.SE
Applying Bayesian Data Analysis for Causal Inference about Requirements Quality: A Controlled Experiment
本文通过25名参与者参与的对照实验,结合频率学派与贝叶斯数据分析,评估被动语态和歧义代词对领域模型的因果影响,发现二者危害显著不同。
2025-01-07 cs.SE
SmartMark: Software Watermarking Scheme for Smart Contracts
智能合约是区块链上的自动执行程序,可确保协议的不可变和透明,无需中介机构的参与。尽管智能合约在以太坊等许多区块链平台上越来越受欢迎,但由于缺乏可用的技术手段,智能合约开发人员无法阻止从竞争对手那里复制智能合约。然而,应用现有的软件水印技术是具有挑战性的,因为智能合约的独特属性,例如代码大小约束,非自由执行成本,以及不支持虚拟机环境下的动态分配。本文介绍了一种新的软件水印方案,称为SmartMark,旨在保护智能合约的盗版。SmartMark构建目标合约运行时字节码的控制流图,并定位从操作码集合中随机选择的一系列字节以表示水印。我们为以太坊实现了一个完整的原型,将SmartMark应用于27,824个唯一的智能合约字节码。我们的实证结果表明,SmartMark可以有效地将水印嵌入到智能合约中并验证其存在,满足可信性和不可感知性的要求,同时会导致轻微的性能下降。此外,我们的安全分析表明,SmartMark对可预见的水印破坏攻击具有弹性;例如,需要大量的伪操作码来有效地禁用水印,导致产生不经济的非法智能合约克隆。
2023-03-24 cs.SE
Optimal Software Architecture From Initial Requirements: An End-to-End Approach
软件架构师通过架构优化过程将系统需求转化为合适的软件架构。然而,架构师应该如何决定优先考虑哪些质量改进,例如,安全性还是可靠性?在软件产品线中,多个产品的小改进是否应该优先于单个产品的大改进?现有的架构优化方法处理过程中的各个步骤,但没有一个系统地指导架构师从初始需求生成最佳架构。在这项工作中,我们提出了一个端到端的方法来生成一个最佳的软件体系结构,为一个单一的软件产品和一个最佳的家庭的体系结构的产品。我们报告了一个案例研究,应用我们的方法来优化五个工业级产品在现实生活中的产品线架构,其中359个可能的组合,10个不同的质量工作的优先级。
2020-12-31 cs.SE
Applying Model Checking to Highly-Configurable Safety Critical Software: The SPS-PPS PLC Program
许多粒子加速器的一个重要方面是不断发展和频繁的配置变化,需要执行它们设计的实验。这通常会导致可配置软件的设计,可以吸收这些变化,并执行所需的控制和保护行动。这种设计策略最大限度地降低了工程和维护成本,但它使软件验证活动更具挑战性,因为必须保证任何可能的配置的安全属性。软件模型检验是一种广泛应用的自动化验证技术。这种验证方法探索系统模型的所有可能组合,以保证其符合某些属性或规范。这对于高度可配置的软件来说是一种非常合适的技术,因为通常有大量的组合需要检查。本文介绍了如何PLCverif,欧洲核子研究中心的模型检验平台,已被应用到一个高度可配置的可编程逻辑控制器(PLC)程序,SPS人员保护系统(PPS)。这种验证方法的好处和挑战也进行了讨论。
2022-03-30 cs.SE cs.SY eess.SY
On a Factorial Knowledge Architecture for Data Science-powered Software Engineering
鉴于科学中的数据密集型和协作趋势,软件工程社区也越来越关注从数据存储库中获得有价值和有用的见解。然而,将数据科学应用于软件工程(例如,如果缺乏合适的知识体系结构(KA),挖掘软件存储库)可能是盲目的和无意义的。通过观察软件工程实践通常通过一组因素(例如,编程器容量、不同的环境条件等)在此基础上,提出了一种基于因素的软件工程知识共享层次模型,以最大化软件资源库的价值,并对未来的软件数据驱动研究有所启发。特别是,它是有组织的因素和它们的关系,有助于指导软件工程知识挖掘,而挖掘的知识反过来将通过相关的因素和它们的相互作用索引/管理。本文阐述了我们关于阶乘KA的思想,并简要地说明了一个KA组件,即软件产品工程的早期版本KA。一旦充分的范围,这个拟议的KA将补充众所周知的SWEBOK的因素为中心的知识管理和潜在的软件工程知识的覆盖面/含义。
2021-03-02 cs.SE
Applying SHAPR in AI-Assisted Research Software Development: Lessons Learnt from Building a Share Trading System
School of Business, Law, Humanities and Pathways University of Southern Queensland(南昆士兰大学商业、法律、人文与路径学院)
本文通过构建模块化股票交易系统案例,展示了SHAPR框架在AI辅助软件开发中的应用,强调持续文档更新、合同稳定编码、源码层提升连贯性等核心方法与贡献。
2026-04-16 cs.HC cs.SE
Applying Information Theory to Software Evolution
本文研究信息论在软件演化中的应用,通过对25个开源项目提交历史计算结构性与文本性熵,发现二者高度相关但与传统复杂性指标关联较弱,并探讨异常值对surprisal定义的启示。
2023-04-26 cs.IT cs.SE math.IT
Lessons Learned from Applying Social Network Analysis on an Industrial Free/Libre/Open Source Software Ecosystem
许多软件项目不再由一个组织在内部完成。相反,我们正处于一个新的时代,软件是由个人和组织的网络社区开发的,他们之间的关系建立在共同利益的基础上。讽刺的是,最近的研究表明,软件开发实际上可以由竞争对手共同开发。例如,众所周知,移动设备制造商苹果和三星一直在开源项目上合作,同时在法庭上进行昂贵的专利战。以案例研究的方法,我们探讨竞争对手的公司如何合作,在开源领域采用多方法的方法,结合定性分析的档案数据(QA)与挖掘软件存储库(MSR)和社会网络分析(SNA)。在探索OpenStack生态系统中的协作过程的同时,我们的研究通过探索高度网络化的开源生态系统中的群体,子社区和商业模式的作用,为软件工程研究做出了贡献。令人惊讶的结果指出,对相同收入模式的竞争(即,操作冲突的商业模式)不一定影响生态系统内的协作。此外,在检测OpenStack社区的不同子社区时,我们发现开发人员与来自同一公司的开发人员合作的预期社交倾向(即,但在OpenStack生态系统中并不存在。此外,在解决一个新的,复杂的和未开发的开源案例的同时,这项研究还有助于合作竞争战略和高科技创业的管理文献,丰富地描述了高度网络化的生态系统中的异构参与者(涉及个人,初创公司,成熟的公司和公共组织)如何在开源领域联合开发复杂的大数据基础设施。
2016-11-22 cs.SE cs.SI
Extending and Applying Automated HERMES Software Publication Workflows
本文介绍了自动化软件发布工具 HERMES 的工作流、插件架构及扩展方法,并通过三个案例初步验证了其可行性与可扩展性。
2025-02-07 cs.CY cs.DL cs.IR
The Art of Software Design, a Video Game for Learning Software Design Principles
本文介绍了我们的游戏化的一部分,我们的软件设计课程。基于典型的设计原则,开发了一个激励学习游戏,用于训练学生的软件设计。我们使用Bloom的分类法来确定学习目标。我们让玩家在一个具有挑战性的水平为基础的游戏越来越复杂的直接反馈参与。玩家可以在可视化的控制和数据流的帮助下评估他们的设计行为。主要学习目标:应用设计原则,适合游戏的主要活动。这支持讲师的边做边学方法。用户测试表明可能的学习效果和可玩的游戏。
2014-01-20 cs.HC cs.SE