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.
|
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 |
|
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. |
|