10 research outputs found

    A Test-Driven Approach to Developing Pointcut Descriptors in AspectJ

    Get PDF
    International audienceAspect-oriented programming (AOP) languages introduce new constructs that can lead to new types of faults, which must be targeted by testing techniques. In particular, AOP languages such as AspectJ use a pointcut descriptor (PCD) that provides a convenient way to declaratively specify a set of joinpoints in the program where the aspect should be woven. However, a major difficulty when testing that the PCD matches the intended set of joinpoints is the lack of precise specification for this set other than the PCD itself. In this paper, we propose a test-driven approach for the development and validation of the PCD. We developed a tool, AdviceTracer, which enriches the JUnit API with new types of assertions that can be used to specify the expected joinpoints. In order to validate our approach, we also developed a mutation tool that systematically injects faults into PCDs. Using these two tools, we perform experiments to validate that our approach can be applied for specifying expected joinpoints and for detecting faults in the PCD

    Inquiring the usage of aspect-oriented programming: an empirical study

    No full text
    International audienceBack in 2001, the MIT announced aspect-orientedprogramming as a key technology in the next 10 years.Nowadays, 8 years later, AOP is not widely adopted.Several reasons can explain this distrust in front ofAOP, and one of them is the lack of robust tools foranalysis, testing and maintenance. In order to developdedicated solutions for assisting the development withAOP, and increase its adoption, we need to understandhow it is actually used. In this paper we analyze 38aspect-oriented open source projects with respect tothe impact of aspects on the projects, and to coverageof the language features. This reveals that AOP iscurrently used in a cautious way. This work is a firststep to built support and development tools dedicatedto actual practices for AOP, based on empirical usage profiles

    Performance Rubrics for Robustness Evaluation of Web Mutation Operators

    Get PDF
    Web Applications are the predominant medium for not only business enterprises but also for service-based sector to establish and continue their online presence. However, the robustness of web application is mandatory in seamless interaction with customers for achieving sustainable business. Intruders and unethical hackers keep trying to gain unauthentic access to the web applications and hence it is more necessary for the web application to be resistant against any such attacks. The strength of a web application is indirectly responsible for gaining customer confidence leading to repeat business as well as attracting new customers for profitable longer run. Once the web application gains credibility it is bound to run successfully. In the current work, an attempt has been made to assess the robustness of mutation operators used to test web applications is made. A few rubrics have been proposed to ascertain the strength of projected mutation operators verified on some sample open-source web applications. The functional attributes of a web application are the functionalities offered by the web application. The non-functional attributes of a typical web application are security, performance, availability. Here, web applications are challenged against the afore mentioned non-functional attributes using rubrics like uniformity, uniqueness, reliability, unpredictability, and entropy. A comprehensive analysis has been made for the robustness of the projected web operators against the designed and formulated rubrics

    Inquiring the usage of aspect-oriented programming: an empirical study

    Get PDF
    International audienceBack in 2001, the MIT announced aspect-orientedprogramming as a key technology in the next 10 years.Nowadays, 8 years later, AOP is not widely adopted.Several reasons can explain this distrust in front ofAOP, and one of them is the lack of robust tools foranalysis, testing and maintenance. In order to developdedicated solutions for assisting the development withAOP, and increase its adoption, we need to understandhow it is actually used. In this paper we analyze 38aspect-oriented open source projects with respect tothe impact of aspects on the projects, and to coverageof the language features. This reveals that AOP iscurrently used in a cautious way. This work is a firststep to built support and development tools dedicatedto actual practices for AOP, based on empirical usage profiles

    Mutation Testing Advances: An Analysis and Survey

    Get PDF

    Prévention et détection des interférences inter-aspects (méthode et application à l'aspectisation de la tolérance aux fautes)

    Get PDF
    La programmation orientĂ©e aspects (POA) sĂ©pare les diffĂ©rentes prĂ©occupations composant un systĂšme informatique pour amĂ©liorer la modularitĂ©. La POA offre de nombreux bĂ©nĂ©fices puisqu'elle permet de sĂ©parer le code fonctionnel du code non-fonctionnel amĂ©liorant ainsi leur rĂ©utilisation et la configurabilitĂš des systĂšmes informatiques. La configurabilitĂ© est un Ă©lĂ©ment essentiel pour assurer la rĂ©silience des systĂšmes informatiques, puisqu elle permet de modifier les mĂ©canismes de sĂ»retĂ© de fonctionnement. Cependant le paradigme de programmation orientĂ©e aspect introduit de nouveaux dĂ©fis pour le test. Dans les systĂšmes de grande taille oĂč plusieurs prĂ©occupations non fonctionnelles cohabitent, une implĂ©mentation Ă  l'aide d'aspects de ces prĂ©occupations peut ĂȘtre problĂ©matique. Partageant le mĂȘme flot de donnĂ©es et le mĂȘme flot de contrĂŽle les aspects implĂ©mentant les diffĂ©rentes prĂ©occupations peuvent Ă©crire dans des variables lues par d'autres aspects ou interrompre le flot de contrĂŽle commun aux diffĂ©rents aspects empĂȘchant ainsi l'exĂ©cution de certains d'entre eux. Dans cette thĂšse nous nous intĂ©ressons plus spĂ©cifiquement aux interfĂ©rences entre aspects dans le cadre du dĂ©veloppement de mĂ©canismes de tolĂ©rance aux fautes implĂ©mentĂ©s sous forme d aspects. Ces interfĂ©rences sont dues Ă  une absence de dĂ©claration de prĂ©cĂ©dence entre les aspects ou Ă  une dĂ©claration de prĂ©cĂ©dence erronĂ©e. Afin de mieux maĂźtriser l assemblage des diffĂ©rents aspects composant un mĂ©canisme de tolĂ©rance aux fautes, nous avons dĂ©veloppĂ© une mĂ©thode alliant l'Ă©vitement Ă  la dĂ©tection des interfĂ©rences au niveau du code. Le but de l'Ă©vitement est d'empĂȘcher l'introduction d'interfĂ©rences en imposant une dĂ©claration de prĂ©cĂ©dence entre les aspects lors de l'intĂ©gration des aspects. La dĂ©tection permet d'exhiber lors du test les erreurs introduites dans la dĂ©claration des prĂ©cĂ©dences. Ces deux facettes de notre approche sont rĂ©alisĂ©es grĂące Ă  l utilisation d une extension d'AspectJ appelĂ©e AIRIA. Les constructions d'AIRIA permettent l instrumentation et donc la dĂ©tection des interfĂ©rences entre aspects, avec des facilitĂ©s de compilation permettant de mettre en Ɠuvre l Ă©vitement d interfĂ©rences. Notre approche est outillĂ©e et vise Ă  limiter le temps de dĂ©boguage : le testeur peut se concentrer directement sur les points oĂč une interfĂ©rence se produit. Nous illustrons notre approche sur une Ă©tude de cas: un protocole de rĂ©plication duplex. Dans ce contexte le protocole est implĂ©mentĂ© en utilisant des aspects Ă  grain fin permettant ainsi une meilleure configurabilitĂ© de la politique de rĂ©plication. Nous montrons que l'assemblage de ces aspects Ă  grain fin donne lieu Ă  des interfĂ©rences de flot de donnĂ©es et flot de contrĂŽle qui sont dĂ©tectĂ©es par notre approche d'instrumentation. Nous dĂ©finissons un ensemble d'aspects interfĂ©rant pour l'exemple, et nous montrons comment notre approche permet la dĂ©tection d'interfĂ©rences.Aspect-oriented programming (AOP) separates the different concerns of a computer software system to improve modularity. AOP offers many benefits since it allows separating the functional code from the non-functional code, thus improving reuse and configurability of computer systems. Configurability is essential to ensure the resilience of computer systems, since it allows modifying the dependability mechanisms. However, the paradigm of aspectoriented programming introduces new challenges regarding testing. In large systems where multiple non-functional concerns coexist, an AOP implementation of these concerns can be problematic. Sharing the same data flow and the same control flow, aspects implementing different concerns can write into variables read by other aspects, or interrupt the control flow involving various aspects, and thus preventing the execution of some aspects in the chain. In this work we focus more specifically on interference between aspects implementing fault tolerance mechanisms. This interference is due to a lack of declaration of fine-grain precedence between aspects or an incorrect precedence declaration. To better control the assembly of the various aspects composing fault tolerance mechanisms, we have developed a method combining avoidance of interferences with runtime detection interferences at code level. The purpose of avoidance is to prevent the introduction of interference by requiring a statement of precedence between aspects during the aspects integration. Detection allows exhibiting during the test, errors introduced in the precedence statement. These two aspects of our approach are performed through the use of an extension called AspectJ AIRIA. AIRIA s constructs allow instrumentation and therefore the detection of interference between aspects, with facilities compilation to implement the interference avoidance. Our approach is designed and equipped to limit the debugging time : the tester can focus directly on the points where an interference occurs. Finaly, we illustrate our approach on a case study : a duplex replication protocol. In this context, the protocol is implemented using fine grained aspects allowing a better configurability of the replication policy.We show that the assembly of these fine-grained aspects gives rise to interference data flow and control flow that are detected by our instrumentation approach. We define a set of interfering aspects in this example, and show how our approach allows the detection of interferences.TOULOUSE-INP (315552154) / SudocSudocFranceF

    Prévention et détection des interférences inter-aspects : méthode et application à l'aspectisation de la tolérance aux fautes

    Get PDF
    La programmation orientĂ©e aspects (POA) sĂ©pare les diffĂ©rentes prĂ©occupations composant un systĂšme informatique pour amĂ©liorer la modularitĂ©. La POA offre de nombreux bĂ©nĂ©fices puisqu'elle permet de sĂ©parer le code fonctionnel du code non-fonctionnel amĂ©liorant ainsi leur rĂ©utilisation et la configurabilitĂš des systĂšmes informatiques. La configurabilitĂ© est un Ă©lĂ©ment essentiel pour assurer la rĂ©silience des systĂšmes informatiques, puisqu’elle permet de modifier les mĂ©canismes de sĂ»retĂ© de fonctionnement. Cependant le paradigme de programmation orientĂ©e aspect introduit de nouveaux dĂ©fis pour le test. Dans les systĂšmes de grande taille oĂč plusieurs prĂ©occupations non fonctionnelles cohabitent, une implĂ©mentation Ă  l'aide d'aspects de ces prĂ©occupations peut ĂȘtre problĂ©matique. Partageant le mĂȘme flot de donnĂ©es et le mĂȘme flot de contrĂŽle les aspects implĂ©mentant les diffĂ©rentes prĂ©occupations peuvent Ă©crire dans des variables lues par d'autres aspects ou interrompre le flot de contrĂŽle commun aux diffĂ©rents aspects empĂȘchant ainsi l'exĂ©cution de certains d'entre eux. Dans cette thĂšse nous nous intĂ©ressons plus spĂ©cifiquement aux interfĂ©rences entre aspects dans le cadre du dĂ©veloppement de mĂ©canismes de tolĂ©rance aux fautes implĂ©mentĂ©s sous forme d’aspects. Ces interfĂ©rences sont dues Ă  une absence de dĂ©claration de prĂ©cĂ©dence entre les aspects ou Ă  une dĂ©claration de prĂ©cĂ©dence erronĂ©e. Afin de mieux maĂźtriser l’assemblage des diffĂ©rents aspects composant un mĂ©canisme de tolĂ©rance aux fautes, nous avons dĂ©veloppĂ© une mĂ©thode alliant l'Ă©vitement Ă  la dĂ©tection des interfĂ©rences au niveau du code. Le but de l'Ă©vitement est d'empĂȘcher l'introduction d'interfĂ©rences en imposant une dĂ©claration de prĂ©cĂ©dence entre les aspects lors de l'intĂ©gration des aspects. La dĂ©tection permet d'exhiber lors du test les erreurs introduites dans la dĂ©claration des prĂ©cĂ©dences. Ces deux facettes de notre approche sont rĂ©alisĂ©es grĂące Ă  l’utilisation d’une extension d'AspectJ appelĂ©e AIRIA. Les constructions d'AIRIA permettent l’instrumentation et donc la dĂ©tection des interfĂ©rences entre aspects, avec des facilitĂ©s de compilation permettant de mettre en Ɠuvre l’évitement d’interfĂ©rences. Notre approche est outillĂ©e et vise Ă  limiter le temps de dĂ©boguage : le testeur peut se concentrer directement sur les points oĂč une interfĂ©rence se produit. Nous illustrons notre approche sur une Ă©tude de cas: un protocole de rĂ©plication duplex. Dans ce contexte le protocole est implĂ©mentĂ© en utilisant des aspects Ă  grain fin permettant ainsi une meilleure configurabilitĂ© de la politique de rĂ©plication. Nous montrons que l'assemblage de ces aspects Ă  grain fin donne lieu Ă  des interfĂ©rences de flot de donnĂ©es et flot de contrĂŽle qui sont dĂ©tectĂ©es par notre approche d'instrumentation. Nous dĂ©finissons un ensemble d'aspects interfĂ©rant pour l'exemple, et nous montrons comment notre approche permet la dĂ©tection d'interfĂ©rences. ABSTRACT : Aspect-oriented programming (AOP) separates the different concerns of a computer software system to improve modularity. AOP offers many benefits since it allows separating the functional code from the non-functional code, thus improving reuse and configurability of computer systems. Configurability is essential to ensure the resilience of computer systems, since it allows modifying the dependability mechanisms. However, the paradigm of aspectoriented programming introduces new challenges regarding testing. In large systems where multiple non-functional concerns coexist, an AOP implementation of these concerns can be problematic. Sharing the same data flow and the same control flow, aspects implementing different concerns can write into variables read by other aspects, or interrupt the control flow involving various aspects, and thus preventing the execution of some aspects in the chain. In this work we focus more specifically on interference between aspects implementing fault tolerance mechanisms. This interference is due to a lack of declaration of fine-grain precedence between aspects or an incorrect precedence declaration. To better control the assembly of the various aspects composing fault tolerance mechanisms, we have developed a method combining avoidance of interferences with runtime detection interferences at code level. The purpose of avoidance is to prevent the introduction of interference by requiring a statement of precedence between aspects during the aspects integration. Detection allows exhibiting during the test, errors introduced in the precedence statement. These two aspects of our approach are performed through the use of an extension called AspectJ AIRIA. AIRIA ‘s constructs allow instrumentation and therefore the detection of interference between aspects, with facilities compilation to implement the interference avoidance. Our approach is designed and equipped to limit the debugging time : the tester can focus directly on the points where an interference occurs. Finaly, we illustrate our approach on a case study : a duplex replication protocol. In this context, the protocol is implemented using fine grained aspects allowing a better configurability of the replication policy.We show that the assembly of these fine-grained aspects gives rise to interference data flow and control flow that are detected by our instrumentation approach. We define a set of interfering aspects in this example, and show how our approach allows the detection of interferences
    corecore