25 research outputs found

    Aspects of Assembly and Cascaded Aspects of Assembly: Logical and Temporal Properties

    Full text link
    Highly dynamic computing environments, like ubiquitous and pervasive computing environments, require frequent adaptation of applications. This has to be done in a timely fashion, and the adaptation process must be as fast as possible and mastered. Moreover the adaptation process has to ensure a consistent result when finished whereas adaptations to be implemented cannot be anticipated at design time. In this paper we present our mechanism for self-adaptation based on the aspect oriented programming paradigm called Aspect of Assembly (AAs). Using AAs: (1) the adaptations process is fast and its duration is mastered; (2) adaptations' entities are independent of each other thanks to the weaver logical merging mechanism; and (3) the high variability of the software infrastructure can be managed using a mono or multi-cycle weaving approach.Comment: 14 pages, published in International Journal of Computer Science, Volume 8, issue 4, Jul 2011, ISSN 1694-081

    Composable Controllers in Fractal: Implementation and Interference Analysis

    Get PDF
    International audienceFractal component model provides controllers for adding extra-functional capabilities to component behaviors. However, controllers may interfere one with another and their composition is still a challenge. In this article, we extend Fractal with a support for composing controllers with reusable operators. Then, we discuss how to formally model and analyze, in Uppaal, Fractal systems with several controllers. This enables us to detect when controllers interfere and to check whether their composition is interference-free

    Static Analysis of Aspect Interaction and Composition in Component Models

    Get PDF
    International audienceComponent based software engineering and aspect orientation are claimed to be two complementary approaches. While the former ensures the modularity and the reusability of software entities, the latter enables the modularity of crosscutting concerns that cannot be modularized by regular components. Nowadays, several approaches and frameworks are dedicated to integrate aspects into component models. However, when several aspects are woven, interferences may appear which results on undesirable behaviors. The contribution of this paper is twofold. First, we show how aspectualized component models can be formally modeled in Uppaal model checker in order to detect potential interferences among aspects. Second, we provide an extendible catalog of composition operators used for aspect composition. We illustrate our general approach with an airport Internet service example

    Locating Potential Aspect Interference Using Clustering Analysis

    Get PDF
    Software design continues to evolve from the structured programming paradigm of the 1970s and 1980s and the object-oriented programming (OOP) paradigm of the 1980s and 1990s. The functional decomposition design methodology used in these paradigms reduced the prominence of non-functional requirements, which resulted in scattered and tangled code to address non-functional elements. Aspect-oriented programming (AOP) allowed the removal of crosscutting concerns scattered throughout class code into single modules known as aspects. Aspectization resulted in increased modularity in class code, but introduced new types of problems that did not exist in OOP. One such problem was aspect interference, in which aspects meddled with the data flow or control flow of a program. Research has developed various solutions for detecting and addressing aspect interference using formal design and specification methods, and by programming techniques that specify aspect precedence. Such explicit specifications required practitioners to have a complete understanding of possible aspect interference in an AOP system under development. However, as system size increased, understanding of possible aspect interference could decrease. Therefore, practitioners needed a way to increase their understanding of possible aspect interference within a program. This study used clustering analysis to locate potential aspect interference within an aspect-oriented program under development, using k-means partitional clustering. Vector space models, using two newly defined metrics, interference potential (IP) and interference causality potential (ICP), and an existing metric, coupling on advice execution (CAE), provided input to the clustering algorithms. Resulting clusters were analyzed via an internal strategy using the R-Squared, Dunn, Davies-Bouldin, and SD indexes. The process was evaluated on both a smaller scale AOP system (AspectTetris), and a larger scale AOP system (AJHotDraw). By seeding potential interference problems into these programs and comparing results using visualizations, this study found that clustering analysis provided a viable way for detecting interference problems in aspect-oriented software. The ICP model was best at detecting interference problems, while the IP model produced results that were more sporadic. The CAE clustering models were not effective in pinpointing potential aspect interference problems. This was the first known study to use clustering analysis techniques specifically for locating aspect interference

    Static Analysis of Aspect Interaction and Composition in Component Models

    Get PDF
    International audienceComponent based software engineering and aspect orientation are claimed to be two complementary approaches. While the former ensures the modularity and the reusability of software entities, the latter enables the modularity of crosscutting concerns that cannot be modularized by regular components. Nowadays, several approaches and frameworks are dedicated to integrate aspects into component models. However, when several aspects are woven, interferences may appear which results on undesirable behaviors. The contribution of this paper is twofold. First, we show how aspectualized component models can be formally modeled in Uppaal model checker in order to detect potential interferences among aspects. Second, we provide an extendible catalog of composition operators used for aspect composition. We illustrate our general approach with an airport Internet service example

    Well-Formed and Scalable Invasive Software Composition

    Get PDF
    Software components provide essential means to structure and organize software effectively. However, frequently, required component abstractions are not available in a programming language or system, or are not adequately combinable with each other. Invasive software composition (ISC) is a general approach to software composition that unifies component-like abstractions such as templates, aspects and macros. ISC is based on fragment composition, and composes programs and other software artifacts at the level of syntax trees. Therefore, a unifying fragment component model is related to the context-free grammar of a language to identify extension and variation points in syntax trees as well as valid component types. By doing so, fragment components can be composed by transformations at respective extension and variation points so that always valid composition results regarding the underlying context-free grammar are yielded. However, given a language’s context-free grammar, the composition result may still be incorrect. Context-sensitive constraints such as type constraints may be violated so that the program cannot be compiled and/or interpreted correctly. While a compiler can detect such errors after composition, it is difficult to relate them back to the original transformation step in the composition system, especially in the case of complex compositions with several hundreds of such steps. To tackle this problem, this thesis proposes well-formed ISC—an extension to ISC that uses reference attribute grammars (RAGs) to specify fragment component models and fragment contracts to guard compositions with context-sensitive constraints. Additionally, well-formed ISC provides composition strategies as a means to configure composition algorithms and handle interferences between composition steps. Developing ISC systems for complex languages such as programming languages is a complex undertaking. Composition-system developers need to supply or develop adequate language and parser specifications that can be processed by an ISC composition engine. Moreover, the specifications may need to be extended with rules for the intended composition abstractions. Current approaches to ISC require complete grammars to be able to compose fragments in the respective languages. Hence, the specifications need to be developed exhaustively before any component model can be supplied. To tackle this problem, this thesis introduces scalable ISC—a variant of ISC that uses island component models as a means to define component models for partially specified languages while still the whole language is supported. Additionally, a scalable workflow for agile composition-system development is proposed which supports a development of ISC systems in small increments using modular extensions. All theoretical concepts introduced in this thesis are implemented in the Skeletons and Application Templates framework SkAT. It supports “classic”, well-formed and scalable ISC by leveraging RAGs as its main specification and implementation language. Moreover, several composition systems based on SkAT are discussed, e.g., a well-formed composition system for Java and a C preprocessor-like macro language. In turn, those composition systems are used as composers in several example applications such as a library of parallel algorithmic skeletons

    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

    Timing Predictability in Future Multi-Core Avionics Systems

    Full text link

    Virtual Reality Games for Motor Rehabilitation

    Get PDF
    This paper presents a fuzzy logic based method to track user satisfaction without the need for devices to monitor users physiological conditions. User satisfaction is the key to any product’s acceptance; computer applications and video games provide a unique opportunity to provide a tailored environment for each user to better suit their needs. We have implemented a non-adaptive fuzzy logic model of emotion, based on the emotional component of the Fuzzy Logic Adaptive Model of Emotion (FLAME) proposed by El-Nasr, to estimate player emotion in UnrealTournament 2004. In this paper we describe the implementation of this system and present the results of one of several play tests. Our research contradicts the current literature that suggests physiological measurements are needed. We show that it is possible to use a software only method to estimate user emotion
    corecore