औपचारिक तरीकों का एक महत्वपूर्ण लक्ष्य सिस्टम की शुद्धता को साबित करना है, या तो स्वचालित या मानव-निर्देशित साधनों द्वारा। हालाँकि, ऐसा लगता है कि भले ही आप एक सही प्रमाण दे सकें, आप यह गारंटी नहीं दे सकते कि सिस्टम विफल नहीं होगा। उदाहरण के लिए:
- विनिर्देश सिस्टम को सही ढंग से मॉडल नहीं कर सकता है, या उत्पादन प्रणाली मॉडल के लिए बहुत जटिल हो सकती है, या सिस्टम विरोधाभासी आवश्यकताओं के कारण स्वाभाविक रूप से त्रुटिपूर्ण हो सकता है। क्या तकनीकों का परीक्षण करने के लिए जाना जाता है कि क्या कोई विनिर्देश बिल्कुल भी समझ में आता है?
- प्रमाण प्रक्रिया भी त्रुटिपूर्ण हो सकती है! कौन जानता है कि उन अनुमान नियम सही और वैध हैं? इसके अलावा, सबूत बहुत बड़े हो सकते हैं, और हम कैसे जानते हैं कि उनमें त्रुटियां नहीं हैं? यह डी मिलो, लिप्टन और पेरलिस की "सामाजिक प्रक्रियाओं और सिद्धांतों और कार्यक्रमों के प्रमाण" में आलोचक का दिल है। आधुनिक औपचारिक तरीके शोधकर्ता इस समालोचना का जवाब कैसे देते हैं?
- रनटाइम के दौरान, कई nondeterministic घटनाएं और कारक हैं जो सिस्टम को गंभीरता से प्रभावित कर सकते हैं। उदाहरण के लिए, कॉस्मिक किरणें रैम को अप्रत्याशित तरीके से बदल सकती हैं, और आम तौर पर हमारे पास कोई गारंटी नहीं है कि हार्डवेयर बीजान्टिन दोषों को नहीं झेलेंगे, जो कि लैमपोर्ट ने साबित किया है कि उनके खिलाफ मजबूत होना बहुत मुश्किल है। तो स्थिर प्रणाली की शुद्धता की गारंटी नहीं है कि सिस्टम विफल नहीं होगा! क्या वास्तविक हार्डवेयर की गिरावट के लिए कोई तकनीक ज्ञात है?
- वर्तमान में, परीक्षण सबसे महत्वपूर्ण उपकरण है जो हमारे पास उस सॉफ़्टवेयर कार्यों को स्थापित करने के लिए है। ऐसा लगता है कि यह औपचारिक तरीकों के साथ एक पूरक उपकरण होना चाहिए। हालांकि, मैं ज्यादातर शोध देखता हूं जो या तो औपचारिक तरीकों या परीक्षण पर केंद्रित है। दोनों के संयोजन के बारे में क्या जाना जाता है?