SWE210 Software Securityİstinye ÜniversitesiAkademik Programlar Yazılım Mühendisliği (İngilizce)Öğrenciler için Genel BilgiDiploma EkiErasmus BeyanıUlusal Yeterlilikler
Yazılım Mühendisliği (İngilizce)

Önizleme

Lisans TYYÇ: 6. Düzey QF-EHEA: 1. Düzey EQF-LLL: 6. Düzey

Ders Genel Tanıtım Bilgileri

Ders Kodu: SWE210
Ders İsmi: Yazılım Güvenliği
Ders Yarıyılı: Bahar
Ders Kredileri:
AKTS
5
Öğretim Dili: İngilizce
Ders Koşulu:
Ders İş Deneyimini Gerektiriyor mu?: Hayır
Dersin Türü: Zorunlu
Dersin Seviyesi:
Lisans TYYÇ:6. Düzey QF-EHEA:1. Düzey EQF-LLL:6. Düzey
Dersin Veriliş Şekli: Yüz yüze
Dersin Koordinatörü: Dr. Öğr. Üy. FEMILDA JOSEPHIN JOSEPH SHOBANA BAI
Dersi Veren(ler): Dr. Öğr. Üyesi Femilda Josephin Joseph Shobana Bai
Dersin Yardımcıları:

Dersin Amaç ve İçeriği

Dersin Amacı: Yazılım Güvenliği kursu, öğrencilere güvenlik ilkeleri, yaygın güvenlik açıkları ve yazılım geliştirmede en iyi uygulamalar konusunda kapsamlı bir anlayış kazandırmayı amaçlamaktadır. Kurs, güvenli geliştirme yaşam döngüsünün temellerinden bellek enjeksiyonu saldırıları ve web güvenliği gibi ileri düzey alanlara kadar önemli konuları kapsayacaktır. Öğrenciler, güvenlik risklerini tanımlamayı, değerlendirmeyi ve azaltmayı öğrenerek güvenli ve dayanıklı yazılım uygulamaları geliştirmeyi sağlayacaklardır. Teorik bilgi ve pratik gösterimlerin harmanlandığı bu kurs sayesinde, öğrenciler yazılım projelerinde güçlü güvenlik önlemleri uygulamak için gereken uzmanlığı geliştireceklerdir.
Dersin İçeriği: Kurs, güvenlik ilkelerine giriş ile başlayacak ve ardından güvenliğin yazılım geliştirme sürecine entegre edilmesi için Güvenli Geliştirme Yaşam Döngüsü ile devam edecektir. Öğrenciler, bellek, komut ve betik enjeksiyonu saldırıları da dahil olmak üzere çeşitli saldırı türlerini öğreneceklerdir. Kurs, tehdit modelleme ve hafifletme stratejilerini kapsayarak, güvenlik risklerinin erken tespit edilmesi ve ele alınmasına odaklanacaktır. Gizlilik konuları arasında kimlik doğrulama, erişim kontrolü ve şifreleme yer almaktadır. Kurs ayrıca güvenlik testleri ve web güvenliğini vurgulayarak, öğrencilerin web uygulamalarının güvenliğini etkin bir şekilde değerlendirebilmelerini ve artırabilmelerini sağlayacaktır.






Öğrenme Kazanımları

Bu dersi başarıyla tamamlayabilen öğrenciler;
1) Temel güvenlik prensiplerini anlamak ve bunları yazılım sistemlerine uygulamak.
2) Yaygın güvenlik açıklarını etkili bir şekilde tanımlamak ve azaltmak.
3) Güvenlik uygulamalarını yazılım geliştirme yaşam döngüsüne entegre etmek.
4) Hassas verileri korumak için gizlilik önlemlerini ve erişim kontrollerini uyarlamak.
5) Standart teknikler kullanarak kapsamlı güvenlik testleri ve değerlendirmeler yapmak.

Ders Akış Planı

Hafta Konu Ön Hazırlık
1) Güvenliğe Giriş
3) Bellek Enjeksiyon Saldırıları
4) Komut Enjeksiyon Saldırıları
5) Betik Enjeksiyon Saldırıları
6) Tehdit Modelleme
7) Hafifletme
8) Ara Sınav
9) Kimlik Doğrulama, Erişim Kontrolü
10) Şifreleme
11) Güvenlik Testi
12) Güvenlik Testi
13) Web Güvenliği
14) web güvenliği

Kaynaklar

Ders Notları / Kitaplar: 1. Payer, M. (2019). Software Security: Principles, Policies, and Protection.
2. Dowd, M., McDonald, J., & Schuh, J. (2006). The art of software security assessment: Identifying and preventing software vulnerabilities. Pearson Education.
3. Mead, N. R., Allen, J. H., Barnum, S., Ellison, R. J., & McGraw, G. R. (2004). Software security engineering: a guide for project managers. Addison-Wesley Professional.
4. Helfrich, J. N. (2018). Security for Software Engineers. CRC Press.
5. Ransome, J., & Misra, A. (2018). Core software security: Security at the source. CRC press.
Diğer Kaynaklar: Class Notes

Ders - Program Öğrenme Kazanım İlişkisi

Course Learning Outcomes

1

2

3

4

5

Program Kazanımları
1) Matematik, fen bilimleri ve yazılım mühendisliğine özgü konularda yeterli bilgi birikimi; bu alanlardaki kuramsal ve uygulamalı bilgileri, karmaşık mühendislik problemlerinin çözümünde kullanabilme becerisi.
2) Karmaşık yazılım mühendisliği problemlerini tanımlama, formüle etme ve çözme becerisi; bu amaçla uygun analiz ve modelleme yöntemlerini seçme ve uygulama becerisi.
3) Karmaşık bir yazılım sistemini, süreci, cihazı veya ürünü gerçekçi kısıtlar ve koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama, gerçekleştirme, sınama, doğrulama, ölçme ve bakımını yapma becerisi; bu amaçla modern tasarım yöntemlerini uygulama becerisi.
4) Yazılım mühendisliği uygulamalarında karşılaşılan karmaşık problemlerin analizi ve çözümü için gerekli olan modern teknik ve araçları seçme ve kullanma becerisi; bilişim teknolojilerini etkin bir şekilde kullanma becerisi.
5) Karmaşık mühendislik problemlerinin veya yazılım mühendisliği araştırma konularının incelenmesi için deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama becerisi.
6) Disiplin içi ve çok disiplinli takımlarda etkin biçimde çalışabilme becerisi; bireysel çalışma becerisi.
7) Sözlü ve yazılı etkin iletişim kurma becerisi; en az bir yabancı dil bilgisi; etkin rapor yazma ve yazılı raporları anlama, tasarım ve üretim raporları hazırlayabilme, etkin sunum yapabilme, açık ve anlaşılır talimat verme ve alma becerisi.
8) Yaşam boyu öğrenmenin gerekliliği konusunda farkındalık; bilgiye erişebilme, bilim ve teknolojideki gelişmeleri izleme ve kendini sürekli yenileme becerisi.
9) Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk ve yazılım mühendisliği uygulamalarında kullanılan standartlar hakkında bilgi.
10) Proje yönetimi, risk yönetimi ve değişiklik yönetimi gibi, iş hayatındaki uygulamalar hakkında bilgi; girişimcilik, yenilikçilik hakkında farkındalık; sürdürülebilir kalkınma hakkında bilgi.
11) Yazılım mühendisliği uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın yazılım mühendisliği alanına yansıyan sorunları hakkında bilgi; yazılım mühendisliği çözümlerinin hukuksal sonuçları konusunda farkındalık.

Ders - Öğrenme Kazanımı İlişkisi

Etkisi Yok 1 En Düşük 2 Orta 3 En Yüksek
       
Dersin Program Kazanımlarına Etkisi Katkı Payı
1) Matematik, fen bilimleri ve yazılım mühendisliğine özgü konularda yeterli bilgi birikimi; bu alanlardaki kuramsal ve uygulamalı bilgileri, karmaşık mühendislik problemlerinin çözümünde kullanabilme becerisi. 3
2) Karmaşık yazılım mühendisliği problemlerini tanımlama, formüle etme ve çözme becerisi; bu amaçla uygun analiz ve modelleme yöntemlerini seçme ve uygulama becerisi. 2
3) Karmaşık bir yazılım sistemini, süreci, cihazı veya ürünü gerçekçi kısıtlar ve koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama, gerçekleştirme, sınama, doğrulama, ölçme ve bakımını yapma becerisi; bu amaçla modern tasarım yöntemlerini uygulama becerisi.
4) Yazılım mühendisliği uygulamalarında karşılaşılan karmaşık problemlerin analizi ve çözümü için gerekli olan modern teknik ve araçları seçme ve kullanma becerisi; bilişim teknolojilerini etkin bir şekilde kullanma becerisi. 2
5) Karmaşık mühendislik problemlerinin veya yazılım mühendisliği araştırma konularının incelenmesi için deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama becerisi. 2
6) Disiplin içi ve çok disiplinli takımlarda etkin biçimde çalışabilme becerisi; bireysel çalışma becerisi.
7) Sözlü ve yazılı etkin iletişim kurma becerisi; en az bir yabancı dil bilgisi; etkin rapor yazma ve yazılı raporları anlama, tasarım ve üretim raporları hazırlayabilme, etkin sunum yapabilme, açık ve anlaşılır talimat verme ve alma becerisi.
8) Yaşam boyu öğrenmenin gerekliliği konusunda farkındalık; bilgiye erişebilme, bilim ve teknolojideki gelişmeleri izleme ve kendini sürekli yenileme becerisi.
9) Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk ve yazılım mühendisliği uygulamalarında kullanılan standartlar hakkında bilgi.
10) Proje yönetimi, risk yönetimi ve değişiklik yönetimi gibi, iş hayatındaki uygulamalar hakkında bilgi; girişimcilik, yenilikçilik hakkında farkındalık; sürdürülebilir kalkınma hakkında bilgi.
11) Yazılım mühendisliği uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın yazılım mühendisliği alanına yansıyan sorunları hakkında bilgi; yazılım mühendisliği çözümlerinin hukuksal sonuçları konusunda farkındalık.

Ölçme ve Değerlendirme

Yarıyıl İçi Çalışmaları Aktivite Sayısı Katkı Payı
Ödev 4 % 30
Ara Sınavlar 1 % 30
Final 1 % 40
Toplam % 100
YARIYIL İÇİ ÇALIŞMALARININ BAŞARI NOTU KATKISI % 60
YARIYIL SONU ÇALIŞMALARININ BAŞARI NOTUNA KATKISI % 40
Toplam % 100

İş Yükü ve AKTS Kredisi Hesaplaması

Aktiviteler Aktivite Sayısı İş Yükü
Ders Saati 13 39
Sınıf Dışı Ders Çalışması 14 70
Ödevler 5 10
Küçük Sınavlar 2 4
Ara Sınavlar 1 2
Final 1 2
Toplam İş Yükü 127