Emniyet Kritik Sistemlerde Model Tabanlı Doğrulama ve Gereksinim
Transkript
Emniyet Kritik Sistemlerde Model Tabanlı Doğrulama ve Gereksinim
5. ULUSAL YAZILIM MÜHENDİSLİĞİ SEMPOZYUMU - UYMS'11 Emniyet Kritik Sistemlerde Model Tabanlı Doğrulama ve Gereksinim Gözden Geçirme Alper KENDİ Yazılım Müdürlüğü, STM A.Ş., Ankara e-posta: [email protected] santrallere kadar farklı yapı ve davranışlardaki sistemlerin modellenebilmesi için elverişlidir. UML/SysML gösterimi grafiksel ve kolay anlaşılır dört temel tipten oluşmaktadır [3]. Özetçe Bu makalenin amacı, güvenlik kritik yazılım geliştirme çevriminde karşılaşılan gereksinim kaynaklı hataların erken tespit edilmesine yardımcı bir yöntem anlatmaktır. Bu yöntem ile gereksinim tabanlı modelleme ve model üzerinden doğrulama yaklaşımı kullanılarak, yüksek verimli gereksinim gözden geçirilmesine ve beraberinde az hatalı, tutarlı ve test edilebilir gereksinim oluşturulmasına imkân verilmektedir. 2.1. Yapısal Gösterim Yapısal gösterim sistem elemanlarının niteliklerinin, sağlanan servislerin ifade edildiği, yazılım sisteminde sınıf, nesne gibi yapılara karşılık gelen ve bu gibi yapıların modellenmesi için araçlar içeren gösterim şeklidir. Yapısal gösterim yazılım geliştirme süreci bakımından daha çok yazılım tasarım aşamasında önemini gösteren ve daha sık kullanılan bir yapı olsa da gereksinimlerden oluşturduğumuz modellerin tasarım içermemesi, başka bir ifade ile tasarımı tarif etmesinin sakıncalarından ötürü gereksinim doğrulama bakımından önem arz etmemektedir. Şekil 1 dost düşman tanıma sisteminin basit bir yapısal gösterimidir. 1. Giriş 1980’li yıllardan başlayarak büyüyerek yayılan ve yaşamın her noktasında kendilerini gösteren yazılımlara, konusu insan yaşamı olan uygulamalarda ihtiyaç duyulmaya başlandı. İnsan yaşamının emanet edildiği bu tür yazılımların geliştirilmesine yazılımın üstlendiği sorumluluktan ötürü elverişlilik, güvenilirlik ve benzeri gibi ölçütler, uyulması zorunlu standartlar ile denetimler getirildi. Günümüzde halen mühendisler, insanoğlunun doğası gereği hata yapma alışkanlığı karşısında, insan üretimi fakat hata yapmayan yazılım geliştirilmesi zorunluluğu ile kıyasıya mücadele vermektedir. Bu mücadele güvenlik kritik yazılım geliştirme çevriminde, hata bulmaya ve önlemeye yönelik yeni yöntemlerin ortaya çıkartılması ve uygulanması ile insan-hata denkleminde mühendislerce kazanılması zaruri bir mücadele halini almıştır. Model güdümlü doğrulama, model güdümlü geliştirme yönteminin gereksinimlerin gözden geçirilmesine yönelik bir uyarlamasıdır. Binlerce satırlık gereksinim kümeleri içerisinde kaybolmadan, anlaşılır ve çalıştırılabilir modeller üzerinden gözden geçirmelerin gerçekleştirilerek, projenin ilerleyen aşamalarında ortaya çıkması muhtemel hataların henüz sisteme girmeden tespit edilmesine olanak sağlar. Bu bildiride öncellikle model güdümlü geliştirmenin genel bir tanımı verilerek, model güdümlü doğrulamanın DO-178B gibi standartlar kılavuzluğunda geliştirilen güvenlik kritik yazılımlarda hata bulma üzerine etkileri ve sağladığı faydalar yazarın deneyimlerine dayandırılarak anlatılacaktır. Şekil 1 Yapısal Gösterim Örneği 2. Model Güdümlü Yaklaşım 2.2. Fonksiyonel Gösterim Birleşik Modelleme Dili (UML) günümüzde karmaşık sistemlerin yapı ve ilişkilerinin başarılı bir şekilde ifade edilebildiği, sistemin uygulama sahası, geliştirme süreci, kullanılan teknoloji gibi unsurlardan bağımsız olarak modellenebildiği ve Object Management Group (OMG) isimli kuruluş tarafından standart haline getirilen bir dildir. SysML varyasyonu ile birlikte UML, yazılım sistemlerinden nükleer Fonksiyonel gösterim, sistem fonksiyonları ve kabiliyetleri üzerinde duran, UML/SysML gösteriminde “use-case” diyagramlarının sıklıkla kullanıldığı, sistemin tam olarak “ne” yaptığı sorusunun yanıtını verirken, “nasıl” sorusuna cevap vermekten kaçınılması gereken gösterim biçimidir. Sistem fonksiyonlarının modellenmesi oldukça kolay gibi görünse de sistem tasarımında üzerinde en çok durulması ve 258 5. ULUSAL YAZILIM MÜHENDİSLİĞİ SEMPOZYUMU - UYMS'11 ekip olarak fikir alışverişinde bulunularak ilerlenmesi gereken bir süreçtir. Aksi takdirde sistem bir sonraki aşamada hiç kullanılmayacak yüzlerce kullanım senaryosu (use-case) modeli içerisinde kaybolacaktır. Orta büyüklükte bir aviyonik projede önerilen, use-case modeli sayısının 6-10 arasında tutulmasıdır [2]. Anlaşılabilirlik açısından faydalar sunan fonksiyonel modelleme, doğrulama ekiplerinin sistem bütününü daha rahat anlamasına ve doğrulama adımlarının tatbikinin sağlıklı yapılmasına imkân vermektedir. Şekil 2 de gösterilen elektronik harp sistemi hedefi etkisiz hale getirmek için dost düşman tanıma sisteminden faydalanmaktadır. 2.4. Etkileşimsel Gösterim Etkileşimsel gösterimler, tanımlı bir senaryo üzerinden mesaj tabanlı davranışların ifade edilmesi için uygundur. Etkileşimsel gösterimi yapılmış bir sistemin parçaları arasındaki iletişimi ve senaryo akışı görülebilir. Şekil 4’te görüleceği üzere etkileşimsel gösterimde sıklıkla kullanılan sıralama (sequence) diyagramları, sundukları yaşam çizgisi ile zamana dayalı mesajların gösteriminde de başarılıdır. EHMS sistemi, pilota tehdit raporlandıktan sonra 2 saniye içerisinde komut almaya hazır duruma gelebilmelidir. Şekil 2 Fonksiyonel Gösterim Örneği Şekil 4 Etkileşimsel Gösterim Örneği 2.3. Davranışsal Gösterim Davranışsal gösterim UML/SysML dilinde çoğunlukla durum (state machine) ve aktivite (activity) diyagram tipleri ile gösterimi yapılan sistem durumlarının, bir durumdan başka bir duruma geçilmesi için gerekli şartların ve tetik mekanizmalarının ifade edildiği, model güdümlü doğrulama yaklaşımında önem arz eden bir gösterim şeklidir. Davranışsal gösterimi yapılan sistemlerde, gereksinim aşamasında sıklıkla karşılaşılan ve gözden geçiriciler için yakalanması zor olan kontrol akışı aykırılıkları, davranışsal gösterimi yapılan sistem modellerinde kolaylıkla görülebilmektedir. (bkz.Şekil 3) 3. Model Tabanlı Doğrulama Gözden geçirme, yazılım endüstrisinde yazılım geliştirme yaşam döngüsü ürünlerindeki hataları ortaya çıkartmaya yönelik, maliyeti düşük doğrulama tekniklerinden biri halini almıştır. Gözden geçirmelerin birincil amacı olan hata yakalama, sistem ile ifade edilen yapıdaki olağan dışı tüm sapmaları kapsamaktadır. Konusunda uzman gözden geçiriciler ön tanımlı bir süreç çerçevesinde gereksinim, kaynak kod vb. çıktıların hatalarını bulmaya yönelik çalışmalar yapmaktadır. Bu çalışmalarda kullanılan Active Design Review, Two-Person Review, N-Fold Review vb. gözden geçirme teknikleri gözden geçirmelerin kalitesini yükseltmeye yönelik adımlar, yöntemler içermektedir [5]. Günümüz şartlarında gözden geçirilecek ürünlerin büyüklüklerinin getirmiş olduğu karmaşıklığın çözümü için mevcut metotlar, gözden geçirilecek ürünlerin mantıksal bölümlere ayrılıp, yönetilmesi üzerine farklı yöntemler sunar. Tüm bu tekniklerin temelinde yatan ve gözden geçirmenin anlaşılabilirliğini artırmaya yönelik adımlar Model Güdümlü yaklaşım ile bir üst noktaya taşınmaktadır. Model üzerinden doğrulama yapmanın anlaşılabilirliği, pek çok gereksinimin tek bir model elemanı ile ifade edilebilmesinin ve mevcut modellerin çalıştırılabilmesinin gözden geçiriciye sağladığı kolaylık, yakalanan kritik olarak adlandırılabilecek hata sayısını artırmakta, bu durum projenin ilerleyen safhalarında ortaya çıkması olası hataların önüne geçilerek maliyetleri azaltmaktadır. Şekil 3 Davranışsal Gösterim Örneği 259 5. ULUSAL YAZILIM MÜHENDİSLİĞİ SEMPOZYUMU - UYMS'11 Şekil 5 Sistem Açılış Durumları Gereksinimler ile örtüşen fakat tasarım tarif etmeyen model elemanlarının oluşturulması, oldukça dikkat ve tecrübe isteyen bir uğraş olsa bile sistem tasarımına girdi teşkil etmek maksadı ile oluşturulan bu modellerin, doğrulama amaçlı kullanımı gereksinim kaynaklı özellikle kontrol akışına (control flow) yönelik hataların bulunmasında etkin bir yöntem olarak karşımıza çıkmaktadır. Test yoğun faaliyetler olan güvenlik kritik uygulama geliştirme süreçlerinde testler, geliştirme eforunun %35 gibi bir kısmını oluşturabilir [4]. Süreç dâhilindeki test faaliyetlerinde, DO-178B gibi kılavuzlarda karşımıza çıkan yapısal kapsam analizi (SCA) gibi metotlar kullanılarak hata yakalama oranları yükseltilebilmektedir. Sisteme girmiş hataların testler esnasında bulunacağı düşünülerek ilerlemek ise proje maliyetleri açısından dezavantajlıdır. Zira hatanın sisteme girmesi ile hatanın sistemde tespit edildiği safha ters orantılı olarak maliyetleri artırmaktadır. Sürecin başında (gereksinim aşaması) sisteme giren hatalar ve sürecin sonunda (kullanım aşaması) ortaya çıkarılan hatalar firmalara yüksek maliyetli zararlar veren hatalardır. Testler esnasında ortaya çıkan gereksinim kaynaklı bir hata, yazılım kaynak kodunun değişmesine, değişen yazılım kaynak kodu yazılım tasarımının değişmesine, tasarımın değişmesi, yazılım gereksinimlerinin değişmesine kadar gidebilecek bir döngüyü tetikleyerek, zaman ve para kayıplarına yol açabilmektedir. Hata yapması durumunda can kaybına yol açması muhtemel (DO-178B kılavuzundaki muadili ile seviye A) 10K satırlık güvenlik kritik bir yazılımda, kullanım aşamasında bulunan hatanın üreticiye maliyeti 500K-1M $ arasında değişmektedir. Bu noktada hataların tespit edilmesi kadar hataların geliştirme sürecinin hangi safhasında tespit edilebildiği de önem kazanmaktadır [1-4]. Yukarıdaki şekilde (bkz. Şekil 5) modeli verilen örnek, bir hava aracının seyrüsefer sisteminin cihaz içi testlerini gerçekleştirecek yazılımın, metin tabanlı gereksinimlerinden oluşturulmuştur. Cihaz içi testler aviyonik cihazların açılışında, kullanım esnasında otomatik olarak veya pilot/bakım elemanı tarafından başlatılmak suretiyle çalışan, aviyonik sistemdeki ön tanımlı durumları kontrol eden, kısaca aviyonik donanım ve yazılımın düzgün çalıştığını doğrulamaya yönelik testlerdir. Şekil 5’te gösterilen PBIT (power up built-in test) durumu sistemin donanım sınama testlerinin çalıştığı açılış cihaz içi test durumudur. Örneğimizdeki 29 adet ön tanımlı donanım sınama testi, sisteme güç verilmesinin ardından, PBIT durumunda otomatik olarak çalıştırılıp, ilgili testlerden çıkan sonuçlara göre sistemin açılış şekli tespit edilmektedir. Sistemin test sonuçlarına göre 3 farklı açılış durumu mevcuttur. Birinci durum tüm test sonuçlarının “Geçti” olduğu model üzerinde “isAllSuccess()” metoduyla kontrol edilen ve sistemde ön tanımlı hiçbir hatanın bulunmadığı normal (Normal Mode) durumudur. İkinci durum ön tanımlı hatalardan bir kısmının olduğu, yine de sistemin açılışının kısıtlanmış kabiliyetler ile gerçekleştirilebileceği indirgenmiş durum (Degrade Mode) ve son olarak sistemde fonksiyonel olarak sağlıklı bir açılışa imkân vermeyecek düzeyde kritik hataların bulunduğu hata (Fail Mode) durumudur. Sisteme güç verilmesinin ardından 29 adet ön tanımlı donanım sınama testi sırasıyla çalıştırılacak, tüm test sonuçlarının geçmesi durumunda sistem normal (Normal Mode) durumuna, indirgenmiş işlevsellik ile açılış yapılması gerekiyorsa indirgenmiş (Degrade Mode) durumuna, eğer sistemde kritik hatalar bulunduysa sistem hata (Fail Mode) durumuna geçecektir (bkz. Şekil 5). Metin tabanlı gereksinimlerin gözden geçirilmesi günümüz sistemleri düşünüldüğünde bir insanın bütünüyle hâkim olamayacağı karmaşıklıkta olabilmektedir. DO-178B ve benzeri standartların gözden geçirme kalitesini artırmaya yönelik bağımsız gözden geçirici zorunluluğu, gereksinimleri yazanlar ile gözden geçirenlerin farklı kişiler olmasını gerektirmektedir. Bu durum, gereksinimi yazan saha uzmanlarının diğer insanların da ilgili konuda uzman olduğunu varsayarak gereksinim oluşturmaları gerçeği ile birleştiğinde, gereksinimin gözden geçirici tarafından anlaşılıp, hata bulmaya yönelik kaliteli bir gözden geçirme faaliyetinin icra edilmesi zorlaşmaktadır. Metin tabanlı gereksinimler incelendiğinde kontrol akışında bir problem görülmemektedir fakat kontrol akışımızda metin tabanlı gözden geçirilme ile tespit edilmesi zor 2 adet önemli hata bulunmaktadır. “Sistem açılışında, tüm testlerin geçmesi durumunda sistem normal (Normal Mode) durumunda başlatılacaktır.” şeklinde bir gereksinim maddesinde gözden geçirici için dikkat edilen noktalar çoğunlukla giriş koşulları olmaktadır. Çıkış koşulları ve çıkış koşullarına bağlı diğer durum giriş şartları yani resmin tamamı metin tabanlı bir gözden geçirmede kolaylıkla hakim olunabilen bir durum değildir. Tüm testler geçtiği takdirde sistem normal durumuna geçecek; eğer testler aracılığı ile bir hata tespit edilirse hatanın cinsine göre sistem indirgenmiş veya hatalı mod 260 5. ULUSAL YAZILIM MÜHENDİSLİĞİ SEMPOZYUMU - UYMS'11 durumlardan birisine geçecektir. 2 adet önemli eksiklikten biri sistemin indirgenmiş ve hata durumlarına geçmesinden sonra kendini göstermektedir. Gereksinimler içerisinde sistemin indirgenmiş ve hata durumlarından hangi koşulda veya koşullarda çıkacağı belirtilmemiştir. Hata veya indirgenmiş durumuna geçen sistemin yeniden başlatılması, bir süre sonra kendiliğinden kapanması veya sistemin ikinci bir tetiklenmeye kadar mevcut durumunu koruması şeklinde çıkış koşullarının gereksinimlere eklenmesi gerekmektedir. Aksi takdirde yukarıda bahsi geçen gereksinim setine göre geliştirilmiş aviyonik yazılım Şekil-6’da görüldüğü üzere 1 hata veya indirgenmiş durumlarına girdiğinde, sistem gücü kapatılıp açılıncaya kadar bu durumda bekleyecektir. Şekil 7 Zaman Aşımı Hatası 4. Sonuçlar DO-178B kılavuzluğunda ilerlenen projelerde sistem gereksinimlerinden oluşturulan yazılım yüksek seviye gereksinimleri (High Level Requirements) yazılım sisteminin tam olarak ne yapacağını tüm detayları ile ifade etmektedir. Bu detayda yazılan gereksinim setlerinin metin tabanlı olarak gözden geçirilmeleri, hataların gözden kaçırılmasına zemin hazırlamaktadır. Yukarıda bir bölümünden örnek verilen “Cihaz İçi Test” bileşeninin gereksinimleri içerisinde, bileşenin hata durumundan hangi olay/koşul ile çıkacağı ve zaman aşımı oluşması halinde bileşenin nasıl davranacağı gibi gereksinimler ifade edilmemiştir. Model tabanlı doğrulama, ön gözden geçirme çalışmalarımızda metin tabanlı gereksinimlerin resmi gözden geçirilmeleri sırasında gözden kaçması muhtemel bu iki eksikliğin ortaya çıkartılmasında görev almıştır. Yirmi dört adet metin tabanlı gereksinimin, model üzerinden yapılan ön gözden geçirmeleri sırasında ortaya çıkartılan iki adet eksiklik, Şekil 5’te görülen hata durumunun (Fail Mode) çıkış şartı olarak eklenmiş yeniden başlat (evRestart) tetiği ve açılış cihaz içi test (PBIT) durumuna eklenmiş “tm(18000)” zaman aşımı mekanizması ile çözümlenmiştir. Model tabanlı doğrulama yöntemi, günümüz teknolojisinde Şekil 6-7 de görülen çalıştırılabilir modeller sayesinde henüz tasarım ve kaynak kodun oluşturulmadığı proje safhalarında, akış kontrollerindeki aksayış ve eksikliklerin tespit edilmesine imkân vermektedir. Bu sayede projenin ilerleyen aşamalarında ortaya çıkabilecek ve firmaya iş ve zaman kaybına yol açabilecek hataların henüz gereksinim gözden geçirmeleri esnasında çözümlenmesine olanak sağlanmıştır. Şekil 6 Kontrol Akışı Hatası Gereksinimlerde geçtiği şekli ile sistem 29 adet donanım sınama testinin çalıştırılıp, testlerin sonuçlarına göre ön tanımlı durumlardan birine geçmektedir. Metin tabanlı gereksinimlerin gözden geçirilmesi esnasında fark edilmeyen diğer bir akış sıralı halde çalışan 29 adet testten bir tanesinden yanıt alınamaması koşulunda sistemin düşeceği kararsız durumdur. Aviyonik donanımlar, özellikle askeri uygulamalarda oldukça zorlu çevre koşullarında çalışmak zorundadır. Arızalanmış bir sensörden veri okumaya çalışan 29 adet ön tanımlı testten bir tanesi hiçbir zaman geçti/kaldı şeklinde bir neticeyle sırasını devretmeyebilir. Sistemde tanımlı bir sonraki testin çalıştırılması mümkün olmayabilir veya sistem donanım sınama testlerinin dahi çalıştırılamayacağı bir arızaya sahip olabilir. Bu durumda Şekil-7’de görüldüğü üzere 2 sistem, testlerin koşturulduğu PBIT durumunda çıkmaza girecektir. İlgili gereksinimler içerisine eklenecek bir madde ile 29 adet ön tanımlı testin tamamlanması için bir zaman aşımı tanımlanıp, bu süre içerisinde testlerin tamamlanamaması durumunda, sistemde ciddi bir hatanın olduğu kabul edilerek sistem hata (Fail Mode) durumuna geçirilmelidir. 5. Teşekkür Çalışmalarım sırasında desteklerini esirgemeyen ve değerli görüşleri ile deneyimlerin bir bildiri haline gelmesine yön veren Sayın Serkan Çak ve mesai arkadaşım M.Umut Pişken’e teşekkür ederim. 1 Şekil-6 ve Şekil-7 oluşturulan modellerin yardımcı araçlar kullanılarak çalıştırılması ile elde edilmiş ekran görüntüleridir. Pembe çerçeveli alanlar o an aktif olan durumları(state), sarı çerçeve, aktif olan duruma geçilmeden bir önceki aktif durumu belirtmektedir. Şekildeki “FailMode” durumundan çıkış koşulu olan “evRestart” olayı(event) gereksinim setine ve modele hatanın tespitinin ardından eklenmiştir. 2 Şekil 7 te görülen “tm(18000)” zaman aşımı, hatanın gereksinimdeki eksikliğinin tespit edilmesinin ardından gereksinimlere ve modele eklenmiştir. 6. Kaynakça [1] ``RTCA/DO-178B Software Considerations In Airborne Systems And Equipment Certification”, RTCA, Inc. 1992. [2] Bruce Powel Douglass, “Real-Time UML Workshop for Embedded Systems”, Elsevier, Oxford, 2007 [3] OMG Systems Modeling Language (OMG SysML), Document Number formal/2008-11-01, 2008 261 5. ULUSAL YAZILIM MÜHENDİSLİĞİ SEMPOZYUMU - UYMS'11 [4] Hilderman, Vance, “DO-178B Costs Versus Benefits”, www.highrely.com/ whitepapers.php, 2006 [5] Yuk Kuen Wog, “Modern software review: Techniques and Technologies”, IRM Press, 2006 262
Benzer belgeler
Alloy Analyzer Kullanarak Emniyet Kritik Aviyonik Yazılım
tarafından gözden geçirilmektedirler. Gözden geçirme süreci
otomatik olmadığından deneyimli bir ekip tarafından
yürütüldüğünde bile bazı hataların yakalanamama riski hep
mevcuttur. M asa başı gözde...