CE 611 | Ders Tanıtım Bilgileri

Dersin Adı
Tasarım Şablonları ve Yeniden Kod Düzenleme
Kodu
Yarıyıl
Teori
(saat/hafta)
Uygulama/Lab
(saat/hafta)
Yerel Kredi
AKTS
CE 611
Güz/Bahar
3
0
3
7.5

Ön Koşul(lar)
Yok
Dersin Dili
İngilizce
Dersin Türü
Seçmeli
Dersin Seviyesi
Doktora
Dersin Koordinatörü -
Öğretim Eleman(lar)ı
Yardımcı(lar)ı -
Dersin Amacı Bu ders, tasarım şablonları ve yeniden kod düzenlenmesi üzerine derinlemesine çalışmayı amaçlar. Tasarım şablonları yazılım uzmanlarının daha önceden üzerinde çalışılmış ve kabul edilmiş çözümleri yeniden üretmesinin önüne geçmeye çalışırken, kodların yeniden düzenlenmesi ise özensiz geliştirilmiş yazılımların, harici davranışı değiştirmeden iyileştirilmesi, düzeltilmesi ve hatalardan arındırılmasını amaçlar. Tasarım Şablonları kod yazılmadan tasarımı iyileştirmek, yeniden düzenleme is kod yazıldıktan sonra tasarımı iyileştirmeyi hedefler. Hem tasarım şablonları hemde yeniden kod düzenleme teknikleri karmaşık, bakılabilir ve genişleyebilen yazılım sistemleri geliştirmeye yardım eder. Her iki metodun avantajları ve dezavantajları dersde tartışılacak, öğrenciler bu teknikleri ödevler aracılığı ile uygulama fırsatı bulacaklardır.
Öğrenme Çıktıları Bu dersi başarıyla tamamlayabilen öğrenciler;
  • tasarım şablonlarının formu ve içeriğini tanımlayabilecekler,
  • şablonların neyi içermediğini ve yazılım tasarımlarında nasıl uygulanabildiğini belirleyebilecekler,
  • uygun tasarım şablonunu belirleyip, seçebilecekler ve yazılım çözümlerinde kullanabilecekler,
  • yeniden kod düzenlemesi ile mevcut yazılımları iyileştirerek onları daha bakılabilir ve genişleyebilir hale getirebilecekler,
  • uygun yeniden kod düzenleme tekniklerini seçerek özel problemlerin çözümünde kullanabilecekler.
Tanımı Bu ders karmaşık, bakılabilir ve genişleyebilen yazılım sistemlerin geliştirilmesinde kullanılan tasarım şablonları ve kod yeniden düzenleme teknikleri üzerine derinlemesine bir çalışmayı içerir.

 



Ders Kategorisi

Temel Meslek Dersleri
Uzmanlık/Alan Dersleri
Destek Dersleri
İletişim ve Yönetim Becerileri Dersleri
Aktarılabilir Beceri Dersleri

 

HAFTALIK KONULAR VE İLGİLİ ÖN HAZIRLIK ÇALIŞMALARI

Hafta Konular Ön Hazırlık
1 Tasarım şablonlarına giriş ve tasarım şablon kataloğu. Strateji Bölüm 1 Design Patterns. Gamma, Helm, Johnson and Vlissides (GHJV)
2 Oluşturucu Şablonlar: Soyut Fabrika, Yapıcı, Prototip Bölüm 3 Design Patterns. Gamma, Helm, Johnson and Vlissides (GHJV)
3 Yapısal Şablonlar- Bölüm 1: Adapter, Kompozit, Cephe Bölüm 4 Design Patterns. Gamma, Helm, Johnson and Vlissides (GHJV)
4 Yapısal Şablonlar- Bölüm 2: Köprü, Dekoratör Bölüm 4 Design Patterns. Gamma, Helm, Johnson and Vlissides (GHJV)
5 Davranışsal Şablonlar- Bölüm 1: Gözleyici, Aracı, Şablon Metod Bölüm 5 Design Patterns. Gamma, Helm, Johnson and Vlissides (GHJV)
6 Davranışsal Şablonlar- Bölüm 2: Hatıra, Durum Bölüm 5 Design Patterns. Gamma, Helm, Johnson and Vlissides (GHJV)
7 Vize
8 Yeniden düzenlemeye giriş, kötü kokan kodlar Bölüm 1-3 Refactoring. Fowler et.al. pp. 1-87.
9 Veriyi yönetmek Bölüm 8 Refactoring. Fowler et.al. pp 169-232.
10 Koşullu mantığı kaldırmak Bölüm 9 Refactoring. Fowler et.al. pp. 237-267.
11 Basitleştirme amaçlı yeniden düzenleme Bölüm 10 Refactoring. Fowler et.al. pp. 271-315.
12 Genelleştiren yeniden düzenlemeler Bölüm 11 Refactoring. Fowler et.al. pp. 319-355.
13 Öğrenci sunumları
14 Öğrenci sunumları
15 Tekrar
16 Final

 

Dersin Kitabı “Design patterns: Elements of Reusable Object-Oriented Software” by E. Gamma, R. Helm, R. Johnson and J. Vlissides.Addison-Wesley. 1995. ISBN-13: 978-0-201-63361, ISBN-10: 0-201-63361-2 “Refactoring, Improving the design of existing code” by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts. 1999 ISBN-13: 978-0-201-48567-7, ISBN-10: 0-201-48567-2
Diğer Kaynaklar Okutman yansıları

 

DEĞERLENDİRME ÖLÇÜTLERİ

Yarıyıl İçi Çalışmaları Sayı Katkı Payı %
Derse Katılım
Laboratuvar / Uygulama
Arazi Çalışması
Küçük Sınavlar / Stüdyo Kritiği
Ödev
Sunum / Jüri Önünde Sunum
1
20
Proje
1
20
Çalıştay
Portfolyo
Ara Sınav / Sözlü Sınav
1
30
Final Sınavı / Sözlü Sınav
1
30
Toplam

Yarıyıl İçi Çalışmalarının Başarı Notuna Katkısı
3
70
Yarıyıl Sonu Çalışmalarının Başarı Notuna Katkısı
1
30
Toplam

AKTS / İŞ YÜKÜ TABLOSU

Aktiviteler Sayı Süresi (Saat) İş Yükü
Teorik Ders Saati
(Sınav haftası dahildir: 16 x toplam ders saati)
16
3
48
Laboratuvar / Uygulama Ders Saati
Sınav haftası dahil değildir. 16 x uygulama/lab ders saati
16
Sınıf Dışı Ders Çalışması
15
4
Arazi Çalışması
Küçük Sınavlar / Stüdyo Kritiği
Ödev
Sunum / Jüri Önünde Sunum
1
30
Proje
1
30
Çalıştay
Portfolyo
Ara Sınavlar / Sözlü Sınavlar
1
20
Final / Sözlü Sınav
1
37
    Toplam
225

 

DERSİN ÖĞRENME ÇIKTILARININ PROGRAM YETERLİLİKLERİ İLE İLİŞKİSİ

#
Program Yeterlilikleri / Çıktıları
* Katkı Düzeyi
1
2
3
4
5
1 Bilgisayar Mühendisliği alanında bilimsel araştırma yaparak bilgiye genişlemesine ve derinlemesine ulaşır, bilgiyi değerlendirir, yorumlar ve uygular.
2 Bilgisayar Mühendisliği alanında uygulanan güncel teknik ve yöntemler ile bunların kısıtları hakkında kapsamlı bilgi sahibidir.
3 Belirsiz, sınırlı ya da eksik verileri kullanarak, bilimsel yöntemlerle bilgiyi tamamlar ve uygular, değişik disiplinlere ait bilgileri bir arada kullanabilir.
4 Mesleğinin yeni ve gelişmekte olan uygulamalarının farkındadır, ihtiyaç duyduğunda bunları inceler ve öğrenir.
5 Bilgisayar Mühendisliği alanı ile ilgili problemleri tanımlar ve formüle eder, çözmek için yöntem geliştirir ve çözümlerde yenilikçi yöntemler uygular.
6 Yeni ve/veya özgün fikir ve yöntemler geliştirir, karmaşık sistem veya süreçleri tasarlar ve tasarımlarında yenilikçi/alternatif çözümler geliştirir.
7 Kuramsal, deneysel ve modelleme esaslı araştırmaları tasarlar ve uygular, bu süreçte karşılaşılan karmaşık problemleri irdeler ve çözümler.
8 Disiplin içi ve çok disiplinli takımlarda etkin biçimde çalışabilir, bu tür takımlarda liderlik yapabilir ve karmaşık durumlarda çözüm yaklaşımları geliştirebilir, bağımsız çalışabilir ve sorumluluk alır.
9 Bir yabancı dili en az Avrupa Dil Portföyü B2 Genel Düzeyinde kullanarak, sözlü ve yazılı iletişim kurar.
10 Çalışmalarının süreç ve sonuçlarını, o alandaki veya alan dışındaki ulusal ve uluslararası ortamlarda sistematik ve açık bir şekilde yazılı ya da sözlü olarak aktarır.
11 Bilgisayar Mühendisliği uygulamalarının sosyal, çevresel, sağlık, güvenlik, hukuk boyutları ile proje yönetimi ve iş hayatı uygulamalarını bilir ve bunların bilgisayar mühendisliği uygulamalarına getirdiği kısıtların farkındadır.
12 Verilerin toplanması, yorumlanması, duyurulması aşamalarında ve mesleki tüm etkinliklerde toplumsal, bilimsel ve etik değerleri gözetir.

*1 Lowest, 2 Low, 3 Average, 4 High, 5 Highest