Anti-pattern

Anti-pattern, yazılım mühendisliği, proje yönetimi ve organizasyonel süreçlerde sıkça karşılaşılan, başlangıçta uygun gibi görünse de uzun vadede olumsuz sonuçlar doğuran ve tekrar eden davranış veya çözüm kalıbıdır. Bu kavram ilk olarak 1995 yılında Andrew Koenig tarafından tanımlanmış ve sonrasında genişletilmiştir. Anti-patternler, genellikle hatalı ya da verimsiz uygulamaları temsil eder ve iyi uygulamalarla karşılaştırıldığında sistemlerin sürdürülebilirliğini ve verimliliğini olumsuz etkiler.Neill, C. J., & Laplante, P. A. (2011). Antipatterns: Managing Software Organizations and People. CRC Press.

 Tarihçe 
Anti-pattern kavramı, ilk kez 1995 yılında Andrew Koenig tarafından tanımlanmıştır.Koenig, A. (1995). "Design Patterns," Journal of Object-Oriented Programming. Koenig, bu kavramı Journal of Object-Oriented Programming dergisinde kötü pratikleri, doğru çözümlerle karşılaştırmak amacıyla ortaya koymuştur. 1996'da Michael Ackroyd'un çalışmalarıAckroyd, M. (1996). "AntiPatterns," Object World West Conference. ve 1998'de yayımlanan AntiPatterns kitabı ile kavram daha geniş kabul görmüştür.Brown, W. J., Malveau, R. C., McCormick, H. W., & Thomas, S. W. (2000). Anti-Patterns in Project Management. Wiley. Bu çalışmalar sayesinde kavram, yazılım geliştirmenin ötesine geçerek proje yönetimi ve organizasyonel davranış gibi alanlara da uygulanmıştır.

 Özellikler 
Anti-patternler aşağıdaki temel özellikleri taşır:

 Başlangıçta makul veya yaygın görülen ancak zamanla sorun yaratan çözümler veya davranışlardır.
 Daha iyi belgelenmiş ve başarılı alternatif çözümler vardır.
 Üç ya da daha fazla kez yinelendiğinde anti-pattern olarak tanımlanır (rule of three).Foote, B., & Yoder, J. (1997). "Big Ball of Mud," Fourth Conference on Pattern Languages of Programs (PLoP '97).

 Etkiler 
 Anti-patternler, sistem ve organizasyonlar üzerinde çeşitli olumsuz etkiler yaratabilir:
 Bakım ve geliştirme maliyetlerinin artması
 Verimlilik kaybı
 Takım içi iletişimde sorunlar
 Teknik borç birikimi ve karmaşıklık artışı

 Yaygın Anti-pattern Örnekleri 
Aşağıda, yazılım mühendisliği ve proje yönetimi alanlarında sıkça karşılaşılan bazı anti-pattern örnekleri verilmiştir:

 Big Ball of Mud (Çamur Topu): Mimari yapının tamamen dağınık ve tutarsız olması. Genellikle hızlı geliştirme baskısıyla ortaya çıkar.
 God Object: Tüm işlemleri tek bir sınıfa yükleme. Nesne yönelimli tasarım ilkelerine aykırıdır.
 Spaghetti Code: Karmaşık, okunması ve bakımı zor kod yapısı. Genellikle yeterli planlama yapılmadan yazılmıştır.
 Golden Hammer: Her probleme tek bir bilinen çözümün (örneğin bir tasarım deseninin) uygulanması.
 Analysis Paralysis: Sürekli analiz yapılması ama geliştirme sürecine başlanamaması.
 Vendor Lock-In: Belirli bir tedarikçiye aşırı bağımlılık sonucu esneklik kaybı.
 Project Death March: Zaman, kaynak ve personel bakımından gerçekçi olmayan hedeflerle yürütülen projeler.

Bu tür anti-patternler, yalnızca teknik değil aynı zamanda yönetimsel ve kültürel sorunlara da işaret eder.

 Tartışmalar 
Anti-pattern kavramı bağlamsal yorumlara açıktır. Bazı uzmanlar, belirli durumlarda anti-pattern olarak nitelendirilen yaklaşımların işe yarayabileceğini savunur. Bu nedenle, bir çözümün anti-pattern olup olmadığını belirlerken bağlam, amaç ve sürdürülebilirlik dikkate alınmalıdır.

 Ayrıca bakınız 

 Tasarım desenleri
 Yazılım geliştirme süreci
 Teknik borç
 Yazılım mimarisi
 Yazılım mühendisliği
 Proje yönetimi
  SOLID (nesne yönelimli tasarım)
 Yeniden düzenleme (refactoring)
 Nesne yönelimli programlama

 Kaynakça 

 Dış bağlantılar 

C2 Wiki'de Anti-pattern hakkında sayfa

Kategori:Yazılım mühendisliği
Kategori:Yazılım geliştirme
Kategori:Proje yönetimi