Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2635868.2635893acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

ORBS: language-independent program slicing

Published: 11 November 2014 Publication History

Abstract

Current slicing techniques cannot handle systems written in multiple programming languages. Observation-Based Slicing (ORBS) is a language-independent slicing technique capable of slicing multi-language systems, including systems which contain (third party) binary components. A potential slice obtained through repeated statement deletion is validated by observing the behaviour of the program: if the slice and original program behave the same under the slicing criterion, the deletion is accepted. The resulting slice is similar to a dynamic slice. We evaluate five variants of ORBS on ten programs of different sizes and languages showing that it is less expensive than similar existing techniques. We also evaluate it on bash and four other systems to demonstrate feasible large-scale operation in which a parallelised ORBS needs up to 82% less time when using four threads. The results show that an ORBS slicer is simple to construct, effective at slicing, and able to handle systems written in multiple languages without specialist analysis tools.

References

[1]
H. Agrawal and J. R. Horgan. Dynamic program slicing. In Proc. of the ACM SIGPLAN’90 Conference on Programming Language Design and Implementation (PLDI), pages 246–256, 1990.
[2]
S. S. Barpanda and D. P. Mohapatra. Dynamic slicing of distributed object-oriented programs. IET software, 5(5):425–433, 2011.
[3]
J. Beck and D. Eichmann. Program and interface slicing for reverse engineering. In Proc. of the 15th International Conference on Software Engineering (ICSE), pages 509–518, 1993.
[4]
Á. Beszédes, C. Faragó, Z. M. Szabó, J. Csirik, and T. Gyimóthy. Union slices for program maintenance. In Proc. of the 18th International Conference on Software Maintenance (ICSM), pages 12–21, 2002.
[5]
A. Beszedes, T. Gergely, and T. Gyimóthy. Graph-less dynamic dependence-based dynamic slicing algorithms. In Sixth IEEE International Workshop on Source Code Analysis and Manipulation (SCAM), pages 21–30, 2006.
[6]
A. Beszedes, T. Gergely, Z. M. Szabó, J. Csirik, and T. Gyimothy. Dynamic slicing method for maintenance of large C programs. In Proc. of the 5th Conference on Software Maintenance and Reengineering, pages 105–113, 2001.
[7]
D. Binkley. The application of program slicing to regression testing. Information and Software Technology, 40(11 and 12):583–594, 1998.
[8]
C. Cifuentes and A. Fraboulet. Intraprocedural static slicing of binary executables. In Proc. of the International Conference on Software Maintenance (ICSM), pages 188–195, 1997.
[9]
A. Cimitile, A. De Lucia, and M. Munro. Identifying reusable functions using specification driven program slicing: a case study. In Proc. of the International Conference on Software Maintenance (ICSM), pages 124–133, 1995.
[10]
H. Cleve and A. Zeller. Finding failure causes through automated testing. In International Workshop on Automated Debugging, pages 254–259, 2000.
[11]
A. De Lucia, A. R. Fasolino, and M. Munro. Understanding function behaviours through program slicing. In 4th International Workshop on Program Comprehension, pages 9–18, 1996.
[12]
R. A. DeMillo, H. Pan, and E. H. Spa fford. Critical slicing for software fault localization. In Proceedings of the 1996 International Symposium on Software Testing and Analysis (ISSTA), pages 121–134, 1996.
[13]
H. Do, S. Elbaum, and G. Rothermel. Supporting controlled experimentation with testing techniques: An infrastructure and its potential impact. Empirical Software Engineering, 10(4):405–435, 2005.
[14]
R. Ettinger and M. Verbaere. Untangling: a slice extraction refactoring. In Proc. of the 3rd International Conference on Aspect-Oriented Software Development (AOSD), pages 93–101, 2004.
[15]
K. B. Gallagher and J. R. Lyle. Using program slicing in software maintenance. IEEE Trans. Softw. Eng., 17(8):751–761, 1991.
[16]
Á. Hajnal and I. Forgács. A demand-driven approach to slicing legacy COBOL systems. Journal of Software: Evolution and Process, 24(1):67–82, 2011.
[17]
R. Hall. Automatic extraction of executable program subsets by simultaneous dynamic program slicing. Automated Software Engineering, 2(1):33–53, 1995.
[18]
R. M. Hierons, M. Harman, C. Fox, L. Ouarbya, and M. Daoudi. Conditioned slicing supports partition testing. Software Testing, Verification and Reliability, 12:23–28, Mar. 2002.
[19]
C. Jones. Software Engineering Best Practices. McGraw-Hill, 2010.
[20]
B. Korel and J. Laski. Dynamic program slicing. Information Processing Letters, 29(3):155–163, 1988.
[21]
B. Korel and J. Laski. Dynamic slicing in computer programs. Journal of Systems and Software, 13(3):187–195, 1990.
[22]
B. Korel and J. Rilling. Dynamic program slicing in understanding of program execution. In Proc. of the 5th International Workshop on Program Comprehension (IWPC), pages 80–89, 1997.
[23]
S. Kusumoto, A. Nishimatsu, K. Nishie, and K. Inoue. Experimental evaluation of program slicing for fault localization. Empirical Software Engineering, 7:49–76, 2002.
[24]
P. Mayer and A. Schroeder. Cross-language code analysis and refactoring. In 12th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM), pages 94–103, 2012.
[25]
P. Mayer and A. Schroeder. Automated multi-language artifact binding and rename refactoring between Java and DSLs used by Java frameworks. In Proc. of the European Conference on Object-Oriented Programming (ECOOP), 2014.
[26]
S. McPeak, D. S. Wilkerson, and S. Goldsmith. Heuristically minimizes interesting files. delta.tigris.org.
[27]
G. Misherghi and Z. Su. HDD: hierarchical delta debugging. In Proc. of the 28th International Conference on Software Engineering (ICSE), pages 142–151, 2006.
[28]
G. Mund and R. Mall. An e fficient interprocedural dynamic slicing method. Journal of Systems and Software, 79(6):791–806, 2006.
[29]
K. Pócza, M. Biczó, and Z. Porkoláb. Cross-language program slicing in the .NET framework. In Proc. of the 3rd .NET Technologies Conference, pages 141–150, Plzen (Czech Republic), 2005.
[30]
J. Regehr, Y. Chen, P. Cuoq, E. Eide, C. Ellison, and X. Yang. Test-case reduction for C compiler bugs. In Proc. of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 335–346, 2012.
[31]
A. Riesco, I. M. Asăvoae, and M. Asăvoae. A generic program slicing technique based on language definitions. In Recent Trends in Algebraic Development Techniques, volume 7841 of Lecture Notes in Computer Science, pages 248–264. Springer, 2013.
[32]
R. Stallman. Using and Porting GNU CC. Free Software Foundation, 1998.
[33]
R. Stallman et al. GNU Coding Standards. Free Software Foundation, 2013.
[34]
K. Subbiah. Tower of Hanoi algorithm source code. www.softwareandfinance.com/Software.html.
[35]
Sun Microsystems. Code Conventions for the Java Programming Language, 1999.
[36]
SWIG version 1.3.40. www.swig.org.
[37]
A. Szegedi and T. Gyimóthy. Dynamic slicing of Java bytecode programs. In Proc. of the 5th IEEE International Workshop on Source Code Analysis and Manipulation (SCAM), pages 35–44, 2005.
[38]
G. Tentler. HTML calendar. www.gerd-tentler.de/tools/.
[39]
P. Tonella. Using a concept lattice of decomposition slices for program understanding and impact analysis. IEEE Trans. Softw. Eng., 29(6):495–509, 2003.
[40]
M. Weiser. Program slicing. In Proceedings of the 5th International Conference on Software Engineering, pages 439–449, 1981.
[41]
M. Weiser. Programmers use slices when debugging. Communications of the ACM, 25(7):446–452, 1982.
[42]
M. Weiser and J. Lyle. Experiments on slicing-based debugging aids. In Empirical Studies of Programmers: First Workshop, pages 187–197, 1985.
[43]
D. A. Wheeler. SLOC count user’s guide. www.dwheeler.com/sloccount/sloccount.html, 2004.
[44]
A. Zeller. Yesterday, my program worked. today, it does not. Why? In European Software Engineering Conference and Foundations of Software Engineering, pages 253–267, 1999.
[45]
A. Zeller and R. Hildebrandt. Simplifying and isolating failure-inducing input. IEEE Transactions on Software Engineering, 28(2):183–200, 2002.
[46]
X. Zhang, N. Gupta, and R. Gupta. A study of e ffectiveness of dynamic slicing in locating real faults. Empirical Software Engineering, 12(2), 2007.
[47]
X. Zhang and R. Gupta. Cost e ffective dynamic program slicing. In Proc. of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation, pages 94–106, 2004.

Cited By

View all
  • (2024)Verification of Programs with Common FragmentsCompanion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering10.1145/3663529.3663783(487-491)Online publication date: 10-Jul-2024
  • (2024)Learning to Detect and Localize Multilingual BugsProceedings of the ACM on Software Engineering10.1145/36608041:FSE(2190-2213)Online publication date: 12-Jul-2024
  • (2024)Decomposition of Deep Neural Networks into Modules via Mutation AnalysisProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680390(1669-1681)Online publication date: 11-Sep-2024
  • Show More Cited By

Recommendations

Reviews

Josep Silva

Binkley et al. introduce a novel dynamic slicing technique called observation-based slicing (ORBS). This new technique has a very interesting property: it is language independent, and thus it is able to slice multi-language systems. The underlying idea is to produce slices through repeated statement deletion. After every deletion, the behavior of the original program and the slice is compared. If they produce the same output at some point of interest, then the deletion is accepted. The first implication of this method is that ORBS is useful for those languages where statements can be deleted from the source code. Hence, precision is highly dependent on how the source code is distributed among lines. For instance, two independent statements in a single line cannot be distinguished by this technique due to the lack of a control/data dependence analysis. For instance, code like this: "if ( x >0) { x =42;} else { x =24;}" would either belong to the slice or be removed. But only one branch of the if-statement could not be sliced. Despite the source code limitation, an ORBS slice can eventually be more precise than a dynamic slice because it can delete statements that depend on the slicing criterion (considering the data dependence chain), but that do not really influence it. After introducing ORBS, the authors compare the technique with other similar methods and empirically evaluate their implementation with good results for both precision and performance. In summary, the paper introduces an interesting idea that is properly evaluated and compared. Moreover, it is well written and contains many illustrative examples. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
FSE 2014: Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering
November 2014
856 pages
ISBN:9781450330565
DOI:10.1145/2635868
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 November 2014

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article

Conference

SIGSOFT/FSE'14
Sponsor:

Acceptance Rates

Overall Acceptance Rate 17 of 128 submissions, 13%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)69
  • Downloads (Last 6 weeks)5
Reflects downloads up to 01 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Verification of Programs with Common FragmentsCompanion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering10.1145/3663529.3663783(487-491)Online publication date: 10-Jul-2024
  • (2024)Learning to Detect and Localize Multilingual BugsProceedings of the ACM on Software Engineering10.1145/36608041:FSE(2190-2213)Online publication date: 12-Jul-2024
  • (2024)Decomposition of Deep Neural Networks into Modules via Mutation AnalysisProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680390(1669-1681)Online publication date: 11-Sep-2024
  • (2024)A Learning-Based Approach to Static Program SlicingProceedings of the ACM on Programming Languages10.1145/36498148:OOPSLA1(83-109)Online publication date: 29-Apr-2024
  • (2024)Predictive Program Slicing via Execution Knowledge-Guided Dynamic Dependence LearningProceedings of the ACM on Software Engineering10.1145/36437391:FSE(271-292)Online publication date: 12-Jul-2024
  • (2024)The Impact of Program Reduction on Automated Program Repair2024 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME58944.2024.00039(337-349)Online publication date: 6-Oct-2024
  • (2024)Causal Program Dependence AnalysisScience of Computer Programming10.1016/j.scico.2024.103208(103208)Online publication date: Sep-2024
  • (2024)The expression dependence graphJournal of Logical and Algebraic Methods in Programming10.1016/j.jlamp.2024.101016(101016)Online publication date: Sep-2024
  • (2024)Evaluation of the fixed‐point iteration of minimizing delta debuggingJournal of Software: Evolution and Process10.1002/smr.2702Online publication date: 23-Jun-2024
  • (2023)DAFLProceedings of the 32nd USENIX Conference on Security Symposium10.5555/3620237.3620513(4931-4948)Online publication date: 9-Aug-2023
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media