← Ana sayfaEN
Lisans2027–2028 Bahar

Yazılım Mühendisliği

Yazılım Mühendisliği Dersi

Öğretim dili
Türkçe
İletişim
Proje fikirleri ve sorular grup lideri aracılığıyla Discord'dan ya da yüz yüze; duyurular bu platformdan

Ders tanımı

Ders teori ve proje kısımlarından oluşur. Teorik kısımda hem iş hayatında fayda sağlayacak güncel konular anlatılır hem de projede yapılması gerekenler aktarılır: yazılım geliştirme yaşam döngüsü, planlama ve gereksinim analizi, REST API ve OpenAPI, mikroservisler, Git ile takım halinde çalışma, Docker, CI/CD, önbellekleme ve mesaj kuyrukları.

Proje kısmında gruplar, internet üzerinde aktif olarak kullanılan, veritabanı etkileşimli bir web uygulamasını yazılım geliştirme yaşam döngüsünün aşamalarıyla geliştirir. Öğretim üyesi hem mentör olarak yönlendirir hem de müşteri olarak değerlendirir. Teknoloji sınırı yoktur; her grup istediği programlama dilini ve framework'ü kullanabilir.

Proje aşamaları:

  • Analiz: grup ve proje belirleme, gereksinim analizi (iş, kullanıcı, fonksiyonel ve fonksiyonel olmayan gereksinimler), proje planı
  • Tasarım: durum (use case) diyagramı ve durum senaryoları, veritabanı diyagramı
  • Geliştirme: arayüz tasarımı, front-end çatısı kullanımı, REST API (OpenAPI ile tasarım, gerçekleştirim ve Postman testleri), back-end, Docker kullanımı
  • Test: uygulamanın gereksinimlere göre sınanması
  • Dokümantasyon: kullanıcı ve geliştirici dokümantasyonu
  • Dağıtım: uygulamanın kendi domain'i üzerinde yayına alınması
  • Ek teknolojiler (bonus): projeye eklenen ek teknolojiler

Vize Analiz ve Tasarım aşamalarını, final Geliştirme, Test, Dokümantasyon ve Dağıtım aşamalarını kapsar. Bazı kalemler grupça, bazıları bireysel olarak yapılır ve puanlanır.

Öğrenme çıktıları

Bu dersi başarıyla tamamlayan öğrenci:

  1. 1Yazılım geliştirme yaşam döngüsünün aşamalarını bir ekip projesinde uygular
  2. 2İş, kullanıcı, fonksiyonel ve fonksiyonel olmayan gereksinimleri belirler ve belgeler
  3. 3Proje planı hazırlar ve görevleri ekip içinde paylaştırır
  4. 4Sistemi durum (use case) diyagramı, durum senaryoları ve veritabanı diyagramıyla tasarlar
  5. 5REST API'yi OpenAPI ile tasarlar, gerçekleştirir ve Postman ile test eder
  6. 6Web arayüzünü bir front-end çatısıyla geliştirir ve REST API'ye bağlar
  7. 7Git ile dallar ve birleştirmelerle takım halinde çalışır
  8. 8Uygulamayı Docker ile kapsüller; CI/CD sürecini açıklar ve uygular
  9. 9Önbellekleme (Redis, Memcached) ve mesaj kuyrukları (RabbitMQ, Kafka) gibi ölçeklenebilirlik tekniklerini açıklar
  10. 10Uygulamayı yayına alır; kullanıcı ve geliştirici dokümantasyonu hazırlar

Haftalık plan

HaftaKonuOkuma ve çalışmalar
1Ders tanıtımı; grupların ve projenin belirlenmesiLider seçimi, proje fikrinin onaylatılması, grup formunun gönderilmesi
2Yazılım mühendisliği ve yazılım geliştirme yaşam döngüsü; planlamaProje planı
3Gereksinim analizi: iş, kullanıcı, fonksiyonel ve fonksiyonel olmayan gereksinimler, FURPS+Gereksinimler GitHub'daki README şablonunda
4Tasarım: durum (use case) diyagramı ve durum senaryoları
5Veritabanı tasarımıVeritabanı diyagramı
6API, JSON ve REST; OpenAPI ve Swagger; mikroservislerREST API'nin OpenAPI (YAML) ile tasarımı
7Git ile takım halinde çalışma: branch, commit, mergeVize aşamaları (Analiz ve Tasarım) tamamlanır
8Vize haftası
9REST API geliştirme ve Postman ile testDomain üzerinde REST API ve back-end; test videosu ve Postman koleksiyonu
10Front-end: arayüz tasarımı ve front-end çatısıDomain üzerinde API'ye bağlı front-end; test videosu
11Docker: konteynerler, Dockerfile, docker-composeFront-end ve REST API Docker üzerinde
12CI/CD: kavramlar ve Jenkins pipeline; testJenkinsfile ve tüm aşamaların çalıştığını gösteren video
13Önbellekleme: Redis ve Memcached; Redis ile JWT kara listeleme
14Mesaj kuyrukları: RabbitMQ ve Apache Kafka; dokümantasyon ve dağıtımKullanıcı ve geliştirici dokümantasyonu; uygulama kendi domain'inde yayında

Değerlendirme

%40Vize%60Final
VizeToplam 100 puan
  1. Analiz
    Grup BelirlemeGrup3 puan
  2. Proje BelirlemeGrup2 puan
  3. Gereksinim AnaliziGrup20 puan
  4. Proje PlanıGrup5 puan
  5. Tasarım
    Durum DiyagramıGrup25 puan
  6. Durum Senaryoları35 puan
  7. Veritabanı DiyagramıGrup10 puan
FinalToplam 100 puan
  1. Geliştirme
    Arayüz Tasarımı15 puan
  2. Front-End Çatısı KullanımıGrup10 puan
  3. REST API25 puan
  4. Back-End20 puan
  5. Docker KullanımıGrup5 puan
  6. Test
    Test10 puan
  7. Dokümantasyon
    Kullanıcı Dokümantasyonu5 puan
  8. Geliştirici Dokümantasyonu5 puan
  9. Dağıtım
    DomainGrup5 puan
  10. Ek TeknolojilerGrupBonus+15 puan

Kaynaklar

Ders kuralları

Gruplar: Bir grup en fazla 5 kişiden oluşur; alt sınır yoktur, ancak en az 3 kişi önerilir. Her grup bir lider belirler ve her grup farklı bir proje yapar.

Öğretim üyesinin rolü: Öğretim üyesi hem mentör olarak yönlendirir hem de müşteri olarak puanlar. Projeler değerlendirme şablonuna göre puanlanır; bazı aşamalar derste değerlendirilebilir.

Proje onayı: Proje fikri, grup lideri aracılığıyla Discord'dan ya da yüz yüze öğretim üyesine onaylatılır; ardından grup formu doldurulur.

Teknoloji: Teknoloji sınırı yoktur; istenen programlama dili ve framework kullanılabilir.

Bireysel ve grup çalışması: Projenin bazı kısımları bireysel, bazıları grupçadır. Bireysel kısımlarda herkes kendi GitHub hesabından commit eder; commit'i görülmeyen hesap o kısımdan puan alamaz. Grup kısımlarını lider ya da herhangi bir üye commit edebilir. Herkes kendi branch'ında çalışır, lider main'e birleştirir.

Repo: README, YazMuh şablonuna birebir uygun hazırlanır; uymayan teslimler değerlendirilmez.

Gereksinimler: Gereksinimler üyeler arasında eşit paylaştırılır; toplamda en az 1 kişi için 10, 2 kişi için 16, 3 kişi için 21, 4 kişi için 24, 5 kişi için 30 gereksinim olmalıdır. Her üyenin en az bir ekleme (POST), güncelleme (PUT), listeleme (GET) ve silme (DELETE) gereksinimi olur ve her gereksinim bir API metoduna karşılık gelir. Adlar kısa ve bir eylem bildirir (ör. Kayıt olma, Giriş yapma); açıklamalar net olur, teknik jargon ve kısaltma içermez. Gereksinimler GitHub'a eklenmeden önce yüz yüze onaylatılır. Ek olarak yapılan yapay zekâ tabanlı bir gereksinim ek puan getirir.

Domain üzerinde çalışma: REST API ve front-end bir domain üzerinde çalışmalıdır; domain üzerinde çalışmayan çalışmalar, başka kanıt olsa bile puan almaz.

Videolar ve testler: Her üye kendi sayfasının başına bir YouTube videosu ekler: adını, kendisine ait gereksinimleri ve kaçını yaptığını söyler, ardından her gereksinimi başarılı biçimde test eder. REST API testleri domain üzerinde Postman koleksiyonuyla yapılır; koleksiyon JSON olarak repodaki kendi klasörüne kaydedilir.

Odak: Dersi geçmeye ya da kaç puan alacağınıza odaklanmayın. İş hayatınızda referans olacak, özgeçmişinize eklediğinizde fark yaratacak güzel projeler geliştirmeye odaklanın.