Algoritmik program hata ayıklama - Algorithmic program debugging

Algoritmik hata ayıklama (olarak da adlandırılır bildirim temelli hata ayıklama) bir hata ayıklama alt sonuçlarını karşılaştıran teknikhesaplamalar neyle programcı amaçlanan. Teknik, her şeyin dahili bir temsilini oluşturur. hesaplamalar ve sırasında gerçekleştirilen alt hesaplamalar icra bir buggy programı ve sonra sorar programcı hakkında doğruluk bu tür hesaplamaların. Sorarak programcı sorular veya bir resmi şartname, sistem tam olarak nerede olduğunu belirleyebilir program a böcek bulunur. Hata ayıklama teknikler, harcanan zamanı ve çabayı önemli ölçüde azaltabilir hata ayıklama.

Genel Bakış

Program hata ayıklama yazılım geliştirmenin son derece yaygın bir parçasıdır. 1980'lere kadar her programcı tarafından uygulanan program hata ayıklama zanaatı herhangi bir teorik temele dayanmıyordu.[1] 1980'lerin başında, program hata ayıklamasına yönelik sistematik ve ilkeli yaklaşımlar geliştirildi. Genel olarak, bir programcının programın ne yapması gerektiğine dair belirli bir niyeti olduğunda, ancak gerçekte yazılan program belirli bir durumda amaçlanandan farklı bir davranış sergilediğinde bir hata oluşur. Hata ayıklama sürecini düzenlemenin bir yolu, onu (en azından kısmen) bir algoritmik hata ayıklama tekniğiyle otomatikleştirmektir.[2] Algoritmik hata ayıklama fikri, programcıyı hata ayıklama sürecinde etkileşimli olarak yönlendiren bir araca sahip olmaktır: Bunu, programcıya olası hata kaynakları hakkında sorarak yapar. Algoritmik hata ayıklama tekniği, hatalı bir programın (bir yürütme ağacı) yürütülmesi sırasında gerçekleştirilen tüm hesaplamaların ve alt hesaplamaların dahili bir temsilini oluşturur. Ardından, programcıya bu tür hesaplamaların doğruluğunu sorar. Programcı, sonuç doğru olduğunda "EVET" veya sonuç yanlış olduğunda "HAYIR" yanıtını verir. Bazı algoritmik hata ayıklayıcılar, programcı yanıt veremediğinde (örneğin, soru çok karmaşık olduğu için) "bilmiyorum" yanıtını da kabul eder. Böylece, programcının cevapları, programın doğru kısımlarını atarak izole edilene kadar hatanın aranmasına rehberlik eder. Algoritmik hata ayıklama süreci her seferinde bir hata bulur. Farklı hatalar bulmak için, her farklı hata için işlem yeniden başlatılmalıdır.

Kökenler, şimdiki ve gelecekteki yönler

Algoritmik hata ayıklama ilk olarak Ehud Shapiro Yale Üniversitesi'ndeki doktora araştırması sırasında, doktora tezinde anlatıldığı gibi,[3] 1982 ACM Seçkin Tezi seçildi. Shapiro, Prolog'da algoritmik hata ayıklama yöntemini uyguladı[4] (genel amaçlı bir mantık programlama dili) hata ayıklama için mantık programları. Durumunda mantık programları, programın amaçlanan davranışı bir modeldir (bir dizi basit doğru ifade) ve hatalar program olarak eksiklik (doğru bir ifadeyi kanıtlayamama) veya yanlışlık (yanlış bir ifadeyi kanıtlama yeteneği). Algoritma, programdaki yanlış bir ifadeyi tanımlar ve buna karşı bir örnek veya programa veya genellemesinin programa eklenmesi gerektiğine dair eksik bir gerçek ifade sağlar. İşlemek için bir yöntem feshetmeme ayrıca geliştirildi. Algoritmik hata ayıklama alanındaki araştırma ve geliştirme, Prolog ve diğerlerinde hata ayıklama için orijinal algoritmalar üzerinde büyük iyileştirmeler yapmıştır ve fikirleri aşağıdaki gibi diğer dil paradigmalarına genişletmiştir. işlevsel diller ve nesne yönelimli diller.[5]Algoritmik hata ayıklama, tanıtılmasından bu yana otuz yıl, hala bilgisayar bilimi araştırmalarının aktif bir alanıdır [6] ve görünürde her derde deva olmadığı için muhtemelen onlarca yıl böyle kalacaktır.

Referanslar

  1. ^ Silva, Josep. "Algoritmik hata ayıklama stratejileri üzerine bir araştırma." Mühendislik Yazılımındaki Gelişmeler 42.11 (2011): 976-991/
  2. ^ Zeller, Andreas. Programlar neden başarısız: sistematik hata ayıklama kılavuzu. Elsevier, 2009./
  3. ^ Shapiro, Ehud Y. (1983). Algoritmik program hata ayıklama. Cambridge, Mass: MIT Press. ISBN  0-262-19218-7
  4. ^ Clocksin, William F. ve Christopher S. Mellish. PROLOG'da programlama. Cilt 4. Berlin vb .: Springer, 1987.
  5. ^ Naish, Lee. Bildirim temelli bir hata ayıklama şeması. Bilgisayar Bilimleri Bölümü, Melbourne Üniversitesi, 1995.
  6. ^ Caballero, Rafael, Riesco, Adrián, Silva, Josep. Algoritmik hata ayıklama araştırması. ACM Computing Surveys, Cilt 50 Sayı 4, 2017.