Pazartesi, Ağustos 08, 2005

Etkili Yazılım Teknikleri

Şu an çalıştığım yazılımda sürekli olarak büyük ve çok sayıda değişiklikler oluyor. Mesela iş akışını baştan aşağı değiştirmem, veritabanı tablolarında ciddi değişiklikler yapmam gerekiyor. Bütün bunlar belirli bir zamanımı almakla birlikte, yine de makul bir zaman diliminde bitiyor.

Hibernate, JUnit, Ant, IntelliJ ve nesne odaklı programlama çok sayıda değişikliği kolayca yapmamı sağlıyor. JUnit, değişiklikleri yaptıktan sonra bir sorun çıktı mı, bunu hemen tespit etmemi sağlıyor. Hibernate, veritabanıyla ilgili değişiklikleri tek bir yerde bitirmemi sağlıyor. Ant ile değişikliklerin sonucunda, yeni build ve deployment işlemleri otomatikleşiyor. IntelliJ, Refactoring fonksiyonları sayesinde, çok sayıda isim değişikliği, metot taşıma, fonksiyon parametrelerinin değişikliği gibi işleri kolayca yapmama yarıyor. Nesne odaklı programlama, her türlü fonksiyonaliteyi (kullanıcı arayüzü, iş mantığı, veri erişimi vs.) değiştirirken, değişiklikleri sadece bir (veya az sayıda) yerden yapabilmemi sağlıyor.

Ancak yine de kaliteli ve hızlı yazılım geliştirebilmek için hala eksikliğini duyduğum pekçok şey var:

Kullanıcı arayüzü ve etkileşimi, MVC ve Façade gibi dizayn kalıplarını uyguladığım halde hala, oldukça zahmetli. Nesnelerin yaşam döngülerini yönetmek zor oluyor. Ya DTO gibi bir anti-pattern (yani temel yazılım ilkelerini ihlal eden yaygın bir çözüm (trick)) kullanmam gerekiyor, ya da birbirinden ayrı kimisi bayat (veritabanından farklı) kimisi yeni (veritabanıyla senkronize) nesnelerle uğraşmam gerekiyor. Javadaki kullanıcı arayüzü komponentleri hala yeterli seviyede değil... Ve böyle pek çok sorun daha var...

Hiç yorum yok: