首页 > 最新文献

LATE@AOSD最新文献

英文 中文
Aspect mining in the presence of the C preprocessor 方面挖掘存在的C预处理器
Pub Date : 2008-03-31 DOI: 10.1145/1404953.1404954
Bram Adams, B. Rompaey, Celina Berg, Y. Coady
In systems software, the C preprocessor is heavily used to manage variability and improve efficiency. It is the primary tool to model crosscutting concerns in a very fine-grained way, but leads to extremely tangled and scattered preprocessor code. In this paper, we explore the process of aspect mining and extraction in the context of preprocessor-driven systems. Our aim is to identify both opportunities (extracting conditional compilation into advice) and pitfalls (mining on unpreprocessed code) in migrating preprocessor code to aspects. We distill five trade-offs which give a first impression about the usefulness of replacing the preprocessor by aspects. Preprocessor-driven systems prove to be a real challenge for aspect mining, but they could become on the other hand one of the most promising applications of AOP.
在系统软件中,C预处理器被大量用于管理可变性和提高效率。它是以非常细粒度的方式对横切关注点建模的主要工具,但是会导致非常复杂和分散的预处理器代码。在本文中,我们探讨了在预处理器驱动系统背景下的方面挖掘和提取过程。我们的目标是识别将预处理代码迁移到方面的机会(将条件编译提取到通知中)和缺陷(挖掘未预处理的代码)。我们总结了五种权衡,这给人的第一印象是通过方面替换预处理器的有用性。预处理器驱动的系统被证明是方面挖掘的真正挑战,但从另一方面来说,它们可能成为AOP最有前途的应用之一。
{"title":"Aspect mining in the presence of the C preprocessor","authors":"Bram Adams, B. Rompaey, Celina Berg, Y. Coady","doi":"10.1145/1404953.1404954","DOIUrl":"https://doi.org/10.1145/1404953.1404954","url":null,"abstract":"In systems software, the C preprocessor is heavily used to manage variability and improve efficiency. It is the primary tool to model crosscutting concerns in a very fine-grained way, but leads to extremely tangled and scattered preprocessor code. In this paper, we explore the process of aspect mining and extraction in the context of preprocessor-driven systems. Our aim is to identify both opportunities (extracting conditional compilation into advice) and pitfalls (mining on unpreprocessed code) in migrating preprocessor code to aspects. We distill five trade-offs which give a first impression about the usefulness of replacing the preprocessor by aspects. Preprocessor-driven systems prove to be a real challenge for aspect mining, but they could become on the other hand one of the most promising applications of AOP.","PeriodicalId":210171,"journal":{"name":"LATE@AOSD","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2008-03-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122752888","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 14
Disciplined composition of aspects using tests 使用测试对方面进行有纪律的组合
Pub Date : 2008-03-31 DOI: 10.1145/1404953.1404961
André Restivo, Ademar Aguiar
A large part of the software development effort is typically spent on maintenance and evolution, namely on adding new and unanticipated features. As aspect-oriented programming (AOP) can be easily used to compose software in non-planned ways, many researchers are investigating AOP as a technique that can play an important role in this particular field. However, unexpected interactions between aspects are still a major problem that compromise AOP's applicability, especially in large projects where many developers, often including new team members, are involved in the process. This paper addresses the issues of aspect conflicts and interactions and proposes a technique to help compose aspects in a disciplined way using a test-driven development approach. A simple example for a banking system helps on illustrating the technique.
软件开发工作的很大一部分通常花费在维护和发展上,即添加新的和未预料到的特性。由于面向方面编程(AOP)可以很容易地用于以非计划的方式组合软件,许多研究人员正在研究AOP作为一种可以在这个特定领域发挥重要作用的技术。然而,方面之间意想不到的交互仍然是影响AOP适用性的主要问题,特别是在许多开发人员(通常包括新的团队成员)参与过程的大型项目中。本文讨论了方面冲突和交互的问题,并提出了一种技术来帮助使用测试驱动的开发方法以一种有纪律的方式组合方面。一个银行系统的简单示例有助于说明该技术。
{"title":"Disciplined composition of aspects using tests","authors":"André Restivo, Ademar Aguiar","doi":"10.1145/1404953.1404961","DOIUrl":"https://doi.org/10.1145/1404953.1404961","url":null,"abstract":"A large part of the software development effort is typically spent on maintenance and evolution, namely on adding new and unanticipated features. As aspect-oriented programming (AOP) can be easily used to compose software in non-planned ways, many researchers are investigating AOP as a technique that can play an important role in this particular field. However, unexpected interactions between aspects are still a major problem that compromise AOP's applicability, especially in large projects where many developers, often including new team members, are involved in the process. This paper addresses the issues of aspect conflicts and interactions and proposes a technique to help compose aspects in a disciplined way using a test-driven development approach. A simple example for a banking system helps on illustrating the technique.","PeriodicalId":210171,"journal":{"name":"LATE@AOSD","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2008-03-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114507245","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 10
Mining and classification of diverse crosscutting concerns 挖掘和分类不同的横切关注点
Pub Date : 2008-03-31 DOI: 10.1145/1404953.1404955
M. U. Bhatti, Stéphane Ducasse
Crosscutting concerns appear in software system due to the inherent inadequacy of OOP mechanisms to capture them in suitable encapsulating units. This results in scattered and tangled code. One more form of scattering and tangling may result from the absence of OOP abstractions for domain entities of a software. These non-encapsulated domain entities end up scattered and tangled, appearing as crosscutting concerns in code. Aspect mining techniques automate the task of search for possible aspects in the code and falsely attribute all the crosscutting code to aspects even when these scattered concerns point to the absence of a domain abstraction. This paper discusses the application of aspect mining in the presence crosscutting code originating from the absence of aspects and OOP abstractions. A roadmap of a possible solution is provided to distinguish these two types of code scattering.
横切关注点之所以出现在软件系统中,是因为OOP机制固有的不足,无法用合适的封装单元捕获它们。这将导致代码的分散和混乱。另一种形式的分散和纠缠可能是由于缺乏面向对象抽象的软件领域实体造成的。这些未封装的域实体最终变得分散和纠结,在代码中表现为横切关注点。方面挖掘技术自动执行搜索代码中可能的方面的任务,并错误地将所有横切代码归因于方面,即使这些分散的关注点指向缺乏领域抽象。本文讨论了方面挖掘在由于缺乏方面和面向对象抽象而产生的横切代码中的应用。本文提供了一个可能解决方案的路线图来区分这两种类型的代码散射。
{"title":"Mining and classification of diverse crosscutting concerns","authors":"M. U. Bhatti, Stéphane Ducasse","doi":"10.1145/1404953.1404955","DOIUrl":"https://doi.org/10.1145/1404953.1404955","url":null,"abstract":"Crosscutting concerns appear in software system due to the inherent inadequacy of OOP mechanisms to capture them in suitable encapsulating units. This results in scattered and tangled code. One more form of scattering and tangling may result from the absence of OOP abstractions for domain entities of a software. These non-encapsulated domain entities end up scattered and tangled, appearing as crosscutting concerns in code. Aspect mining techniques automate the task of search for possible aspects in the code and falsely attribute all the crosscutting code to aspects even when these scattered concerns point to the absence of a domain abstraction. This paper discusses the application of aspect mining in the presence crosscutting code originating from the absence of aspects and OOP abstractions. A roadmap of a possible solution is provided to distinguish these two types of code scattering.","PeriodicalId":210171,"journal":{"name":"LATE@AOSD","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2008-03-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129714378","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Sort-based refactoring of crosscutting concerns to aspects 对方面的横切关注点进行基于排序的重构
Pub Date : 2008-03-31 DOI: 10.1145/1404953.1404957
Robin van der Rijst, M. Marin, A. Deursen
Crosscutting concerns in object-oriented programming hinder evolution because of their symptoms: tangling and scattering. To benefit from the modularisation capabilities for crosscutting concerns provided by aspect-oriented programming (which prevent tangling and scattering) aspect-introducing refactoring can be used. The first step in aspect-introducing refactoring is identifying and documenting crosscutting concerns in existing code. The second step is refactoring the identified concerns to aspects. This paper describes a tool called SAIR that can perform the second step of the aspect-introducing refactoring. For the first step, documenting, SAIR uses crosscutting concern sorts. Of the various possible sorts, SAIR currently supports the two most commonly encountered ones: Role Superimposition and Consistent Behavior. The refactoring towards aspects of concerns of these sorts is illustrated on an open source application (JHotDraw).
面向对象编程中的横切关注点阻碍了发展,因为它们的症状是:缠结和分散。为了从面向方面编程提供的横切关注点的模块化功能中获益(它可以防止纠缠和分散),可以使用引入方面的重构。引入方面的重构的第一步是识别和记录现有代码中的横切关注点。第二步是将确定的关注点重构为方面。本文描述了一个名为SAIR的工具,它可以执行引入方面的重构的第二步。对于第一步,即文档,SAIR使用横切关注点排序。在各种可能的类型中,SAIR目前支持两种最常见的类型:角色叠加和一致行为。在一个开源应用程序(JHotDraw)上演示了对这类关注点方面的重构。
{"title":"Sort-based refactoring of crosscutting concerns to aspects","authors":"Robin van der Rijst, M. Marin, A. Deursen","doi":"10.1145/1404953.1404957","DOIUrl":"https://doi.org/10.1145/1404953.1404957","url":null,"abstract":"Crosscutting concerns in object-oriented programming hinder evolution because of their symptoms: tangling and scattering. To benefit from the modularisation capabilities for crosscutting concerns provided by aspect-oriented programming (which prevent tangling and scattering) aspect-introducing refactoring can be used. The first step in aspect-introducing refactoring is identifying and documenting crosscutting concerns in existing code. The second step is refactoring the identified concerns to aspects.\u0000 This paper describes a tool called SAIR that can perform the second step of the aspect-introducing refactoring. For the first step, documenting, SAIR uses crosscutting concern sorts. Of the various possible sorts, SAIR currently supports the two most commonly encountered ones: Role Superimposition and Consistent Behavior. The refactoring towards aspects of concerns of these sorts is illustrated on an open source application (JHotDraw).","PeriodicalId":210171,"journal":{"name":"LATE@AOSD","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2008-03-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126051470","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 5
Regression test selection when evolving software with aspects 在使用方面发展软件时进行回归测试选择
Pub Date : 2008-03-31 DOI: 10.1145/1404953.1404960
Romain Delamare, B. Baudry, Yves Le Traon
Aspect-oriented software evolution introduces new challenges for regression test selection. When a program, that has been thoroughly tested, evolves by addition of an aspect, it is important for regression test selection to know which test cases are impacted by the new aspects and which are not. The work presented here proposes a classification for regression test cases and introduces an algorithm for impact analysis of aspects on a set of test cases. A major benefit of this analysis is that it saves the execution of test cases that are not impacted.
面向方面的软件发展为回归测试选择带来了新的挑战。当一个经过彻底测试的程序通过添加一个方面而发展时,对于回归测试的选择来说,了解哪些测试用例受到新方面的影响,哪些没有影响是很重要的。本文提出了回归测试用例的分类,并介绍了一种算法,用于对一组测试用例进行方面的影响分析。这种分析的一个主要好处是,它节省了不受影响的测试用例的执行。
{"title":"Regression test selection when evolving software with aspects","authors":"Romain Delamare, B. Baudry, Yves Le Traon","doi":"10.1145/1404953.1404960","DOIUrl":"https://doi.org/10.1145/1404953.1404960","url":null,"abstract":"Aspect-oriented software evolution introduces new challenges for regression test selection. When a program, that has been thoroughly tested, evolves by addition of an aspect, it is important for regression test selection to know which test cases are impacted by the new aspects and which are not. The work presented here proposes a classification for regression test cases and introduces an algorithm for impact analysis of aspects on a set of test cases. A major benefit of this analysis is that it saves the execution of test cases that are not impacted.","PeriodicalId":210171,"journal":{"name":"LATE@AOSD","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2008-03-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121234447","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
Flota: a programmer assistant for locating faulty changes in AspectJ software evolution Flota:在AspectJ软件发展过程中定位错误变更的程序员助手
Pub Date : 2008-03-31 DOI: 10.1145/1404953.1404959
Sai Zhang, Zhongxian Gu, Yu Lin, Jianjun Zhao
As Aspect-Oriented Programming (AOP) wins more and more popularity, there is increasing interest in using aspects to implement crosscutting concerns in object-oriented software. During software evolution, source code editing and testing are interleaved activities to assure code quality. If regression tests fail unexpectedly after a long session of editing, it may be difficult for programmers to find out the failure causes. In this paper, we present Flota, a fault localization tool for AspectJ programs. When a regression test fails unexpectedly after a session of source changes, Flota first decomposes the differences between two program versions into a set of atomic changes, and then identifies a subset of affecting changes which is responsible for the failure. Programmers are allowed to select (and apply) suspected changes to the original program, constructing compliable intermediate versions. Thus, programmers can re-execute the failed test against these intermediate program versions to locate the exact faulty changes by iteratively selecting, applying and narrowing down the set of affecting changes. Flota is implemented on top of the ajc compiler and designed as an eclipse plugin. Our preliminary empirical study shows that Flota can assist programmers effectively to find a small set of faulty changes and provide valuable debugging support.
随着面向方面编程(AOP)越来越流行,人们对在面向对象软件中使用方面来实现横切关注点越来越感兴趣。在软件发展过程中,源代码编辑和测试是相互交织的活动,以保证代码质量。如果在长时间的编辑后回归测试意外失败,程序员可能很难找出失败的原因。在本文中,我们提出了Flota,一个针对AspectJ程序的故障定位工具。当一个回归测试在一个源更改会话之后意外失败时,Flota首先将两个程序版本之间的差异分解为一组原子更改,然后确定导致失败的影响更改的子集。程序员可以选择(并应用)对原始程序的可疑更改,构建可编译的中间版本。因此,程序员可以针对这些中间程序版本重新执行失败的测试,通过迭代地选择、应用和缩小影响更改的集合来定位准确的错误更改。Flota是在ajc编译器之上实现的,并被设计为一个eclipse插件。我们的初步实证研究表明,Flota可以帮助程序员有效地找到一小部分有缺陷的更改,并提供有价值的调试支持。
{"title":"Flota: a programmer assistant for locating faulty changes in AspectJ software evolution","authors":"Sai Zhang, Zhongxian Gu, Yu Lin, Jianjun Zhao","doi":"10.1145/1404953.1404959","DOIUrl":"https://doi.org/10.1145/1404953.1404959","url":null,"abstract":"As Aspect-Oriented Programming (AOP) wins more and more popularity, there is increasing interest in using aspects to implement crosscutting concerns in object-oriented software. During software evolution, source code editing and testing are interleaved activities to assure code quality. If regression tests fail unexpectedly after a long session of editing, it may be difficult for programmers to find out the failure causes. In this paper, we present Flota, a fault localization tool for AspectJ programs. When a regression test fails unexpectedly after a session of source changes, Flota first decomposes the differences between two program versions into a set of atomic changes, and then identifies a subset of affecting changes which is responsible for the failure. Programmers are allowed to select (and apply) suspected changes to the original program, constructing compliable intermediate versions. Thus, programmers can re-execute the failed test against these intermediate program versions to locate the exact faulty changes by iteratively selecting, applying and narrowing down the set of affecting changes. Flota is implemented on top of the ajc compiler and designed as an eclipse plugin. Our preliminary empirical study shows that Flota can assist programmers effectively to find a small set of faulty changes and provide valuable debugging support.","PeriodicalId":210171,"journal":{"name":"LATE@AOSD","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2008-03-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126260118","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Extracting updating aspects from version differences 从版本差异中提取更新方面
Pub Date : 2008-03-31 DOI: 10.1145/1404953.1404958
S. Previtali, T. Gross
Dynamic software evolution represents a viable technique to update software systems at run-time. On-the-fly updating is particularly helpful for systems that must be continuously available and up-to-date. Updates consist of several incremental changes that must be applied to a system. These individual changes exhibit symptoms similar to crosscutting concerns: they are typically scattered across several classes. We therefore leverage aspect technology and use aspects to encapsulate the changes constituting an update. In addition, dynamic aspect systems can serve as a practicable platform to inject updates at run-time. In this paper, we present how we extract the updating aspects for a dynamic aspect system. We detail the algorithms necessary to generate such updating aspects that rely on the computation of the dependences between the changes to determine the granularity of an aspect.
动态软件演化是一种在运行时更新软件系统的可行技术。即时更新对于必须持续可用和最新的系统特别有帮助。更新由几个必须应用于系统的增量更改组成。这些单独的更改表现出与横切问题类似的症状:它们通常分散在几个类中。因此,我们利用方面技术并使用方面来封装构成更新的更改。此外,动态方面系统可以作为在运行时注入更新的实用平台。在本文中,我们提出了如何提取一个动态方面系统的更新方面。我们详细介绍了生成这些更新方面所需的算法,这些更新方面依赖于更改之间的依赖计算来确定方面的粒度。
{"title":"Extracting updating aspects from version differences","authors":"S. Previtali, T. Gross","doi":"10.1145/1404953.1404958","DOIUrl":"https://doi.org/10.1145/1404953.1404958","url":null,"abstract":"Dynamic software evolution represents a viable technique to update software systems at run-time. On-the-fly updating is particularly helpful for systems that must be continuously available and up-to-date. Updates consist of several incremental changes that must be applied to a system. These individual changes exhibit symptoms similar to crosscutting concerns: they are typically scattered across several classes. We therefore leverage aspect technology and use aspects to encapsulate the changes constituting an update. In addition, dynamic aspect systems can serve as a practicable platform to inject updates at run-time. In this paper, we present how we extract the updating aspects for a dynamic aspect system. We detail the algorithms necessary to generate such updating aspects that rely on the computation of the dependences between the changes to determine the granularity of an aspect.","PeriodicalId":210171,"journal":{"name":"LATE@AOSD","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2008-03-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115364933","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 9
Mining application-specific coding patterns for software maintenance 为软件维护挖掘特定于应用程序的编码模式
Pub Date : 2008-03-31 DOI: 10.1145/1404953.1404956
T. Ishio, H. Date, Tatsuya Miyake, Katsuro Inoue
A crosscutting concern is often implemented based on a coding pattern, or a particular sequence of method calls and control statements. We have applied a sequential pattern mining algorithm to capture coding patterns in Java programs. We have manually investigated the resultant patterns that involve both crosscutting concerns and implementation idioms. This paper discusses the detail of our pattern mining algorithm and reports detected crosscutting concerns.
横切关注点通常基于编码模式或特定的方法调用和控制语句序列来实现。我们已经应用了顺序模式挖掘算法来捕获Java程序中的编码模式。我们已经手工研究了包含横切关注点和实现习惯用法的最终模式。本文详细讨论了我们的模式挖掘算法,并报告了检测到的横切关注点。
{"title":"Mining application-specific coding patterns for software maintenance","authors":"T. Ishio, H. Date, Tatsuya Miyake, Katsuro Inoue","doi":"10.1145/1404953.1404956","DOIUrl":"https://doi.org/10.1145/1404953.1404956","url":null,"abstract":"A crosscutting concern is often implemented based on a coding pattern, or a particular sequence of method calls and control statements. We have applied a sequential pattern mining algorithm to capture coding patterns in Java programs. We have manually investigated the resultant patterns that involve both crosscutting concerns and implementation idioms. This paper discusses the detail of our pattern mining algorithm and reports detected crosscutting concerns.","PeriodicalId":210171,"journal":{"name":"LATE@AOSD","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2008-03-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127508693","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Test-based pointcuts: a robust pointcut mechanism based on unit test cases for software evolution 基于测试的切入点:基于软件演进的单元测试用例的健壮的切入点机制
Pub Date : 2007-03-12 DOI: 10.1145/1275672.1275677
K. Sakurai, H. Masuhara
This paper proposes test-based pointcuts, a new aspect-oriented programming language construct that uses unit test cases as interface of crosscutting concerns. A test-based pointcut primarily specifies a set of test cases associated to a program. At execution time, it matches the join points that have the same execution history to the one of the specified test cases. The test-based approach improves pointcut definitions in two respects. First, test-based pointcuts are less fragile with respect to program changes because rather than directly relying on type and operation names in a program, they indirectly specify join points through unit test cases, which are easier to be kept up-to-date. Second, test-based pointcuts can discriminate execution histories without requiring to specify detailed execution steps, as they use test cases as abstractions of execution histories. With the abstractions, the second respect contributes to the first respect. We designed and implemented the test-based pointcuts as an extension to AspectJ, and confirmed, through an case study, test-based pointcuts are more robust against evolution when used for a practical application program.
本文提出了基于测试的切入点,这是一种新的面向方面的编程语言结构,它使用单元测试用例作为横切关注点的接口。基于测试的切入点主要指定与程序相关的一组测试用例。在执行时,它将具有相同执行历史的连接点与指定的测试用例之一相匹配。基于测试的方法在两个方面改进了切入点定义。首先,基于测试的切入点相对于程序更改而言不那么脆弱,因为它们不是直接依赖于程序中的类型和操作名称,而是通过单元测试用例间接指定连接点,这更容易保持最新状态。其次,基于测试的切入点可以区分执行历史,而不需要指定详细的执行步骤,因为它们使用测试用例作为执行历史的抽象。对于抽象,第二个方面有助于第一个方面。我们设计并实现了基于测试的切入点作为AspectJ的扩展,并且通过一个案例研究证实,当用于实际应用程序时,基于测试的切入点对于发展更加健壮。
{"title":"Test-based pointcuts: a robust pointcut mechanism based on unit test cases for software evolution","authors":"K. Sakurai, H. Masuhara","doi":"10.1145/1275672.1275677","DOIUrl":"https://doi.org/10.1145/1275672.1275677","url":null,"abstract":"This paper proposes test-based pointcuts, a new aspect-oriented programming language construct that uses unit test cases as interface of crosscutting concerns. A test-based pointcut primarily specifies a set of test cases associated to a program. At execution time, it matches the join points that have the same execution history to the one of the specified test cases. The test-based approach improves pointcut definitions in two respects. First, test-based pointcuts are less fragile with respect to program changes because rather than directly relying on type and operation names in a program, they indirectly specify join points through unit test cases, which are easier to be kept up-to-date. Second, test-based pointcuts can discriminate execution histories without requiring to specify detailed execution steps, as they use test cases as abstractions of execution histories. With the abstractions, the second respect contributes to the first respect. We designed and implemented the test-based pointcuts as an extension to AspectJ, and confirmed, through an case study, test-based pointcuts are more robust against evolution when used for a practical application program.","PeriodicalId":210171,"journal":{"name":"LATE@AOSD","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2007-03-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126258419","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 9
Surrendering to the need for speed while maintaining visibility in adverse code conditions 屈服于对速度的需求,同时在不利的代码条件下保持可见性
Pub Date : 2007-03-12 DOI: 10.1145/1275672.1275674
Celina Berg, J. Proctor, Y. Coady
Speed is a necessity in low-level systems software. Mechanisms through which it is achieved are often at odds with well-known practices in terms of evolution and maintenance tasks. Ironically, though these mechanisms often create adverse code conditions, in practice they thinly veil structural support associated with language mechanisms for both Object-Oriented (OO) and Aspect-Oriented (AO) programming. This paper argues for aggressive and comprehensive tools designed to provide support necessary for developers to take control in this high-speed, low-level systems domain. Through these tools, we envision evolving highly configurable single-source systems according to high-level structural principles, without imposing any speed limits on their underlying code.
在低级系统软件中,速度是必需的。就发展和维护任务而言,实现它的机制通常与众所周知的实践不一致。具有讽刺意味的是,尽管这些机制经常创建不利的代码条件,但在实践中,它们几乎掩盖了与面向对象(OO)和面向方面(AO)编程的语言机制相关的结构支持。本文主张采用积极和全面的工具,为开发人员提供必要的支持,以控制这个高速、低级的系统领域。通过这些工具,我们设想根据高级结构原则发展高度可配置的单源系统,而不对其底层代码施加任何速度限制。
{"title":"Surrendering to the need for speed while maintaining visibility in adverse code conditions","authors":"Celina Berg, J. Proctor, Y. Coady","doi":"10.1145/1275672.1275674","DOIUrl":"https://doi.org/10.1145/1275672.1275674","url":null,"abstract":"Speed is a necessity in low-level systems software. Mechanisms through which it is achieved are often at odds with well-known practices in terms of evolution and maintenance tasks. Ironically, though these mechanisms often create adverse code conditions, in practice they thinly veil structural support associated with language mechanisms for both Object-Oriented (OO) and Aspect-Oriented (AO) programming. This paper argues for aggressive and comprehensive tools designed to provide support necessary for developers to take control in this high-speed, low-level systems domain. Through these tools, we envision evolving highly configurable single-source systems according to high-level structural principles, without imposing any speed limits on their underlying code.","PeriodicalId":210171,"journal":{"name":"LATE@AOSD","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2007-03-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114975941","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
期刊
LATE@AOSD
全部 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学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1