From stap
Jump to: navigation, search
  • Motivation
Programmers spend a significant amount of their time debugging programs in order to reduce the number of delivered faults in software releases. Among the tasks required to reduce the number of delivered faults, locating the errors is the most difficult component of the debugging process. In modern software development, coding and testing are interleaved activities to ensure code quality. When new program functionality is implemented, or an existing program is modified, the updated software version needs to be regress tested to validate these changes. In this phase, any test case which produces unexpected result may indicate potential defects in the updated software. When attempting to fix an exhibited bug, programmers usually: (1) identify statements involved in failed tests, (2) narrow the search by selecting suspicious changes which might contain faults, (3) hypothesize about the suspicious faults, and (4) restore the program variables to a specific state. However, the search of suspicious changes is an arduous, highly involved and manual process. This phase can be quite time-consuming.
Aspect-oriented programming (AOP) has been proposed as a technique for improving separation of concerns in software design and implementation. it is gaining popularity with the wider adoption of languages such as AspectJ. AspectJ is a seamless extension of java. An AspectJ program can be divided into two parts: base code which includes classes, interfaces, and other language constructs as in java, and aspect code which includes aspects for modelling crosscutting concerns in the program. However, when locating failure-inducing changes in aspect-oriented software evolution, it involves more complex situations than in the traditional programming languages.
AutoFlow is a project that aims at developing techniques and tools to support automatic debugging of aspect-oriented programs.


Personal tools