Bu ders, lisans düzeyinde yüksek kaliteli yazılım sistemlerinin uygun maliyetli mühendisliği için mevcut ve gelişmekte olan yaklaşımların, araçların ve tekniklerin arkasındaki temel kavram ve ilkelere genel bir bakış sunar. Yazılım mühendisliği, sistem spesifikasyonunun ilk aşamalarından, uygulandıktan sonra sistemin bakımına kadar, yazılım geliştirmenin tüm yönlerini kapsar. Bu, yazılım proje yönetimi ve yazılım geliştirmeyi destekleyen araçların, yöntemlerin ve teorilerin oluşturulması gibi görevleri kapsar.
Ön Koşullar
Dersin resmi bir ön koşulu bulunmamakla birlikte, öğrencilerin object oriented programlama dillerinden birkaçında tecrübe sahibi olması beklenmektedir.
Eş Koşullar
-
Özel Koşullar
-
Öğretim Üyeleri
Doç. Dr. Akhan Akbulut
Asistanlar
Arş. Gör. Büşra Kocaçınar
Ders Gün,Saat ve Yeri
Teori: Pazartesi 11:00 - 12:45 ve 13:00 - 14:45
Laboratuvar: Perşembe Tüm Gün
Görüşme Saatleri ve Yeri
Pazartesi 15:00 - 16:00 arası veya randevu ile.
Randevuya ihtiyacınız varsa, lütfen talep edilen saatten en az 24 saat önce bir e-posta gönderin.
Öğretim Yöntem ve Teknikleri
Anlatım, Laboratuar ve Dönem Projesi: Öğrenciler 5-7 kişilik gruplar oluşturularak, büyük ölçekli bir yazılım sisteminin spesifikasyon, tasarım, entegrasyon ve uygulama aşamalarında beraber görev alacaklardır.
Temel Kaynaklar
*Software Engineering, 10/E, Ian Sommerville, ISBN: 9780133943030, Pearson, 2015
Diğer Kaynaklar
Recommended: Code complete. McConnell S. ISBN: 0735619670, Pearson, 2004.
Recommended: Clean code: a handbook of agile software craftsmanship. Martin RC. ISBN: 0132350882 Pearson, 2009.
Haftalık Ders Programı
Hafta
Dersin İçeriği
Öğretim Yöntem ve Teknikleri
1. Hafta
Yazılım Mühendiliğine Giriş,
ACM/IEEE Etik Kuralları
Lab Giriş
2. Hafta
Yazılım Süreci
Grupları Oluşturma ve Proje Konularının Atanması,
Rol ve Modül Atamaları
3. Hafta
Agile Yazılım Geliştirme
Geliştirme Yöntemine Karar Verilmesi,
Her grup üyesi için aktivite Ataması
4. Hafta
Gereksinim Mühendisliği
Mülakat Soruları ve Proje Önerisi Hazırlama, Doküman Konvansiyonları,
Her grup üyesi için aktivite Ataması
5. Hafta
Sistem Modelleme
Kullanıcı Arayüzü Tasarımı, Giriş ve Çıkış Tasarımı, Menü hiyerarşisi
Her grup üyesi için aktivite Ataması
6. Hafta
Mimari tasarım
Mimari Tasarım Çizimi ve Fonksiyonel ve Fonksiyonel Olmayan Gereksinimlerin Belirlenmesi,
Her grup üyesi için aktivite Ataması
7. Hafta
UML kullanarak nesne yönelimli tasarım
Sequence, State, Use Case diyagram çizimi,
Her grup üyesi için aktivite Ataması
8. Hafta
Tasarım ve Uygulama
Hızlı Prototip Deneme I: Öğrenciler, mevcut programlarının demosunu yaparak ; kalitesi ve gelecekteki yönü hakkında geri bildirim alacak; Öğrencilere projedeki haftalık görevlerinin atanması
9. Hafta
Yazılım testi
Uygulama Geliştirme ve Veri Tasarımı, Test Senaryoları Yazma, Her grup üyesi için aktivite Ataması
10. Hafta
Yazılım evrimi
Hızlı Prototip Deneme II: Öğrenciler, mevcut programlarının demosunu yaparak, kalitesi ve gelecekteki yönü hakkında geri bildirim alacak; Her grup üyesi için aktivite Ataması
11. Hafta
Dağıtılmış yazılım mühendisliği
Uygulama geliştirme
Her grup üyesi için aktivite Ataması
12. Hafta
Servis Odaklı Mimari
Son Sunum: Öğrenciler, mevcut programlarının son sunumlarını yaparak, kalitesi ve gelecekteki yönü hakkında geri bildirim alacak; Her grup üyesi için aktivite Ataması
13. Hafta
Proje Yönetimi, Risk Yönetimi
Uygulama Geliştirme Kurulum ve Değerlendirme
Her grup üyesi için aktivite Ataması
14. Hafta
Bakım
Proje sunumları
15. Hafta
16. Hafta
17. Hafta
Değerlendirme Ölçütleri
Ölçüt Tipleri
Adet
Yüzdesi(%)
Ara sınav(lar)
1
25
Kısa sınav(lar)
2
10
Projeler
1
40
Final
1
25
ÖÇ-1
Modern yazılım mühendisliği tekniklerini kullanarak karmaşık yazılım çözümleri tasarlayabilir ve uygulayabilir olmak.
ÖÇ-2
Bilgisayar Destekli Yazılım Mühendisliği araçları, kaynak kontrolü ve proje yönetimi konularında bilgi sahibi olmak.
ÖÇ-3
Projelerini uygularken kullandıkları teknolojiler hakkında derin bilgiye sahip olmak.
ÖÇ-4
Yazılım nasıl test edilip, nasıl belgelenebileceğini bilmek.
ÖÇ-5
Kısıtlı bir zaman içerisinde önemli bir projeyi takım çalışması ile yapabilmek.
ÖÇ-6
İşlerini profesyonel bir şekilde sunabilmek.
Program Çıktıları
PÇ-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.
PÇ-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.
PÇ-3
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.
PÇ-4
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.
PÇ-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 veyorumlama becerisi.
PÇ-6
Disiplin içi ve çok disiplinli takımlarda etkin biçimde çalışabilme becerisi; bireysel çalışma becerisi.
PÇ-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.
PÇ-8
Yaşam boyu öğrenmenin gerekliliği bilinci; bilgiye erişebilme, bilim ve teknolojideki
gelişmeleri izleme ve kendini sürekli yenileme becerisi.
PÇ-9
Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk bilinci; mühendislik uygulamalarında kullanılan standartlar hakkında bilgi.
PÇ-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.
PÇ-11
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.