Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Tanıl Ergin
Tanıl Ergin
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
21 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: antipattern aslinda desenleri desenlerinin farkli hakkinda hatalari hatalarin kullanmak oldugu ortaya problemi projenin tasarim yazilim Yazılım Müh. Tanıl Ergin
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : İleri
Kategori : Yazılım Müh.
Yayınlanma Tarihi : 7.4.2005
Okunma Sayısı : 38278
Yorum Sayısı : 1     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 8.12.2024
Turhal Temizer
Mac OS/X Removing CUDA 8.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 8.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 8.12.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Anti-Pattern'ler
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Tasarım Desenleri tamam da Anti-Pattern de neyin nesi? Son günlerde popülaritesi gittikçe artan konulardan biri de AntiPattern lerdir. Bu yazımızda AntiPattern’lerin ne olduğu hakkında bilgi vermeye çalışacağız.

AntiPattern Nedir?

AntiPattern, bir problemi çözmek için kullanılan "kötü" çözümleri belirten bir kavramdır. (Belki bunu tekrar etmekte fayda vardır: KÖTÜ çözümleri belirleyen yaklaşımdır!!)

Tabi ki bir problemi çözerken en iyi yöntemlerin verilmesi, her zaman uygulanan yöntemdir. Tasarım desenleri, (Design Patterns) işte bu belirttiğimiz işi en iyi şekilde yapmaktadırlar. İnsanların yıllarca karşılaştıkları problemlere etkin çözümleri kalıplaştırarak tekrar kullanımını sağlamışlardır. Şu anda da nesneye yönelik tasarımda Tasarım Desenleri’nin kullanımı, çözüm yolları için oldukça yaygındır.

Kötü çözümleri belirlemek, iyi çözümleri belirlemek kadar yararlı olabilir.

Yazılım geliştiren herkes, problemlerle karşılaşır ve bunları çözmek için birden fazla çözüm yolu bulabilir. Peki bulduğunuz çözüm yolu, iyi bir çözüm müdür? İleride sizin başınıza yeni işler açabilir mi? Yazılımda bir değişiklik gerektiğinde, bunu engelliyor mu? Çözümünüz, yazılımın uzun süre çalışması durumunda bellek sorunlarına yol açıyor mu? Bu soruları istediğimiz kadar arttırabiliriz. AntiPattern’ler, çok sık karşılaşılan ortak sorunlardaki kötü çözümleri size sunar. Bu çözümler ile kendi çözümlerinizi karşılaştırırsınız ve çözümünüzün kalitesi hakkında fikir sahibi olursunuz. Size hangi çözümü uygulamamanızı gösterirler.

Antipattern, iyi bir çözüme benzeyen, ama gelecekte sorunlara yol açan çözümlerdir.

Yazılım tarihi boyunca insanlar, problemlere karşı yeni çözümler sunmaya çalışmışlardır. Yazılım birikimi ilerledikçe, bu çözümler birikmiş ve standart çözümlere ulaşılmıştır (Design Patterns). Aslında çözümlerin ortak, genel çözümler olduğu ortaya çıkmaktayken ve tasarım desenleri oluşturulurken, kötü çözümler de birer birer ortaya çıkmıştır. Belirli bir birikimin oluşması sonucunda, bu yanlış, ileride soruna yol açabilecek, kötü çözümler de ortak paydalarda toplanmaya başlanmış ve "antipatterns" kavramı ortaya çıkmıştır.

Antipattern’ler bu kapsamda, yazılım çözümlerinde yapılan ortak yanlışları bulup sınıflandırmaya yarar diyebiliriz. Bunun yanısıra, antipattern’ler bu çözümlerle uğraşırken, alternatif çözümleri de yazılım geliştiricilere sunmaktadırlar.

Antipattern’ler, aslında yeni bir kavram değildir ve proje geliştirmenin her aşamasında karşımıza çıkmaktadır. Örnek olarak, hepimizin bildiği "spaghetti code" bunlardan biridir. (Spaghetti Code: özet olarak, genelde kod üzerinde çok düşünülmeden yapılmış değişiklikler sonucunda, işleyişin segmentler-kod parçaları- arasında devamlı yer değiştirmesiyle sonuçlanan karışıklık yapı.)

Örnek AntiPattern: "CopyPasteProgramming"

Bir programcının çözüme gitmek için, kodu bir fonksyiondan diğerine kopyalayıp yapıştırarak aynı kodu sıklıkla kullanması, bunun yerine nesneye dayalı yaklaşımı (kalıtım) tercih etmemesi.

Bu çözüm kısa vadede işinizi görse de yazılım geliştirme, değiştirme, bakım aşamalarında çok büyük sorunlara yol açan bir yaklaşımdır.


Anti-pattern’ler konusu, aslında sadece "kod yanlışları" ile bağlantılı değil, projenin tüm evrelerinde, verilen kararlar, yapılanlar, izlenen yöntemler ile de ilgilidir.


Yazılım projeleri geliştirmek, başarıyla yönetmek tecrübe isteyen bir eylemdir. Bu tecrübe, projeler içinde çalışarak, farklı farklı sorunlarla karşılaşa karşılaşa elde edilir. Fakat biraz yukarıdan bakacak olursak, insanların, farklı projelerde benzer hataları yaptıklarını görebilirsiniz. Bu hatalar projenin zamanının gecikmesine veya projenin başarısız olmasına yol açmış olabilir. İşte bu gibi durumlar da antipattern"ler olarak gösterilebilmektedir. Bu anti-pattern’ler de yine farklı farklı projelerde tekrarlanan takımın yaptığı hataların kalıplaştırılması ile, sınıflandırılması ile oluşturulmaktadır.

Bu tarz bir antipattern örneği verecek olursak, bütün tasarım desenlerinin kullanılmaya çalışıldığı yazılım projesi, buna çok güzel bir örnektir:

Ana Sebep:
Geliştirme takımı, tasarım desenlerinin neler olduğunu yeni öğrenmiştir ve bu "süper" fikirleri hemen projesinde kullanmak istemektedir.

Diğer Sebepler:
1. Proje geliştiricisinin, projesini tasarım desenlerini kullanarak geliştirmek istemesi.
2. Proje geliştiricisinin projeyi tasarım desenleri üzerinde çalışabilmek için bir fırsat olarak görüyor olması.

Tasarım Aşaması:
Tasarım Desenleri tabi ki bir proje tasarımında kullanmak için mükemmel yaklaşımlardır. O halde hepsini kullanmak, kesinlikle mükemmel bir yazılım sistemi yaratacaktır.

Düşünülen Çözüm (Kötü çözümümüz):
Kullanılcak tasarım desenlerinin bir listesi çıkarılır ve atlanan bir tasarım kalıbının olmaması için bu tasarım desenlerinin uygulamaları ile ilgili bir kitap alınır. (Böylelikle projede tüm desenlerin kullanabileceği kesinleşmiş olur!)

Beklenen Sonuç:
Tasarım grubu kitaptaki tüm tasarım desenlerini uygun yerlerde kullanmıştır.

Etkiler:
O kadar çok tasarım kullanımı kullanılmıştır ki bu tasarımın kodlanması çok karışık hale gelmiştir. Bu karışıklık geliştirme takımının hızını, motivasyonunu bunlara bağlı olarak da verimliliğini düşürmüştür. Hatta takım, yapılan tasarımın tam olarak ne yaptığını anlamamaya başlamıştır.

Gerçek Çözüm:
1-Her tasarım kalıbı uygulanması gereken hedef kapsamı da belirtmektedir. Bu yüzden sırf desenleri kullanmak için hedefleri dışında kullanılmamalıdırlar.
2-Genelde tasarım desenleri, kitapları "bu tasarım desenini nerede kullanabilirim" diye okuyanlar tarafından değil, keşfedilen bir soruna çözüm arayan kişiler tarafından kullanılmalıdır.

Sonuç:

Antipattern’ler bizlere projenin tüm evrelerinde (tasarım, kodlama dahil) sıklıkla hangi hataların yapıldığını gösteren, bu hataların nelerden yapıldığını gösteren ve bu hataların nasıl önlenmesi gerektiğini anlatan yapılar olarak yazılım geliştirmede kullanılan kavramlardır. Genel olarak büyük çapta projeler ile uğraşan geliştiriciler ve proje yöneticileri tarafından hataları en aza indirmek için çok iyi bilinmesi gereken, önemli bir konudur.

Antipattern’ler halen gelişen bir konudur ve yazılımlar olduğu sürece gelişmeye devam edecektir. Unutmayalım ki insanlar hata yaparlar, bu hataların sınıflandırılarak önümüze sunulması, böylelikle hataları yapmadan ders çıkarmamız, biz proje geliştiren insanlar için çok faydalı olmaktadır.

Not: Aslında ben zaten antipattern’leri biliyorum, bu sorunlarla hep karşılaştığımdan okumama gerek yok diye de düşünebilirsiniz. Fakat bu konuya böyle yaklaşmaktansa önemli bir araştırma konusu olduğunun bilinciyle yaklaşılırsa, yazılımcılara çok büyük faydalar getirmektedir. Sonuçta tasarım desenleri de onlara bu isim verilmeden önce dünyada bilnen çözümlerdi fakat tasarım desenleri olarak anılmaya başlandıktan sonra ve belirli bir disiplin altında incelenmeye başladıktan sonra konuya olan ilgi çok arttı ve büyük ilerlemeler kaydedildi.


Kaynaklar:

http://searchvb.techtarget.com
http://dev2dev.bea.com

 

Tanıl Ergin

[email protected]

Makale:
Anti-Pattern'ler Yazılım Mühendisliği Tanıl Ergin
  • Yazılan Yorumlar
  • Yorum Yaz
OCA
30
2007
Gerçekten çok yararlı bir makale olmuş. Tebrik ederim.
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor