삼성 반도체 제조 공정 관리 프로그램 분석pudrife/talk/2012/0914.pdf · 삼성...
TRANSCRIPT
삼성 반도체 제조 공정관리 프로그램 분석
박대준 (강동옥, 이영석, 이우석)
2012년 9월 14일
1
분석 대상 소개
•삼성 반도체 제조공정 관리시스템
•반도체와 역사를 같이 한 오래된 시스템
•총 인력: 400여명
•순수 개발자: 200여명
•품질 관리자: 8명 (최근까지 2명)
•라이프 사이클
•마이너 업그레이드: 사소한 비지니스 로직 수정, 품질 관리 프로세스 적용
•메이저 업그레이드: DB 스키마 변경, 특별팀 구성 대응
2
타겟 프로그램
•절차형 언어
•포인터 없음
•Call by reference
•자료구조는 배열과 스트럭처 뿐
•DB Query
•간단한 것만 사용 (JOIN 사용안함)
•비지니스 로직
•TKIN, TKOUT, REPOSITION, HOLD, ...
•어떤 ‘조건’일 때, 어떤 ‘행동’을 하는지 기술
•핵심 연산은 문자열 생성 및 검색 (산술 연산 없음)
•모듈 구조
•모듈 간 종속성 거의 없음 (한 방향)
3
분석 성질
•두 버전 사이의 의미 차이 분석
•변경된 부분의 영향도 분석
•비슷한 문제들
•두 버전이 같은 의미를 갖는가?: 리팩토링이 안전한지 체크
•변경된 부분을 위한 테스트셋 생성
•변경 내역 중 의미있는 것만 추려내기
4
버전 차이 예제 1
if A x := yelse if B ...
if B ...else if A x := y
5
버전 차이 예제 2
6
변경 영향 분석 예 1
x = 0;if (c) { x = 1;} else { x = 2;}y = x;z = y;y = 1;
x = 0;if (c) { x = 1;
}y = x;z = y;y = 1;
7
1 x = 0;2 if (c) {3 x = 1;4 } else {5 x = 2;6 }7 y = x;8 z = y;9 y = 1;
1 x = 0;2 if (c) {3 x = 1;
4 }5 y = x;6 z = y;7 y = 1;
x1 : {(true,0)}x3 : {(c,1)}x5 : {(!c,2)}y7 : {(c,1),(!c,2)}z8 : {(c,1),(!c,2)}y9 : 1
x1 : {(true,0)}x3 : {(c,1)}
y5 : {(c,1),(!c,0)}z6 : {(c,1),(!c,0)}y7 : 1
8
변경 영향 분석 예 2
y = 0;if (c) { x = y;} else if (!c) { x = 1;}
y = 0;
if (!c) { x = 1;} else if (c) { x = y;}
9
1 y = 0;2 if (c) {3 x = y;4 } else if (!c) {5 x = 1;6 }
1 y = 0;
2 if (!c) {3 x = 1;4 } else if (c) {5 x = y;6 }
y1 : {(true,0)}x3 : {(c,0)}x5 : {(!c,1)}
y1 : {(true,0)}x3 : {(!c,1)}x5 : {(c,0)}
어떤 것끼리 비교할 것인가?
10
변환
BEGIN SELECT f INTO x FROM t WHERE eEXCEPTION WHEN OTHERS THEN x := ‘-’;END
c := ex := t.f if cx := ‘-’ if !c
11
파싱
•기존 파서 이용
•ANTLR 로 작성된 파서
•OCaml 로 작성된 파서
•새로 구현
12
13
14
Thank you
15