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 23.02.2019 UYMS’05, ODTÜ, Ankara
Koşut-zamanlı Bileşenler Soyut veri yapıları İçsel veri yapı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ınlık Hedef: Koşut-zaman hataları Veri bozulması ve veri kaybı Oluşturulması, tespiti ve yeniden oluşturulması zor 23.02.2019 http://designtech.ku.edu.tr
Doğruluk Kriteri: Arıtma (Refinement) 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. Çalışma: Girdi/çıktı değerleriyle donatılmış metot çağrıları Yaygın kriterler karmaşık yazılımlarda fazla sınırlı Sequential consistency, linearizability Reduction, purity Arıtma: Belirtim koşut-zamanlı durumları göz önüne alır (az sınırlı). Yürütme boyunca denklik Girdi/çıktı arıtma: Girdi/çıktı değerleri Görüş arıtma: Soyut veri yapıları Metot-yerel iddialardan (assertion) daha kapsamlı 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. 23.02.2019 http://designtech.ku.edu.tr
Standart Test Yöntemi Uzun koşut-zamanlı testler Çalışma sonucu son durumu kontrol et. Tüm farklı sıralı çalışmaları kontrol et. Ara durumları denetlemek çok daha pahalı. Her iş parçacığından kaç metot sona erdi? Düşük gözlemlenebilirlik Girdi-çıktı (argümanlar/dönüş değerleri) ilişkisi denetlenir. Hata analizi zor Yanlış pozitifler: Hatalı durumlar kaçırılabilir. Standart test yöntemi yetersiz 23.02.2019 http://designtech.ku.edu.tr
Çalışma-Zamanı Arıtma Denetimi Yürütme izi: Çalışma sırasında olayların detaylı kaydı Metot çağrıları, dönüşler Atomik operasyonlar Yürütme izlerinin arıtma için denetlenmesi Yüksek gözlemlenebilirlik Ç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 23.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 ] 23.02.2019 http://designtech.ku.edu.tr
Teslim Noktası Teslim noktası: Çalışma sırasında metodun tüm etkisi dış ortama görünür hale geldiği nokta Her metot için Kod boyunca birden fazla teslim noktası tanımlanabilir Her çalışmada sadece bir teslim noktası geçerli Teslim noktalarının bütün-sırası: Tanık-sıra Koşut-zamanlı çalışma için tek bir sıralama Yürütme boyunca teslim noktalarında denetleme 23.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 Her iş parçacığı için ayrı günlük Teslim noktalarında arıtma denetimi Girdi/çıktı-arıtma denetimi Argüman/dönüş değerleri arasında uyum Görünüm-arıtma denetimi Soyut veri yapıları (durum uzayları) arasında uyum Ortak soyut durum uzaylarına geçiş: Soyutlama fonksiyonu Hatanın yerinde tespiti 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. 23.02.2019 http://designtech.ku.edu.tr
Otomatik Doğrulama Çerçevesi: VyrdMC Test-bazlı yaklaşımlarda kapsama problemi Model denetleyici kullanımı Kapsamanın sürekli artırılması Çalışma-zamanı ortamı (sanal makine) kullanımı Çalışmanın (iş parçacığı zamanlaması) tam kontrolü Doğrulama sürecinin otomatikleştirilmesi Örnek: Java PathFinder (Nasa), XRT (MSR) 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. 23.02.2019 http://designtech.ku.edu.tr
Otomatik Doğrulama Çerçevesi: VyrdMC MODEL DENETLEYİCİ / ÇALIŞMA-ZAMANI ORTAMI 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 23.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ı farklı bileşenlere ait metotlar Ç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 23.02.2019 http://designtech.ku.edu.tr
Koşut-zaman Hatalarına 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. Argümanlar ayarlanarak Metot sayısını zamanla arttır Test birimi {M1, M2, M3, ...} M1 M2 M3 ..... Gerçekleştirim 23.02.2019 http://designtech.ku.edu.tr
Deneyimler (Vyrd) Windows NT, Scan dosya sistemi (≈ 5K satır) Cache modülünde koşut-zaman hatası Boxwood dağıtık veri depolama sistemi (MSR) BLinkTree modülü ve ilgili modüller (≈ 4K satır) Önceden tespit edilemeyen kalıcı veri bozulması java.util (≈ 1K satır) Vector ve StringBuffer Uygun şekilde korunmayan değişkenler Kod donatımı: Her metot (200 satır) için 5-6 satır Çalışma süresi: 1,5x - 3x (yürütme tekrarı maliyeti) 23.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ı 23.02.2019 http://designtech.ku.edu.tr
Sonuç Arıtma: Koşut-zamanlı bileşenler için kapsamlı doğruluk kriteri Güncel kriterlerce reddedilen karışık mekanizmaların kabulu Ü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 Yüksek gözlemlenebilirlik Endüstriyel seviye yazılımlarda etkili VyrdMC: Otomatik arıtma denetleme çerçevesi Model denetleyici ile bütünleşme: Kapsamanın sürekli artışı Çalışma-zamanı ortamı: otomatik yürütme kontrolü Gelecek çalışma: 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. 23.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 23.02.2019 http://designtech.ku.edu.tr
İleri Doğrulama Yöntemleri 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ı 23.02.2019 http://designtech.ku.edu.tr