190 likes | 404 Views
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. Koşut-zamanlı Bileşenler. Soyutlanmış bir veriyapısı + koşut-zamanlı prosedürler
E N D
Koşut-zamanlı Yazılım Bileşenleri içinBir Otomatik Doğrulama Çerçevesi: VyrdMC Tayfun Elmas Serdar Taşıran Koç Üniversitesi Sarıyer, İstanbul http://designtech.ku.edu.tr 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 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. http://designtech.ku.edu.tr
... Return“success” Return“success” Return“success” Call LookUp(3) Call Insert(3) Unlock A[1] Return “true” A[0].elt=3 Unlock A[0] read A[0] Unlock A[0] A[1].elt=4 Call Insert(4) A[0].elt=null Call Delete(3) Ç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 Olayları günlükten oku Günlükteki olaylarıyeniden çalıştırılır. Çağrılan metotları sıralı çalıştırılır. Yürütme-tekrarbirimi Gerçekleştirim* Belirtim* Arıtma denetleme Yürütme izi[ Belirtim ] Yürütme izi[ Gerçekleştirim ] 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. 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 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 http://designtech.ku.edu.tr
... Return“success” Return“success” Return“success” Call LookUp(3) Call Insert(3) Unlock A[1] Return “true” A[0].elt=3 Unlock A[0] read A[0] Unlock A[0] A[1].elt=4 Call Insert(4) A[0].elt=null Call Delete(3) Ç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 Olayları günlükten oku Günlükteki olaylarıyeniden çalıştırılır. Çağrılan metotları sıralı çalıştırılır. Yürütme-tekrarbirimi Gerçekleştirim* Belirtim* Arıtma denetleme Yürütme izi[ Belirtim ] Yürütme izi[ Gerçekleştirim ] 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. 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ü http://designtech.ku.edu.tr
... Return“success” Return“success” Return“success” Unlock A[1] Return “true” Call LookUp(3) Unlock A[0] Call Insert(3) A[0].elt=3 read A[0] A[1].elt=4 Unlock A[0] Call Insert(4) A[0].elt=null Call Delete(3) 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 Olayları günlükten oku Günlükteki olaylarıyeniden çalıştırılır. Çağrılan metotları sıralı çalıştırılır. Yürütme-tekrarbirimi Gerçekleştirim* Belirtim* Arıtma denetleme Yürütme izi[ Belirtim ] Yürütme izi[ Gerçekleştirim ] ÇALIŞMA-ZAMANI ORTAMI http://designtech.ku.edu.tr
Otomatik Doğrulama Çerçevesi: VyrdMC 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. • 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 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 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. http://designtech.ku.edu.tr
Deneyimler (Vyrd) • Windows NT, Scan dosya sistemi • Boxwood dağıtık veri depolama sistemi • java.util 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ı 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ı 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. http://designtech.ku.edu.tr
Sorular Koşut-zamanlı Yazılım Bileşenleri içinBir Otomatik Doğrulama Çerçevesi: VyrdMC Tayfun Elmas Serdar Taşıran Koç Üniversitesi Sarıyer, İstanbul http://designtech.ku.edu.tr