yzm 311 yazılım yapımı

YZM 311 YAZILIM YAPIMI
DÖNEM PROJESİ
Son Teslim Tarihi: 12 Aralık 2014
PROJE KONUSU
İlginç bir probleme nesne-yönelimli bir çözüm geliştirin. Evet, proje konusunu kendiniz bulacaksınız.
Başka bir dersiniz için yapmakta olduğunuz ya da daha önceden yapmış olduğunuz bir projeyi de
geliştirebilir/iyileştirebilirsiniz. Proje konusuna karar verdikten sonra lütfen onay için benimle irtibat
kurun.
DOKÜMANTASYON
Projenizin rapor dokümanı, problemi açıklayan bir giriş bölümüyle başlamalıdır.
Diğer bir bölümde çözümünüze ilişkin aşağıdaki ayrıntılar yer almalıdır:
1. Tasarım (UML diyagramıyla)
2. Kalıplar (Eğer kullandıysanız)
3. Çerçeveler (Frameworks) (Eğer kullandıysanız)
4. Kaynak kod karmaşıklık analizi sonuçları
a. Kodunuzun son halini SourceMonitor yazılımı ile analiz edin
b. Analiz sonuçlarını raporunuza ekleyin (tablo ve grafik halindeki verileri)
Aynı bölümde tasarım kararlarınızı etkileyen faktörleri de açıklayın. Yani, örneğin, kullandığınız bir
tasarım kalıbını neden kullandığınızı, bu kalıbın çözümünüzü neden ve nasıl basitleştirdiğini ve
iyileştirdiğinizi, vb. açıklayın.
Son olarak bir sonuç bölümünde problem ve çözümünüz hakkında özet bir açıklama yapın.
EK bölümünde ise
 Programınızın kaynak kodlarını verin.
 Kodlarınızı test için kullandığınız Birim Testi kodlarınızı da verin.
 (İsteğe bağlı) Eğer herhangi bir kod kapsama (code coverage) aracı kullanarak, birim
testlerinizle elde ettiğiniz kod kapsama sonuçlarını da eklerseniz bonus kazanacaksınız!
DEMO
Proje teslimini takibeden laboratuar saatinde projenizin çalışan bir demosunu yapmaya hazır olun.
ÖRNEK PROJE KONULARI
1. SourceMonitor’e benzer şekilde, ama çok daha basit haliyle, tek bir programlama dili için verilen
kod parçasının karmaşıklığını ölçümleyen program.
2. Paint benzeri basit bir grafik çizim programı.
a. Çizgi, Çember, Dikdörtgen gibi temel şekillerin çizilebildiği
b. Görüntünün BMP ya da JPEG gibi formatlarda saklanıp açılabildiği
c. Çizim renginin seçilebildiği
d. Çizgi kalınlığının seçilebildiği
3. Midnight Commander (MC) benzeri basit dosya işlemlerini (listeleme, kopyalama, taşıma, silme)
kolayca yaptırabilecek bir dosya yönetim programı (GUI uygulaması olmalı; Java ile yazılırsa
Linux, Windows, Mac ortamlarında çalışabilir ama şart değil). Kullanım şekli, arayüzü ve
kullanım kolaylığı tamamen MC gibi olmalı, hiç fare kullanmadan dosya işlemleri yapılabilmeli.
4. Tic-Tac-Toe (3x3, 4x4 gibi seçenekli olsa güzel olur), Mastermind gibi basit bir zekâ oyunu
(bilgisayara karşı oynayabilmeliyiz). Görsellik önemli.
5. Bir bankanın veznelerinin kuyruk simülasyonu, bir apartmanın asansör yoğunluk simülasyonu gibi
bir simülasyon. (Simülasyonun çalışmasını görsel olarak sunabilmeli, simülasyon parametreleri
kullanıcı tarafından verilebilmeli: vezne sayısı, müşterilerin gelişinin istatistiksel dağılımı ve
parametreleri, veznede ortalama işlem süresi vb.)
6. Fizik dersindeki atışlar konusunu öğretmeye yönelik eğik atış ve yatay atışı görsel olarak ve
gerçekçi olarak simüle edebilecek bir GUI programı. Hız, ağırlık, atış açısı gibi parametreler fare
ile kolayca ayarlanabilmeli. Atış sırasında nesnenin izlediği yol görsel olarak izlenebilmeli; atışın
süresi de gerçekle uyumlu olmalı ya da istenirse yavaşlatılabilmeli. (Benzer şekilde başka bir konu
da olabilir).
7. Basit bir e-posta istemcisi
a. POP ve SMTP sağlayan posta kutularından e-postaları alabilecek, gösterebilecek,
silebilecek, ve e-posta gönderebilecek
b. Birden çok e-posta adresini birlikte yönetebilecek bir arayüzü olmalı
c. Attachment özelliği olmasa da olur.
d. E-postaları depolamasına gerek yok, yalnızca arayüz sağlaması yeterli olur, adres ve
parolaları depolaması gerekebilir.
8. Çocuklar için labirent bulmacalar hazırlama programı.
a. Farklı karmaşıklık seviyelerinde labirentler hazırlayabilmeli
b. Her labirentin mutlaka dıştan içe çözümü olmalı yani çözümsüz labirentler
oluşturulmamalı
c. Dik/düz çizgilerden oluşan labirentlerin yanı sıra serbest çizilmiş gibi ya da iç içe
çemberler gibi labirentlerin de oluşturulabilmesi artı puan olur.
GENEL KURALLAR






Tasarımlarınızı yaparken ve kodlarınızı yazarken bu derste öğrendiğiniz prensipleri dikkate
almanız beklenmektedir: basitlik, kolay okunabilirlik, anlaşılabilirlik, anlamlı belirteç
isimleri kullanımı, iyi bir kodlama düzeni & stili kullanmak, vb. Bu çok ama çok önemli.
Eğer tasarımınızı ve kodlarınızı okuyamazsam kesinlikle değerlendirmeye almayacağım.
Geç teslim edilen projeler kesinlikle kabul edilmeyecektir!
Lütfen birbirinden kopya projeler teslim etmeyin. Birbirinin aynısı ya da kopya olarak hazırlandığı
çok belli olan raporlar ve kodlar sıfır puan alacaktır
Projenizi tek bir dosyada raporlayın. Bu doküman yazdığınız kodları da içermelidir. Kodları
yazarken 8 veya 9 punto büyüklüğünde Courier New veya Lucida Console gibi sabit
genişlikli yazı tipi kullanın. Kodları (yalnızca kodları) yatay sayfa düzeninde (Landscpae) 2 sütun
halinde yerleştirin.
Proje raporunuzu basılı olarak teslim edin. E-posta ile herhangi bir şey göndermeyin.
Kuralları dikkatlice okuyun!
Yrd. Doç. Dr. Volkan TUNALI
[email protected]