EventB 상태기계 코드생성과 사이버물리 시스템 공동시뮬레이션
초록
본 논문은 DEPLOY 프로젝트의 코드 생성 기반을 확장하여 Event‑B 상태기계 다이어그램으로부터 실행 가능한 C 코드와 Java 코드를 자동 생성하는 방법을 제시한다. 생성된 코드를 이용해 사이버‑물리 시스템의 환경을 별도 시뮬레이션하고, 여러 상태기계를 하나의 태스크 안에서 동시 실행함으로써 비결정적 전이의 탐색 비율을 조절할 수 있는 계측 기법을 소개한다. 이를 통해 모델‑기반 설계와 검증을 넘어 실제 배포 가능한 코드 수준까지 연결하는 통합 워크플로우를 제공한다.
상세 분석
DEPLOY 프로젝트는 Event‑B 기반 정형 방법론을 실무에 적용하기 위해 코드 생성 파이프라인을 구축했지만, 초기 구현은 주로 추상 머신과 이벤트에 국한되었다. 본 연구는 이러한 한계를 극복하기 위해 상태기계 다이어그램을 정형화된 메타모델로 승격시킨 뒤, 자동 변환 규칙을 정의하여 C와 Java 코드로 매핑한다. 핵심 기술은 상태와 전이, 가드, 액션을 함수와 구조체로 표현하고, 상태 전이 테이블을 런타임에 동적으로 선택하도록 설계한 점이다. 특히 비결정적 전이의 경우, 확률 가중치를 메타데이터에 부여하고, 시뮬레이션 엔진이 이를 읽어 전이 선택 빈도를 조절하도록 함으로써 실제 물리 환경의 불확실성을 모델링한다.
코드 계측 측면에서는 각 전이 실행 전후에 로그와 타이머를 삽입하고, 외부 시뮬레이션 스케줄러와 인터페이스를 제공한다. 이를 통해 사용자는 특정 전이의 발생 빈도를 실험적으로 조정하거나, 환경 변수의 변화에 따라 전이 가드를 동적으로 재평가할 수 있다. 또한, 여러 상태기계를 단일 스레드 혹은 실시간 태스크 안에서 순차적으로 스케줄링하는 협동 멀티태스킹 기법을 적용해, 실제 임베디드 시스템에서 요구되는 메모리와 CPU 사용량을 최소화한다.
시뮬레이션 결과는 자동 생성된 테스트 벤치와 연동되어, 모델 검증 단계에서 발견되지 않은 실행 시나리오를 탐색한다. 이는 전통적인 모델 검증이 다루기 어려운 시간 의존적 인터랙션과 비동기 이벤트를 포착하는 데 유리하다. 전체 흐름은 모델링 → 코드 자동 생성 → 계측 삽입 → 시뮬레이션 실행 → 결과 분석의 순환 구조를 이루며, 모델·코드·시뮬레이션 간의 트레이스 가능성을 확보한다.
이와 같은 접근은 Event‑B가 제공하는 수학적 증명 능력과 실시간 코드 실행 사이의 격차를 메우고, 사이버‑물리 시스템 개발에서 설계·검증·배포를 하나의 연속된 파이프라인으로 통합하는 데 기여한다.
댓글 및 학술 토론
Loading comments...
의견 남기기