Doğruluk (bilgisayar bilimi) - Correctness (computer science)

İçinde teorik bilgisayar bilimi, doğruluk bir algoritma algoritmanın doğru olduğu söylendiğinde ileri sürülür. Şartname. İşlevsel doğruluk, algoritmanın girdi-çıktı davranışını ifade eder (yani, her girdi için beklenen çıktıyı üretir).[1]

Arasında bir ayrım yapılır kısmi doğruluk, bu da bir cevap döndürülürse doğru olacağını ve toplam doğruluk, bu ayrıca algoritmanın sonlandırılmasını gerektirir. Genel bir çözüm olmadığı için durdurma sorunu, toplam doğruluk değil karar verilebilir. Bir sonlandırma kanıtı bir tür matematiksel kanıt kritik bir rol oynayan resmi doğrulama çünkü bir algoritmanın toplam doğruluğu sonlandırmaya bağlıdır.[2]

Örneğin, art arda arama tamsayılar 1, 2, 3,… bir fenomenin bir örneğini bulup bulamayacağımızı görmek için - mükemmel numara —Kısmen doğru bir program yazmak oldukça kolaydır ( çarpanlara ayırma her bir tamsayıyı hesaplamak için kısım toplamı ). Ancak bu programın tamamen doğru olduğunu söylemek, şu anda bilinmiyor içinde sayı teorisi.

Hem algoritmanın hem de spesifikasyonun resmi olarak verildiğini varsayarak, bir kanıtın matematiksel bir kanıt olması gerekir. Özellikle, belirli bir makinede algoritmayı uygulayan belirli bir program için bir doğruluk iddiası olması beklenmez. Bu, sınırlamalar gibi düşünceleri içerir. bilgisayar hafızası.

Bir derin sonuç içinde kanıt teorisi, Curry-Howard yazışmaları, işlevsel doğruluğun bir kanıtı olduğunu belirtir. yapıcı mantık belirli bir programa karşılık gelir lambda hesabı. Bir ispatı bu şekilde dönüştürmek denir program çıkarma.

Hoare mantığı belirli resmi sistem bilgisayar programlarının doğruluğu konusunda titiz bir mantık yürütmek için.[3] Programlama dili anlambilimini tanımlamak için aksiyomatik teknikleri kullanır ve Hoare üçlüleri olarak bilinen iddialar aracılığıyla programların doğruluğunu tartışır.

Yazılım testi bir programın veya sistemin bir özniteliğini veya yeteneğini değerlendirmeyi ve gerekli sonuçları karşılayıp karşılamadığını belirlemeyi amaçlayan herhangi bir faaliyettir. Yazılım kalitesi için çok önemli olmasına ve programcılar ve test uzmanları tarafından yaygın olarak uygulanmasına rağmen, yazılım ilkelerinin sınırlı anlaşılması nedeniyle yazılım testi hala bir sanat olarak kalmaktadır. Yazılım testindeki zorluk, yazılımın karmaşıklığından kaynaklanmaktadır: orta düzeyde karmaşıklığa sahip bir programı tamamen test edemeyiz. Test, hata ayıklamadan daha fazlasıdır. Testin amacı kalite güvencesi, doğrulama ve onaylama veya güvenilirlik tahmini olabilir. Test, genel bir metrik olarak da kullanılabilir. Doğruluk testi ve güvenilirlik testi, iki ana test alanıdır. Yazılım testi, bütçe, zaman ve kalite arasında bir değiş tokuştur.[4]

Ayrıca bakınız

Notlar

  1. ^ Dunlop, Douglas D .; Basili, Victor R. (Haziran 1982). "Fonksiyonel Doğruluğun Karşılaştırmalı Analizi". ACM'nin iletişimi. 14 (2): 229–244. doi:10.1145/356876.356881.
  2. ^ Manna, Zohar; Pnueli, Amir (Eylül 1974). "Programların toplam doğruluğuna aksiyomatik yaklaşım". Acta Informatica. 3 (3): 243–263. doi:10.1007 / BF00288637.
  3. ^ Hoare, C.A. R. (Ekim 1969). "Bilgisayar programlaması için belitsel bir temel" (PDF). ACM'nin iletişimi. 12 (10): 576–580. CiteSeerX  10.1.1.116.2392. doi:10.1145/363235.363259. Arşivlenen orijinal (PDF) 4 Mart 2016.
  4. ^ Pan, Jiantao (İlkbahar 1999). "Yazılım testi" (kurs). Carnegie Mellon Üniversitesi. Alındı 21 Kasım 2017.

Referanslar