Yazılım Mühendisliği (İngilizce)
Lisans TYYÇ: 6. Düzey QF-EHEA: 1. Düzey EQF-LLL: 6. Düzey

Ders Genel Tanıtım Bilgileri

Ders Kodu: JOB113
Ders İsmi: Çeviklik ve Yazılım Test Temelleri
Ders Yarıyılı: Güz
Bahar
Ders Kredileri:
AKTS
5
Öğretim Dili: İngilizce
Ders Koşulu:
Ders İş Deneyimini Gerektiriyor mu?: Hayır
Dersin Türü: Bölüm/Program Seçmeli
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. MUHAMMED DAVUD
Dersi Veren(ler):
Dersin Yardımcıları:

Dersin Amaç ve İçeriği

Dersin Amacı: Bu dersin amacı, öğrencilere yazılım geliştirme süreçlerinde güncel ve etkili yöntemleri öğretmek, bu yöntemlerin nasıl uygulanacağını ve avantajlarını kavratmaktır. Ders, öncelikle Agile metodolojisinin temel prensiplerini anlatarak başlayacak ve ardından Scrum frameworkünü detaylı bir şekilde ele alacaktır. Öğrenciler, Scrum’un işleyişini, rollerini ve seremonilerini öğrenerek pratikte nasıl uygulanacağını kavrayacaklardır.

Scrum’un ardından, yazılım testinin temel prensipleri olan ISTQB Foundation Level konularına geçiş yapılarak, yazılım testi süreçleri ve teknikleri hakkında bilgi verilecektir. Bu bölümde, test tasarımı teknikleri, test yönetimi, test araçları ve yazılım kalitesinin nasıl sağlanacağı gibi konular işlenecektir.

Son olarak, Agile Testing konusuna değinilerek, Agile metodolojisi ile entegre bir şekilde nasıl etkin test süreçleri yürütülebileceği anlatılacaktır. Öğrenciler, Agile ortamlarında test stratejileri geliştirme, sürekli entegrasyon ve teslimat süreçlerinde testin rolünü anlama fırsatı bulacaklardır.

Bu ders, öğrencilere teorik bilgilerin yanı sıra pratik uygulama fırsatları da sunarak, gerçek dünya projelerinde kullanabilecekleri beceriler kazandırmayı amaçlamaktadır. Öğrencilerin, yazılım geliştirme ve test süreçlerinde kaliteyi artıracak modern yöntemleri benimsemeleri ve uygulamaları hedeflenmektedir.
Dersin İçeriği: Ders, Agile metodolojisinin temelleri, Scrum frameworkü, yazılım testinin temel prensipleri ve Agile test yaklaşımlarını ele almaktadır. Dersin içeriği:

Agile Manifestosu, Agile metodolojiler (Scrum, Kanban, XP, Lean) ve Agile ile geleneksel yaklaşımlar arasındaki farklar.
Scrum'un tanımı, roller (Product Owner, Scrum Master, Development Team), artefaktlar (Product Backlog, Sprint Backlog, Increment) ve seremoniler (Sprint Planning, Daily Stand-up, Sprint Review, Sprint Retrospective).
Yazılım testine giriş, test seviyeleri (birim testi, entegrasyon testi, sistem testi, kabul testi) ve test teknikleri (kara kutu testi, beyaz kutu testi, deneyime dayalı testler).
Test yönetimi, planlama, izleme ve kontrol, risk temelli test ve test araçları.
Agile testing, Agile test dörtlüsü (Test Quadrants), Agile testing prensipleri (hızlı geribildirim, sürekli entegrasyon, TDD, BDD), Agile test teknikleri (exploratory testing, pair testing) ve Agile test otomasyonu.
Uygulamalı çalışmalar kapsamında Scrum simülasyonları, test case yazma ve yürütme, ve test otomasyonu uygulamaları yer almaktadır.
Ders, öğrencilere teorik bilgilerle birlikte pratik uygulama fırsatları sunarak, yazılım geliştirme süreçlerinde etkili ve verimli çalışma becerileri kazandırmayı amaçlamaktadır.

Öğrenme Kazanımları

Bu dersi başarıyla tamamlayabilen öğrenciler;
1) Agile manifestosu ve prensipleri ile Scrum frameworkünün (roller, seremoniler, artifekler) temellerini anlama ve açıklayabilme.
2) Scrum seremonilerini etkin bir şekilde uygulama, Product Backlog ve Sprint Backlog yönetimi yapabilme, kullanıcı hikayeleri yazma becerisi kazanma.
3) Yazılım testinin seviyelerini ve tekniklerini (kara kutu, beyaz kutu, deneyime dayalı testler) kavrayabilme, test yönetimi ve planlaması konularında bilgi sahibi olma.
4) Agile testing prensiplerini, test stratejilerini ve tekniklerini (TDD, BDD) anlama ve uygulama, test otomasyon araçları ile CI/CD süreçlerini entegre edebilme.
5) Scrum simülasyonları, test case yazma, test otomasyonu uygulamaları ile pratik beceriler geliştirme ve ekip içi işbirliği ile etkili çalışma yeteneği kazanma.

Ders Akış Planı

Hafta Konu Ön Hazırlık
1) Giriş ve Agile Temelleri
2) Agile ve Geleneksel Yaklaşımlar
3) Scrum’a Giriş - Scrum Roller - Scrum Scrum Artifacts
4) Scrum Ceremonies - 1
5) Scrum Ceremonies - 2
6) Scrum’un İşleyişi ve Pratik Uygulama
7) Yazılım Testine Giriş
8) Ara Sınav
9) Test Seviyeleri ve Tipleri
10) Test Tasarım teknikleri ve test case yazımı ve Test Otomasyonu
11) Test Tasarım teknikleri - Test Senaryo yazımı - Sektörde yaygın kullanılan araçlar ve teknikler ve Örnekler
12) Yazılım Testinde Hatalar - Hata Raporlaması - Sektörde yaygın kullanılan araçlar ve Örnekler
13) Agile Testing Nedir?
14) Agile Test Teknikleri ve Stratejileri
15) Sektörden konuşmacıların katılması ve Dersin Değerlendirilmesi

Kaynaklar

Ders Notları / Kitaplar: Software Testing: An ISTQB-BCS Certified Tester Foundation guide - 4th edition,
Diğer Kaynaklar: Software Testing: An ISTQB-BCS Certified Tester Foundation guide - 4th edition,

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

Ders Öğrenme Kazanımları

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

Ölçme ve Değerlendirme

Yarıyıl İçi Çalışmaları Aktivite Sayısı Katkı Payı
Projeler 1 % 20
Ara Sınavlar 1 % 40
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ı Aktiviteye Hazırlık Aktivitede Harçanan Süre Aktivite Gereksinimi İçin Süre İş Yükü
Ders Saati 13 3 39
Sınıf Dışı Ders Çalışması 14 3 42
Proje 1 10 10
Ara Sınavlar 1 10 10
Final 1 15 15
Toplam İş Yükü 116