Uzun zamandır beklediğim ve sizleri de beklettiğim bu yazıyı nihayet yazıyorum. Blogumdaki hiçbir yazıyı yazmak için bu kadar sabırsızlanmamıştım. Bir önceki yazımda bitirme projemde yaşadağımız (proje arkadaşım ile birlikte) kabus dolu günlerden bahsetmiştim. Dün yaklaşık 45 dakika süren güzel bir sunumun ardından o günler geride kaldı ve bana miras olarak bir miktar deneyim bıraktı. Şimdi de sıra, bitirme projem sırasında edindiğim denyim ve bilgileri sizlerle paylaşmaya geldi.
Önce genel olarak proje yaparken dikkat edilecek noktalara sonra da kullandığım araçlar ve teknolojiler ile ilgili noktalara değinmek niyetindeyim. Burada yazacaklarım profesyonel olarak yazılım geliştiren , kurumsal projelere imza atan kişilere çok fazla şey katmayabilir (katabilir de ) ama öğrencilik hayatınızda bu işlere bulaştıysanız emin olun bu yazıdan alabileceğiniz güzel şeyler var.
PROJE YAPARKEN:
- Okul için yapacağınız projede üzerinde severek çalışacağınız, hakim olduğunuz bir konuyu seçmek daima avantajlı olacaktır. Hele de mezuniyetiniz söz konusuysa risk alıp ecel terleri dökmenin lüzumu yok diye düşünüyorum. Bunun için aklınızda daima iyi bir proje konusu bulunmalı aksi halde hocanızın dayatacağı garip bir projeyle muhattap olmak zorunda kalabilirsiniz.
- Üzerinde çalışacağınız konu veya konular hakkında bilgi sahibi kişileri iletişim ağınızın içinde tutmak faydalı olacaktır. Çok fazla web ve görsellik kültürüm olmadığı için bu noktalarda arkadaşlarımdan hayat kurtarıcı yardımlar aldım. (Teşekkürler Erhan BURHAN ve Mehmet ACA)
- Uygulamanızı geliştirmeden evvel çok çok iyi bir analiz şart. Aksi halde son anda tabloya ekleyeceğiniz bir kolon sonunuz olabilir. Tüm olasılıkları ve durumları düşünebilmek için kendinize yeterli zamanı tanıyın ve analiz konusunda aceleci davranmayın. Aklına gelen tüm durumları GÜVENLİ bir yere kaydetmekte fayda var.
- Think Big Start Small yada Keep It Simple Stupid (KISS) gibi öğtülere uymakta dayda var. Hiçbirşeyi bir defada asla iyi yapamazsınız . (Bakın Mcirosoft’a
nasıl da her gün bir yama çıkarıyor) Projeye vermek istediğiniz son şekil aklınızın bir kenarında daima bulunsun ama doğrudan o noktaya uçmaya kalkmayın. Adım adım ilerleyin. Görsellik , renkler, yanarlı dönerli menüler gibi konular üzerinde kafa yormak yerine öncelikle projenizi çalışabilir hale getirin. - Özellikle de okul projelerinde çevik bir süreç izlemek daha faydalı olacaktır. Mesela projenizin bir aşamasında XML dosyasını ayrıştırıp oradan bir kaç veri alacaksanız , bütün vaktinizi uygun ayrıştırıyıcı bulmak için Open-Source siteleri zaplayarak geçirmeyin. Gerekirse düz bir metin dosyasından veya konsoldan okuyun ama bu aşamaya taklıp kalmayın.En kötü ihtimalle sunum günü elinizde eksikleri de olsa çalışan bir proje bulunmalı.
- Projeyi yapan siz olduğunuza göre , sağlıklı bir proje için kendi sağlığınıza dikkat etmeyi unutmayın. Bilgisayar başında saatlerce oturarak omurganızdan olmayın. Bu durumlarda ufak yürüyüşler sizler için hem fiziskel hemde zihinsel açından faydalı olacaktır.
- Emeğinizin boşa gitmemesi için projenizi yapacağınız bilgisayarı korumanız gerekecetir. Bilgisayardaki bir sorun yüzünden uygulamanızda hata arayarak sinir krizleri geçirmeyin. O nedenle uygulama geliştreceğiniz bilgisayarın güvenliği ve yedeklenmesi konusuna mutlaka dikkat edin. Eğer yazdığınız uygulamanın çalıştığından eminseniz fakat kendi bilgisayarınızda çalışmamakta direniyorsa mutlaka başka bir bilgisayarda denyin.
- Geliştirdiğiniz uygulamaya ait kodları ve veritabanını da yedekleniz gerekir. Bunun için farklı fiziksel ortamlar kullanmak (flash disk , cd vb.) faydalı olacaktır. Hatta boyutları gigabyte mertebesindeki e-posta hesaplarınıza da bu kodları göndermekte fayda var diye düşünüyorum. (Mezuniyetiniz söz konusuysa risk almaya gerek yok demiştim)
- Kaynak kodlarınızı yedeklemekten kastım hepsini rastgele farklı bir ortama aktarmak değil. Ben kodlama yapacağım noktlarda her adımı bir metin dosyasına yazıp , başarıyla geçtiklerimin yanına bir artı işareti koyuyorum (Dikkat ettiyseniz siliyorum demedim). Yedekleme yaptığım noktada da listede geldiğim yeri bir çizgi ile ayırıyırıp tarihi yanına ekliyorum. Bu sayede hangi yedekte ne gibi değişiklikler olduğunu rahatlıkla bilip geri dönüşleri daha kolay yapıyorum . (Bir source control uygulaması kullanmadığınızı farz ederek bu maddeyi yazdım)
- Yedekleme yapmadan evvel uygulamanın son halini mutlaka test edin. Geçekten çalışıp çalışmadığıdan emin olun. Çalışmayan bir kaynak dosyasına güvenip yapacağınız bir geri dönüş gecelerinize mal olabilir.
- Test konusunda rehavete kapılıp “TAMAMDIR BU SÜPER ÇALIŞIYOR” havasına girmeyin. Farklı durumlar için sistemin çalışmasını mutlaka gözlemleyin. Eğer bir koşulda çalışıyor diğerinde çalışmıyorsa kontrollü bir deney sürecine girmekte fayda var. Yani diğer tüm faktörleri sabit tutup (Sabit olduğundan da emin olun) her bir faktörü sırayla değiştirin ve uygulamanızın nasıl davrandığını gözlemleyin.
- Takıldığınız ve bir türlü çözüm üretmediğiniz noktalara saplanıp kalmayın. Bu hem sinirlerinizi yıpratacaktır hem de boş yere vakit kaybetmenize neden olacaktır. Diğer işlere geçip bir süre sonra sakin kafayla (özellikle de sabah vakitlerinde) o noktaya geri dönmekte fayda var diye düşünüyorum.
- Hata ayıklarken her ne kadar DEBUGGER uygulamalar imdadımıza yetişse de bu noktada kağıt-kalem debugging adını verdiğim yöntem bazen hataları daha kolay fark etmenize yardımcı olacaktır. Hele bir de yanınızda işten anlayan birisi varsa o hatayı daha kolay fark edebilir. Çünkü kodu siz yazdığınız için kendinize olan güveniniz hatayı fark etmenizi zorlaştıracaktır.
- Proje içerisinde güvenlik işlemleriniz varsa (Authorization, Authentication gibi) mutlaka bu adamlarda çok dikkat edin. Authorization konusu özellikle çok önemli yani vereceğiniz yetkiler birbiriyle çelişmemeli. Bir adımda yasakladığınız bir işlemi başka bir adama yanlışlıkla erişilebilir hale getirmemeye özen gösterin. (Bu tip bir hataya bizzat düştüm)
- Projenizi belirli aralıklarla danışmanınıza yada müşterinize gösteriyorsanız ve bu zamanlarda sorunlar, hatalar çıktıysa hiçbir şekilde hemen kodunuz açıp neşter vurmaya kalkmayın. Bu, hem düzgün çalışan yerleri bozabilir hem de yaptığınız işi karşınızdakinin gözünde basite indirger. Bu gibi durumlarda not alarak bir sonraki görüşemede düzeltilmiş olacağını belirtmek daha iyi olacaktır.
- Asla projenizi SON GECE ye bırakmayın. Son gece telaşla yapacağınız çoğu değişiklik faydadan çok zarar getirecektir. (Ben her ne kadar böyle de desem biliyorumki siz yine son geceye bırakacaksınız
) Son geceyi test yaparak geçirmek daha hayırlı olacaktır. - Projenizi sunmanız gerekiyorsa fazla sıkıcı ve uzun olmayan , hedeflerinizi ve geldiğiniz noktaları ortaya koyan güzel bir sunum hazırlamak faydalı olcaktır. Bu noktada piyasadaki benzer ürünlerle kendi ürününüzü kıyaslamak fizibilite konusunda yeterince zaman harcadığınızı gösterecektir. Bir de projenizin eksik yanlarını objektif olarak ortaya koymayı unutmayın. (Kısmetse bir sonraki sürüme dersiniz
) Yani yaptığınız işin bilincinde olduğunuzu göstermeniz yerinde bir hareket olacaktır.
Bu listeyi daha da uzatıp canınız sıkmamak için kullandığım araçlar hakkındaki deneyimlerime geçiyorum.
MICROSOFT SQL SERVER 2005:
Projemizde verilerimiz saklamak için DBMS olarak SQL Server 2005 tercih ettik. SQL Server 2005 ‘in STORAGE ENGINE ‘inin biraz sorunlu olduğundan daha önce bahsetmiştim . Bu olaya bir kere daha şahit oldum. İçerisine 40 satırlık veri girişinin ardından boyutu 3 MB ‘tan 21 MB ‘a çıkan bir veri dosyasıyla karşılaşmak insanı şaşırtabiliyor. (Nvarchar alanlarımız gayet iyi hesaplanmış durumda olmasına rağmen) Benim için Database Development konusunda SQL Server Management Studio yetersiz kaldı. Özellikle de otomatik olarak script oluşturma konusudaa ciddi problemleri var. Bunun yerine Aqua Data Studio ‘yu mutlaka denemenizi tavsiye ederim. Ayrıca Remote bağlantılarda Management Studio’dan çok daha hızlı çalıyor.
Verilerinizi Import/Export yönetmiyle bir veritabaından diğerine aktarırken Schema konusunda çok dikkatli olun. Diğer DBMS üzerindeki bir schema ile ilişkilendirilmiş verilerle kendi DBMS ‘niz üzerinde çalışma konusunda problem yaşabilirisiniz. Bunun için verileri Management Studio’ daki Import /Export wizard ile aktarıyorsanız Edit Mappings (Burada farklı schemalarda yer alan tabloları bind edebilirsiniz) menüsüne mutlaka bir göz atın. Yada benim gibi sonradan bir tabloyu başka bir schema ‘ya taşımanız gerekirse şu komutu çalıştırın:
alter schema hedef_schema transfer onceki_schema:tasinacak_tablo
Management Studio daha çok Administration işlemlerinde tercih edilmeli diye düşünüyorum artık.
ASP.NET:
Visual Studio ile web tabanlı yönetici panelini hazırlarken yaşadığım çilelerin başında tablo boyultarını ayarlamak geliyor. Tam bir felaketti. CSS konusunda da eksik olduğum için tablolardan vazgeçemedim .
Bir diğer sorun da sayfalara eklediğim JavaScript tabanlı confirmation soruları (“Şunu bunu yapmak istediğinizden emin misiniz?” şeklindeki) ASP.NET Validation bileşenlerini yine devre dışı bıraktı.
Ama herşeye rağmen bir yönetici paneli hazırlamak için ASP.NET ‘in doğru bir tercih olduğuna inanıyorum.
ASP.NET AJAX v1.0:
Buradaki yazımda ASP.NET Ajax konusunda yaşanabilecek bazı sıkıntılardan bahsetmiştim. Projem sırasında da ilk partial update işleminden sonra validation bileşenlerinin devre dışı kalması sorunuyla karşılaştım.
Bu noktada karşıma çıkan bir diğer sorun da ChildrenAsTrigger özelliğinin kafasına göre hareket edip bazen çalışıp bazen çalışmamasıydı.
ASP.NET WEB SERVICES:
Bu kısım her ne kadar benim görev tanımımda olmasa da projenin temeli olduğu için beni de yakından ilgilendiriyordu. ASP.NET web servisinize bir Java uygulamanızdan erişecekseniz servisten alacağınız WSDL bazen sinirlerinizi bozabilir. Hele de SOAP Hader ile güvenliği sağlamaya kalktıysanız vay halinize…
JAVA IDE ve GUI:
Java uygulamanızdan bir web servisine bağlanmak için Netbeans işlerinizi kolaylaştıracak bir IDE. Hele de konuya biraz uzaksanız Nebeans ile servise erişemeniz kolay olacaktır. Bunun için şu yazıya da bakmanızı öneririm.
Java uygulamanıza bir arayüz dahil etmeniz gerkiyorsa çok güçlü bir psikolojiye sahip olmanız gerektiğini belirtmeliyim. Oracle JDeveloper arayüz olarak Visual Studio ‘yu çağrıştırdığı için onu kullanmıştım ilk başta. (Çok ciddi sistem kaynağı tüketiyor aman dikkat) fakat kendisine has kullandığı Layout kütüphaneleri ile ecel terleri döktürdü bana. Bu konuda Netbeans yada Window Builder Pro. (Eclipse plugin) tercihiniz olmalı. Netbeans GUI tasarımı için arka planda Matisse adlı bir motor kullanıyor ve bu hızıyla ünlü bir tasarım motoru.
Bitirme projemle ilgili aklımda kalanlar şimdilik bunlar. Zamanla ekleyeceklerim olursa onları da ayrı bir yazı olarak yayınlarım. Yazıma burada nokta koyup Arden Agopyan ‘ın SOA semineri dinlemek için Bilişim Kongresi ‘ne gitmek üzere huzurlarınızdan ayrılıyorum. Bir sonraki yazıya kadar tüm okuyucularıma mutlu günler diliyorum…
Recent Comments