정형 기법 및 임베디드 시스템 검증
요구사항과 설계를 수학적 모델로 옮겨 분석하고, 실제 코드는 사용 로그와 시뮬레이션 환경에서 검증합니다. 연구실이 1994년부터 이어온 가장 오래된 축입니다.
연구 배경
임베디드 소프트웨어의 결함은 함수 하나를 잘못 짜서 생기는 것보다 구성요소 사이의 상호작용에서 생기는 것이 더 잡기 어렵습니다. 전역변수를 여러 모듈이 공유하거나, 센서 값이 다른 센서의 동작 조건을 바꾸는 식의 간접 의존성은 코드만 읽어서는 드러나지 않습니다. 그리고 이런 결함은 특정 실행 순서에서만 재현됩니다.
또 하나의 제약은 대상 하드웨어입니다. 가전, 차량, 함정 체계처럼 실물 장비가 있어야 동작하는 소프트웨어는 테스트 한 번의 비용이 크고, 개발 초기에는 장비 자체가 없습니다. 검증을 뒤로 미루면 설계 결함이 통합 단계에서야 드러납니다.
주요 접근
페트리넷 기반 정형 분석
요구사항과 분산 프로세스를 모듈화 페트리넷으로 옮겨 도달성과 안전성을 분석합니다. 안전성은 정방향 도달성만이 아니라 위험 상태에서 거꾸로 짚어 올라가는 역방향 분석으로도 확인합니다. 상태 폭발을 다루기 위해 모델을 잘라 부분만 분석하는 슬라이싱과, 병행 유한상태머신의 상태 공간을 병렬로 순회하는 기법을 함께 연구했습니다. 유스케이스를 모듈화 페트리넷으로 통합해 요구사항 단계에서 상호작용을 분석하는 방향으로도 이어졌습니다.
LTS 기반 합성적 안전성 및 타이밍 분석
분산 임베디드 시스템은 구성요소를 하나로 합쳐서 검증하면 상태 수가 감당이 안 됩니다. LTS 등가 관계로 구성요소를 축약한 뒤 합성해 올라가는 합성적(compositional) 검증과, 모듈화 TER net으로 실시간 타이밍 제약을 합성하고 검사하는 기법을 다뤘습니다.