A software system maintenance represents an important part of software system's lifetime. The most common reasons to change a software system are bug fixes and adding of a new functionality. Software maintenance i...
详细信息
A software system maintenance represents an important part of software system's lifetime. The most common reasons to change a software system are bug fixes and adding of a new functionality. Software maintenance itself is a difficult and complex process. Before applying a change, it is important to understand the software system's source code as well as the application domain. This paper presents our innovative approach to improve software system comprehension in order to simplify its maintenance. Instead of analyzing all the program code, our approach focuses on parts which are built using predefined well known software libraries. The knowledge of both the libraries and the way they are used in software systems allows us to identify certain concepts of the software system. This information is used to create metamodels of these concepts. The metamodel is created at a higher level of abstraction than the level of concept implementation.
aspect-oriented programming yields new types of programming faults due to the introduction of new constructs for dealing with crosscutting concerns. To reveal aspect faults, this paper presents a framework for testing...
详细信息
aspect-oriented programming yields new types of programming faults due to the introduction of new constructs for dealing with crosscutting concerns. To reveal aspect faults, this paper presents a framework for testing whether or not aspect-oriented programs conform to their state models. It supports two families of strategies (i.e. structure-oriented and property-oriented) for automated generation of aspect tests from aspect-oriented state models. A structure-oriented testing strategy derives tests and test code from an aspect-oriented state model to meet a given structural coverage criterion, such as state coverage, transition coverage, or round trip. A property-oriented testing strategy generates test code from the counterexamples of model checking. Two such strategies are checking an aspect-oriented state model against trap properties and checking mutants of aspect models against system properties. Mutation analysis of aspect-oriented programs is used to evaluate the effectiveness of these testing strategies. The experiments demonstrate that testing aspect-oriented programs against their state models can detect many aspect faults. The comparative evaluations also reveal that the structure-oriented and property-oriented testing strategies complement each othersome aspect faults were detected by the structure-oriented strategies, but not by the property-oriented strategies and vice versa. Copyright (c) 2010 John Wiley & Sons, Ltd.
A component-based decomposition can result in implementations having use cases code tangled with other concerns and scattered across components. Modularity mechanisms such as aspects, mixins, and virtual classes have ...
详细信息
A component-based decomposition can result in implementations having use cases code tangled with other concerns and scattered across components. Modularity mechanisms such as aspects, mixins, and virtual classes have been proposed to address this kind of problem. One can use such mechanisms to group together code related to a single use case. This paper quantitatively analyzes the impact of this kind of use case modularization. We apply one specific technique, aspectorientedprogramming, to modularize the use case implementations of two information systems that conform to the layered architecture pattern. We extract traditional and contemporary metrics - including cohesion, coupling, and separation of concerns - to analyze modularity in terms of quality attributes such as changeability, support for independent development, and pluggability. Our findings indicate that the results of a given modularity analysis depend on other factors beyond the chosen system, metrics, and the applied modularity technique. (C) 2011 Elsevier Inc. All rights reserved.
Bytecode instrumentation is a key technique for the implementation of dynamic program analysis tools such as profilers and debuggers. Traditionally, bytecode instrumentation has been supported by low-level bytecode en...
详细信息
ISBN:
(纸本)9783642305610
Bytecode instrumentation is a key technique for the implementation of dynamic program analysis tools such as profilers and debuggers. Traditionally, bytecode instrumentation has been supported by low-level bytecode engineering libraries that are difficult to use. Recently, the domain-specific aspect language DiSL has been proposed to provide high-level abstractions for the rapid development of efficient bytecode instrumentations. While DiSL supports user-defined expressions that are evaluated at weave-time, the DiSL programming model requires these expressions to be implemented in separate classes, thus increasing code size and impairing code readability and maintenance. In addition, the DiSL weaver may produce a significant amount of dead code, which may impair some optimizations performed by the runtime. In this paper we introduce Turbo, a novel partial evaluator for DiSL, which processes the generated instrumentation code, performs constant propagation, conditional reduction, and pattern-based code simplification, and executes pure methods at weave-time. With Turbo, it is often unnecessary to wrap expressions for evaluation at weave-time in separate classes, thus simplifying the programming model. We present Turbo's partial evaluation algorithm and illustrate its benefits with several case studies. We evaluate the impact of Turbo on weave-time performance and on runtime performance of the instrumented application.
This paper presents the methodology for performance analysis of real-time embedded systems specified on system level. We developed aspect-oriented extensions to the SystemC environment, that enable to include profilin...
详细信息
ISBN:
(纸本)9783902823144
This paper presents the methodology for performance analysis of real-time embedded systems specified on system level. We developed aspect-oriented extensions to the SystemC environment, that enable to include profiling code, as well as code modeling execution time, into the system specification. First, the specification woven with profile aspects is simulated in target environment and information about execution times is saved in a file. Next, the same specification is woven with simulation aspects, that use the information gained in previous step to simulate execution times. In this way accurate timed model of the system is obtained automatically.
We present the Interaspect instrumentation framework for GCC, a widely used compiler infrastructure. The addition of plug-in support in the latest release of GCC makes it an attractive platform for runtime instrumenta...
详细信息
We present the Interaspect instrumentation framework for GCC, a widely used compiler infrastructure. The addition of plug-in support in the latest release of GCC makes it an attractive platform for runtime instrumentation, as GCC plug-ins can directly add instrumentation by transforming the compiler's intermediate representation. Such transformations, however, require expert knowledge of GCC internals. Interaspect addresses this situation by allowing instrumentation plug-ins to be developed using the familiar vocabulary of aspect-oriented programming: pointcuts, join points, and advice functions. Moreover, Interaspect uses specific information about each join point in a pointcut, possibly including results of static analysis, to support powerful customized instrumentation. We describe the Interaspect API and present several examples that illustrate its practical utility as a runtime-verification platform. We also introduce a tracecut system that uses Interaspect to construct program monitors that are formally specified as regular expressions.
Runtime monitoring is a technique usable in all phases of the software development cycle, from initial testing, to debugging, to actually maintaining proper function in production code. Of particular importance are pa...
详细信息
ISBN:
(纸本)9781467310673
Runtime monitoring is a technique usable in all phases of the software development cycle, from initial testing, to debugging, to actually maintaining proper function in production code. Of particular importance are parametric monitoring systems, which allow the specification of properties that relate objects in a program, rather than only global properties. In the past decade, a number of parametric runtime monitoring systems have been developed. Here we give a demonstration of our system, JavaMOP. It is the only parametric monitoring system that allows multiple differing logical formalisms. It is also the most efficient in terms of runtime overhead, and very competitive with respect to memory usage.
aspect-oriented approaches have resulted in a great impact on the processing of system properties during the development of software systems. However, a systematic way for eliciting early aspects from requirements is ...
详细信息
ISBN:
(纸本)9780769549224
aspect-oriented approaches have resulted in a great impact on the processing of system properties during the development of software systems. However, a systematic way for eliciting early aspects from requirements is still underdeveloped to better integrate early aspects with the analysis results. As an attempt towards the investigation of the interactions among goals, scenarios, and early aspects, we proposed, in this work, a goal-driven approach to the discovery of early aspects by means of a bidding process that organizes goals into goal clusters for discovering aspectual candidates by exploring the interactions among goals and use cases. By introducing early aspects, the goal-driven approach can be further enhanced to deal with the crosscutting properties in the analysis stage of software development. The proposed approach is illustrated using the problem domains of meeting scheduler system.
This paper presents component-based and aspectoriented methodology and tool for designing and developing Real-Time Embedded Control Systems (RTECS). This methodology defines a component model for describing modular an...
详细信息
ISBN:
(纸本)9783981080186
This paper presents component-based and aspectoriented methodology and tool for designing and developing Real-Time Embedded Control Systems (RTECS). This methodology defines a component model for describing modular and reusable software to cope with the increasing complexity of embedded systems. It proposes an aspect-oriented approach to address explicitly the extra-functional concerns of RTECS, to describe separately transversal real time and security constraints, and to support model properties analysis. The benefits of this methodology are shown via an example of Legway control software, a version of the Segway vehicle built with Lego Mindstorms NXT.
暂无评论