Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
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 UYMS’05, ODTÜ, Ankara
2
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
3
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.
4
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
5
Ç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
6
Ç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 ]
7
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
8
Ç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
9
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.
10
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
11
Ç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
12
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
13
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)
14
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ı
15
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.
16
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
İ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ı
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.