Biçimsel yöntemlerin önemli bir amacı, sistemlerin doğruluğunu otomatik veya insana yönelik yöntemlerle kanıtlamaktır. Bununla birlikte, doğruluk kanıtı verebilseniz bile, sistemin başarısız olmayacağını garanti edemeyebilirsiniz. Örneğin:
- Spesifikasyon sistemi doğru bir şekilde modelleyemeyebilir veya bir üretim sistemi modele göre çok karmaşık olabilir veya sistem çelişkili gereksinimler nedeniyle doğası gereği kusurlu olabilir. Bir spesifikasyonun herhangi bir anlam ifade edip etmediğini test etmek için hangi teknikler bilinmektedir?
- İspat süreci de kusurlu olabilir! Bu çıkarım kurallarının doğru ve meşru olduğunu kim bilebilir? Ayrıca, kanıtlar çok büyük olabilir ve hata içermediklerini nasıl bilebiliriz? De Millo, Lipton ve Perlis'in "Teoremlerin ve Programların Sosyal Süreçleri ve Kanıtları" ndaki eleştirinin kalbi budur. Modern resmi yöntemler araştırmacılar bu eleştiriye nasıl yanıt veriyor?
- Çalışma zamanında, sistemi ciddi şekilde etkileyebilecek birçok belirsiz olay ve faktör vardır. Örneğin, kozmik ışınlar RAM'i öngörülemeyen şekillerde değiştirebilir ve daha genel olarak donanımın, Lamport'un sağlamlığının çok zor olduğu kanıtlanan Bizans hatalarına maruz kalmayacağına dair hiçbir garantimiz yoktur. Böylece statik sistemin doğruluğu sistemin arızalanmayacağını garanti etmez! Gerçek donanımın yanıltıcılığını açıkladığı bilinen herhangi bir teknik var mı?
- Şu anda test, yazılımın çalışmasını sağlamak için sahip olduğumuz en önemli araçtır. Resmi yöntemlerle tamamlayıcı bir araç olması gerektiği anlaşılıyor. Ancak çoğunlukla resmi yöntemlere veya testlere odaklanan araştırmalar görüyorum. İkisini birleştirmek hakkında ne biliniyor?