skip to main content
article

A monadic program slicer

Published:01 May 2006Publication History
Skip Abstract Section

Abstract

Program slicing is an important decomposition technique. It has been widely used in many software activities, such as software analyzing, understanding, debugging, testing, and maintenance. The current slicing methods and tools, however, are monolithic, and mainly based on program or system dependence graph. This paper presents a novel formal tool for program slicing. It abstracts the computation of program slicing as a language-independent slice monad transformer, which can be applied to the semantic descriptions of the program in a modular way, forming the corresponding slicing algorithms. Such algorithms allow program slices to be computed directly on abstract syntax, with no need to explicitly construct intermediate structures such as dependence graphs or to record an execution history. It has reusability and language-flexibility properties in comparison with the current program slicing methods/tools.

References

  1. Binkley D., and Gallagher K. B., "Program Slicing", Advances in Computers, 43 (1996): 1--50.Google ScholarGoogle ScholarCross RefCross Ref
  2. Espinosa D., "Semantic Lego", PhD dissertation, Columbia University, Columbia, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Gallagher K. B., and Lyle J. R., "Using Program Slicing in Software Maintenance", IEEE Transactions on Software Engineering, 17 (1991): 751--761. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Hausler P. A., "Denotational Program Slicing", Proceeding of 22th Annual Hawaii International Conference on System Sciences, 2 (1989): 486--495.Google ScholarGoogle Scholar
  5. Harman M., and Hierons R. M., "An Overview of Program Slicing", Software Focus, 2 (2001): 85--92.Google ScholarGoogle ScholarCross RefCross Ref
  6. Horwitz S., Reps T., and Binkley D., "Interprocedural Slicing Using Dependence Graphs", ACM Transactions on Programming Languages and Systems, 12 (1990): 26--60. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Hwang J. C., Du M. W., and Chou C. R., "The Influence of Language Semantics on Program Slices", Proceedings of the 1988 International Conference on Computer Languages, (1988): 120--127.Google ScholarGoogle Scholar
  8. Liang S., and Hudak P., "Modular Denotational Semantics for Compiler Construction", Proceeding of 6th European Synposium on Programming Languages and Systems, ESOP'96. LNCS 1058, Springer-Verlag, Berlin, (1996): 219--234. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Liang S., Hudak P., and Jones M., "Monad Transformers and Modular Interpreters", 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL'95, ACM Press, New York, (1995): 333--343. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Liang S., "Modular Monadic Semantics and Compilation", PhD dissertation, University of Yale, Yale, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Labra Gayo J. E., Luengo Diez M. C., Cueva Lovelle J. M., and Cernuda del Rio A., "A Language Prototyping System Using Modular Monadic Semantics", Workshop on Language Definitions, Tools and Applications, LDTA'01, Netherlands, 2001.Google ScholarGoogle Scholar
  12. Labra Gayo J. E., Cueva Lovelle J. M., Luengo Diez M. C., and Gonzalez Rodriguez B. M., "A Language Prototyping Tool based on Semantic Building Blocks", The 12th Nordic Workshop on Programming Theory, Bergen-Norway, 2000.Google ScholarGoogle Scholar
  13. Labra Gayo J. E., Luengo Diez M. C., Cueva Lovelle J. M., and Cernuda del Rio A., "Reusable Monadic Semantics of Object Oriented Programming Languages", Proceeding of 6th Brazilian Symposium on Programming Languages, SBLP'02, PUC-Rio University, Brazil, 2002.Google ScholarGoogle Scholar
  14. Moggi E., "An Abstract View of Programming Languages", LFCS Report ECS-LFCS-90-113, University of Edinburgh, 1989. http://www.lfcs.nformatics.ed.ac.uk/reports/90/ECS-FCS-90-113/.Google ScholarGoogle Scholar
  15. Moggi E., "Notions of Computation and Monads", Information and Computation, 93 (1991): 55--92. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Mosses P. D., "Semantics, Modularity, and Rewriting Logic", Proceeding of 2nd International Workshop on Rewriting Logic and its Applications, ENTCS 15, Elesvier Press, Netherlands, 1998.Google ScholarGoogle Scholar
  17. Ouarbya L., Danicic S., Daoudi M., Harman M., and Fox C., "A Denotational Interprocedural Program Slicer", Proceeding of 9th IEEE Working Conference on Reverse Engineering, IEEE Press, Virginia, (2002): 181--189. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Ottenstein K. J., and Ottenstein L. M., "The program dependence graph in a software development environment", ACM SIGPLAN Notices, 19 (1984): 177--184. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Papaspyrou N. S., "A Resumption Monad Transformer and its Applications in the Semantics of Concurrency", Technical Report CSD-SW-TR-2-01, National Technical University of Athens, 2001.Google ScholarGoogle Scholar
  20. Peterson J., Hammond K., Augustsson L., Boutel B., Burton W., Fasel J., Gordon A. D., Hughes J., Hudak P., Johnsson T., Jones M., Meijer E., Peyton Jones S. L., Reid A., Wadler P., "Report on the Programming Language Haskell 1.4, A Non-strict Purely Functional Language", Yale University Technical Report, YALEU/DCS/RR-1106, 1997.Google ScholarGoogle Scholar
  21. Power J., "Modularity in Denotational Semantics", Proceeding of 13th Annual Conference on Mathematical Foundations of Programming Semantics, Elsevier Press, New York, 2000.Google ScholarGoogle Scholar
  22. Thompson S., "Haskell: The Craft of Functional Programming", Addison-Wesley, Harlow, England, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Tip F., "A Survey of Program Slcing Techniques", Journal of Programming Languages, 3 (1995): 121--189.Google ScholarGoogle Scholar
  24. Venkatesh G. A., "The Semantic Approach to Program Slicing", ACM SIGPLAN Conference on Programming Language Design and Implementation, Toronto, Canada (1991): 26--28. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Wadler P., "Comprehending monads", ACM Conference on Lisp and Functional Programming, ACM Press, France (1990): 61--78. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Wadler P., "The Essence of Functional Programming", Proceeding of 19th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, ACM Press, New Mexico, (1992): 1--14. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Wadler P., "Monads for Functional Programming", Lecture Notes on Advanced Functional Programming Techniques, LNCS 925, Springer-Verlag, Berlin (1995): 24--52. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Wansbrough K., "A Modular Monadic Action Semantics", Master thesis, University of Auckland, Auckland, 1997.Google ScholarGoogle Scholar
  29. Weiser M., "Program Slicing", IEEE Transaction on Software Engineering, 16 (1984): 498--509.Google ScholarGoogle Scholar
  30. Zhang Y. Z., and Xu B. W., "A Survey of Semantic Description Frameworks for Programming Languages", ACM SIGPLAN Notices, 39 (2004): 14--30. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Zhang Y. Z., Xu B. W., Shi L., Li B. X., and Yang H. J., "Modular Monadic Program Slicing", The 28th Annual International Computer Software and Applications Conference, COMPSAC 2004, Hong Kong, China, 66--71. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A monadic program slicer

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!