Skip to main content
QUICK REVIEW

[논문 리뷰] Expressing and verifying embedded software requirements.

Alexandr Naumchev, Bertrand Meyer|arXiv (Cornell University)|2017. 10. 08.
Advanced Software Engineering Methodologies인용 수 3
한 줄 요약

이 논문은 AutoReq를 제안하며, 형식적 주장(정의)을 사용하여 프로그래밍 언어로 직접 임베디드 소프트웨어 요구사항을 표현함으로써 AutoProof와 같은 프로그램 증명기로 조기에 검증할 수 있도록 한다. Design by Contract 및 호어 스타일 논리의 통합을 통해 일관성과 오류 탐지를 조기에 보장하며, 착륙기어 시스템 사례 연구를 통해 기계적으로 검증된 정확성 증명을 제시한다.

ABSTRACT

Writing requirements for embedded software is pointless unless they reflect actual needs and the final software implements them. In usual approaches, the use of different notations for requirements (often natural language) and code (a programming language) makes both conditions elusive. To address the problem, we propose to write requirements in the programming language itself. The expected advantages of this seamless approach, called AutoReq include: avoiding the potentially costly miss due to the use of different notations; facilitating software change and evolution, by making it easier to update code when requirements change and conversely; benefiting from the remarkable expressive power of modern object-oriented programming languages, while retaining a level of abstraction appropriate for requirements; leveraging, in both requirements and code, the ideas of Design by Contract, including (as the article shows) applying Hoare-style assertions to express temporal-logic-style properties and timing constraints; and taking advantage of the powerful verification tools that have been developed in recent years. The last goal, verification, is a focus of this article. While the idea of verifying requirements is not widely applied, the use of a precise formalism and a modern program prover (in our case, AutoProof for Eiffel) makes it possible at a very early stage to identify errors and inconsistencies which would, if not caught in the requirements, contaminate the final code. Applying the approach to a well-documented industrial example (a landing gear system) allowed a mechanical proof of consistency and uncovered an error in a previously published discussion of the problem.

연구 동기 및 목표

  • 비형식적인 자연어 요구사항과 형식적 코드 사이의 격차를 해소하기 위해 요구사항과 구현을 동일한 표기법으로 통합하는 것.
  • 요구사항과 구현에 서로 다른 표기법을 사용함으로써 발생하는 고비용 오해를 줄이는 것.
  • 요구사항의 형식적 검증을 통해 일관성 및 오류를 조기에 탐지할 수 있도록 하는 것.
  • 현대적인 프로그램 증명 도구를 활용하여 개발 초기 단계에서 요구사항을 검증하는 것.
  • 프로그래밍 언어에 형식적 주장으로 요구사항을 작성하는 것의 실현 가능성과 이점을 입증하는 것.

제안 방법

  • 객체지향적 구성요소와 형식적 계약을 사용하여 Eiffel 언어로 요구사항을 직접 프로그래밍 언어에 표현하는 것.
  • 호어 스타일의 주장(정의)을 사용하여 코드 내부에서 시간적 및 시간 관련 성질을 명시하는 것.
  • AutoProof 증명기로 코드 내의 주장으로 표현된 요구사항을 형식적으로 검증하는 것.
  • 정확성과 일관성을 요구사항 수준에서 보장하기 위해 Design by Contract 원칙을 통합하는 것.
  • 자연어 요구사항을 정확하고 실행 가능하며 검증 가능한 프로그래밍 언어의 주장으로 매핑하는 것.
  • 실제 산업 사례인 착륙기어 제어 시스템을 대상으로 접근법을 검증하는 것.

실험 결과

연구 질문

  • RQ1임베디드 소프트웨어 요구사항을 프로그래밍 언어와 형식적 주장으로 효과적으로 표현하고 검증할 수 있는가?
  • RQ2요구사항을 코드에 표현하는 방식이 전통적인 자연어 접근 방식에 비해 일관성 및 오류 위험을 줄이는가?
  • RQ3현대적인 프로그램 증명기가 개발 초기 단계에서 요구사항을 얼마나 잘 검증할 수 있는가?
  • RQ4요구사항과 코드에 대해 통일된 표기법을 사용할 경우 소프트웨어의 진화 및 유지보수에 어떤 영향을 미치는가?
  • RQ5요구사항의 형식적 검증은 이전 비형식적 분석에서 발견되지 않은 오류를 드러내는가?

주요 결과

  • AutoReq 접근법은 착륙기어 시스템에 대해 기계적으로 검증된 일관성 증명을 가능하게 하여 형식적 요구사항 검증의 실현 가능성을 입증하였다.
  • 기존에 발표된 착륙기어 시스템 분석에서 오류가 형식적 검증을 통해 드러났다.
  • 프로그래밍 언어 내의 주장 사용으로 시간 및 시간 논리 성질을 정확하게 표현할 수 있었다.
  • 요구사항 단계에서의 형식적 검증은 최종 구현으로 이어질 수 있는 일관성 없는 요소들을 조기에 탐지했다.
  • Design by Contract와 프로그램 증명 도구의 통합은 논리적 결함을 조기에 탐지하는 데 기여했다.
  • 요구사항에서 코드로의 원활한 전환은 오해의 위험을 줄이고 유지보수성을 향상시켰다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.