Aspect-Based Introspection and Change Analysis for Evolving Programs
نویسندگان
چکیده
As new versions of software are developed bugs inevitably arise either due to regression or new functionality. Challenges arise in discovering, managing, and testing the impact of changes on software. These challenges are magnified in software systems that evolve, because the new functionality is piece-wise introduced into a live program with prior state produced by the prior component versions. If new functionality introduced into a live system induces bugs, it can be extremely difficult to analyze at run-time exactly which differences led to the incorrect behavior. In order to help programmers plan for evolution, understand the impact of specific evolutionary steps, and to diagnose evolution gone wrong, herein we propose combining the benefits of Aspect-Oriented Programming and reflection with impact analysis techniques from the OO and software engineering disciplines. We contribute a tool that assists with the deployment of new code to evolving software that gives insight as to precisely the behavioral changes between the new code and the code it is replacing within the running system. This tool is implemented using pure aspect-oriented and reflection techniques, and we discuss how to combine this tool with a load-time aspect weaver to allow precise determination of the cause of bugs introduced in live, evolving systems. We conclude by considering the challenges of implementing and deploying such a tool and outline our plans for future research and evaluation.
منابع مشابه
AspectD: Enhancing a Standard Debugger with Aspects
Aspect-oriented techniques have gained some favor in program tracing, profiling, and debugging. Yet, taking advantage of AOP typically requires giving up the traditional benefits of using a debugger, such as interactive exploratory introspection and remote execution. However, the APIs debuggers present to their scripting languages are not designed for aspect weaving, creating technical challeng...
متن کاملAutoepistemic Logics of Closed Beliefs and Logic Programming
Moore's autoepistemic logic AEL proved to be a very successful approach to formalizing non-monotonic reasoning and logic programming. However, AEL also has some important drawbacks, e.g., quite \reasonable" theories are often inconsistent in AEL, it does not always lead to the expected, intended semantics and it cannot be eeectively computed even for very simple classes of theories. In this pap...
متن کاملPotentials of Evolving Linear Models in Tracking Control Design for Nonlinear Variable Structure Systems
Evolving models have found applications in many real world systems. In this paper, potentials of the Evolving Linear Models (ELMs) in tracking control design for nonlinear variable structure systems are introduced. At first, an ELM is introduced as a dynamic single input, single output (SISO) linear model whose parameters as well as dynamic orders of input and output signals can change through ...
متن کاملSplice: Aspects That Analyze Programs
This paper describes Splice, a system for writing aspects that perform static program analyses to direct program modifications. The power of an inter-procedural data-flow analysis enables an aspect to examine the flow of data around a program execution point when it determines what code to add or change at that point. For example, an aspect can change the target set of an iteration based on how...
متن کاملDisjunctive Logic Programming and Possible Model Semantics
We use Kripke structures of autoepistemic logic to classify various semantics for disjunctive logic programs with default negation. We have observed that nonmonotonic reasoning can be characterized by Kripke structures whose beliefs are justiied. We also observed that two diierent types of negative introspection in autoepistemic reasoning present two diierent interpretations of default negation...
متن کامل