Tayfun Elmas Serdar Taşıran Koşut-zamanlı Yazılım Bileşenleri için Bir Otomatik Doğrulama Çerçevesi: VyrdMC Tayfun Elmas Serdar Taşıran Koç Üniversitesi Sarıyer, İstanbul http://designtech.ku.edu.tr 17.02.2019 UYMS’05, ODTÜ, Ankara
Koşut-zamanlı Bileşenler Soyutlanmış bir veriyapısı + koşut-zamanlı prosedürler Geniş kapsamlı yazılımlarda yapıtaşı Dosya sistemleri, veritabanları, internet servisleri Standart Java ve C# kütüphaneleri Başarımı artırmak için karışık senkronizasyon mekanizmaları kullanımı Koşut-zaman hatalarına yatkın Koşut-zaman hataları Veri bozulması ve veri kaybı Oluşturulması, tespiti ve yeniden oluşturulması zor Standart test yöntemi yetersiz 17.02.2019 http://designtech.ku.edu.tr
Standart Test Yöntemi Uzun koşut-zamanlı testler çalıştır Çalışma sonucu son durumu kontrol et. Tüm sıralı çalışmaları kontrol et. N metot için N! farklı sıralama Ara durumları denetlemek çok daha pahalı. Her iş parçacağından kaç metot sona erdi? Düşük gözlemlenebilirlik Girdi-çıktı ilişkisi denetlenir. Hata analizi zor Yanlış pozitifler: Hatalı durumlar kaçırılabilir. 17.02.2019 http://designtech.ku.edu.tr
Çalışma Zamanı Doğrulama: Vyrd Test Birimi Koşut-zamanlı metot çağrıları Gerçekleştirim Yürütmeyi günlüğe kaydet Call Insert(3) Unlock A[0] A[0].elt=3 Call LookUp(3) Return“success” Unlock A[1] A[1].elt=4 read A[0] Return “true” A[0].elt=null Call Insert(4) Call Delete(3) ... Günlükteki olayları yeniden çalıştırılır. Olayları günlükten oku Çağrılan metotları sıralı çalıştırılır. Yürütme-tekrar birimi Gerçekleştirim* Belirtim* Arıtma denetleme Yürütme izi [ Gerçekleştirim ] Yürütme izi [ Belirtim ] 17.02.2019 http://designtech.ku.edu.tr
Doğruluk Kriteri: Arıtma (Detay cikar) Belirtim: Bileşenin sıralı ortamdaki davranışı tanımlar. Gerçekleştirim: Koşut-zamanlı ortamda çalışır. Kriter: Gerçekleştirime ait her koşut-zamanlı çalışma için belirtime ait denk sıra-düzenli bir çalışma olmalıdır. Reduction, purity: Karmaşık yazılımlar için yanlış negatifler. Sequential consistency, linearizability: Belirtim koşut-zamanlı özel durumlarda yetersiz. Arıtma: Belirtim koşut-zamanlı durumları göz önüne alır. Yürütme boyunca denklik Girdi/çıktı arıtma: Girdi çıktı verisi Görüş arıtma: Soyut veri yapıları Metot-yerel iddialardan daha kapsamlı Yüksek gözlemlenebilirlik S. Taşıran and S. Qadeer. Runtime refinement checking of concurrent data structures. Proceedings of the Fourth Workshop on Runtime Verification (RV’04), İspanya, 2004. 17.02.2019 http://designtech.ku.edu.tr
Çalışma Zamanı Arıtma Denetimi Yürütme izlerinin arıtma için denetlenmesi Çalışma süresince oluşan olayları izle. Yürütme izi: Olayların “bütün-sıralı” dizisi Toplanan veriyi arıtma için analiz et. Endüstriyel seviyede yazılımlarda etkin denetim Test ve etraflı doğrulama arasında Kapsamanın ölçülmesi önemli 17.02.2019 http://designtech.ku.edu.tr
Teslim Noktası Teslim noktası: Metodun tüm etkisi dış ortama aktarılması Her metot çalışması için tek bir teslim noktası Teslim noktalarının bütün-sırası: Tanık-sıra Koşut-zamanlı çalışma için tek bir sıralama Her metot için Birden fazla teslim noktası Her çalışmada sadece bir teslim noktası Yürütme boyunca teslim noktalarında denetleme Girdi/çıktı-arıtma denetimi Görünüm-arıtma denetimi 17.02.2019 http://designtech.ku.edu.tr
Çalışma Zamanı Doğrulama: Vyrd Test Birimi Koşut-zamanlı metot çağrıları Gerçekleştirim Yürütmeyi günlüğe kaydet Call Insert(3) Unlock A[0] A[0].elt=3 Call LookUp(3) Return“success” Unlock A[1] A[1].elt=4 read A[0] Return “true” A[0].elt=null Call Insert(4) Call Delete(3) ... Günlükteki olayları yeniden çalıştırılır. Olayları günlükten oku Çağrılan metotları sıralı çalıştırılır. Yürütme-tekrar birimi Gerçekleştirim* Belirtim* Arıtma denetleme Yürütme izi [ Gerçekleştirim ] Yürütme izi [ Belirtim ] 17.02.2019 http://designtech.ku.edu.tr
Çalışma Zamanı Doğrulama: Vyrd İletişim günlük ile sağlanır Gerçek-zamanlı/Çevrimdışı denetleme Programa en az düzeyde müdahale Tayfun Elmas, Serdar Taşıran, Shaz Qadeer. VYRD: VerifYing Concurrent Programs by Runtime Refinement-Violation Detection. ACM SIGPLAN 2005 Conference on Prog. Lang. Design and Implementation (PLDI'05). Chicago, Illinois, U.S., June 12-15 2005. 17.02.2019 http://designtech.ku.edu.tr
Model Denetleyici Kullanımı Test-bazlı yaklaşımlarda kapsama problemi Kapsamanın sürekli olarak artırılması Testin kontrollü çalıştırılması İş parçacığı zamanlaması kontrolü 17.02.2019 http://designtech.ku.edu.tr
Otomatik Doğrulama Çerçevesi: VyrdMC MODEL DENETLEYİCİ Test Birimi Koşut-zamanlı metot çağrıları Gerçekleştirim Yürütmeyi günlüğe kaydet Call Insert(3) Unlock A[0] A[0].elt=3 Call LookUp(3) Return“success” Unlock A[1] A[1].elt=4 read A[0] Return “true” A[0].elt=null Call Insert(4) Call Delete(3) ... Günlükteki olayları yeniden çalıştırılır. Olayları günlükten oku Çağrılan metotları sıralı çalıştırılır. Yürütme-tekrar birimi Gerçekleştirim* Belirtim* Arıtma denetleme Yürütme izi [ Gerçekleştirim ] Yürütme izi [ Belirtim ] ÇALIŞMA-ZAMANI ORTAMI 17.02.2019 http://designtech.ku.edu.tr
Otomatik Doğrulama Çerçevesi: VyrdMC Model denetleyici kullanımı Kapsamanın sürekli artırılması Çalışma-zamanı ortamı (sanal makine) kullanımı Çalışmanın tam kontrolü, sürecin otomatikleştirilmesi Tayfun Elmas, Serdar Taşıran. VyrdMC: Driving Runtime Refinement Checking with Model Checkers. Fifth Workshop on Runtime Verification (RV'05). The University of Edinburgh, Scotland, UK. July 12, 2005. 17.02.2019 http://designtech.ku.edu.tr
Çalışma-zamanı Ortamı Kullanımı Örnek: Java PathFinder üzerinde Java sanal makinesi Atomik kod parçalarının otomatik kategorizasyonu: byte-code komutları Çalışmanın izlenerek günlüğe kaydedilmesi: her komut için standart kayıt Çalışmanın yeniden oynatılması: komutlar aynı mekanizmayla işletilir 17.02.2019 http://designtech.ku.edu.tr
Kosut-zamanliliktan kaynaklanan Hataya Odaklanmış Test Amaç: Metotlar arası koşut-zaman karakteristiğini ortaya çıkarmak Bağımlı kod parçalarının koşut-zamanlı çalıştırılması Her iş parçacığı için tek bir metot Metotlar ortak paylaşımlı değişkenler üzerine yönlendirilir. 17.02.2019 http://designtech.ku.edu.tr
Deneyimler (Vyrd) Windows NT, Scan dosya sistemi Boxwood dağıtık veri depolama sistemi java.util 17.02.2019 http://designtech.ku.edu.tr
İleri Doğrulama Yöntemleri (optional) Katmanlı bileşenlerin doğrulanması Tüm katmanlar aynı anda denetlenir: Ortak test ortamı Her bileşen için ayrı kaynak ve denetleme Kısmi-sıralı indirgeme tekniklerinin geliştirilmesi İçsel veri yapısından yararlanılması Sadece ilgilenilen veri ve kodun denetlenmesi Güvenilirlikten (soundness) taviz Örnek: İkili ağacın Ekle metodu için sadece eklemeyi yapan kod parçası 17.02.2019 http://designtech.ku.edu.tr
Yazılım Sürecine Entegrasyonu Erken denetim, az hata Hatalar sürecin sonraki aşamalarına aktarılır. Karmaşık kod, hata analizini zorlaştırır. Eklenen her metot testlere eklenir ve denetlenir. Programcının sorumlulukları Soyutlama fonksiyonunun yazılması Denetlenecek metotların belirlenmesi Teslim noktalarının tespiti ve kodla donatılması 17.02.2019 http://designtech.ku.edu.tr
Sonuç Arıtma: Koşut-zamanlı bileşenler için doğruluk kriteri Kapsamlı doğruluk değerlendirme Yüksek gözlemlenebilirlik Üst seviye koşut-zaman hatalarının tespiti Vyrd: Çalışma zamanı arıtma denetleme Yürütmenin günlük üzerinde takibi ve denetlenmesi Endüstriyel seviye yazılımlarda etkili VyrdMC: Otomatik arıtma denetleme çerçevesi Model denetleyici ile bütünleşme: Çalışmanın kontrolü Çalışma-zamanı ortamı: otomatik yürütme kontrolü Kapsamanın ölçülmesi ve kontrolü Serdar Taşıran, Tayfun Elmas, Güven Bölükbaşı, M. Erkan Keremoğlu. A Novel Test Coverage Metric for Concurrently-Accessed Software Components. Fifth International Workshop on Formal Approaches to Testing of Software (FATES 2005). University of Edinburgh, UK, July 11, 2005. 17.02.2019 http://designtech.ku.edu.tr
Sorular Koşut-zamanlı Yazılım Bileşenleri için Bir Otomatik Doğrulama Çerçevesi: VyrdMC Tayfun Elmas Serdar Taşıran Koç Üniversitesi Sarıyer, İstanbul 17.02.2019 http://designtech.ku.edu.tr