공식적인 방법의 중요한 목표는 자동화 된 또는 사람이 지시하는 방법으로 시스템의 정확성을 입증하는 것입니다. 그러나 올바른 증거를 제공 할 수 있어도 시스템이 실패하지 않을 것이라고 보장하지 못할 수 있습니다. 예를 들면 다음과 같습니다.
- 사양이 시스템을 올바르게 모델링하지 않거나 생산 시스템이 모델링하기에 너무 복잡하거나 모순 된 요구 사항으로 인해 시스템에 결함이있을 수 있습니다. 사양이 의미가 있는지 테스트하는 기술은 무엇입니까?
- 증명 과정에도 결함이있을 수 있습니다! 이러한 추론 규칙이 정확하고 합법적이라는 것을 누가 알 수 있습니까? 또한 증명은 매우 클 수 있으며 오류가 없다는 것을 어떻게 알 수 있습니까? 이것은 De Millo, Lipton 및 Perlis의 "사회적 과정과 정리의 정리와 프로그램"에서 비판의 핵심입니다. 현대의 공식적인 방법론 연구자들은이 비평에 어떻게 대응 하는가?
- 런타임에는 시스템에 심각한 영향을 줄 수있는 많은 비 결정적 이벤트 및 요소가 있습니다. 예를 들어, 우주 광선은 예측할 수없는 방식으로 RAM을 변경할 수 있으며,보다 일반적으로 Lamport가 견고하게하기 어려운 비잔틴 결함을 하드웨어가받지 않을 것이라는 보장은 없습니다. 따라서 정적 시스템의 정확성으로 인해 시스템이 실패하지는 않습니다. 실제 하드웨어의 오류를 설명하는 기술이 있습니까?
- 현재 테스트는 소프트웨어 작동을 위해 가장 중요한 도구입니다. 공식적인 방법으로 보완 도구가되어야합니다. 그러나 나는 공식적인 방법이나 테스트에 중점을 둔 연구를 주로 본다. 두 가지를 결합하는 것에 대해 알려진 것은 무엇입니까?