CFP last date
20 May 2024
Reseach Article

Article:Program Slicing for Refactoring: Static Slicer using Dynamic Analyser

by Amogh Katti, Sujatha Terdal
International Journal of Computer Applications
Foundation of Computer Science (FCS), NY, USA
Volume 9 - Number 6
Year of Publication: 2010
Authors: Amogh Katti, Sujatha Terdal
10.5120/1387-1869

Amogh Katti, Sujatha Terdal . Article:Program Slicing for Refactoring: Static Slicer using Dynamic Analyser. International Journal of Computer Applications. 9, 6 ( November 2010), 36-43. DOI=10.5120/1387-1869

@article{ 10.5120/1387-1869,
author = { Amogh Katti, Sujatha Terdal },
title = { Article:Program Slicing for Refactoring: Static Slicer using Dynamic Analyser },
journal = { International Journal of Computer Applications },
issue_date = { November 2010 },
volume = { 9 },
number = { 6 },
month = { November },
year = { 2010 },
issn = { 0975-8887 },
pages = { 36-43 },
numpages = {9},
url = { https://ijcaonline.org/archives/volume9/number6/1387-1869/ },
doi = { 10.5120/1387-1869 },
publisher = {Foundation of Computer Science (FCS), NY, USA},
address = {New York, USA}
}
%0 Journal Article
%1 2024-02-06T19:57:57.436112+05:30
%A Amogh Katti
%A Sujatha Terdal
%T Article:Program Slicing for Refactoring: Static Slicer using Dynamic Analyser
%J International Journal of Computer Applications
%@ 0975-8887
%V 9
%N 6
%P 36-43
%D 2010
%I Foundation of Computer Science (FCS), NY, USA
Abstract

Refactoring is the process of changing the code of the software such that its internal design is improved without altering its observable behavior. Method Extraction is the process of separating out a subset of method’s statements into another method and replacing their occurrence in the original method with a call to this new method. Method extraction is a classical problem to improve the modularity of the system and is used in extracting methods from long procedural programs. It can also be used in extracting aspects from object oriented code. Thus it makes the software easier to understand, maintain and reusable. In the earlier days of method extraction, programmer selected a random set of statements for extraction which was made more sensible by specifying the variables of interest and separating the statements concerning them into a method. Thus, program slicing became part of method extraction. Many slicing algorithms exist in the literature; they first convert the program into some alternative representation and then apply some correctness preserving transformations on it to produce slice and its complement. This process was identified to be expensive and an algorithm was proposed to act directly on the source code. It statically analyzes the source code to produce the slice but fails to handle dynamic constructs like aliasing and polymorphism effectively. To overcome this limitation we propose a new slicing algorithm that dynamically analyzes source code to produce static slices. It exploits the behavior preservation requirement of refactoring and uses the data collected during testing, which we perform prior to refactoring, for slicing. This algorithm suits better to the refactoring domain.

References
  1. Mark Weiser. Program slicing. IEEE Transactions on Software Engineering, 10(4):352-357, 1984.
  2. Karl J. Ottenstein, Linda M. Ottenstein. The program dependence graph in a software development environment. Software Development Environments (SDE), pages 177-184, 1984.
  3. Filippo Lanubile, Giuseppe Visaggio. Extracting Reusable Functions by Flow Graph-Based Program Slicing. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 23, NO. 4, APRIL 1997.
  4. Raghavan Komondoor, Susan Horwitz. Semantics-Preserving Procedure Extraction. In Proc. of 27th ACM Symp. on Principles of Programming Languages (POPL), (Boston, Massachusetts, January 2000).
  5. Arun Lakhotia, Jean-Christophe Deprez. Restructuring programs by tucking statements into functions. Information & Software Technology 40(11-12): 677-689 (1998).
  6. Mathieu Verbaere. Program Slicing for Refactoring. Master’s thesis, 2003.
  7. Ran Ettinger. Refactoring via Program Slicing and Sliding. Ph D thesis 2006.
  8. M. Fowler. Refactoring: Improving the Design of Existing Programs. Addison-Wesley, 1999.
  9. A. Cain, J.-G. Schneider, D. Grant, and T. Y. Chen. Runtime data analysis for Java programs. In Proceedings of ECOOP 2003 Workshop on Advancing the State-of-the-Art in Runtime Inspection (ASARTI 2003), July 2003.
  10. Andre Restivo. The Case for Aspect Oriented Programming. in Proceedings of the 1st Conference on Methodologies for Scientific Research (CoMIC'06), p.84-92, 2006.
  11. G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. V. Lopes, J. Loingtier and J. Irwin. Aspect Oriented Programming. Proceedings of the 11th annual European Conference for Object-Oriented Programming, vol.1241 of LNCS, pp.220-242(1997).
  12. AspectJ: http://www.eclipse.org/aspectj
  13. Frank Tip. A survey of program slicing techniques. Journal of programming languages, 3:121-189, 1995.
  14. MIGUEL JORGE TAVARES PESSOA MONTEIRO. Refactorings to Evolve Object-Oriented Systems with Aspect-Oriented Concepts. Ph D thesis, 2005.
  15. Ian Sommerville. Software Engineering, Pearson Education, 2004.
  16. Takashi Ishio, Shinji Kusumoto, Katsuro Inoue. Program Slicing Tool for Effective Software Evolution Using Aspect-Oriented Technique. IWPSE 2003: 3-12
Index Terms

Computer Science
Information Sciences

Keywords

Program Slicing for Refactoring Static Slicer using Dynamic Analyser