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]
© Copyright 2024 Paperzz