140 likes | 329 Views
Towards Locating a Functional Concern Based on a Program Slicing Technique. Takashi Ishio 1 , 2 , Ryusuke Niitani 2 and Katsuro Inoue 2 1 University of British Columbia 2 Osaka University. Abstract. Software includes many functional concerns.
E N D
Towards Locating a Functional Concern Based on a Program Slicing Technique Takashi Ishio1,2, Ryusuke Niitani2 and Katsuro Inoue2 1University of British Columbia 2Osaka University AOAsia 2
Abstract • Software includes many functional concerns. • A functional concern is often implemented by collaborative software modules. • To understand a functional concern, you need to … • Identify clue program elements • Find related modules • Understand how the modules collaborate • We propose a heuristic approach to automatically extract and show the modules and their collaboration. costly AOAsia 2
i = 3; • if (a > 0) { • print i; • } definition data dependence control dependence <3,i> use Program Slicing • An automatic technique to extract relevant statements and relations • A program P is converted to a program dependence graph. • vertices: statements in P • edges: control/data dependence relations • You specify a slicing criterion <s,v> in P. • s: a statement • v: a variable defined or used at s • You get statements that affect or depend on v by graph traversal. AOAsia 2
dependence control flow concern (open document) slicing result Issue of Using Program Slicing • Slicing often results too many statements. • main(), crosscutting concerns, … • If you calculate a program slice for , slicing extracts . Main.main(args) App.run() Menu.onClick(buttonID) FileDialog.getPath() Document.open(path) File.read(path) MDI.add(document) Log.debug(message) App.quit() FileDialog.getPath() Document.save(path) File.write(path) AOAsia 2
dependence control flow concern (open document) slicing result barrier Our Method (1/2) • To extract closely related statements, we terminate the graph traversalat the appropriate vertices. • A barrier [1] is a vertex that terminates the traversal. • The original barrier is set manually. Main.main(args) App.run() Menu.onClick(buttonID) FileDialog.getPath() Document.open(path) File.read(path) MDI.add(document) Log.debug(message) App.quit() FileDialog.getPath() Document.save(path) File.write(path) [1] Krinke, J.: Slicing, Chopping, and Path Conditions with Barriers. Software Quality Journal, Vol.12, No.4, pp.339-360,December 2004. AOAsia 2
Our Method (2/2) • Automatically identify appropriate barriers • use heuristics • Extract a small subset of conservative slice • Closely related to criteria Conservative Slicing Our Method dependence specified criterion concern related result barrier automaticallyfound Barriers AOAsia 2
Extracting a Functional Concernwith Slicing • Convert source code to a program dependence graph • Specify one or more methods or fields of interest to you • Inputs are converted to vertices • Extract related statements • Identify primary vertices • Identify barriers with heuristics • Slice using the result of i. and ii. • Visualize the result of 3. AOAsia 2
3.i.Identifying “primary vertices” • The vertices in which a barrier is not set • to avoid terminating important traversals • The vertices in the paths from dominator to post-dominator • dominator: the nearest common ancestor reachable to all specified vertices • post-dominator: the nearest common successor reachable from all specified vertices primary vertices dominator post-dominator Specified vertices = Your inputs AOAsia 2
3.ii.Identifying Barriers with Heuristics • A field access • pass data from one concern to another • A method entry point with no arguments • Its behavior is independent of the caller method. • An abstract method entry point • Its behavior is defined at the interface level. • Library • e.g. classes in java and javax package AOAsia 2
dominator / post-dominator specified criterion barrier added by slicing 3.iii.Slicing • A backward/forward traversal from criteria • The traversal is terminated at barriers. primary vertices slicing result AOAsia 2
Preliminary Case Study • Aim: estimate the effectiveness of our approach • Target Program: Duplicated File Checker • Java / 1331 LOC / 14 files • Overview main() → read arguments → begin file checking → notify → output → (end file checking) • Target Concern: “notify” • Input: 3 methods • notifyProgressValue, notifyErrorFile, notifyFinished AOAsia 2
Results: size • Small subset (less than 1/4 about LOC) Size of slices Heuristic slice: Checker, FileList, FileMD5 and CheckerListener classes (Non-heuristic slice) – (Heuristic slice): Main, MainWindow and classes for GUI Extracted classes AOAsia 2
Result: extracted slice(as a concern graph) • “Notify” concern is extracted appropriately. • No weakly related method (e.g. main()) Extracted slice (as a concern graph) criterion AOAsia 2
Summary and Future Work • We proposed an approach to extract the collaborative modules implementing a functional concern. • We introduced heuristics into slicing. • Future Work • Develop a fully automated analysis tool • Apply various heuristics • e.g. a high fan-in method • Apply to large-scale software AOAsia 2