4541.664A Program Analysis: Theories and Practices

이광근 Kwangkeun Yi
(소프트웨어무결점 연구센터)/ 프로그래밍 연구실/CSE/Seoul National University

강의: 화/목 15:30-16:45 @ 302동 309-1호

목표 Objectives

제대로 작동할 지를 미리 검증할 수 없는 기계설계는 없다. 제대로 서있을 지를 미리 검증할 수 없는 건축설계는 없다. 인공물들이 자연세계에서 문제 없이 작동할 지를 미리 엄밀하게 분석하는 수학적 기술들은 잘 발달해 왔다. 뉴튼 역학, 미적분 방정식, 통계 역학등이 그러한 기술들일 것이다.

소프트웨어에 대해서는 어떤가? 작성한 소프트웨어가 제대로 실행될 지를 미리 엄밀하게 확인해 주는 기술들은 있는가? 이에 대한 답이 프로그램 분석(static program analysis)기술 이라는 이름으로 모여지는 기술들이다. 그동안 다양한 이름으로 다양한 수준에서 다양한 필요에 맞추어 불리워지는 기술들을 모두 포섭한다: "static analysis", "abstract interpretation", "type system", "software model checking", "data-flow analysis", "program logics and proof system" 등.

이 강좌에서는 정적 프로그램 분석 기술들의 이론과 실제를 익힌다.

  • 강의
    • 위의 모든 기술들을 포섭하는 일반 정적분석 디자인 틀인 요약해석(abstract interpretation)과 그 배경이론을 익힌다.
    • 요약해석만큼 일반적이지는 않지만 제한된 경우에 간편하게 사용할 수 있는 특화된 정적분석 디자인 틀 세 가지(analysis by equation, by monotonic closure, and by proof construction)를 익힌다.
    • 정적분석기의 실행 비용을 줄이는 대표적인 기술들을 익힌다.
  • 숙제
    • 정적분석기 디자인에 필요한 개념 훈련하기.
    • 요약해석 틀(이론)을 이용해서 정적분석기를 디자인하고 디자인한 분석기가 안전함을 증명하기.
    • 디자인을 실제 프로그램으로 구현하고 실행해 보기.

내용 Contents

  • Preliminaries: abstract syntax, semantics, inductive definitions, logics and inference, fixpoints
  • Semantic formalisms: natural semantics, structural operational semantics, abstract machine semantics, denotational semantics
  • General framework: abstract interpretation, transitional approach, compositional approach, abstraction, concretization, galois connection, correctness, fixpoint algorithms
  • Specialized frameworks: analysis by equations, analysis by monotonic closure, analysis by proof construction, data flow analysis, constraint-based analysis, monomorphic type system, polymorphic type system, effect system
  • Implementations: algorithms, worklist, sparse analysis
  • Exercises: design and development of static analyzers

규정 Policy

  숙제 90%. 기타 10%. 성적은 절대평가.
TA:   이동권: {dklee} AT ropas.snu.ac.kr

숙제 Homeworks

  • 프로그램 숙제는 컴퓨터를 통해 제출합니다.
  • 제출기한을 지나 48시간 이내로 늦어지면 10% 감점. 그 이후의 숙제는 받지 않습니다.
  • 프로그램 숙제는 OCaml로 작성합니다.
  • HW1 due 9/19. OCaml programming + basic concepts
  • HW2 due 10/17. Galois connection, a static analysis design trial New

진도및 자료 Slides & Resources

Textbook: Introduction to Static Analysis: an Abstract Interpretation Perspective, MIT Press, January 2020. [PDF샘플]
  • 실라부스
  • slides 0: lecture roadmap -- gentle introduction, motivations for formal concepts, general framework, scalability, specialized frameworks
  • slides 1: inductive definition, induction proof, inference rules, soundness, completeness
  • slides 2: denotational semantics, semantic domain, semantic function, fixpoint
  • slides 3: operational semantics, semantic domain, semantic function, fixpoint
  • slides 4: abstract interpretation framework (part I)
  • slides 5: abstract interpretation framework (part II) New
  • more to come

To view/print PDF files: Acrobat Reader
© Copyright 2013, 이 광근 Kwangkeun Yi