Yazılım
100%

Yazılımda Clean Architecture (Temiz Mimari) Yaklaşımı

Bağımlılıkların dışarıdan içeriye doğru aktığı, test edilebilir ve çerçevelerden bağımsız yazılım geliştirme mimarisi olan Clean Architecture.

Genel Bakış

Clean Architecture (Temiz Mimari), Robert C. Martin (Uncle Bob) tarafından popüler hale getirilen, yazılım sistemlerini katmanlara ayırarak iş kurallarını altyapı detaylarından izole etmeyi hedefleyen bir mimari kalıptır.

Sorun

Geleneksel "Spagetti" veya aşırı veri tabanı merkezli mimarilerde, kullanıcı arayüzü (UI), iş mantığı (Business Logic) ve veri erişim kodları birbirine sıkı sıkıya bağlıdır. Projeye yeni bir veritabanı (örneğin MySQL'den MongoDB'ye geçiş) veya yeni bir arayüz (Web yerine Mobil uygulama) eklenmek istendiğinde, sistemin çekirdek iş kuralları da değişikliğe uğramak zorunda kalır. Bu durum, yazılımın bakımını ve test edilmesini imkansız hale getirir.

Çözüm: Bağımlılık Kuralı (The Dependency Rule)

Clean Architecture, sistemi genellikle eşmerkezli 4 çember (katman) olarak tanımlar. Altın kural şudur: Kaynak kod bağımlılıkları sadece içeriye, daha yüksek seviyeli politikalara doğru işaret etmelidir.

  • Entities (Varlıklar): En içteki katman. Saf iş kurallarıdır, hiçbir dış kütüphaneye bağımlı değildir.
  • Use Cases (Kullanım Senaryoları): Sistemin uygulamaya özel iş kurallarını koordine eder.
  • Interface Adapters: Veriyi Use Case'lerin anladığı formattan, Veritabanı veya Web'in anladığı formata dönüştürür (Controllers, Presenters).
  • Frameworks & Drivers: En dış katman. UI, Veritabanı, Web API vb. dış araçları barındırır.

Teknik Detaylar

Dış katmandaki bir bileşenin, iç katmandaki bir kodu çağırması kolaydır. Ancak iç katmanın (örneğin Use Case), dış katmandaki bir veritabanına kayıt atması gerektiğinde Bağımlılık Kuralı ihlal edilme riski doğar. Bunu çözmek için Dependency Inversion (Bağımlılıkları Tersine Çevirme) prensibi kullanılır. Use Case katmanında bir arayüz (Interface) tanımlanır, dış katmandaki Repository sınıfı bu arayüzü uygular (implement eder). Böylece iç katman, dış katmanın detaylarını bilmeden sadece arayüz üzerinden işlem yapar.

Sonuç

Clean Architecture, başlangıçta çok fazla dosya (klasör, arayüz, DTO) oluşturmayı gerektirdiği için küçük projelerde "Over-engineering" (aşırı mühendislik) sayılabilir. Ancak uzun ömürlü, sürekli gelişen kurumsal projelerde, iş mantığını dış dünyanın (frameworkler, veritabanları) değişkenliğinden koruyan yegane güvenli limandır.

İlgili Wiki'ler

Tümünü Gör