1. ‘Last k’의 한계를 넘어 ‘Important k’로
연구는 프로그램 정적 분석에서 널리 쓰이는 컨텍스트 민감도 (context sensitivity)의 전통적인 접근 방식에 도전하며 시작되었습니다.
-
전통적 방식 (Last k): 최근 k개의 호출 스택 (call stack)을 컨텍스트로 사용합니다. (보통 k=2가 많이 사용됨)
-
교수님의 제안 (Important k): ’last k’ (최근 k개) 접근 방식 대신, 분석에 정말로 중요한 ‘important k’ (주요 k개)의 컨텍스트만 선별하여 사용하자는 것입니다.
-
효과: 이 ‘Important k’ 접근법은 k=1만으로도 기존의 ‘Last k’ (k=2) 방식과 비슷한 성능을 보여주었습니다.
2. 고정관념 뒤집기: Object vs. Call-Site Sensitivity
컨텍스트 민감도에는 역사적으로 두 가지 주요 갈래가 있습니다.
-
Call-Site Sensitivity (k-CFA): 호출 ‘위치’ (call-site)를 기반으로 컨텍스트를 구분합니다. (‘81년)
-
Object Sensitivity: 호출 대상 객체 (‘값’)를 기반으로 컨텍스트를 구분합니다. (2002년)
교수님은 “최근 학계 연구 동향이 계속 Object sensitivity의 우월성만 강조하고 있다"고 지적하며, 자신의 생각은 그 반대라고 밝혔습니다.
(교수님의 가설) “주요 k (Important k) 개념을 적용하면, Call-site sensitivity가 Object sensitivity를 이깁니다.”
3. 새로운 가설의 탄생과 ‘obj2cfa’
이러한 가설은 교수님의 개인적인 경험에서 시작되었습니다.
-
기존 학계의 통념: “Call-site sensitivity가 Object sensitivity보다 부정확하다"는 것을 증명하는 특정 예제 (example)가 존재한다고 알려져 있었습니다.
-
교수님의 발견: 그 예제를 (아무리 노력해도) 만들 수 없었습니다.
-
새로운 가설: 이를 바탕으로 “기존의 고정관념 (통념)이 틀렸을 수 있다"는 새로운 가설을 세우게 되었습니다.
이 아이디어는 ‘obj2cfa’라는 연구로 구체화되었으며, 이는 Object sensitivity의 요약 (summary)을 ‘주요 call-site’ 요약으로 변환해주는 기술입니다.