Geri Dön

Profiling developers to predict vulnerable code changes

Güvenlik açığı kod değişikliklerini öngörmek için geliştiricilerin profilini oluşturma

  1. Tez No: 894340
  2. Yazar: TUĞÇE COŞKUN
  3. Danışmanlar: DOÇ. DR. AYŞE TOSUN KÜHN
  4. Tez Türü: Yüksek Lisans
  5. Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Computer Engineering and Computer Science and Control
  6. Anahtar Kelimeler: Belirtilmemiş.
  7. Yıl: 2023
  8. Dil: İngilizce
  9. Üniversite: İstanbul Teknik Üniversitesi
  10. Enstitü: Lisansüstü Eğitim Enstitüsü
  11. Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
  12. Bilim Dalı: Belirtilmemiş.
  13. Sayfa Sayısı: 77

Özet

Yazılım güvenlik açığı tahmini ve yönetimi, son zamanlarda araştırmacıların ve uygulayıcıların ilgisini çekmiştir. Yazılım güvenlik açıklarını tahmin etmek için genellikle kod eserlerinin özelliklerine dayanan çeşitli teknikler de sunulur. Bu çalışmalar umut verici sonuçlar elde ederken, insan faktörlerinin güvenlik açıklarını tetiklemede oynadığı ana rol henüz çalışılmamıştır. Bu tezde güvenlik açıkları merceğinden geliştiricilerin profili çıkardık. Ayrıca, güvenlik açığı oluşturan taahhütleri tahmin etmede geliştirici profillerinin etkisini araştırdık ve bulguları kod ölçümlerine dayalı yaklaşımla karşılaştırdık. Bildiğimiz kadarıyla ilk kez biz güvenlik açıklarına göre geliştirici profili oluşturduk ve oluşturduğumuz bu geliştirici profilinin güvenlik açığı tahmin modellerindeki etkisini inceledik. Yazılım güvenlik açıkları, kuruluşların itibarı üzerindeki negatif etkileri, yama oluşturma maliyetleri ve kullanıcı gizliliğinin ihlaline sebep olmasına rağmen yazılım araştırmacılarının ve uygulayıcılarının ilgisini çeker. Araştırmalar, yazılım geliştirme yaşam döngüsünde birçok teknik borç türü olduğunu gösteriyor. Teknik borcun birikmiş maliyeti, yazılım kalitesi üzerinde olumsuz bir etkiye sahiptir ve kusur olasılığını artırır. Yazılım sistemlerinde, ölçülemeyen ve geri ödenemez borçlar kusurlarla bir araya geldiğinde, teknik borç güvenlik açıklarına neden olabilir. Önceki araştırmalar, güvenlik açıkları ile tasarım kusurları ve kod karmaşası gibi teknik borç göstergeleri arasındaki korelasyona dair kanıtlar göstermektedir. Geliştirici değişikliklerinin hata tahmini üzerinde iyi performans gösterdiği kanıtlanmıştır. Bazı araştırmalar, geliştirici profilini, elde edilen görev sayısına veya tamamlanan/test edilen yazılım modüllerinin sayısına, aktif programlama/test etme uzmanlığına, üretkenlik veya yıl cinsinden uzmanlık düzeyine göre tanımlamıştır. Öte yandan, bazı araştırmalarda belirli bir davranışa, alışkanlığa veya kodlama stiline göre tanımlanır. Ayrıca geliştirici profili, görev atama çalışmalarında ve geliştiricinin ekip çalışması üzerindeki etkisini ölçmek için kullanılmıştır. Çalışmamızda Heterojen Bilgi Ağı (Heterogeneous Information Network) yöntemini kullanarak güvenlik açıkları merceğinden geliştiricilerin profilini çıkardık ve güvenlik açığına neden olan taahhütleri tahmin etmede profil bilgilerinin etkisini inceleyerek sonuçları paylaştık. Güvenlik açığı oluşturan taahhütleri tahmin etmek için, Java'da geliştirilen Apache Software Foundation deposuna ait 77 projeyi içeren SmartSHARK genel veri kümesini kullandık. Veri setinden çalışmamızla ilgili koleksiyonları belirledik. Veri setindeki MongoDB koleksiyonlarından bazıları çalışmamızla ilgili olmadığı için kaynak veri setinden özel MongoDB betikleri oluşturarak ilgi verileri elde ettik. SmartSHARK, kapsamlı bir veri kaynağı sağlar. Veri kümesi, çekme isteklerini, sorunları, e-postaları ve taahhütleri içerir. Ancak, tahmin modelini oluşturmak için ihtiyaç duyduğumuz güvenlik açıklarını içermez. Bu nedenle, tüm projeler için manuel olarak analiz ederek Ulusal Güvenlik Açığı Veritabanından (NVD) güvenlik açığı kayıtlarını çıkardık. Ardından, en fazla sayıda gerçek güvenlik açığı verisine sahip dört proje seçtik, bu projeler ActiveMQ, Struts, Nifi ve Tika dır. Ardından, yine NVD den faydalanarak yazılım projelerindeki güvenlik açıklarıyla ilişkili düzeltme taahhütlerini bulduk. Ayrıca, bir güvenlik açığı tahmin modeli oluşturmak için güvenlik açığı sağlayan taahhütleri de bulmalıydık. Bunu ise SZZ algoritmasından faydalanarak yaptık. SZZ algoritması, bir sorun izleme sisteminde rapor edilen bir hatanın ve/veya güvenlik açığının giderildiği taahhütleri analiz ederek, onların hata veya güvenlik açığına neden olan taahhütlerini takip eder. Böylece projelerin güvenlik açıklarına neden olan taahhütlerini de elde ettik. 62 güvenlik açığı düzeltme işlemiyle eşleşen 187 güvenlik açığı tetikleyen taahhüt tespit ettik. Sonuç olarak seçtiğimiz dört proje için SmartSHARK veri setini güvenlik açığı veri seti oluşturarak genişlettik. Homojen ağların aksine, Heterojen Bilgi Ağında (HBA) iki düğüm birden çok kenarla birbirine bağlanabilir ve bu kenarlar farklı ilişkileri temsil edebilir. HBA, benzerlik ölçümü, sınıflandırma, kümeleme ve sıralama gibi birçok veri madenciliği görevinde farklı alanlarda kullanılmaktadır. HBA analizi yoluyla geliştiricilerin profilini çıkarmak için Proje, Güvenlik Açıkları ve Geliştirici düğümlerinden oluşan bir ağ kurduk. Proje düğümü, analiz için seçilen projeleri temsil eder. Güvenlik Açığı düğümü, bu projelerde tespit edilen güvenlik açığı kayıtlarının CWE kodlu güvenlik açığı türlerini temsil eder. Geliştirici düğümü ise bu projelerdeki geliştiricileri temsil eder. Geliştiriciler tarafından yapılan kod taahhütlerine göre Proje ve Geliştirici düğümleri arasında iki özdeş ilişki tanımladık. Bir geliştiricinin bir güvenlik açığı oluşturabileceği ve/veya düzeltebileceği için Geliştirici ve Güvenlik Açığı düğümleri arasında iki ilişki tanımladık. Son olarak, aynı taahhüt üzerinde birlikte çalıştıkları için Geliştiriciler arasında bir ilişki tanımladık. Veri setimiz, projelerdeki taahhütler aracılığıyla geliştirici bilgilerine ulaşmamızı sağladığından, HBA'nın matrislerini oluşturmak için tüm bu taahhütleri kullandık. Örneğin, Güvenlik Açığı ve Geliştirici arasındaki ilişki yalnızca güvenlik açığı oluşturan taahhütleri kullanırken, Geliştirici ile Güvenlik Açığı arasındaki ilişki yalnızca güvenlik açığı düzeltme taahhütlerini kullanır. Güvenlik açığı ile Geliştirici arasındaki ilişkiyi temsil eden alt matrisimiz için ağırlığı, bir geliştiricinin bir güvenlik açığı türünü tetiklediği taahhüt sayısına göre tanımladık. Geliştirici ile Güvenlik açığı arasındaki ilişkiyi temsil eden alt matrisimiz için ağırlık, bir geliştiricinin bir güvenlik açığı türünü düzelttiği taahhütlerin sayısıdır. Proje ve Geliştirici arasındaki ilişkiyi temsil eden alt matrisleri oluşturduk ve ilgili projeler için geliştiricilerin tüm taahhüt sayılarını bu alt matrislerde ağırlık olarak kullandık. Son olarak, Geliştirici ve Geliştirici ilişkisini temsil eden alt matrisin ağırlığını 1 olarak belirledik. İki nesne türünü birbirine bağlayan farklı ilişkilerin farklı geçiş olasılıkları vardır, bu da farklı rastgele yürüyüş süreçleri ve sıralama sonuçlarıyla sonuçlanır. Rastgele Yeniden Başlatmalı Yürüyüş Algoritmasını (Random Walk with Restart), tüm ağın küresel yapısını yakalama yeteneği ile bilindiği için, geliştiriciler ve güvenlik açığı türleri arasındaki yakınlığı tahmin etmek için oluşturduğumuz HBA'nın düğümleri üzerinde kenarlarda gezinmek için uyguladık. Ağdaki bir düğümden rastgele bir yürüyüşe çıkan rastgele bir sörfçü, her adımda iki seçeneğe sahiptir: (i) 1 - λ olasılıkla rastgele seçilmiş bir komşu düğüme giden yolu takip etmek; (ii) λ olasılıkla başlangıç düğümüne giden yolu takip etmek. Algoritmada λ yeniden başlatma olasılığı olarak ifade edilir. Bu sayı, algoritmayı kullanan araştırmalarda yaygın olarak 0,7 olarak tanımlanmıştır. Bu nedenle, bu tezde λ değerini 0,7 olarak belirledik. Her alt matrisi bir ayarlama faktörü ile çarparak sütun normalleştirilmiş geçiş olasılığı matrisini elde ettik. Ayarlama faktörü değerini ise 0,5 olarak ayarladık. Algoritmamızda, bir geliştiricinin profilini güvenlik açığıyla ilgili davranışlara göre ölçmeyi amaçladığımız için, tohum düğümleri olarak da adlandırılan yeniden başlatma düğümleri olarak güvenlik açığı düğümlerini belirledik. p_0, çekirdek düğümlerin yeniden başlatma vektörünü temsil eden sütun vektörü olsun. Bir geliştiriciyi, farklı güvenlik açıkları türleri için tetikleme davranışına göre değerlendirirken, yeniden başlatma vektörlerinin farklı olacağını belirtmeliyiz. Geliştirici tipi bir düğümün puanı, geliştiricilerin Güvenlik Açığı tipindeki güvenlik açığı türleriyle ilişkili puanıdır. Elde ettiğimiz puanlar ve sıralamalar, bazı geliştiricilerin güvenlik açıklarıyla diğerlerinden daha fazla ilişkili olduğunu gösterdi. Bazı geliştiricilerin güvenlik açığı oluşturmaya diğerlerinden daha fazla dahil olduğunu gördük. CWE-ID için en yüksek puana sahip geliştirici, diğer geliştiricilere göre daha fazla güvenlik açığı oluşturan taahhütlere sahiptir diyebiliriz. Yaklaşımımızın geçerliliğini değerlendirmek, özellikle geliştiricilere güvenlik açığı yaratan davranışları için atadığımız sıraların doğru olduğunu kanıtlamak zordur. Ayrıca, güvenlik açığı oluşturan taahhütler nadiren gözlemlenir ve geliştirici faaliyetleri genellikle düzensizdir. Alternatif olarak, geliştirici profillerinin güvenlik açığına neden olan taahhütleri tahmin etme üzerindeki etkisini değerlendirmek için yazılım ölçümlerine dayalı başka bir yöntem kullandık. Güvenlik açıklarına neden olan taahhütleri tahmin ederken, geliştirici profilini kullanan yöntemi, kaynak koduna dayalı yazılım ölçümlerini kullanan yöntemle karşılaştırırız. Bunun için projelerdeki karmaşıklık, kapsam ve bağımlılık metriklerini kullandık ve metrikleri veri setinde dosya seviyesinden taahhüt seviyesine kadar topladık. Ayrıca, güvenlik açığı tahmini için aynı model tasarımını kullanarak geliştiricinin profilini temsil eden yeni bir dizi özellik ekledik. Bu çalışmada, yalnızca yazılım kodu metrikleri kullanılarak eğitilen modelleri Yazılım Metrikleri Modeli (YMM), geliştirici profili kullanılarak eğitilen modelleri Geliştirici Profili Modeli (GPM) olarak, her iki girdi özelliği kullanılarak eğitilen modelleri ise Yazılım Metrikleri ve Geliştirici Profili Modeli (YMGPM) olarak tanımladık. Random Forest (RF), eXtreme Gradient Boost (XGB) ve Support Vector Machine (SVM), Naive Bayes (NB) gibi Makine Öğrenmesi (Machine Learning (ML)) sınıflandırıcılarını kullanarak güvenlik açığı tahmin modellerini eğittik. Farklı sınıflandırıcılar, farklı boyut küçültme yöntemleri ve öznitelik seçimi kullanarak oluşturduğumuz modellerin sonuçlarını karşılaştırdık. Farklı sınıflandırma yöntemlerinin performansını değerlendirmek için geri çağırma, kesinlik, F-ölçümü ve inceleme oranı kullandık. Bu metrikler, karışıklık matrisinden çıkarılır. Karışıklık matrisi, doğru ve yanlış tahmin edilen örneklerin sayısını temsil eder. Bu çalışmada, True Positive (TP), modelin geliştiricinin sistemde bir güvenlik açığı oluşturduğunu ve gerçek etiketin savunmasız bir taahhüt olduğunu öngördüğü durumları temsil eder. Öte yandan, True Negative (TN), hem tahmin edilen hem de gerçek etiketlerin savunmasız olduğu durumları gösterir. Performans ölçüleri açısından modeller arasındaki farkların istatistiksel olarak anlamlı olduğu sonucuna varmak için Friedman ve Nemenyi testleri de uyguladık (p < 0.05). Eğitim ve test için alt kümelere ayrılan veri setimizde, birden fazla 70\%-30\% bölme oluşturmak için çeşitli rastgele durum değerleriyle deneyleri 10 kez gerçekleştirdik ve ardından 10 deneme sonucunun ortalamasını aldık. XGB, SVM, RF ve NB sınıflandırma teknikleri, kod taahhütlerini savunmasız ve savunmasız olmayan taahhütler olarak sınıflandırmak için eğittik. Ayrıca öznitelik seçimi ve boyut küçültme yöntemlerinin algoritmaların performansına etkisi de değerlendirdik. Akademik çalışmalarda ML algoritmaları çok sayıda öznitelik veya öznitelikler arasındaki korelasyonlardan olumsuz etkilenebileceğinden, genellikle boyutsallık azaltma yöntemlerine başvurulur. Bu tezde, öznitelik sayısını 10'a indirerek Temel Bileşen Analizi (PCA) ve Bağımsız Bileşen Analizi (ICA) boyutluluk azaltma yöntemlerini kullandık. PCA doğrusal olarak yüksek boyutlu bir öznitelik vektörünü ilişkisiz bileşenlerle düşük boyutlu bir vektöre dönüştürürken, ICA, dönüştürülmüş vektörlerde istatistiksel olarak bağımsız bileşenler elde etmeye çalışır. YMM'de, NB sınıflandırıcısı, geri çağırma metriği (0.89) açısından diğer sınıflandırıcılardan daha iyi performans gösterdi. Ayrıca, NB, ICA boyutsallık azaltma yöntemi ve en iyi 10 öznitelik seçim yönteminin bir kombinasyonu ile en iyi geri çağırma oranına (0,909) sahiptir. Diğer taraftan IR oranları sırasıyla 0,651 ve 0,698'dir. Bu, bu geri çağırma oranına ulaşmak için tüm taahhütlerin 65\%'ini gözden geçirmek için çaba gösterilmesi gerektiği anlamına gelir. GPM sonuçlarına bakıldığında, RF sınıflandırıcının geri çağırma metriği açısından tüm sınıflandırıcılar arasında en iyi performansı gösterdiği görülmektedir. Ancak XGB sınıflandırıcı ve ICA boyutsallık azaltma yönteminin kombinasyonu ile en iyi geri çağırma oranını (0,710) elde ettik. NB sınıflandırıcısı (0.890), YMGPM ile tüm güvenlik açığı tahmin modellerinin sonuçları arasında en iyi geri çağırma oranına sahiptir. Boyut azaltma ve/veya en iyi 10 öznitelik yöntemlerini kullanan sınıflandırıcı kombinasyonlarında, NB sınıflandırıcı ve en iyi 10 öznitelik seçme yönteminin birleşimi en iyi geri çağırma oranına (0,888) sahiptir. Tüm modellerimiz için kesinlik değerleri düşüktür. Belki farklı özelliklerle çok daha başarılı modeller oluşturulabilir. Ancak bu çalışmada amacımız en iyi modeli elde etmek değil, geliştirici profilinin güvenlik açığı tahmini üzerindeki etkisini gözlemlemektir. Sonuçları incelediğimizde, YMGPM modelinin kesinlik değerleri açısından en yüksek sonuçları elde ettiğini söyleyebiliriz. Geliştirici profili tarafından verilen bilgileri kullandığımız GPM modelinin performansının algoritma ve farklı tekniklerle gelişmediğini gözlemledik. GPM'nin YMM'ye göre yeterli olmadığını söyleyebiliriz. Ancak YMGPM modelinde, her iki özellik setinin kombinasyonu ile performansta bir iyileşme gördük. Bu, profil bilgilerinin güvenlik açığına neden olan taahhütlerin tahmin edilmesine katkıda bulunduğunu gösterir. YMGPM modelini, geliştirici profilinin güvenlik açığı tahmini üzerindeki etkisini görmek için tasarladık. Sınıflandırıcı kombinasyonları, boyut azaltma ve/veya en iyi 10 öznitelik seçme yöntemi ile toplam 24 farklı değerlendirme metriği ile sonuçlar elde ettik. Bu 24 farklı kombinasyonun 11'inde YMGPM, geri çağırma metriği açısından YMM'den daha iyi performans gösterdi. Bu da geliştirici profilinin güvenlik açığı tahmini üzerinde olumlu bir etkisinin olduğunun bir göstergesidir. Bu göstergeler ile geliştiricilerin güvenlik açığı yaratan kodlama davranışlarının güvenlik açığı tahmininde etkili olabileceğine dair kanıtlar gözlemlediğimizi söyleyerek araştırma sorumuza cevap verebiliriz. Bu tezde, oluşturduğumuz HBA üzerinde RWR algoritmasını kullanarak güvenlik açıkları açısından geliştirici profili elde ediyoruz. Geliştirici profili oluşturma, geliştirici profilinin güvenlik açığı tahmini üzerindeki etkisi incelenirken farklı şekillerde eklenebilir. Yöntemimiz, güvenlik açığı oluşturma ile ilişkili diğer düğümleri HBA'mıza ekleyerek de genişletilebilir. Ayrıca HBA düğümleri arasında kurduğumuz ilişkiler farklı şekillerde tanımlanabilir. CWE kodları kullanılarak güvenlik açıklarının tespitinde hatalı pozitifliklerin olması mümkündür. Ek olarak, HBA'daki ilişkilerin matris gösterimi, düğümler arasındaki ilgili tüm bağımlılıkları ve etkileşimleri yakalamayabilir. Bunların yanı sıra geliştiricilerin zaman içinde projelerde çok fazla değiştiğini de belirtmekte fayda var. Başka bir deyişle, güvenlik açığı yaratan davranışlar, her geliştiricinin ilişkili projesinde zaman içinde farklılık gösterir. Çalışmamızda belirli tarihler arasında yazılım yaşam döngüsündeki etkinliklerden yararlanarak veri setimizi oluşturuyoruz. Geliştiricinin deneyimine bağlı olarak, bu kodlama davranışı ve alışkanlıkları zamanla değişebilir. Bu, geliştiricilerin güvenlik açığının puanları tetiklediği ve sıralamaların zaman içinde değişebileceği anlamına gelir. Bu nedenle model, geliştiricilerin yeni kazanılan becerileri ve faaliyetleri ile sürekli olarak güncellenmelidir. Bu tezde, geliştiricilerin güvenlik açığı oluşturma üzerinde bir etkiye sahip olduğuna inanarak bir geliştirici profili çıkarmak için tarihsel kodlama faaliyetlerine dayalı bir HBA tasarladık. Geliştiricilerin profilini, bir güvenlik açığı tahmin modeline girdi olarak kolayca kullanılabilecek bir dizi metriğe dönüştürmek için rastgele yeniden başlatmalı yürüyüş algoritmasını kullandık. Deneysel sonuçlarımız, geliştirici profilinin güvenlik açığı tahmini için faydalı bir metrik olduğunu ve diğer metriklerle birleştirildiğinde başarılı modeller oluşturulabileceğini göstermektedir.

Özet (Çeviri)

Recently, researchers and practitioners have been interested in software vulnerability prediction and management. It is also possible to forecast software vulnerabilities using a variety of methods, most of which are based on features of code artifacts. Despite other research yielding encouraging outcomes, the significance of developers in introducing vulnerabilities has yet to be investigated. We characterize developers' vulnerability creation and vulnerability fixing habits in software development projects utilizing Heterogeneous Information Network (HIN) analysis. The SmartSHARK public dataset was used to estimate vulnerable commits. Four projects with the most actual vulnerability data were chosen, and fix commits associated with security vulnerabilities were identified. The dataset's commitments to projects were used to generate the HIN matrices. Different relationships linking the two object types have different transition likelihoods, resulting in distinct random walk processes and ranking results. Our analysis of the Random Walk and Restart (RWR) algorithm on the HIN revealed that some developers are more often linked to vulnerabilities than others. This thesis examines how they affect of developer profiles on predicting vulnerable commits and compares them to the code metrics-based approach. To extract all input features, we use the metrics we obtained by applying the RWR algorithm to the HIN and the aggregation of the code metrics. To create the prediction models, we use conventional machine learning methods, including Random Forest (RF), Naive Bayes (NB), and eXtreme Gradient Boosting (XGB), Support Vector Machine (SVM). We employed recall, accuracy, F-measure, and inspection rate to assess the efficacy of several classifying algorithms. In this thesis, Friedman and Nemenyi tests were used to establish that the differences across the models we created in terms of performance indicators were statistically significant. We report our empirical study that we conducted to anticipate vulnerability-inducing changes across four Apache projects. In terms of recall, the technique focused on code metrics is 90% effective, as opposed to the technique focused on developer behavior profiling is 71% effective. We achieve a success rate of 89% by combining the feature sets generated by the two strategies. The findings demonstrated that the coding practices of developers may be beneficial for predicting vulnerabilities.

Benzer Tezler

  1. Türkiye'de HIV insidans ve prevalanslarının matematiksel modelleme ile tahmini

    Determining HIV incidence and prevalence in Turkey with mathematical modeling

    ZİKRİYE MELİSA ERDOĞAN

    Yüksek Lisans

    Türkçe

    Türkçe

    2018

    Endüstri ve Endüstri Mühendisliğiİstanbul Teknik Üniversitesi

    Endüstri Mühendisliği Ana Bilim Dalı

    DR. ÖĞR. ÜYESİ EMİNE YAYLALI

  2. Yarı-kurak bölgelerde rüzgâr erozyonu tehlikesinin değerlendirilmesi: Bölgesel ölçekte model geçerlilik çalışmaları

    Assessment the risk of wind erosion in semi-arid regions: Developing a regional-scale wind erosin model

    FERAS YOUSSEF

    Doktora

    Türkçe

    Türkçe

    2013

    ZiraatAnkara Üniversitesi

    Toprak Bilimi ve Bitki Besleme Ana Bilim Dalı

    PROF. DR. GÜNAY ERPUL

  3. Software defect prediction with a personalization focus and challenges during deployment

    Kişiselleştirme odaklı yazılım hata tahmini ve entegrasyon zorlukları

    BEYZA EKEN

    Doktora

    İngilizce

    İngilizce

    2022

    Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik Üniversitesi

    Bilgisayar Mühendisliği Ana Bilim Dalı

    DR. ÖĞR. ÜYESİ AYŞE TOSUN KÜHN

  4. Precise event sampling: In-depth analysis and sampling-based profiling tools for data locality

    Kesin olay örnekleme: Derinlemesine analiz ve örneklemeye dayalı veri konumu için profil oluşturma araçları

    MUHAMMAD ADITYA SASONGKO

    Doktora

    İngilizce

    İngilizce

    2022

    Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolKoç Üniversitesi

    Bilgisayar Bilimleri ve Mühendisliği Ana Bilim Dalı

    DR. ÖĞR. ÜYESİ DİDEM UNAT ERTEN

  5. Beach profile response analysis during storm waves

    Fırtına dalgalarının kıyı profiline yaptığı etkinin analizi

    UMUT TÜRKER

    Doktora

    İngilizce

    İngilizce

    2002

    İnşaat Mühendisliğiİstanbul Teknik Üniversitesi

    Su Mühendisliği Bilim Dalı

    PROF. DR. M. SEDAT KABDAŞLI