F. Dantas, Alessandro F. Garcia, J. Whittle, João Araújo
{"title":"Enhancing design models with composition properties: a software maintenance study","authors":"F. Dantas, Alessandro F. Garcia, J. Whittle, João Araújo","doi":"10.1145/2451436.2451444","DOIUrl":"https://doi.org/10.1145/2451436.2451444","url":null,"abstract":"A considerable part of software design is dedicated for the composition of two or more modules. The implication is that changes made later in the implementation often require some reasoning about module composition properties. However, these properties are often not explicitly specified in design artefacts. Moreover, they cannot be easily inferred from the source code either. As a result, implicit composition properties may represent a major source of software maintenance complexity. This fact is particularly true with the advent of post object-oriented techniques, which are increasingly providing advanced mechanisms to enable flexible module composition. However, there is little empirical knowledge on how design models with explicitly-specified composition properties can improve software maintenance tasks. This paper reports an experiment that analyses the impact of design models enriched with composition properties on system maintenance. Explicit composition modelling was achieved in the experiment through a conservative approach, i.e., a specific set of additional UML stereotypes dedicated to model composition properties. The experiment involved 28 participants, who were asked to realize four maintenance tasks using UML design models with different levels of module composition details. Our findings suggested that explicit composition modelling contributed to better results in the realization of program change tasks, regardless of the developers' expertise. Users of composition-enhanced models consistently yielded better results when compared to users of plain UML models. The use of explicit composition specification also led to an average increase of 44.7% in the quality of changes produced by the participants","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-03-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121374610","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}
{"title":"Supporting data aspects in pig latin","authors":"C. Dyreson, Omar U. Florez, A. Thakre, V. Sharma","doi":"10.1145/2451436.2451439","DOIUrl":"https://doi.org/10.1145/2451436.2451439","url":null,"abstract":"In this paper we apply the aspect-oriented programming (AOP) paradigm to Pig Latin, a dataflow language for cloud computing, used primarily for the analysis of massive data sets. Missing from Pig Latin is support for cross-cutting data concerns. Data, like code, has cross-cutting concerns such as versioning, privacy, and reliability. AOP techniques can be used to weave metadata around Pig data. The metadata imbues the data with additional semantics that must be observed in the evaluation of Pig Latin programs. In this paper we show how to modify Pig Latin to process data woven together with metadata. The data weaver is a layer that maps a Pig Latin program to an augmented Pig Latin program using Pig Latin templates or patterns. We also show how to model additional levels of advice, i.e., meta-metadata.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"301 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-03-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134139617","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}
{"title":"A typed monadic embedding of aspects","authors":"Nicolas Tabareau, Ismael Figueroa, É. Tanter","doi":"10.1145/2451436.2451457","DOIUrl":"https://doi.org/10.1145/2451436.2451457","url":null,"abstract":"We describe a novel approach to embed pointcut/advice aspects in a typed functional programming language like Haskell. Aspects are first-class, can be deployed dynamically, and the pointcut language is extensible. Type soundness is guaranteed by exploiting the underlying type system, in particular phantom types and a new anti-unification type class. The use of monads brings type-based reasoning about effects for the first time in the pointcut/advice setting, thereby practically combining Open Modules and EffectiveAdvice, and enables modular extensions of the aspect language.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-03-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131627232","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}
{"title":"A graphical tool for observing state and behavioral changes at join points","authors":"Haihan Yin","doi":"10.1145/2457392.2457405","DOIUrl":"https://doi.org/10.1145/2457392.2457405","url":null,"abstract":"To comprehend programs or to fix a bug, programmers always mentally simulate the program execution by reading the source code. Aspect-oriented programming (AOP) increases this mental effort, because it can alter the state and the behavior of the base program at a join point to any extent by executing advices. Advices are implicitly invoked in the source code and their compositions at a join point may vary according to the runtime context. They can access and even change the context values of join points. Without appropriate tools, it is difficult to notice the effects of the implicitly executed advices. The goal of my work is to increase the comprehensibility of AO programs by using a graphical tool, that can succinctly visualize the state and behavioral changes at join points.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-03-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130683602","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}
{"title":"Comparison of instrumentation techniques for dynamic program analysis on the Java virtual machine","authors":"Aibek Sarimbekov","doi":"10.1145/2457392.2457406","DOIUrl":"https://doi.org/10.1145/2457392.2457406","url":null,"abstract":"Dynamic Program Analysis (DPA) tools commonly rely on bytecode instrumentation which is done by means of low-level bytecode manipulation libraries. While providing a lot of flexibility and expressiveness to developers, using those libraries is usually time consuming, error-prone, and tedious. Approaches that leverage aspect-oriented programming (AOP) serve to reduce the development effort by providing higher abstraction layer for creating instrumentations. However, AOP-based tools have certain known limitations, high performance overhead being one of them. This work is intended to help DPA tool developers to choose the proper instrumentation framework that fully satisfies their needs.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-03-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129532239","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}
{"title":"Modularity in the context of product line variability","authors":"K. Kang","doi":"10.1145/2457392.2457394","DOIUrl":"https://doi.org/10.1145/2457392.2457394","url":null,"abstract":"Product line software engineering (PLSE) has been recognized as a key software development paradigm for meeting diverse needs of the global market efficiently and effectively giving competitive advantages to IT industries and embedded systems developers. The PLSE paradigm has been changing the way software developers think about software development: from the single application view to the application family, i.e., product line, view. Several software engineering concepts and techniques have been developed to support the product line engineering, including commonality and variability analysis, product line architecture, variation points and variants, and variability management. However, modularity of software in the context of product line engineering has become even more important than it was in the context of single application development as we need to manage variability and also promote reuse across a family of related applications. We must take the variability into consideration when we design for modularity, bringing another dimension of complexity into software engineering.\u0000 In my talk, I will give an overview of the evolution of reuse concepts, introduce product line engineering, and then discuss various approaches to modularity in the context of product line variability. Pending research issues will also be discussed.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"76 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-03-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114726180","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}
M. Bagherzadeh, Hridesh Rajan, Mohammad Ali Darvish Darab
{"title":"On exceptions, events and observer chains","authors":"M. Bagherzadeh, Hridesh Rajan, Mohammad Ali Darvish Darab","doi":"10.1145/2451436.2451458","DOIUrl":"https://doi.org/10.1145/2451436.2451458","url":null,"abstract":"Modular understanding of behaviors and flows of exceptions may help in their better use and handling. Such reasoning tasks about exceptions face unique challenges in event-based implicit invocation (II) languages that allow subjects to implicitly invoke observers, and run the observers in a chain. In this work, we illustrate these challenge in Ptolemy and propose Ptolemy-X that enables modular reasoning about behaviors and flows of exceptions for event announcement and handling. Ptolemy-X's exception-aware specification expressions and boundary exceptions limit the set of (un)checked exceptions of subjects and observers of an event. Exceptional postconditions specify the behaviors of these exceptions. Greybox specifications specify the flows of these exceptions among the observers in the chain. Ptolemy-X's type system and refinement rules enforce these specifications and thus enable its modular reasoning. We evaluate the utility of Ptolemy-X's exception flow reasoning by applying it to understand a set of aspect-oriented (AO) bug patterns. We also present Ptolemy-X's semantics including its sound static semantics.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-03-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121138714","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}
{"title":"ENdoSnipe: an industrial application of AOP for diagnosing Java systems","authors":"Yu Ochiai","doi":"10.1145/2457392.2457400","DOIUrl":"https://doi.org/10.1145/2457392.2457400","url":null,"abstract":"In this session, we introduce an application of Javassist technology for commercial purposes. The Java troubleshooting tool \"ENdoSnipe\", developed by Acroquest Technology, realizes noninvasive diagnosis looking into the internal behavior of the applied Java system without any change of the source code. ENdoSnipe can obtain the detailed information of every targeted method such as the processing time, the method's starting time, arguments and so on.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"32 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-03-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131786582","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}
{"title":"Specification and verification of event detectors and responses","authors":"Cynthia Disenfeld, Shmuel Katz","doi":"10.1145/2451436.2451452","DOIUrl":"https://doi.org/10.1145/2451436.2451452","url":null,"abstract":"Events and aspects that respond to them can and should be defined, specified, and verified in a modular way, as an aid in understanding and guaranteeing the correctness of each on its own. However, finding the appropriate interfaces and abstractions and expressing them precisely is not an easy task. Moreover, formally verifying large models is often unfeasible for existing model-checking tools.\u0000 We present an abstraction refinement scheme to verify aspects and to define and correct both aspect and event specifications. This allows considering smaller models and learning the needed event guarantees at each step. In addition, this technique can be used to find sound abstractions to check event reachability. Moreover, the technique is applied for detecting interference in systems where there are responses to complex events and aspects may be activated within the execution of other aspects.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-03-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121901401","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}