* 군산대학교 정보통신공학과 ([email protected]) 접수일자 : 2010. 05. 28 심사완료일자 : 2010. 06. 08
기능의 설계 및 구현
이영석*
Design and Implementation of Event Analysis/Arrange Function for Mobile Device Simulator
Young-seok Lee*
요 약
일반적으로 모바일 단말용 시뮬레이터에서는 이벤트 발생 순서에 따라 로그 파일에 저장된 이벤트를 다시 단말 의 응용 SW로 주입하여 자동적으로 응용 SW를 시험하게 된다. 그러나 동일한 이벤트라도 추출 계층에 따라 모바 일 단말용 시뮬레이터의 성능이 달라질 수 있다. 그리고, 복수 개의 응용이 동시에 수행하는 환경에서는 응용에서 추출된 이벤트들의 순서가 시스템 상태에 따라 변경될 수 있다. 즉, 동일한 응용들을 동일한 순서로 수행하더라도 시스템의 상태에 따라 이벤트의 발생순서가 변경되어 어떤 경우에는 오류가 발생하고, 어떤 경우에는 정상적으로 동작하는 경우가 발생한다. 이러한 응용 SW 오류는 디버깅하기가 매우 어렵다. 본 논문에서는 응용 및 커널/미들웨 어 계층에서 발생하는 이벤트들을 분석하여, 이들 이벤트들을 재편집함으로써 다양한 응용의 실행상태를 확인할 수 있으며, 또한 각 이벤트들이 응용, 커널 및 미들웨어 계층에 미치는 영향을 효율적으로 파악할 수 있는 이벤트 배 열/편집기를 설계 및 구현하였다.
ABSTRACT
Generally, the simulator for mobile device tests automatically an application software after instilling again the event, which is saved in log file according to an event generation sequence, into the application software of device. But, the simulator performance for mobile device can be different according to a extraction layer even if the events are same. And, the sequence of events extracted from an application is changeable in the environment that multiple applications are operated concurrently. Therefore, even though the same applications is executed to the same sequence, the generation sequence of events is revised in accordance with the state of mobile device system, and whether the errors occur according to circumstances or not . This kind of application software error is very difficult to perform a debugging operation. In this paper, the execution state of various applications is verifiable through the re-editing of events after analyzing the events which is generated in application, kernel, middleware layer, and the event arrange/editor is designed and implemented to understand efficiently the influence on application, kernel, and middleware layer for events.
키워드
모바일 디바이스, 모바일 디바이스용 시뮬레이터, 이벤트 편집기, 이벤트 자동 재생
Key word
Mobile Device, Simulator for Mobile Device, Event Editor, Event Generation
Ⅰ. 서 론
최근 정보통신 및 반도체 기술이 급격히 발전함에 따라 다양한 모바일 디바이스(mobile device)들이 개발 되고 있으며, 이러한 모바일 디바이스들과 이동통신/
인터넷 기술의 발전을 토대로 무선인터넷이 점차 활성 화되고 있다[1, 2]. 따라서, 이러한 무선인터넷에서 제 공되는 컨텐츠에 대한 사용자의 다양해지는 요구사항 을 만족시키기 위해서는 새로운 형태의 컨텐츠를 신속 하고 저렴한 비용으로 개발할 수 있어야 한다. 이러한 시장의 요구 사항에 따라 모바일 디바이스용 컨텐츠를 적은 비용으로 신속하게 개발할 수 있는 모바일 디바이 스용 시뮬레이터에 대한 연구가 활발하게 진행되고 있 다[3].
현재 기존의 모바일 디바이스용 시뮬레이터는 개발 된 응용 SW를 단말기에 탑재하기 전에, 데스크탑 환경 에서 미리 수행할 수 있는 장점이 있다. 또한, 최근에는 시뮬레이터 상에서 이벤트(사용자 입력 이벤트, 커널 이 벤트 등)에 따라 응용 SW의 기능을 자동적으로 시험하 기 위한 기법들이 개발 및 제공되고 있다[4, 5].
일반적으로 시뮬레이터에서는 응용 SW를 수행하면 서, 키패드 입력과 같은 사용자 이벤트, 커널과 미들웨 어 동작에 따른 이벤트 등이 로그 파일에 저장된다. 그 런 다음, 이벤트 발생 순서에 따라 로그파일에 저장된 이벤트를 다시 단말의 응용 SW로 주입하여 자동적으 로 응용 SW를 시험하게 된다. 하지만, 시뮬레이터에서 는 동일한 이벤트라도 추출 계층에 따라 시뮬레이터의 성능이 달라질 수 있다. 그리고, 복수 개의 응용이 동시 에 수행하는 환경에서는 응용에서 추출된 이벤트들의 순서가 시스템 상태에 따라 변경될 수 있다. 즉, 동일한 응용들을 동일한 순서로 수행하더라도 시스템의 상태 에 따라 이벤트의 발생순서가 변경되어 어떤 경우에는 오류가 발생하고, 어떤 경우에는 정상적으로 동작하는 경우가 발생한다. 이러한 응용 SW 오류는 디버깅하기 가 굉장히 어렵다. 이와 같은 시뮬레이터의 동작 환경 을 고려할 때, 이벤트들의 특성을 분석함으로써 시뮬레 이터의 성능을 향상시킬 수는 방안들에 대한 연구가 필 요하다.
따라서, 본 논문에서는 동일한 이벤트라도 이벤트 추 출 위치에 따른 시뮬레이터의 성능과 저장된 이벤트를
단말의 상태에 따라 재생 순서를 조정했을 때의 시뮬레 이터 성능을 분석하기 위하여 이벤트 분석 모듈과 기존 이벤트들을 재배열하는 기능을 제공하는 이벤트 재배 열 모듈을 구현하였다. 아울러 본 논문에서 구현한 모듈 을 이용하여 응용프로그램의 자동 테스트 기능을 확인 함으로써 구현한 모듈들의 효율성을 확인하였다.
본 논문의 구성은 다음과 같다. 2장에서는 모바일 디바이스용 시뮬레이터 구조에 대해 기술하고, 3장에 서는 모바일 디바이스용 이벤트 분석/배열기 설계 및 구현 방식을 기술한다. 4장에서는 구현된 이벤트 배열 /분석기의 기능성 검증을 수행하고, 5장에서 결론을 맺는다.
Ⅱ. 모바일 디바이스용 시뮬레이터 구조
본 논문에서는 모바일 디바이스용 시뮬레이터의 단 말 S/W 스택의 각 계층에서 추출되는 이벤트를 분석하 고 이벤트 타입에 따른 최적의 추출 계층을 도출하는 이 벤트 분석기(Analyzer) 및 저장된 이벤트를 특정 시스템 의 상태에 따라 이벤트 재생 순서를 조정하여 시뮬레이 터의 성능을 향상시키는 이벤트 배열기(Event Arranger) 를 설계 및 구현하였다(그림 1).
그림 1. 모바일 디바이스용 시뮬레이터 구조도 Fig. 1 Simulator Architecture for Mobile device
2.1 이벤트 정의 및 처리
시뮬레이터에서 사용하는 이벤트의 타입은 디바이 스의 LCD 영역에서 발생하는 Touch Event와 키 패드 영
역에서 발생하는 Keypad Event가 존재한다. 각각의 이벤 트 타입에 대한 정보는 구조체로 관리가 되며 다음과 같 은 정보를 갖는다(표 1, 2).
표 1. Touch Event 구조체 정보 Table. 1 Touch Event Struct Information
Type Name description
GdkEventType type Press
or Release
gdouble x x 좌표
gdouble y y 좌표
표 2. Key Event 구조체 정보 Table. 2 key Event Struct Information
Type Name Description
GdkEventType type Press
or Release
guint keyval 선택된 key값
구현한 “이벤트 배열기 모듈”이 포함된 모바일 단말 기용 시뮬레이터는 Hypervisor 및 VMM(Qemu)를 이용 하여 구현됨에 따라 호스트 PC의 운영 체제에 독립성을 가진다(그림 1). 또한, 게스트 PC의 운영 체제 및 에뮬레 이트된 S/W 이미지들이 가상화 서비스를 제공하는 Hypervisor나 VMM(Qemu) 위에 구현됨으로써 하위 호 스트 PC의 운영 체제의 변경에 따라 에뮬레이트된 S/W 스택(stack)을 수정할 필요가 없다.
호스트 PC와 게스트 PC 사이의 통신은 VNC(Virtual Network Computing)를 이용하여 구현하였으며, 호스 트 PC에 구현된 Emulator Body의 에뮬레이터 스킨으 로부터의 입력(이벤트: 마우스 및 키보드 입력)은 VNC를 통하여 게스트 PC에 전달되고, 이후 전달된 이 벤트들은 게스트 PC에서 실행중인 해당 응용프로그 램으로 전달된다. 실행 결과는 VNC 서버를 통하여 VNC 뷰어(viewer)가 설치된 에뮬레이터 창에 보여지 게 된다.
구현한 시뮬레이터에서 VNC 뷰어/VNC 서버간 이벤 트의 전달 방식은 크게 두 가지로 구분된다.
첫 번째는 VNC 뷰어가 활성화된 상태에서 창 내부에 서 마우스를 움직이거나 키보드 입력을 하는 방법, 즉 실
제로 클라이언트에서 발생하는 키보드, 마우스 관련 이 벤트를 VNC 서버쪽으로 전송하는 방법이 있고, 두 번째 는 VNC 뷰어 툴바의 여러 가지 버튼들을 이용하여 버튼 에 해당하는 이벤트를 서버 쪽으로 전송하는 방법이 있 다(예: ctrl+alt+del을 수행하는 버튼).
2.2 이벤트 분석/배열기 개념 및 기능
본 논문에서 구현한 이벤트 분석기는 시뮬레이터의 단말 S/W 스택의 각 계층(커널, 미들웨어, 응용)에서 이 벤트를 추출하는 “이벤트 추출 모듈”과 추출된 이벤트 를 분석하는 “이벤트 분석 모듈”로 구성되며, 이벤트 배 열기는 이벤트 저장 당시의 시스템 상황에 대한 로그를 기록 및 관리하는 “시스템 상태 모듈”과 저장된 이벤트 파일을 다양한 시나리오에 따라 재구성하는 “이벤트 재 배열 모듈”로 구성된다.
모바일 플랫폼 응용
미들웨어 커널
이벤트 분석기
이벤트 추출 분석 이벤트
저장된 이벤트 파일 이벤트 배열기
시스템상태 재배열 재생
가상 하드웨어
시뮬레이터
그림 2. 이벤트 분석기 및 배열기 개념도 Fig. 2 Event Analysis and Arrange Diagram
Ⅲ. 이벤트 분석/배열기 설계 및 구현
3.1 이벤트 로깅 및 피딩
이벤트 로깅(Logging) 단계는 시뮬레이터를 통하여 이벤트를 발생시키고 저장하는 단계로서 이 과정은 Logging을 담당하는 스레드의 구동에서부터 시작된다.
Logging 스레드가 구동하는 동안 디바이스에서 발생하 는 모든 이벤트들은 이벤트 리스트에 추가가 되고 save 기능을 통하여 *.evt 라는 이벤트가 기록된 파일로 저장 된다.
이벤트 피딩(Feeding) 단계는 이벤트를 시뮬레이터 상 에서 재생시키는 단계로서 재생되는 이벤트는 Logging 을 통해 레코딩된 이벤트나 이벤트의 편집과정에서 리스 트로 관리되고 있는 이벤트들이다. Feeding을 담당하는 스레드의 구동으로부터 시작된다. 스레드가 시작되면 재 생이 되어야 하는 이벤트들은 순차적으로 클라이언트 버 퍼에 write가 된다. 클라이언트 쪽에서는 버퍼를 체크하 며 쓰여진 이벤트가 있으면 그 이벤트 정보를 분석하여 시뮬레이터 상에서 실제 이벤트가 만들어질 때와 같은 형태로 실행한다.
3.2 데이터 플로우(Flow)
로깅(Logging) 과정은 그림 3과 같다.
그림 3. 이벤트 로깅 과정 Fig. 3 Event Logging Procedure
① Logging thread 시작: EventManager의 Log 버튼을 누름으로써 Logging thread를 시작한다.
② 이벤트 발생: 시뮬레이터 상에서 터치 등의 이벤트 를 발생시키고 확인한다.
③ EVENTMSG 레코딩: 발생시킨 이벤트를 EVENTMSG라는 이벤트 메시지 형태로 만들고 리 스트한다.
④ Logging thread 중지: Stop 버튼을 누름으로써 Logging thread를 중지시킬 수 있다.
⑤ File save: 리스팅된 이벤트들을 *.evt 파일로 저장 한다.
피딩(Feeding)과정은 그림 4와 같다.
그림 4. 이벤트 피딩 과정 Fig. 4 Event Feeding Procedure
① 이벤트들을 client buffer에 write 함: 저장된 이벤트 파일을 불러오면 Event Manager에서 위와 같은 형 태로 확인 가능하며 Feeding이 시작되면 그 이벤트 들이 client buffer에 write된다.
② Feeding thread가 client Buffer를 체크함: Feeding thread는 client Buffer를 체크하며 이벤트가 들어오 면 처리한다.
③ Buffer에서 가져온 이벤트 메시지 분석: 이벤트를 순차적으로 가져오며 이벤트 분석을 통하여 재생 에 대한 정보를 얻는다.
④ 이벤트 재생: 분석된 이벤트의 정보를 바탕으로 시 뮬레이터에 재생시킨다.
3.3 이벤트 배열기
구현한 이벤트 배열기는 에디터 창에 보이는 트리뷰 아이템(이벤트)을 관리하기 위해서 그림 5와 같은 링크 드 리스트 구조로 구현하였다.
EVENTMSG next LPEVENTNODE
EVENTMSG next LPEVENTNODE LPEVENTNODE
top
그림 5. 이벤트 관리 구조 Fig. 5 Event Management Architecture
구현한 시뮬레이터용 이벤트 배열기는 상/하 로 구분 되는 편집 창으로 구성되어 있으며, 두 개의 창을 이용해 기존 이벤트 및 이벤트 시나리오들을 편집할 수 있다. 제 공하는 기능으로는 기존 이벤트의 복사, 이동, 삭제 및 붙여넣기의 기능이 있으며, 추가로 사용자가 정의한 사 용자 컴포넌트(이벤트 집합)를 이용하여 이벤트 시나리 오를 편집할 수 있다.
Ⅳ. 성능 분석 및 검증
구현한 시뮬레이터의 이벤트 분석/배열 기능을 검증 하기 위하여 기존 이벤트/이벤트 시나리오의 편집 기능 및 사용자 컴포넌트를 이용한 이벤트 편집 기능을 확인 하였으며, 작성된 이벤트의 복원을 통한 응용프로그램 의 자동 실행을 확인하였다.
4.1 이벤트 배열/편집 기능 검증
본 절에서는 응용 및 시스템에서 발생한 이벤트 뿐 만 아니라 사용자 정의 컴포넌트(이벤트 집합)의 편집 기능 을 통하여 본 논문에서 구현한 이벤트 배열/편집기의 확 장성을 확인하였다.
• AddComponent(Keypad Event): 키패드 입력에 대한 이벤트를 생성할 수 있다.
그림 6. AddComponent: Keypad 이벤트 삽입 Fig. 6 AddComponent: Keypad Event Insert
• AddComponent(Touch Event): 키패드 입력에 대한 이 벤트를 생성할 수 있다.
그림 7. AddComponent: Touch 이벤트 삽입 Fig. 7 AddComponent: Touch Event Insert
• AddComponent(사용자 컴포넌트 Export): 생성한 이 벤트들은 이벤트 배열/편집기로 Export할 수 있다.
그림 8. AddComponent 추출 Fig. 8 AddComponent Export
4.2 응용 프로그램 실행 성능 검증
구현한 이벤트 편집 기능을 검증하기 위하여 두 도형 을 그리는 이벤트 시나리오 파일의 합성을 실시하여 기 능성을 확인하였다.
(a) (b) 그림 9. 이벤트 편집 기능 검증 (a) 이벤트 시나리오 A (b) 이벤트 시나리오 B
Fig. 9 Event Editing Test (a) Event Scenario A (b) Event Scenario B
두 이벤트 시나리오(A, B)에 대하여 각각 편집기로 Load한 상태한 후, 이벤트 편집기를 이용하여 하나의 단 일 이벤트 시나리오로 작성한 후(그림 10), 실행 여부 확 인을 통하여 편집기 기능을 확인하였다(그림 11).
그림 10. 이벤트 로드 및 합성 Fig. 10 Event Load and Composition
그림 11. 합성 이벤트 재생을 통한 실행모습 Fig. 11 Execution Display through Composition Event
Replay
Ⅴ. 결 론
본 논문에서는 응용 및 커널/미들웨어 계층에서 발생 하는 이벤트들을 분석하여, 이들 이벤트들을 재편집, 실 행함으로써 다양한 응용의 실행상태를 확인할 수 있으 며, 또한 각 이벤트들이 응용, 커널 및 미들웨어 계층에 미치는 영향을 효율적으로 파악할 수 있는 이벤트 배열/
편집기를 설계 및 구현하였다. 동일한 이벤트라도 이벤 트 추출 위치에 따른 시뮬레이터의 성능과 저장된 이벤 트를 단말의 상태에 따라 재생 순서를 조정했을 때의 시 뮬레이터 성능을 분석하기 위하여 이벤트 분석 모듈과 기존 이벤트들을 재배열하는 기능을 제공하는 이벤트 재배열 모듈을 구현하였고, 구현한 모듈을 이용하여 응 용프로그램의 자동 테스트 기능을 확인함으로써 구현 한 모듈들의 효율성을 확인하였다.
참고문헌
[1] ROA group, “Japan Mobile Internet Device(MID) Market Forecast 2008-2012,” Report No.081101 [2] Ben Morris, “The Symbian OS Architecture
Sourcebook: Design and Evolution of a Mobile Phone OS ,“ WILEY, Feb, 2007.
[3] VDC, “Embedded Software:2008 Market Intelligence Service,” pp39, October 2008.
[4] I. Satoh, “A Testing Framework for Mobile Computing Software,”IEEETrans.SoftwareEng.,vol.29,no.12, pp.1112-1121, 2003.
[5] K. Adams and O. Agesen, “A comparison of software and hardware techniques for x86 virtualization,”
ASPLOS2006, pp. 2-13, Oct. 2006.
저자소개
이영석(Young-seok Lee)
1992년 충남대학교 컴퓨터공학과 공학사
1994년 충남대학교 컴퓨터공학과 공학석사
2002년 충남대학교 컴퓨터공학과 공학박사 1994년~1997년 LG전자정보통신연구소 연구원 2002년~2004년 한국전자통신연구원 선임연구원 2004년~현재 군산대학교 정보통신공학과 조교수
※관심분야 : 정보보호, 이동컴퓨팅, 컴퓨터네트워크