DOI QR코드

DOI QR Code

자바 바이트코드 검증을 위해 기본경로를 통한 BIRS 코드로부터 검증조건 생성

Generating Verification Conditions from BIRS Code using Basic Paths for Java Bytecode Verification

  • 김제민 (인하대학교 컴퓨터.정보공학과) ;
  • 김선태 (인하대학교 컴퓨터.정보공학과) ;
  • 박준석 (인하대학교 컴퓨터정보공학부) ;
  • 유원희 (인하대학교 컴퓨터정보공학부)
  • Kim, Je-Min (Dept. of Computer and Information Engineering, Inha University) ;
  • Kim, Seon-Tae (Dept. of Computer and Information Engineering, Inha University) ;
  • Park, Joon-Seok (Dept. of Computer Science and Information Engineering, Inha University) ;
  • Yoo, Weon-Hee (Dept. of Computer Science and Information Engineering, Inha University)
  • 투고 : 2012.05.16
  • 심사 : 2012.07.03
  • 발행 : 2012.08.31

초록

BIRS는 자바 프로그램의 검증을 위해 사용되는 중간표현 언어이다. 바이트코드 형태의 자바 프로그램은 검증을 위해 BIRS 코드로 변환된다. 변환된 BIRS 형태의 프로그램을 검증하기 위해서는 BIRS 형태의 프로그램에 대한 검증조건을 생성해야 한다. 본 논문에서는 BIRS 코드에 대한 검증조건을 생성하는 방법을 제시한다. 검증조건 생성은 BIRS 코드에 대한 제어흐름그래프 구성, 제어흐름그래프에 대한 깊이우선 탐색을 통한 기본경로 추출, 기본경로에 대한 최약 전조건(weakest precondition) 계산법의 과정을 통해 이루어진다.

BIRS is an intermediate representation for verifying Java program. Java program in the form of bytecode could be translated into BIRS code. Verification conditions are generated from the BIRS code to verify the program. We propose a method generating verification conditions for BIRS code. Generating verification conditions is composed of constructing control flow graph for BIRS code, depth first searching for the control flow graph to generate basic paths, and calculating weakest preconditions of the basic paths.

키워드

참고문헌

  1. Seontae Kim, Jemin Kim, Joonseok Park, and Weonhee Yoo, "Implementation of Stackless Intermediate Representation Language for Java Bytecode," The Journal of Korean Institute of Information Technology, Vol. 9, No. 9, pp. 129-138, Sep. 2011.
  2. R. W. Floyd, "Assigning meaning to programs," Mathematical Aspects of Computer Science, Vol. 19, pp. 19-32, 1967. https://doi.org/10.1090/psapm/019/0235771
  3. C. A. R. Hoare, "An axiomatic basis for computer programming," Communication of the ACM, Vol. 12, No. 10, pp. 576-580, Oct. 1969. https://doi.org/10.1145/363235.363259
  4. Cormac Flanagan, K. Rustan M. Leino, Mark Lillibridge, Greg Nelson, James B. Saxe, and Raymie Stata, "Extended static checking for Java," SIGPLAN Not. Vol. 37, No. 5, pp. 234-245, May 2002. https://doi.org/10.1145/543552.512558
  5. Lilian Burdy, Yoonsik Cheon, David R. Cok, et al. "An overview of JML tools and applications," International Journal on Software Tools for Technology Transfer, Vol. 7, No. 3, pp. 212-232, June 2005. https://doi.org/10.1007/s10009-004-0167-4
  6. David Detlefs, Greg Nelson, and James B. Saxe, "Simplify: a theorem prover for program checking," Journal of ACM, Vol. 52, No. 3, pp. 365-473, May 2005. https://doi.org/10.1145/1066100.1066102
  7. Gilles Barthe, Lilian Burdy, Julien Charles, et al. "JACK: a tool for validation of security and behaviour of Java applications," In Proceedings of the 5th international conference on Formal methods for components and objects, pp. 152-174, 2007.
  8. Mike Barnett, K. Rustan M. Leino, and Wolfram Schulte, "The Spec# Programming System: An Overview," LNCS, Vol. 3362, 2004.
  9. Jemin Kim, Joonseok Park, Weonhee Yoo, "A Design of Verification Framework for Java Bytecode," Journal of the Korea Society of Digital Industry and Information Management, Vol. 7, No. 2. pp. 29-37, June 2011.
  10. Lilian Burdy, Marieke Huisman and Mariela Pavlova, "Preliminary Design of BML: A Behavioral Interface Specification Language for Java bytecode," LNCS, Vol. 4422, pp. 215-229, 2007.
  11. Eiffel Software, http://www.eiffel.com
  12. J. M. Jazequel, B. Meyer, "Design by contract: the lessons of Ariane," Computer, Vol. 30, No. 1, pp. 129-130, Jan. 1997. https://doi.org/10.1109/2.562936
  13. John Barnes, "High Integrity Software: The SPARK Approach to Safety and Security," Addison Wesley, March 2005.
  14. H. Lehner and P. Müller, "Formal translation of bytecode into BoogiePL," Electron. Notes Theor. Comput. Sci., Vol. 190, No. 1, pp. 35-50, 2007. https://doi.org/10.1016/j.entcs.2007.02.059
  15. E. W. Dijkstra, "A Discipline of Programming," Prentice Hall, Oct. 1976.
  16. Jimin Kim, Kitae Kim, Jemin Kim, and Weonhee Yoo, "Static Type Inference Based on Static Single Assignment for Bytecode," Journal of the Korea Society of Computer and Information, Vol. 11, No. 4, pp. 87-96, Sep. 2006.
  17. C. Flanagan and J. B. Saxe, "Avoiding exponential explosion: generating compact verification conditions," SIGPLAN Not., Vol. 36, No. 3, pp. 193-205, 2001. https://doi.org/10.1145/373243.360220
  18. M. Barnett and Rustan, "Weakest-precondition of unstructured programs," in PASTE '05: Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, pp. 82-87, 2005.
  19. Z. Manna, "Mathematical Theory of Computation," Dover Publications, 2003.
  20. Kyungsoo Kim and Weonhee Yoo, "A Study on Intermediated code for Analyzing Bytecodes," Journal of the Korea Society of Computer and Information, Vol. 11, No. 1, pp. 107-117, Mar. 2006.