임베디드 소프트웨어는 일반적으로 높은 신뢰성과 가용성을 요구하게 되지만, 많은 수의 임베디드 소프트웨어는 범용으로 개발되는 소프트웨어보다 철저히 테스트 되지 못하고 상대적으로 적은 인력으로 개발이 되는 경향이 있다. 또한, 오늘날 결함에 내성을 가진 소프트웨어 시스템의 요구가 증대되고 있으므로, 임베디드 소프트웨어를 개발하는데 있어서 보다 높은 신뢰성과 가용성을 확보할 수 있는 개발 방법이 필수라고 할 수 있다.
본 논문에서는 임베디드 소프트웨어의 신뢰성을 높이는 개발 방법으로써 네 가지 소프트웨어 프레임워크를 설명하고 있다. 복잡성을 낮추는 기법으로써 기존에 연구된 StateWORKS의 상태 기계를 기반으로 한 제어 흐름과 데이터 흐름을 분리하는 기법을 사용하였다. 신뢰성 높은 소프트웨어 개발을 위해 상태 기계 명세서를 기반으로 동작하는 상태 기계 프레임워크, 중앙 집중화된 데이터 저장소 프레임워크, 그리고 이벤트 반응형 프로그래밍을 위한 프레임워크를 설계 및 구현하였다. 또한, 가용성 높은 소프트웨어 개발을 위한 고장 극복 기법으로써 응용 수준의 체크포인팅 프레임워크를 설계 및 구현하였다. 이로써 프로그래밍 단계에서 제시된 소프트웨어 프레임워크를 활용하여 신뢰성과 가용성 높은 임베디드 소프트웨어를 구현할 수 있는 방법을 제시하였다.
Alternative Abstract
It is necessary to design a development method to ensure high reliability and availability for embedded software. Most software for embedded systems could never be tested as intensively as mass-market software, but the users expect both high reliability and availability, and the needs of fault tolerant software systems is growing.
This thesis represents a development method as software frameworks to ensure high reliability and availability for embedded software. To reduce complexity, we used the key idea of StateWORKS which is based on a total separation between the data and the control flow by using a finite state machine concept. We have designed and implemented four software frameworks to increase reliability and availability. Specification based finite state machine, centralized data repository and event driven programming frameworks are designed and implemented to develop reliable software, and application level checkpointing framework is designed and implemented to develop fault recoverable software. These software frameworks provide an effective way to develop embedded software which demands high reliability and availability in programming phase.