Yazılım Mühendisliği | |||||
Lisans | TYYÇ: 6. Düzey | QF-EHEA: 1. Düzey | EQF-LLL: 6. Düzey |
Ders Kodu: | YAZ214 | ||||
Ders İsmi: | Yazılım Güvenliği | ||||
Ders Yarıyılı: | Bahar | ||||
Ders Kredileri: |
|
||||
Öğretim Dili: | Turkish | ||||
Ders Koşulu: | |||||
Ders İş Deneyimini Gerektiriyor mu?: | Hayır | ||||
Dersin Türü: | Zorunlu | ||||
Dersin Seviyesi: |
|
||||
Dersin Veriliş Şekli: | Yüz yüze | ||||
Dersin Koordinatörü: | Dr. Öğr. Üy. MUHAMMED DAVUD | ||||
Dersi Veren(ler): | Dr. Öğr. Üyesi Femilda Josephin Joseph Shobana Bai | ||||
Dersin Yardımcıları: |
Dersin Amacı: | Bu yazılım güvenliği kursu, öğrencilere güvenli yazılım geliştirme konusunda kapsamlı bir anlayış kazandırmayı amaçlamaktadır. Güvenli kodlama, mimari ve sistem birleştirme zorlukları gibi konuları kapsayan kurs, kimlik doğrulama, şifreleme ve kriptografi gibi temel mekanizmaları ele alır. Öğrenciler ağ güvenliği hususlarının yanı sıra web ve mobil güvenliğindeki pratik uygulamaları keşfederler. Güvenli yazılıma yönelik yönetişim ve yönetim stratejileri vurgulanmakta ve blockchain, IoT güvenliği ve AI/ML uygulamaları dahil olmak üzere ortaya çıkan trendler incelenmektedir. Teorik bilgiler ve pratik alıştırmalar yoluyla öğrenciler, dinamik bir teknolojik ortamda güvenli yazılım sistemlerini tasarlamak ve sürdürmek için gerekli becerileri geliştirirler. |
Dersin İçeriği: | Bu yazılım güvenliği kursu, güvenli kodlama, mimari ve test etme gibi temel hususları kapsamakta ve kimlik doğrulama, şifreleme ve ağ güvenliği gibi ileri düzey konulara ilerlemektedir. Güvenlikte blockchain ve yapay zeka da dahil olmak üzere yönetim stratejileri ve ortaya çıkan trendler inceleniyor. Öğrenciler dinamik teknolojik ortamda güvenli yazılım sistemleri tasarlama ve sürdürme becerilerini kazanırlar. |
Bu dersi başarıyla tamamlayabilen öğrenciler;
1) Yaygın tehditleri ve güvenlik açıklarını tanıyarak, yazılım geliştirmede güvenliğin önemini iyice kavrayın. 2) Güvenli kodlama uygulamaları geliştirin ve güvenliği yazılım geliştirme yaşam döngüsüne entegre edin. 3) Güvenli yazılım geliştirmeyi sağlamada etkili yönetişim ve yönetim stratejilerini keşfedin. 4) İletişim güvenliğini, güvenlik duvarlarını ve izinsiz giriş tespitini kapsayan ağ bağlantılı yazılım sistemlerindeki güvenlik zorluklarını gidermek için analitik becerileri geliştirin. 5) Yaygın güvenlik açıklarını ve en iyi uygulamaları kapsayan, web ve mobil uygulamaların güvenliğinin sağlanmasına ilişkin bilgiler edinin. |
Hafta | Konu | Ön Hazırlık |
1) | Güvenlik Neden Bir Yazılım Sorunudur? | |
2) | Yazılımı Güvenli Yapan Nedir? | |
3) | Güvenli Yazılım için Gereksinim Mühendisliği | |
4) | Güvenli Yazılım Mimarisi ve Tasarımı | |
5) | Güvenli Kodlama ve Teste İlişkin Hususlar | |
6) | Güvenlik ve Karmaşıklık: Sistem Montajı Zorlukları | |
7) | Daha Güvenli Yazılım İçin Yönetişim ve Yönetim | |
8) | Ara SINAV | |
9) | Kimlik doğrulama ve yetkilendirme | |
10) | Şifreleme ve Kriptografi | |
11) | Şifreleme ve Kriptografi | |
12) | Web Uygulama Güvenliği, Mobil Uygulama Güvenliği | |
13) | Yazılım Sistemleri için Ağ Güvenliği | |
14) | Yazılım Güvenliğinde Yükselen Trendler |
Ders Notları / Kitaplar: | Software Security: Building Security In by Gary McGraw, " Addison-Wesley Professional, 2006, ISBN: 0321356705 |
Diğer Kaynaklar: | Class Notes |
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. |
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. |
Yarıyıl İçi Çalışmaları | Aktivite Sayısı | Katkı Payı |
Küçük Sınavlar | 2 | % 10 |
Ödev | 3 | % 20 |
Ara Sınavlar | 2 | % 30 |
Final | 2 | % 40 |
Toplam | % 100 | |
YARIYIL İÇİ ÇALIŞMALARININ BAŞARI NOTU KATKISI | % 60 | |
YARIYIL SONU ÇALIŞMALARININ BAŞARI NOTUNA KATKISI | % 40 | |
Toplam | % 100 |
Aktiviteler | Aktivite Sayısı | İş Yükü |
Ders Saati | 13 | 39 |
Sınıf Dışı Ders Çalışması | 14 | 70 |
Ödevler | 2 | 4 |
Küçük Sınavlar | 2 | 4 |
Ara Sınavlar | 1 | 2 |
Final | 1 | 2 |
Toplam İş Yükü | 121 |