Ders Adı Kodu Yarıyıl T+U Saat Kredi AKTS
Yazılım Bakımı ve Gelişimi SWE 304 6 3 + 0 3 5
Ön Koşul Dersleri
Önerilen Seçmeli Dersler
Dersin Dili İngilizce
Dersin Seviyesi Lisans
Dersin Türü Zorunlu
Dersin Koordinatörü Prof.Dr. AHMET ÖZMEN
Dersi Verenler
Dersin Yardımcıları
Dersin Kategorisi Alanına Uygun Öğretim
Dersin Amacı

Genel öğretiler sıfırdan yeni sistemler oluşturmaya odaklanırken, endüstriyel uygulamada yazılım geliştiricileri genellikle korunması, yeniden kullanılması veya geliştirilmesi gereken mevcut yazılım sistemleriyle karşı karşıyadır. Bu, mevcut bir sistemin tasarımını ve uygulanmasını ve hangi parçaların değiştirilmesi gerektiğini anlamak, bakımı daha kolay yazılım sistemleri oluşturmak ve en baştan yeniden kullanım ve değişim düşünülerek sistemler tasarlamak için özel beceriler gerektirir. Bu nedenle bu derste, anlaşılması, bakımı, yeniden kullanımı ve gelişmesi kolay yazılım sistemlerinin oluşturulmasına yardımcı olacak çeşitli teknikler, araçlar ve metodolojiler anlatılacaktır.

Dersin İçeriği

Ders, anlaşılması, bakımı, yeniden kullanımı ve gelişmesi daha kolay yazılım sistemlerinin oluşturulmasına yardımcı olmak için çeşitli teknikler, araçlar ve metodolojilerin anlatıldığı 3 modülde düzenlenecektir: 1. Yazılım anlama: Mevcut sistemler nasıl çözümlenir, 2. Yazılım bakımı: Bakımı kolay bir yazılımın nasıl oluşturulacağı veya bakım kolaylığı için mevcut yazılımın nasıl geliştirileceği, 3. Yazılımın yeniden kullanımı ve gelişimi: Yeniden kullanılabilir yazılımların nasıl oluşturulacağı ve mevcut yazılımların nasıl yeniden kullanılacağı derste anlatılacaktır.

# Ders Öğrenme Çıktıları Öğretim Yöntemleri Ölçme Yöntemleri
1 Değişim bağlamında kod geliştirmenin zorluklarını bilir Anlatım, Sınav,
2 Bir değişiklik talebinin mevcut orta boy bir yazılım ürününe etkisini değerlendirir Anlatım, Soru-Cevap, Sınav, Ödev,
3 Sürdürülebilir tasarımların uygulanmasına yönelik teknikleri, kodlama deyimlerini ve diğer mekanizmaları tanımlar Anlatım, Alıştırma ve Uygulama, Sınav, Proje / Tasarım,
4 Tasarım desenlerinin bir yazılım sisteminin tasarımını nasıl geliştirebileceğini bilir Anlatım, Alıştırma ve Uygulama, Sınav, Ödev,
5 Tasarımının bazı yönlerini geliştirmek için mevcut bir yazılım uygulamasını yeniden düzenler Anlatım, Alıştırma ve Uygulama, Sınav, Proje / Tasarım,
6 Yazılım gelişimi ile ilgili temel sorunları tanımlar ve bunların yazılım yaşam döngüsü üzerindeki etkilerini açıklar Anlatım, Soru-Cevap, Sınav, Sözlü Sınav,
7 Yazılım yeniden kullanımlarının avantaj ve dezavantajlarını tartışır Anlatım, Tartışma, Sınav, Sözlü Sınav,
Hafta Ders Konuları Ön Hazırlık
1 Yazılım analizi ve kritik yerlerin tespiti
2 Değişim etki analizi
3 Tersine mühendislik
4 En iyi programlama uygulamaları
5 Kodlama standartları
6 Tasarım ilkeleri ve sezgisel tarama
7 Tasarım modelleri
8 Yeniden yapılandırma
9 Yazılım gelişimi kuralları
10 Yeniden kullanım teknikleri ve yeniden kullanım için tasarım
11 Kütüphaneler ve uygulama çerçeveleri (frameworks)
12 Proje çalışması
13 Yazılım ürün hatları, alan adı ve özellik modelleme
14 Proje çalışması
Kaynaklar
Ders Notu

Ders notları ve eğtim materyalleri ders sırasında paylaşılacaktır.

Ders Kaynakları
Sıra Program Çıktıları Katkı Düzeyi
1 2 3 4 5
1 Matematik, fen bilimleri ve ilgili mühendislik disiplinine özgü konularda yeterli bilgi birikimi; bu alanlardaki kuramsal ve uygulamalı bilgileri, karmaşık mühendislik problemlerinde kullanabilme becerisi.
2 Karmaşık mühendislik problemlerini saptama, tanımlama, formüle etme ve çözme becerisi; bu amaçla uygun analiz ve modelleme yöntemlerini seçme ve uygulama becerisi.
3 Mühendislik uygulamalarında karşılaşılan karmaşık problemlerin analizi ve çözümü için gerekli olan modern teknik ve araçları geliştirme, seçme ve kullanma becerisi; bilişim teknolojilerini etkin bir şekilde kullanma becerisi.
4 Karmaşık bir sistemi, süreci, cihazı veya ürünü gerçekçi kısıtlar ve koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama becerisi; bu amaçla modern tasarım yöntemlerini uygulama becerisi.
5 Karmaşık mühendislik problemlerinin veya disipline özgü araştırma konularının incelenmesi için deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama becerisi.
6 Bilişim Teknolojilerinin yönetim, denetim, gelişim ve güvenliği/güvenilirliği hakkında bilgi sahibi olma ve farkındalık.
7 Disiplin içi ve çok disiplinli takımlarda etkin biçimde çalışabilme becerisi; bireysel çalışma becerisi.
8 Türkçe 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.
9 Yaşam boyu öğrenmenin gerekliliği bilinci; bilgiye erişebilme, bilim ve teknolojideki gelişmeleri izleme ve kendini sürekli yenileme becerisi.
10 Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk bilinci; mühendislik uygulamalarında kullanılan standartlar hakkında bilgi.
11 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.
12 Mühendislik uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın mühendislik alanına yansıyan sorunları hakkında bilgi; mühendislik çözümlerinin hukuksal sonuçları konusunda farkındalık.
Değerlendirme Sistemi
Yarıyıl Çalışmaları Katkı Oranı
1. Ara Sınav 60
1. Kısa Sınav 5
1. Proje / Tasarım 15
2. Proje / Tasarım 15
1. Ödev 5
Toplam 100
1. Yıl İçinin Başarıya 50
1. Final 0
Toplam 50
AKTS - İş Yükü Etkinlik Sayı Süre (Saat) Toplam İş Yükü (Saat)