{"title":"Modularity, agility, and architecture's paradox","authors":"K. Knoernschild","doi":"10.1145/1960314.1960319","DOIUrl":"https://doi.org/10.1145/1960314.1960319","url":null,"abstract":"Attempts to architect more flexible software often results in the opposite - brittle software fraught with complexity. Something is missing. Complexity is the beast we must tame, and modularity is part of the answer. In this keynote, we'll examine the challenges of traditional approaches to software architecture, probe the paradox of architecture, and explore the inextricable link between structural and temporal architectural decisions. From the highest level applications and services to the code that exists in the bowels of the system, we expose the advantages of a modular architecture. Come learn new ways that large software systems can be organized to increase flexibility, reusability, adaptability, maintainability, testability, and extensibility. Come discover the importance of modularity!","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"164 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114369471","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":"Experiences documenting and preserving software constraints using aspects","authors":"R. S. Filho, François Bronsard, W. Hasling","doi":"10.1145/1960314.1960321","DOIUrl":"https://doi.org/10.1145/1960314.1960321","url":null,"abstract":"Software systems are increasingly being built as compositions of reusable artifacts (components, frameworks, toolkits, plug-ins, APIs, etc) that have non-trivial usage constraints in the form of interface contracts, underlying assumptions and design composition rules. Satisfying these constraints is challenging: they are often not well documented; or they are difficult to integrate into the software development process in ways that allow their identification by developers; or they may not be enforced by existing tools and development environments. Aspect-Oriented Programming has been advocated as an approach to represent and enforce software constraints in code artifacts. Aspects can be used to detect constraint violations, or more pro-actively, to ensure that the constraints are satisfied without requiring the developer's attention. This paper discusses our experience using aspects to document and enforce software constraints in an industrial application, specifically TDE/UML, a model-driven software testing tool developed at SIEMENS. We present an analysis of common constraints found in our case study, a set of primitive aspects developed to help the enforcement of software constraints, and show how AOP has been incorporated into existing software development and governance approaches in the TDE/UML project. We conclude with a discussion of strengths and limitations of AspectJ in supporting these constraints.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129625418","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":"ASystemC: an AOP extension for hardware description language","authors":"Yusuke Endoh","doi":"10.1145/1960314.1960322","DOIUrl":"https://doi.org/10.1145/1960314.1960322","url":null,"abstract":"Hardware-design requirements are becoming increasingly complex. Accordingly, the hardware developer is also beginning to use modern programming languages instead of traditional hardware description languages. However, modularity of the current hardware design has not changed from that of the traditional design. In this paper, we first conducted empirical investigation by interviews with real-world developers of circuit products, and confirmed that there exist cross-cutting concerns in actual products. The cross-cutting concerns fall into two types: one in common with software development and one specific to hardware design. In light of these results, this paper proposes ASystemC, an AOP extension for the hardware description language SystemC. ASystemC provides AOP features based on the AspectJ-like pointcut-advice mechanism. The design principle of ASystemC is practicality; we designed ASystemC to accept existing SystemC source code, and to weave aspects by using source-to-source conversion that outputs human-readable SystemC code. This design allows a user to utilize not only existing codes but also the existing knowledge and development process, as much as possible. As a result, ASystemC does not require modification of the existing source code review process and source analysis/manipulation tools, even if there is a developer unfamiliar with ASystemC in a development team. In addition, we confirmed the practicality and fiexibility of ASystemC through case studies: estimation of circuit size by using simulation, feature-configurable products and LTL verification. These cases are abstracted from actual problems in our products. They require not only code-level changes but also structural changes.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114501538","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}
Pilsung Kang, E. Tilevich, S. Varadarajan, Naren Ramakrishnan
{"title":"Maintainable and reusable scientific software adaptation: democratizing scientific software adaptation","authors":"Pilsung Kang, E. Tilevich, S. Varadarajan, Naren Ramakrishnan","doi":"10.1145/1960275.1960296","DOIUrl":"https://doi.org/10.1145/1960275.1960296","url":null,"abstract":"Scientific software must be adapted for different execution environments, problem sets, and available resources to ensure its efficiency and reliability. Although adaptation patterns can be found in a sizable percentage of recent scientific applications, the traditional scientific software stack lacks the adequate adaptation abstractions and tools. As a result, scientific programmers manually implement ad-hoc solutions that are hard to maintain and reuse. In this paper, we present a novel approach to adapting scientific software written in Fortran. Our approach leverages the binary object code compatibility between stack-based imperative programming languages. This compatibility makes it possible to apply a C++ Aspect-Oriented Programming (AOP) extension to Fortran programs. Our approach expresses the adaptive functionality as abstract aspects that implement known adaptation patterns and can be reused across multiple scientific applications. Application-specific code is systematically expressed through inheritance. The resulting adaptive functionality can be maintained by any programmer familiar with AOP, which has become a staple of modern software development. We validated the expressive power of our approach by refactoring the hand-coded adaptive functionality of a real-world computational fluid dynamics application suite. The refactored code expresses the adaptive functionality in 27% fewer ULOC on average by removing duplication and leveraging aspect inheritance.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"41 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127708134","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":"Flexible, dynamic injection of structured advice using byteman","authors":"Andrew Dinn","doi":"10.1145/1960314.1960325","DOIUrl":"https://doi.org/10.1145/1960314.1960325","url":null,"abstract":"Byteman is a flexible, dynamic advice injection tool for Java. It uses an Event Condition Action rule script language to structure placement and control execution of injected Java code fragments. The Byteman agent can be loaded at application startup or into a running application and rules can be loaded, unloaded and reloaded while the application continues running.\u0000 This makes Byteman ideal for use in live deployments, simplifying tracing and diagnosis of bugs and investigation and monitoring of performance issues. Byteman is also very useful during all stages of testing. Tests can inject rules into an application or subsystem during test initialisation or as the test progresses, redirecting or breaking the application code at strategic points and validating application behaviour. This limits the need to write harness or mock code, and minimises the extent to which the test distorts normal execution, ensuring that test conditions are as close to live running as possible.\u0000 Byteman is being used widely within JBoss to perform unit, integration and system testing. Our customer support team use it to perform tracing, debugging and validation of JVM, JBoss and customer code, both inhouse and in live deployments. We are currently developing an extensible, reconfigurable statistical performance monitoring package for JBoss AS based on Byteman. We expect this to be easily extended by JBoss AS customers to enable monitoring of their own applications.\u0000 This paper employs real examples of these use cases to demonstrate how Byteman works. It shows how Byteman makes advice injection simpler, quicker and more interactive than alternative tools without sacrificing power or rigour.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130900834","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":"Proteum/AJ: a mutation system for AspectJ programs","authors":"F. Ferrari, E. Nakagawa, J. Maldonado, A. Rashid","doi":"10.1145/1960314.1960340","DOIUrl":"https://doi.org/10.1145/1960314.1960340","url":null,"abstract":"Aspect-Oriented Programming (AOP) has introduced a complementary set of mechanisms which enhance the modularisation of crosscutting concerns. However, such mechanisms represent new potential sources of faults that may be systematically tackled with mutation testing. In this demonstration we present a tool, named Proteum/AJ, which automates the mutation testing of AspectJ programs. Proteum/AJ supports the main steps of this testing approach and realises a set of requirements for mutation-based testing tools like mutant handling, test case handling and mutant analysis. Our experience in using the tool provided us with evidence on the feasibility of performing mutation testing of AO programs. In this demonstration we are going to share some of this experience with the audience.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"88 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132997215","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":"Rulemakers and toolmakers: adaptive object-models as an agile division of labor","authors":"J. Yoder","doi":"10.1145/1960314.1960330","DOIUrl":"https://doi.org/10.1145/1960314.1960330","url":null,"abstract":"Agile practices liberate us from the straightjackets of top-down design. But, the ease with which requirements can change encou-rages users to overwhelm us with requests for features. The result: Featuritis, which promotes hasty construction of poorly designed software to support those features. The design of an expressive domain model might get lost in the rush to write working code. Adaptive Object-Models support changeable domain modules by casting business rules as interpreted data and representing objects, properties and relationships in external declarations. Now users can change the system domain models themselves as their busi-ness dictates without having to deal with programmers at all. It's the ultimate in agility!","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"56 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134310638","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}
Leandra Mara, Gustavo Honorato, F. Dantas, Alessandro F. Garcia, C. Lucena
{"title":"Hist-Inspect: a tool for history-sensitive detection of code smells","authors":"Leandra Mara, Gustavo Honorato, F. Dantas, Alessandro F. Garcia, C. Lucena","doi":"10.1145/1960314.1960335","DOIUrl":"https://doi.org/10.1145/1960314.1960335","url":null,"abstract":"Hist-Inspect is a tool that allows the specification and evaluation of different configurations for detection strategies by means of a domain-specific language. The tool enables to easily adjust thresholds and combination of software metrics as well as compare the performance of conventional and history-sensitive detection strategies. The tool also provides a diverse set of views, including graphical representation of module evolution measures. These views enable the code reviewer to reason about the stability of individual modules, the growth or decline of a particular structural property (e.g. coupling or cohesion), without the burden of recovering all the values for each version under analysis.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129691831","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}
Elder Cirilo, U. Kulesza, Alessandro F. Garcia, C. Lucena
{"title":"GenArch+: an extensible infrastructure for building framework-based software product lines","authors":"Elder Cirilo, U. Kulesza, Alessandro F. Garcia, C. Lucena","doi":"10.1145/1960314.1960338","DOIUrl":"https://doi.org/10.1145/1960314.1960338","url":null,"abstract":"Software product line (SPL) engineering has been focused on tailor single products without programming new completion code. Systematic reuse as configuration potentially lead to significant gains but requires the configuration knowledge to be well conducted. However, due to the use of frameworks to relive the development of software systems, it might become difficult to have precise and comprehensible configuration knowledge specifications. First, because the completion code of a specific framework-provided concept might be scattered across and tangled with code implementing other concepts or features. Second, creating an instance of a framework-provided abstraction involves making implementation choices, some of which are stipulated by hidden programming interface and crosscut heterogeneous languages. In this demonstration we present a tool based on Domain Knowledge Modeling Languages. They are used to express models specifying the configuration knowledge of a specific implementation domain and, ensure the consistency and ease the comprehension of framework-based SPL.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"44 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133612703","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":"Modules: dreams and reality","authors":"Gilad Bracha","doi":"10.1145/1960275.1960310","DOIUrl":"https://doi.org/10.1145/1960275.1960310","url":null,"abstract":"Interfaces are key to defining modularity. A working definition of module is an entity that can be changed freely as long as its interface is preserved. What then is a good notion of interface? In this talk, we'll argue for a notion of modules and interfaces that is ultimately inspired by physical reality, and contrast it with the dreams embodied in the concepts of aspect orientation. Our notions have been realized in the Newspeak language, but the concepts apply to a variety of languages.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123273126","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}