Güvenlik açısından, Yazılım Tasarımı ve Yazılım Ürün Doğrulaması

Benzer belgeler
Yaz.Müh.Ders Notları #6 1

Model Güdümlü Geliştirme ile Gömülü Kaynakların Yönetimi

Yazılım Mühendisliği 1

Yazılım Mimari Tasarımından Yazılım Geliştirme Çatısının Üretilmesinde Model Güdümlü Bir Yaklaşım

YZM 2108 Yazılım Mimarisi ve Tasarımı

Bilgi Sistemleri Tasarımı (SE 503) Ders Detayları

Eylül 2007 de v1.0 ı yayınlanan SysML sayesinde endüstri mühendislerinin de ihtiyacı karşılanmış oldu.

Yazılım Mühendisliğinde Biçimsel Yöntemler (SE 562) Ders Detayları

Nesneye Dayalı Analiz ve Tasarım (SE 321) Ders Detayları

NESNEYE YÖNELİK PROGRAMLAMA Unified Modelling Language (UML) Bütünleşik Modelleme Dili

Yazılım Mühendisliğinin Temelleri (SE 100) Ders Detayları

Nesneye Yönelik Tasarım ve Programlama (COMPE 501) Ders Detayları

TÜMLEŞİK MODELLEME DİLİ. UML (Unified Modeling Language)

BİÇİMSEL YÖNTEMLER (FORMAL METHODS) Betül AKTAŞ Suna AKMELEZ

Ortak Kriterler (ISO/IEC 15408) BT Güvenlik Sertifikasyon Sürecinde UML, OCL ve Formel Metotların Kullanımı

Rapor Hazırlama Kuralları

Rapor Hazırlama Kuralları

Gereksinim Mühendisliği (SE 560) Ders Detayları

Öğretim planındaki AKTS Ulusal Kredi

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

SiSTEM ANALiZi ve TASARIMI

Nesne Tabanlı Programlama (COMPE 225) Ders Detayları

Bilgisayar Oyunları ve Simulasyon (COMPE 376) Ders Detayları

Çok Etki Alanlı Hareketli Ağlar için Formel Güvenlik Politikası Betimleme

ARDIŞIL DİYAGRAM YAPI DİYAGRAMI. Sistem Analizi ve Tasarımı Dersi

Fundamentals of Object-Oriented Programming (COMPE 723) Ders Detayları

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Yazılım Mühendisliği BIL

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Yazılım Mühendisliği II (BIL 306)

1.Yazılım Geliştirme Metotları 1

BÖLÜM 1 YAZILIM TASARIMINA GİRİŞ YZM211 YAZILIM TASARIMI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

Yazılım Gereksinimleri Mühendisliği (SE 221) Ders Detayları

Yazılım Gereksinimlerinin Görsel Çözümlemeleri: UML (UnifiedModeling Language) Birleştirilmiş Modelleme Dili

Model Güdümlü Yazılım Geliştirme (SE 555) Ders Detayları

Bölüm 2 Yazılım Süreçleri. Ders 1

Kontrol Sistemleri (EE 326) Ders Detayları

Bilgisayar Mimarisi ve Örgütleşimi (COMPE 331) Ders Detayları

SİSTEM VE YAZILIM. o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur.

HDL ile Gelişmiş Sayısal Tasarım (EE 425) Ders Detayları

Nesne Tabanlı Programlama (COMPE 225) Ders Detayları

Sınıf Diyagramları Amaç: Sınıf Diyagramları Nasıl Çizilir?

Bilgisayar Mühendisliği. Bilgisayar Mühendisliğine Giriş 1

İleri Yazılım Mimarisi (SE 658) Ders Detayları

(Computer Integrated Manufacturing)

Servis Yönelimli Mimari ve İş Süreç Yönetimi (SE 564) Ders Detayları

YAZILIM MODELLEME VE TASARIM

Yazılım Süreçleri Software Processes

Sistem Modelleme ve Simülasyon (SE 360) Ders Detayları

FPGA ile Gömülü Sistem Tasarımı (EE 525) Ders Detayları

Yazılım Örüntüleri (SE 461) Ders Detayları

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Bilgi Teknolojileri Hizmetlerinde Temeller (ISE 405) Ders Detayları

Yazılım Mühendisliğinde İleri Konular (SE 650) Ders Detayları

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Karar Tablosu Destekli Olay Sıra Çizgeleri Temelli Sınama Durum Üretim Aracı

Bilgisayar Programlama I (COMPE 113) Ders Detayları

İleri Algoritma (COMPE 574) Ders Detayları

Programlama Dilleri 1. Ders 3: Rastgele sayı üretimi ve uygulamaları

Üniversitesi. {g.karatas, Library, Science Direct ve Wiley veri içerisinde

Chapter 5 Sistem Modelleme. Lecture 1. Chapter 5 System modeling

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Geleneksel Yazılım Mühendisliğinden Alana Özel Yazılım Mühendisliğine Doğru

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

DENİZ HARP OKULU ENDÜSTRİ MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Java Programlama (COMPE 438) Ders Detayları

UNICASE.... kapsamlı bir CASE* aracı. *

1.1 Metodolojiyi Gerçeklemek Üzere Geliştirilen Altyapı

Bilgisayar Programlama I (COMPE 113) Ders Detayları

SİSTEM SİMÜLASYONU

4. Bölüm Programlamaya Giriş

SOFTWARE ENGINEERING Ders İzlence Formu. Kodu:CSE400 Dersin Adı: SOFTWARE ENGINEERING Toplam Saat

Hata Ayıklamanın Ötesi... (Assertion) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 1

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

SENTEZ TABANLI YAZILIM MİMARİSİ TASARIM YAKLAŞIMININ ESSENCE ÇERÇEVESİYLE MODELLENMESİ

Yazılım İnşası ve Evrimi (SE 556) Ders Detayları

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Bilgisayarla Görme (EE 430) Ders Detayları

Kullanım Durumu Diyagramları (Use-case Diyagramları)

YAZILIM MÜHENDİSLİĞİNİN TEMELLERİ 8.Hafta. Yazılım Doğrulama ve Geçerleme

GridAE: Yapay Evrim Uygulamaları için Grid Tabanlı bir Altyapı

Uzaktan Eğitim ve E-Öğrenme (ISE 424) Ders Detayları

Bilgisayarlara ve Programlamaya Giriş (COMPE 101) Ders Detayları

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

Ferhat ERATA. Geylani KARDAŞ

AVRASYA UNIVERSITY. Dersin Verildiği Düzey Ön Lisans (X ) Lisans ( ) Yüksek Lisans( ) Doktora( )

Programlama Dilleri (COMPE 325) Ders Detayları

Mikroişlemciler ve Mikrokontrolörlere Giriş (CMPE236) Ders Detayları

Sistem Analizi ve Tasarımı DERS2

Bilgisayar Programlama (COMPE 102) Ders Detayları

Bilgisayar Mühendisliğinin Temelleri (COMPE 100) Ders Detayları

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

EĞİTİM-ÖĞRETİM YILI MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ (İNGİLİZCE) BÖLÜMÜ DERS PROGRAMINDA YAPILAN DEĞİŞİKLİKLER

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Hızlı Uygulama Geliştirme (SE 340) Ders Detayları

NESNEYE YÖNELİK TASARIM SÜRECİ

Gezgin Etmen Sistemlerinin Başarım Ölçümü: Benzetim Tekniği

C ile Programlama (COMPE 112) Ders Detayları

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLM209 PROGRAMLAMA LAB. I PROJE 3 PROJE SÜRESİ:

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Mobil Uygulama Geliştirmeye Giriş (ISE 407) Ders Detayları

C++ Dersi: Nesne Tabanlı Programlama

Transkript:

Güvenlik açısından, Yazılım Tasarımı ve Yazılım Ürün Doğrulaması Ufuk Çağlayan, Albert Özkohen caglayan@boun.edu.tr, albert.ozkohen@boun.edu.tr Boğaziçi Üniversitesi Bilgisayar Mühendisliği Bölümü 28.12.2012 Özet Mevcut bir yazılım kaynak kodu ile onunla ilgili tasarım ürünü arasındaki denkliğin tanımlanması için birçok çalışma yapılmaktadır. Tasarım ve uygulama yazılım yaşam döngüsünün önemli iki aşamasıdır. Verilmiş bir yazılım kaynak kodu ile UML ile oluşturulmuş bir tasarımı, SPIN Model Denetleyicisinin dili olan diline çevirerek, bu ikisi arasındaki denkliği, iki sonlu durum makinasının denkliği ile gösterebileceğimizi öneriyoruz 1 Giriş Yazılım mühendisliğinde, yaşam döngüsünün çeşitli evreleri vardır. Yazılımın uygulanması sırasında, yazılım tasarımı girdi olarak kullanılır. Bu süreç sonunda C, Java ya da başka bir dilde yazılmış yazılım kaynak kodu ortaya çıkar. Problemimiz, tasarımı verilen bir yazılım kaynak kodunun bu tasarımda belirtilen tüm özellikleri yerine getirip getirmediğini ispat eden bir mekanizma ortaya koymaktır. Bu problem, yazılım mühendisliği biliminin ortaya çıkışından itibaren vardır. Üstelik mevcut yazılım sistemleri boyut ve işlevsellikleri arttıkça, bu sorun daha da büyümekte ve çözümü önem kazanmaktadır. Büyük ve karmaşık yazılım sistemleri, küçük sistemlere göre hem sayıca daha çok hem de belirsizlik seviyesi daha yüksek hatalar içerirler. Yazılım geliştirme evresi, tasarımdan sonraki evredir. Yazılım geliştiren birçok kurum, yazılım kaynak kodlarında değişiklikler yaparken, bu değişiklikleri ilgili tasarımlara yansıtmamaktadırlar. Böylelikle, yazılım geliştirme esnasında birçok projede tasarım ve kaynak kodları kendi aralarında farklı ve tutarsız hale gelebilmektedir. 1

Ayrıca, bu değişikler tasarıma yansıtılsa bile, bu yansımalar sonucunda tasarım ile kaynak kodunun denkliğini ispat edemez. Özellikle güvenlik alanında Yazılım Doğrulaması hayat önem taşımaktadır Otomatik kaynak kodu üreten birçok ticari araç bulunmaktadır. Bu işlem basit tasarımlarda olabilmektedir ancak henüz genelleştirilmiş değildir. Zira hala endüstride yazılım geliştirme uzmanları bulunmakta ve faaliyet göstermektedirler. Tam tersi durumda henüz otomatikleştirilmiş değildir. Yazılım kodu verildiğinde otomatik tasarım üreten bir sistem henüz mevcut değildir. Tersine Mühendislik adı altında bazı girişimler vardır ancak bu her durumda geçerli bir evrensel tasarım üretme işini henüz yapamamaktadır. Bu çalışmadaki ana katkının, verilmiş bir yazılım kaynak kodunun, verilmiş bir tasarımdaki tüm özellikleri ve gereksinimleri sağladığımım doğrulanması olması amaçlanmaktadır. Halen endüstride mevcut yazlım kodları ve ilişkili tasarımlar kendi aralarında tutarlı değildir. Çalışmamız bunların denk olup olmadığının belirleyecek ve mümkünse kısmı denkliğin nerelerde olduğu / olmadığının sağlayacak bir mekanizma oluşturmayı hedeflemektedir. 2 Yazılım Doğrulaması hakkında literatür taraması Yazılım geliştirme çalışmaların ilk zamanlarından itibaren, yazılım tasarım yapılarının ortak bir biçim ile yapılması hakkında araştırmalar yapılmıştır. Booch, Rumbaugh ve Jacobson Birleştirilmiş Modelleme Dilini (UML) bu amaçla önermişlerdir. [Boo96]. Kullanım senaryoları (Use Case) ana aktörleri ve rollerini belirlemektedir. Sınıf diyagramları, verinin yapısını tanımlamaktadır. Zaman akış diyagramı sistemlerin zamandaki davranışlarını, faaliyet diyagramı çalışma olasılıklarını, paket diyagramı uygulamanın dağıtılmasını tanımlayan bileşenlerdir. Başka alternatifler olsa da UML yazılım tasarımı için endüstri olmuştur. UML biçimsel değildi. Bu yüzden UML için biçimsel gösterimlerin oluşturulması adına çeşitli çalışmalar yapıldı. OCL (nesne kısıt dili) bunlardan bir tanesidir. Richters OCL dilinin tanımını ve biçimselliğini [Ric98] de yapmaktadır. Bu çalışma UML diline biçimsel bir anlam getirmektedir. Mezei ve arkadaşları [Mez07] de OCLASM adında yeni biçimsellik tanımladılar. Bu çalışmada, OCL dili Soyut Durumsal Makineler bazında tanımlanarak, OCL kısıtlarının dinamik davranışları modellendi. Böylece OCL dili sadece statik değil dinamik gösterimler için de kullanılabildi. Güvenlik alanında da tasarım mekanizmaları oluşturmak için birçok çalışmalar yapılmıştır. Jürjens UML dilinin bir uzantısı olarak UMLsec dilini [Jür02] de tanımlamıştır. Jürjens bu çalışmada UML in standart uzantı mekanizmalarını kullanmış ve bunları profil olarak tanımlamıştır. Bu profillerle sistemlerin güvenlik özelliklerin daha iyi ve bütünsel olarak tanımlayabilen özelleştirilmiş diyagramlar oluşturmuştur. UMLSec Genel olarak kabul edilen bir biçimselliktir, ancak UML de yazılmış tüm 2

tasarımların biçimsel UMLsec formuna dönüştürülmesi gerekmektedir ki bu süreç hem pratik değildir hem de tam olarak çözülememiştir. Buchholtz ve arkadaşları, [Buc08] çalışmasında For-LySa adında yeni bir yöntem önermektedirler. Bu çalışmada Buchholtz kimlik doğrulama için özel tasarımları modellemişlerdir. Lysa adında bir Süreç Analiz metodu uygulamaktadırlar ve bu metodu UML özelleştirilmiş profillerinde kullanmaktadırlar [Pav07] çalışmasında Pavlich ve arkadaşları, erişim denetimi alanında özelleştirilmiş özel diyagramlar önermektedirler. Bu diyagramlar, rol-bazlı zorunlu ya da seçenekli erişim denetimi mekanizmaları tanımlayarak, UML in güvenlik yeteneklerini arttırmışlardır, Ancak, tüm tasarımlar UML in bu özelleştirilmiş versiyonuna hazırlanmış değildir ve yine bunun için özel bir otomatik tercüme mekanizması mevcut değildir Model denetimi Clarke tarafından [Cla97] çalışmasında tanımlanmıştır. Sonlu durum tabanlı tepki veren sistemlerin doğrulanması için bir tekniktir. Özellikler zamansak mantık formülleri olarak ifade edilir ve bu özellikler üretilen durumların durum geçiş grafikleri kullanılarak denetlenir. Durum sayılarının olası büyüklüklerine karşı, durum sayısı indirgeme teknikleri de önerilmiştir SPIN Holzmann tarafından [Hol97] çalışmasında yazılım sistemlerinde Model Denetimi aracı olarak önerildi. SPIN in kullandığı dil dilidir (Proses Mete Dili). Bu dil, da tanımlanan bir sistemin tasarım özelliklerini karşılayıp karşılamadığını denetler. Jürjens ve Shabalin [Jür04] çalışmasında, bir UMLsec modelini, gereksinimlerine karşı biçimsel olarak doğrulamayı başardılar. UMLsec dilinden eşdeğerine çevirdiler. Onların yaklaşımlarını UML tasarımlarınızı koduna rken kullanacağız. Corbett ve arkadaşları [Cor02] çalışmasında altyapıda Java kaynak kodunu ya çevirebilen, Bandera isimli bir yazılım altyapısı geliştirdiler. Bu çalışmada bir yazılım soyutlaması önerdiler ve özellikleri ifade eden bir dil geliştirdiler. Bu dil yazılım üretecine benzer bir bileşene girdi göndererek çevirme işlemini gerçekleştirdi. Aynı yaklaşım C kodunu ya rken kullanılabilir. Havelund Java PathFinder [Hav00] isimli aracını önerdi. Bu araç, NASA 'nın kritik görevdeki sistemleri için Java kodunu ya çevirdi. Her diyagram tipi özelleştirilmiş bir algoritma ile ele alındı. Kaliappan [Kal08] çalışmasında, iletişim protokollerinin doğrulanması için farklı bir yöntem önerdi. Her UML durum diyagramı ya çevirdi ve onunla ilgili zaman akış diyagramını doğrusal zamansal mantığa çevirdi (LTL). Bunları SPIN sistemine girdi olarak vererek sistemde bir tutarsızlık olup olmadığını model denetimi yöntemiyle kontrol etti. Bu yöntem iyi gözükse de her durum diyagramının yanında zaman akış diyagramı olmayabilir ve sınıf diyagramları da bu çalışma dışında bırakılmıştır. 3

Sutton [Sut05] çalışmasında C++ bileşenleri ve komutları ile onlara karşı gelen UML bileşenleri (örneğin ilişkiler, çokluk, toplama ) için kurallar önerdi. 3 Yazılım doğrulaması seçenekli model önerileri Verilen bir tasarımın verilen bir kaynak kodu ile denk olup olmadığını ölçecek iki farklı model öneriyoruz. Önce Yazılım Mühendisliği yaşam çevrimindeki çeşitli faaliyet alanlarını özetleyelim. (Bkz Error! Reference source not found.) Yazılım mühendisliğinde, yaşam döngüsünün gereksinim analizi, tasarım, yazılım geliştirme gibi çeşitli evreleri vardır. Yazılımın uygulanması sırasında, yazılım tasarımının sonuçları yazılım geliştirme işleminde girdi olarak kullanılmaktadır. Bu sürecin sonunda C, Java ya da başka bir dilde yazılmış yazılım kaynak kodu ortaya çıkacaktır. Çözümünü bulmaya çalıştığımız problem, tasarımı önceden verilmiş bir yazılım kaynak kodunun bu tasarımda belirtilen, ne eksik ne fazla, tüm özellikleri birebir yerine getirip getirmediğini bulan ve ispat eden bir mekanizma ortaya koymak ve geliştirmektir. Gözden geçirme Gözden geçirme Geleneksel Yazılım Mühendisliği Sistem Analizi Gereksinim Belirleme Tasarım Süreci Tasarım belirleme Kod geliştirme ve test Yazılım ürünü Güvenlik alanındaki eşdeğer kavram Güvenlik politikaları Güvenlik mekanizmaları Güvenlik mekanizmalarını uygulamak için geliştirilen kaynak kodları Şekil 1 Yazılım geliştirme yaşam çevrimi evreleri Yazılım kodu ile sağlanan özelliklerin tasarıma göre daha fazla ya da eksik olması denklikte sorun olacaktır. Ek işlevler, gerektiği gibi denetlenmediğinde güvenlik ihlalleri ya da tutarsız durumlar oluşturabilir, Sağlanmaması işlevler ise tasarıma uygunsuzluk olacaktır. Dolayısıyla, tasarım ile kaynak kodu arasında birebir uygunluk önemlidir. Bu çalışmada, kısmi bir denklik olup olmadığının tespiti de hedeflenmektedir. Bu durumda uyumsuzluk yaratan parçaların neler olduğunun tespiti de gerekecektir. Kaynak kodunu tasarımına karşı doğrulayan ve biçimsel olarak tam ve eksiksiz bir sistemin genel amaçlı olarak yaratılması sırasında birçok yan etki ortaya çıkacaktır. Tüm alanlar için bu problem çözmeye çalışmak çok karmaşık olacaktır. Bu yüzden, ekonomik ve teknolojik açılardan gittikçe daha önemli olan güvenlik alanında bu işlemi yapmayı hedefledik. Daha da ayrıntıya indiğimizde sistemi güvenlikte erişim denetimi alt alanında özelleştireceğiz 4

3.1 Seçenek-1 Kaynak kodu UMLtasarımı Bir kaynak kodu ve UML tasarımı girdi olarak verilecektir. Amacımız ikisini de ya çevirmektir., SPIN model denetimi sisteminin dilidir. Literatür tasarımında bu işlemi yapabilen birçok çalışma mevcuttur. Bu lerden sonra iki tane kodumuz olacaktır. Bu kodları SPIN de çalıştıracağız. SPIN bu kodların ulaşabileceği tüm durumları içeren durum aşamaları oluşturacaktır. Bu durum alanları aslında sonlu durum makineleridir (Finite State Machine). Bunlar elimizde olunca bu iki makinenin eşdeğer olup olmadığını bulacağız. Kaynak kodundan ya C 1 kodu C 1 C 1 den oluşturulan durumların S 1 kümesinin UML den ya C 2 kodu C 2 C 2 den oluşturulan durumların S 2 kümesinin Böylece problemimiz aslında iki sonlu durum makinesinin eşdeğer olup olmamasının bulunmasına indirgenmiş olacaktır. S 1 ile S 2 makinelerinin denkliklerinin kontrol edilerek sonuca ulaşılması Girdi olarak, güvenlik alanında bir kaynak kodu ve bir UML tasarımı Kabul eden bir yazılım altyapısı oluşturarak, bu iki girdinin oluşturacağı sonlu durum makinelerinin denk olup olmadığının kontrolünü yapan bir çözümünü bulacağız Şekil 2 - Önerdiğimiz yöntem: 1. seçenek Kaynak kodu Kaynak kodundan tersine mühendislik yönetimi ile UML elde UMLtasarımı Bu seçenek Error! Reference source not found. de şematik olarak anlatılmıştır. 3.2 Seçenek-2 UML den ya C1 UML den ya C2 Bu seçenekte girdimiz yine kaynak kodu ve UML tasarımı olacaktır. Fakat bu sefer kaynak kodunu tersine mühendislik yöntemleriyle UML tasarımına çevirmeye çalışacağız. Bu için literatürde örnekler mevcuttur. kodu C1 C1 den oluşturulan durumların S1 kümesinin kodu C2 C2 den oluşturulan durumların S2 kümesinin Daha sonra, bu iki tasarımı (ilk verilen ile tersine mühendislik sonucu elde edilen) SPIN model denetmeninin dili olan diline S1 ile S2 makinelerinin denkliklerinin kontrol edilerek sonuca ulaşılması 5 Şekil 3 - Önerdiğimiz yöntem: 2. seçenek

çevireceğiz. Bu nin literatürde birçok seçeneği bulunmaktadır. Bu lerden sonra durum seçenek-1 ile aynı yere gelmiş olacaktır ve sonrası aynı seçenek-1 de olduğu gibi ilerleyecektir. Bu seçenek Error! Reference source not found. de şematik olarak açıklanmıştır. 4 Sonuç ve gelecek çalışmalar Amacımız, güvenlik alanında bir model geliştirmektir. Bu modelde iki girdi olacaktır: yazılım kaynak kodu ve UML tasarımı. Modelimiz sonuç olarak tasarımdaki özelliklerin yazılım koduna birebir eksiksiz ve tam olarak yansıtılıp yansıtılmadığını bulmaktır. Başka bir deyişle eksik ya da fazla özellik olmadığını ispat etmektir Bu amaçla, iki seçenek önerdik. Literatür taramasında, kaynak kodundan yay a da UML den ya yapan sistemler mevcuttur. Ayrıca tersine mühendislik yapan sistemler de mevcuttur. Bunlardan performansını uygun gördüklerimiz sistemimizin parçası olacaktır. Sonraki çalışma iki sonlu durum makinasının eşdeğer olduğunun nasıl gösterildiğinin üzerinde çalışması ve / veya literatür taraması olacaktır. Temel olarak iki sonlu durum makinasına verilen herhangi aynı girdi, her zaman aynı çıktıyı üretiyorsa ve bu durum biçimsel olarak ispat edilebiliyorsa o zaman bu iki sonlu durum makinası eşdeğerdir. Bundan sonra kaynak kodu örnekleri ve ilgili tasarımlar verilerek bu modelin nasıl çalıştığı örneklerle gösterilecektir. Bundan yola çıkarak modelimizi her değişik programlama bileşeni için (döngüler, seçimleri komutlar, sınıf tanımları) genelleştireceğiz. Ayrıca kaynak kodunun ne kadar tasarımın ne kadarını doğruladığını gösteren bir metrik de geliştirme hedeflerimiz arsandadır Sonuçta, yazılım doğrulama alanında araştırmacıları bu modeli diğer alanlara uyarlayarak yazılım kodu ile tasarımların uyumlu / uyumsuz olduğu noktaları tesit eden sistemler gerçekleştirebilecektir. Referanslar Buc08: Buchholtz M, Montangero C, Perrone L, Semrini S, And For-LySa: UML for Authentication Analysis, Lecture Notes in Computer Science, Volume 3267, pp 93-106, Springer, 2005. Boo96: Booch G, Rumbaugh J, Jacobson I, The Unified Modeling Language for Object Oriented Development, Documentation Set, and The Rational Software Corporation 1996. Cla97: Clarke E, Grumberg O, Long D, Model Checking, Foundations of Software Technology and Theoretical Computer Science, Lecture Notes in Computer Science, Volume 1346, pp 54-56, Springer 1997. 6

Cor02: Corbett J, Dwyer M, Hatchclff J, Laubach S, Pasareanu C, Robby, Zheng H, Bandera: Extracting Finite-State Models from Java Source code, Proceedings of the International Conference on Software Engineering, pp 439-448, 2000 Hav00: Havelund K, Prerssburger T, Model checking JAVA programs using JAVA PathFinder, Int J STTT, pp 366-381, Springer Verlag, 2000 Hol97: G.J. Holzmann The model checker SPIN, IEEE Trans. on Software Engineering, Vol. 23, No. 5, pp. 279-295, May 1997 Jür02: Jürjens J, Lecture Notes in Computer Science, Volume 2460, pp 412-425, Springer, 2002. Jür04: Jürjens J, Shabalin P, Automated Verification of UMLsec Models for Security Requirements, Lecture Notes in Computer Science, Volume 3273, pp 365-379, Springer 2004. Kal08: Kaliappan P S, Koenig H, Designing and Verifying Communication Protocols Using Model Driven Architecture and Spin Model Checker, Journal of Software Engineering and Applications, Issue 1, pp13-19, 2008 Mez07: Mezei G, Levendovsky T, Charaf H, Formalizing the Evaluation of OCL Constraints, Acta Polytechnica Hungarica, Vol4 No.1, pp.89, 2007. Pav07: Pavlich-Mariscal J, Michel L, Demurjian S, Enhancing UML to Model Custom Security Aspects, Aspect-oriented Modeling Workshop Models 2007. Ric98: Richters M, Gogolla M, On formalizing the UML Object Constraint Language OCL, Proc. Of 17 th Intl Conference on Conceptual Modeling, 1998. Sut05: Sutton A, Maletic J I, Mappings for Accurately Reverse Engineering UML Class Models from C++, Proceedings of the 12 th Working Conference on Reverse Engineering, 2005. 7