SEDS 519

Yazılım Tasarım Örüntüleri

Bu ders ileri yazılım tasarım şablonları üzerine odaklanmıştır. Dersin ana konularını; ileri nesneye dayalı programlama prensipleri, nesneye dayalı tasarım şablonları, kurumsal uygulama mimarisi şablonları, kurumsal uygulama bütünleştirme şablonları ve alana dayalı tasarım şablonları oluşturmaktadır. Bu derste öğrenciler tasarım şablonları kullanarak modern yazılım geliştirme kavramlarını öğrenecek ve bu kavramları kullanarak orta büyüklükteki bir yazılımı takım olarak geliştirecektir.

Referans kitap(lar):

  • Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Addison-Wesley, 1995.
  • Patterns of Enterprise Application Architecture, Martin Fowler, Addison-Wesley, 2003.
  • Enterprise Integration Patterns, Gregor Hohpe, Bobby Wolf, Addison-Wesley, 2011.
  • Patterns, Principles, and Practices of Domain-Driven Design, Scott Millett, Nick Tune, John Wiley & Sons, 2015. 

Ders Amaçları: Öğrencilere yazılım tasarım kalıplarındaki güncel eğilimler hakkında bilgi vermek.

Hafta Konular
1 Nesneye Dayalı Analiz ve Tasarıma Giriş
2 Abstrakt Sınıflar ve Arayüzler ile Kalıtım ve Polimorfizm
3 Nesneye Dayalı Programlama Prensipleri
4 Mimari Tasarım Şablonu – Model Görünüm Yönetici
5 Gözlemci Tasarım Şablonu
6 Üretim Tasarım Şablonları
7 Yapısal Tasarım Şablonları
8 Davranışsal Tasarım Şablonları
9 Kurumsal Uygulama Mimarisi Şablonlarına Giriş
10 Nesne-İlişki Tasarım Şablonları
11 Kurumsal Uygulama Bütünleştirme Şablonlarına Giriş
12 Mesajlaşma Tasarım Şablonları
13 Alana Dayalı Tasarıma Giriş
14 Mikroservis Tasarım Şablonları

Notlandırma:

Final Sınavı                                                    %40

Ara Sınav                                                        %30

Proje                                                                %30

Ders Öğrenme Çıktıları
ÖÇ1 – Yazılım tasarım prensiplerini ve şablonlarını belirleyebilme ve açıklayabilme
ÖÇ2 – Tasarım prensiplerini ve şablonlarını takım olarak yazılım geliştirmede uygulayabilme
ÖÇ3 – Tasarım şablonlarının talep edilen yazılım özellikleri ile ilgisini detaylı bir şekilde değerlendirebilme ve raporlayabilme
ÖÇ4 – Tasarım prensipleri ve tasarım şablonlarının; programlama dili tasarımı, uygulama çerçeveleri veya uygulama alanları ile ilişkisini analiz edebilme ve raporlayabilme

Program Öğrenme Çıktılarının Katkısı:

PO1 PO2 PO3 PO4 PO5 PO6 PO7
CO1 1
CO2 1 1 1 1
CO3 1 1 1 1 1
CO4 1 1 1 1

Dersin Gerekçesi:
Bu ders, Yazılım Mühendisliği ve Veri Bilimi Yüksek Lisans Programı’nın seçmeli derslerinden biridir ve önemli Yazılım Mühendisliği seçmeli derslerinden biridir. Yazılım mühendisliğinde kullanılacak en güncel yazılım geliştirme yaklaşımları için gerekli altyapıyı sağlar.

Diğer derslerle örtüşen veya tamamlayıcı konular:
Bu ders, Yazılım İnşası (Software Construction) dersinin devamı niteliğindedir.