21
IWPSE 2003 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University Program Slicing Tool for Effective Software Evolution Using Aspect- Oriented Technique Takashi Ishio Shinji Kusumoto Katsuro Inoue Osaka University {t-isio, kusumoto, inoue}@ist.osaka-u. ac.jp

Program Slicing Tool for Effective Software Evolution Using Aspect-Oriented Technique

  • Upload
    jafari

  • View
    31

  • Download
    2

Embed Size (px)

DESCRIPTION

Program Slicing Tool for Effective Software Evolution Using Aspect-Oriented Technique. Takashi Ishio Shinji Kusumoto Katsuro Inoue Osaka University. {t-isio, kusumoto, inoue}@ist.osaka-u.ac.jp. Background. - PowerPoint PPT Presentation

Citation preview

Page 1: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Program Slicing Tool for Effective Software Evolution

Using Aspect-Oriented Technique

Takashi IshioShinji Kusumoto

Katsuro InoueOsaka University

{t-isio, kusumoto, inoue}@ist.osaka-u.ac.jp

Page 2: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Background

In software evolution process, software is modified to adapt for the changes of its specification.When a programmer changes structure and functions of a software, several bugs are usually injected.

Debugging is an important task in software evolution.

Page 3: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Debugging Large Scale Software

Large scale software is difficult to debug.Especially, fault localization needs much cost since the location where a program crushed is not always close to the fault.

Executed codes for one test case are usually small pieces of the program.

Excluding automatically unrelated codes is effective for fault localization.

Page 4: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Program Slicing

Program Slicing extracts a slice of codes, which affects value of a specific variable.

Program Slicing excludes unrelated codes to aid fault localization.

a slice based on slice criteria ( 6, b )

1: a = 5;

2: b = a + a;

3: if (b > 0) {

4: c = a;

5: }

6: d = b;

1: a = 5;

2: b = a + a;

3: if (b > 0) {

4: c = a;

5: }

6: d = b;

Page 5: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Slice Calculation ProcessPhase 1: Extraction of dependence relations

Data Dependence Relation: assignment reference

Control Dependence Relation:conditional statement controlled block

Phase 2: Construction of Program Dependence Graph

node: a statement.edge: a dependence relation

Phase 3: Traversal of PDGtraversal backward from a nodecorresponding a slice criteria

1: a = 1;2: c = 4;3: b = a;

1: a = 1;2: c = 4;3: b = a;

a

Data Dependence

4: if (a < 1) {5: b = a;6: }

4: if (a < 1) {5: b = a;6: }

Control Dependence

Program DependenceGraph

slice criteria

Page 6: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Dependence-Cache (DC) slicing using dynamic information

In slice calculation process, information about the statements actually executed is effective to decrease the slice size.

Dynamic information excludes unexecuted codes from a slice.

Dependence-Cache (DC) slicing method uses:Dynamic Data Dependence Analysis

Static Control Dependence Analysis

DC slicing calculates an accurate slice with lightweight costs.

Page 7: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Implementation of dynamic analysis

Dynamic analysis, collecting dynamic information during program execution, is a kind of logging (or tracing).Java Virtual Machine (JVM) Customization †

+ JVM can access all information of the runtime environment.- Customization depends on a specific JVM implementation.- Byte code optimization may affect analysis results.

Java Debugger Interface (JDI)+ JDI can access local variables, stack traces, ...- High runtime cost

Threads of control are blocked for each logging point.

Although various ways exist in implementing the dynamic analysis, each one requires a high cost in implementation or in runtime.

† F. Umemori et al.: “Design and Implementation of Bytecode-based Java Slicing System”, SCAM 2003 (to appear)

Page 8: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Aspect-Oriented ProgrammingA key feature of Aspect-Oriented Programming is separation of crosscutting concerns.

AOP introduces a new module unit named aspect.

In OOP, programmers cannot encapsulate crosscutting concerns:

logging, error handling, some design patternsProgrammers distribute many call statements into related classes for object interaction.

It is hard to manage the distributed codes.

In AOP, programmers write a crosscutting concern in an aspect.

An aspect has information when the aspect is executed.Call statements are needless.

When a concern is changed, programmers modify one aspect instead of related classes.

AOP improves modularity, maintainability and reusability.

Page 9: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Example of Aspect

Logging: “Logs a method name for each method execution.”

In OOP, logging codes are distributed in all classes. If logging specification is changed, programmers may modify all classes.

In AOP, logging codes are encapsulated in the Logging Aspect. It is easy to maintain and reuse.

Class C

Class B

Class A

Logging Class Logging Aspect

Class C

Class B

Class Alogger.logs(value); when a method is executed,logger.logs(value) is called.

Page 10: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

AspectJ, an AOP extension for Java

AspectJ: an AOP extension for JavaAn aspect is defined as a set of advices.

An advice consists of a procedure and pointcut designators (PCDs).

PCDs describe when the procedure is executed.

AspectJ compiler:aspects + Java class source Java bytecode

Page 11: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Features of AspectJ

AspectJ provides the following PCDs:Method Call and ExecutionField Assignment and ReferenceException Handling

An advice body is written in plain Java code.An advice can access context information through thisJoinPoint object.Context information is:

Which method is actually executed ?What type of object is accessed ?

Page 12: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

How to implement logging in AspectJ:

aspect LoggingAspect {

pointcut allMethods():

execution(* *(..)) && !within(java.io.*);

before(): allMethods(){

Logger.println(thisJoinPoint.getSignature());

}

}

Example of AspectJ

keyword for Aspect definition

When the advice is executed.

Pointcut is defined by PCDs.Pointcut represents events during program execution.

In the advice body, programmers can access context information via thisJoinPoint object.

It is needless to change logging target classes.

Page 13: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Dynamic Analysis Aspect

We implement dynamic analysis using AspectJ.

Dynamic analysis aspectrecords a position of the assignment statement when a new value is assigned to a field,

extracts a dynamic data dependence relation when the field is referred,

collects method-call information for each thread (multi-threading),

collects information when an exception is thrown and which handling clause caught the exception (exception-handling).

Page 14: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Advantages of Aspect ApproachAdvantages

Modularization of dynamic analysisIndependent of a specific JVM implementationIndependent of a byte-code optimizer ( JIT compiler )

Lightweight Analysisfor large scale software.No local variables are dynamically analyzed.

Local variables affects dependencies in one method.Little difference comes from dynamic information of local variables.

No library classes are analyzed.We assume that library classes are reliable.

less overhead: The aspect is linked to target program at compile time.

Page 15: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Aspect-based Dynamic Analysis and Slice Calculation System: ADAS

Debugging Support Tool using Program Slicing for Java

Dynamic Analysis Aspect (written in AspectJ)Simple logging-like Implementation

size: about 1000 LOC

Program Slicing System (written in Java)Program Slicing is an application using dynamic information.

The prototype is implemented as Eclipse plug-in.

Page 16: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Architecture and Use Case of ADAS

Java SourceDynamicAnalysisAspect

JavaBytecode

Java VMAspectJ DynamicInfo.

Slice Calculation Tool

program slice

StaticInfo.

slicecriteria

3.executea test case

1.edit

4.slice calculation

StaticAnalyzer

2.compile

Page 17: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Demonstration

Slice calculation button

Slice criterion selection

Slice results indicated

Page 18: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Evaluation: size of a sliceCompare with customized JVM implementation †

JVM approach: Precise DC SliceOur apparoch: omitting analysis for local variables.

Target programsP1: A simple database (4 classes, 262 LOC)P2: A sorting program (5 classes, 228 LOC)P3: A slice calculation program (125 classes, about 16000 LOC)

Our approach calculates a slice includingsome redundant codeJVM can extract a preciseslice using fine-grained information.

Aspect JVM Aspect/JVM

P1 36 29 1.24

P2 50 28 1.70

P3 839 708 1.19

size of a slice (LOC)

† F. Umemori et al.: “Design and Implementation of Bytecode-based Java Slicing System”, SCAM 2003 (to appear)

Page 19: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Evaluation: analysis cost

Our approach shows good performance.Our approach is a coarse-grained, lightweight analysis.

JVM approach is hard to apply a large scale software.

Normal Execution

Aspect

Approach

JVM

Approach

Aspect/Normal JVM/Normal

P1 0.18 0.26 1.8 1.4 10.0

P2 0.19 0.39 2.8 2.1 14.7

P3 1.2 10.3 81.0 8.6 67.5

Running Time [seconds] ratio

Page 20: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Evaluation: Cost of Implementation

Aspect approach:Our module consists of the dynamic analysis aspect and data management classes.The total size is 1000 LOC.

JVM approach:System consists of customized JVM and Java compiler.

Customized compiler insert source code information into bytecode files.

Size of additional code for the customization is about 50,000 LOC.

Source code of the original JVM and compiler is 300,000 LOC.

Programmers must re-customize the JVM whenever new version of JVM is released.

Aspect approach is inexpensive.

Page 21: Program Slicing Tool for  Effective Software Evolution Using Aspect-Oriented Technique

IWPSE 2003Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Remark and Future Work

Debugging is an important task for software evolution.

Program slicing shows related code to a user.

Dynamic information exclude unexecuted code.

Dynamic Analysis Aspect issimple implementation,

easy to maintain, customize.

Future WorkExtension of ADAS to calculate AspectJ slice,

Improvement of Usability.