Specification-based Program Slicing and Its Applications

명세 기반 프로그램 슬라이싱 기법과 응용

  • 정인상 (한성대학교 컴퓨터공학부) ;
  • 윤광식 (매크로임팩트(주) 시스템소프트웨어연구소) ;
  • 이완권 (전주대학교 정보기술컴퓨터공학부) ;
  • 권용래 (한국과학기술원 전산학과)
  • Published : 2002.08.01

Abstract

More precise program slices could be obtained by considering the semantic relations between variables of interest, compared to the existing slicing techniques considering only the syntactic relations. In this paper, we present specification-based slicing that allows a better decomposition of the program by taking a specification as its slicing criterion. A specification-based slice consists of a subset of program statements which preserve the behavior and the correctness of the original Program with respect to a specification given by a pre-postcondition pair. Because specification-based slicing enables one to focus attention on only those program statements which realize the functional abstraction specified by the given specification, it can be widely used in many software engineering areas. Of its possible applications, we show how specification-based slicing can improve the Process for extracting reusable parts from existing programs and restructuring complex programs for better maintainability.

기존의 프로그램 슬라이스에 관한 정의들은 주로 프로그램 변수들간의 문법적인 관계만을 고려한다. 이에 반해, 이 논문에서는 프로그램 변수들간의 의미론적인 관계를 고려함으로써 기존의 슬라이스보다 더 정확한 프로그램 슬라이스를 구할 수 있는 명세 기반 슬라이싱 기법을 제시한다. 명세 기반 슬라이스는 선행 조건, 후행 조건의 쌍으로 주어진 프로그램의 명세에 대해 원래 프로그램의 행위와 올바름을 보존하는 프로그램 문장들의 부분집합으로 구성된다. 명세 기반 슬라이싱 기법은 주어진 명세에 나타나 있는 프로그램의 기능과 관련한 프로그램 문장만을 다루기 때문에, 소프트웨어 공학의 여러 가지 문제들을 더욱 효과적으로 해결할 수 있도록 지원한다. 여러 적용 가능한 문제들 중에서도, 이 논문에서는 소프트웨어 재사용과 소프트웨어 재구성 과정이 명세 기반 슬라이싱 기법을 이용함으로써 어떻게 향상될 수 있는지를 보인다.

Keywords

References

  1. M. Weiser, 'Program Slicing,' IEEE Trans. on Software Engineering, vol. 10, no. 4, pp. 352-357, July 1984 https://doi.org/10.1109/TSE.1984.5010248
  2. H. Mili, F. Mili, and A. Mili, 'Reusing Software: Issues and Research Directions,' IEEE Trans. on Software Engineering, vol. 21, no. 6, pp. 528-562, Jun 1995 https://doi.org/10.1109/32.391379
  3. G. Canfora, A. Cimitile, A. De Lucia, and G. A. Di Lucca, 'Software Salvaging based on Conditions,' In Proceedings of International Conference on Software Maintenance, pp. 424-433, 1994 https://doi.org/10.1109/ICSM.1994.336752
  4. H. S. Kim, Y. R. Kwon, and I. S. Chung, 'Restructuring Programs Through Program Slicing,' International Journal of Software Engineering and Knowledge Engineering, vol. 4, no. 3, pp. 349-368, 1994. 1981 https://doi.org/10.1142/S0218194094000179
  5. F. Lanubile and G. Visaggio, 'Extracting Reusable Functions by Flow-graph based Program Slicing,' IEEE Trans. on Software Engineering, vol. 23, no. 4, pp. 246-259, April 1997 https://doi.org/10.1109/32.588543
  6. M. J. Harrold, N. Ci, 'Reuse-Driven Interprocedural Slicing,' In Proceedings of International Conference on Software Engineering, pp. 74-83, April 1998 https://doi.org/10.1109/ICSE.1998.671104
  7. J. de Bakker, Mathematical Theory of Program Correctness, Prentice/Hall Int'l. Inc., 1980
  8. R. J. R. Back, 'A Calculus of Refinements for Program Derivations,' Acta Informatica, vol. 25, pp. 593-624, 1988 https://doi.org/10.1007/BF00291051
  9. E. W. Dijkstra, 'Guarded Commands, Nondeterminacy and Formal Derivation of Programs,' Communications of the ACM, vol. 18, no. 8, pp. 453-457, Aug. 1975 https://doi.org/10.1145/360933.360975
  10. D. Gries, The Science of Programming, Springer-Verlag New York Inc., 1981
  11. C. W. Krueger, 'Software Reuse,' ACM Computing Surveys, vol. 24, no. 2, pp. 131-183, Jun 1992 https://doi.org/10.1145/130844.130856
  12. S. Horwitz, J. Prins, and T. Reps, 'Integrating Non-interfering Versions of Programs,' ACM Trans. on Programming Languages and Systems, vol. 11, no. 3, pp. 345-387, July 1989 https://doi.org/10.1145/65979.65980
  13. R. Mili, A. Mili, and R. T. Mittermeir, 'Storing and Retrieving Software Components: A Refinement Based System,' IEEE Trans. on Software Engineering, vol. 23, no. 7, pp. 445-460, July 1997 https://doi.org/10.1109/32.605762
  14. R. S. Arnold, 'Software Restructuring,' Proc. IEEE, pp. 607-617, 1989 https://doi.org/10.1109/5.24146
  15. B. Korel and J. Laski, 'Dynamic Slicing of Computer Programs,' Journal of Systems and Software, vol. 13, pp. 187-195, 1990 https://doi.org/10.1016/0164-1212(90)90094-3
  16. G. Venkatesh, 'The Semantic Approach to Program Slicing,' In Proc. of the ACM SIGPLAN91 Conf. on Programming Languages Design and Implementation, Toronto, Ontario, pp. 26-28, June 1991
  17. J. J. Comuzzi and J. M. Hart, 'Program Slicing Using Weakest Preconditions,' In FME'96, vol. 1051 of Lecture Notes in Computer Science, pp. 557-575, Mar. 1996 https://doi.org/10.1007/3-540-60973-3_107
  18. B. Korel and J. Laski, 'Dynamic Program Slicing,' Information Processing Letters, vol. 29, no. 3, pp. 155-163, 1988 https://doi.org/10.1016/0020-0190(88)90054-3
  19. F. Tip, 'A Survey of Program Slicing Techniques,' TR CS-R9438, Univ. of Amsterdam, 1994
  20. A. Nishimatsu, M. Jihira, S. Kusumoto, and K. Inoue, 'Call-Mark Slicing: An Efficient and Economical Way of Reducing Slice,' In Proceedings of International Conference on Software Engineering, pp. 422-431, May 1999 https://doi.org/10.1109/ICSE.1999.841032