Previous
Next

Design Patterns - Tasarım Desenleri

by Cem Kefeli 26. Eylül 2017 00:43

Aslında;

Ben şu işi böyle yapıyorum. Bu şekilde çözüm buldum, çok da kullanışlı, işleri çok da kolaylaştırıyor. Sen de kullan diye de standard bir diagram haline getirdim. Al işte bu da o diagram!"

demektir 'Design Pattern' ya da Türkçe olarak 'Tasarım Deseni'. Bu kadar da basittir felsefe olarak...

Design Patters - Tasarım DesenleriBirilerine bir yön vermeyi, sık yaşanan sorunları ortak kalıplarda en ideal yöntem ile çözmeyi amaçlar. Çözmekten de ileri gider ve herkesin bir çırpıda anlayabileceği, ulaşabileceği ve uygulayabileceği sadelikte ve standart söylemle dile getirir söylemek istediklerini. 'Best Practice' ortaya koyar bir başka söylemle. Peki en iyi olduğunu kim nasıl tescil eder bu yöntemin? Aslında hiç kimse. Zamana ve tercihe bağlı bir algı bu. Kabul gören tasarım zamanla yayılır ve doğal yollardan tescil edilmiş olur. Yani konu bir probleme getirilen en iyi çözüm iddiasını taşımak değildir aslında.

Yazılım diline özgü de değildir. Bir tasarım deseni farklı farklı yazılım dilleri kullanılarak uygulanabilir. Desen, yazılımın nasıl olması gerektiğini ortaya koyar ve resmi çizdikten sonra kenara çekilir, gerisini geliştiriciye bırakır. Geliştiriciye de kolaylıklar sağlar. Neyi nasıl yapması gerektiğini daha önce aşina olduğu tasarım desenleri yardımıyla kolayca belirleyebilir. Ya da kendisine ait olmayan bir kodu okurken tasarım deseni sayesinde kaynak koda kolayca adapte olabilir. Kendisine ait olmayan bir kaynak kod üzerinde geliştirmeye başladığında tekrara düşmeden, yapıyı bozmadan yazılım geliştirebilir.

Peki neden ihtiyaç var desenlere? Bu soruyu sormadan önce belki de bir yazılımın ne kadar kaliteli ve güncele uygun olduğunun nasıl anlaşılabileceğini düşünmek gerekir. Anlayabilmek için genişletilmiş hali yedi adet ama temelde dört adet başlık vardır vardır litaratürde bahsedilen ve incelenmesi gereken;

  • Rigidity: Bir yazılıma yeni bir özellik eklenmesi, gelen yeni bir iş isteğinin karşılanması için yazılımın birçok yerinin değiştirilmesi gerekiyorsa ve bu değişiklikler de çok köklü yerlere dokunuyorsa 'değişmezlik' kavramı için sıkıntı var demektir. Normal şartlarda yalnızca yeni özellikle ilgili yerlere dokunmak yeterli iken bir de bu yeni özellik haricinde birçok farklı noktaya dokunmak gerekiyorsa yazılım artık ağır yavaş ölüyor demektir.
  • Fragility: Üzerinde geliştirme yapılmak istenen yazılım değişiklik isteklerine çok karmaşık cevap veriyorsa örneğin asıl iş ile mantıksal bağı olmayan birçok yeri etkiliyorsa ve bu etkiler yıkıcı olabilecek türden ise yazılım için ciddi anlamda kırılganlık var demektir.
  • Immobility: Günümzde artık birçok yazılım, genel amaçlar için yazılmış kütüphaneleri kullanarak iş görebiliyor. Yani her kütüphane kendi işinde özelleşmiş özellikleri barındırıyor ve yazılımlar ise bu kütüphanelerin yalnızca birer müşterisi olarak konumlanıyor. Eğer yazılım bu mantığa uygun bir şekilde geliştirilmemişse yani bir değişiklik modüler bir şekilde yapılamıyorsa ve birden çok yerde aynı kodlamanın uygulanmasını mecbur kılıyorsa o yazılım için taşınabilirlik anlamında sıkıntılar var demektir.
  • Viscocity: Bir yazılım üzerinde değişiklik yapılması düşünüldüğünde olması gerekeni yapmak yani design temelli çalışmak taba tabirle uyduruk yöntemle çalışmaktan daha zor ise o zaman yazılım artık güncel şartlara da ayak uyduramıyor demektir. Bu konu temelde yazılım ve çevre birim olmak üzere iki alt konu olarak inceleniyor litaratürde. Hani derler ya "Bu konu üzerime yapıştı kaldı. Kurtulamıyorum!" diye. Burada da durum aynıdır. Belki yazılımın artık günceli reddetmesi, ayak uyduramaması nedeniyle üzerinize yapışıp kalmıştır, belki de artık yazılımın yaşadığı ortam günceli takip edemiyordur, derleme zamanı çok uzamıştır bu nedenle üzerinize yapışıp kalmıştır. Fazlası...

Hakkımda...

Cem KEFELİ

Electronics and
Telecommunication Eng.
devamı...


Son yapılan yorumlar...

Comment RSS

Yasal bir uyarı...

Disclaimer"Bu web sitesinde görmüş olduğunuz bilgilerin, dokümanların ve diğer materyallerin kullanılmasından doğabilecek hiç bir sorumluluktan site sahibi sorumlu tutulamaz. Web sitesi içerisinde yer alan yazılar, yorumlar, resimler ve diğer tüm içerikler yalnızca sahibinin görüşünü yansıtmakta olup içeriğin sahibi kişilerin çalıştığı kurumları bağlayıcı hiç bir nitelik taşımamaktadır. Yapılan tüm alıntılar mutlaka kaynak gösterilerek verilmeye çalışılmaktadır. Web sitesi içerisinde bulunan ilgili materyaller, ilgili yasal kurumlar tarafından uygun görülmemesi durumda kaldırılacaktır."
General