6.1 Ayrıştırma

Kriterlerin çeşitliliğine rağmen, büyük sistemlerin geliştirilmesinde asıl görev, sistemin karmaşıklığını azaltma görevidir . Karmaşıklığı azaltmak için henüz parçalara bölmekten başka bir şey icat edilmedi.

Bazen basit olması için buna "böl ve fethet" ilkesi denir, ancak yazılım mimarı açısından hiyerarşik ayrışmadan bahsediyoruz .

Karmaşık bir sistem, her biri daha küçük parçalardan oluşan az sayıdaki daha basit alt sistemlerden oluşturulmalıdır ve en küçük parçalar doğrudan anlaşılacak ve yaratılacak kadar basit olana kadar böyle devam eder.

ayrışma

Harika haber şu ki, bu çözüm sadece bilinen tek çözüm değil, aynı zamanda evrensel. Karmaşıklığı azaltmanın yanı sıra, kritik parçaları çoğaltarak aynı anda sistem esnekliği , iyi ölçeklenebilirlik ve artırılmış esneklik sağlar.

Buna göre, programın mimarisini oluşturmak, yapısını oluşturmak, programı alt sistemlere, servislere, katmanlara, alt programlara ve işlevsel modüllere ayrıştırmak ve bunların birbirleriyle ve dış dünyayla etkileşimlerini düzenlemek anlamına gelir.

Ve buradaki en değerli şey şudur: Alt sistemler ne kadar bağımsız olursa, her birinin gelişimine belirli bir zamanda ayrı ayrı odaklanmak ve diğer tüm parçalar için endişelenmemek o kadar güvenli olur.

6.2 Modüler mimarinin faydaları

Hiyerarşik ayrıştırma ilkesini kullanmak, kodunuzun binlerce sınıfındaki kaostan kurtulmanızı sağlar. Kodunuzun paketlere (paket) ve alt paketlere bölündüğünü hatırlıyor musunuz? Bu, hiyerarşik ayrışmanın ifadelerinden biridir.

Programınız, bir grup sınıftan, iyi tanımlanmış ve basit kurallara göre birbirleriyle etkileşime giren bir dizi kitaplığa ve modüle dönüşür. Bu da, karmaşıklığını kontrol etmenize izin verir ve ayrıca size genellikle iyi bir mimari kavramıyla ilişkilendirilen tüm avantajları elde etme fırsatı verir.

İşte en temel olanları:

  • Ölçeklenebilirlik - yeni modüller ekleyerek sistemi genişletme ve performansını artırma yeteneği.
  • Bakım - bir modülün değiştirilmesi, diğer modüllerin değiştirilmesini gerektirmez.
  • Modüllerin değiştirilebilirliği (Swappability) - modül kolayca başka bir modülle değiştirilebilir.
  • Birim Testi – Bir birim diğerlerinden ayrılabilir ve test edilebilir/onarılabilir .
  • Yeniden kullanılabilirlik - modül, diğer programlarda ve diğer ortamlarda yeniden kullanılabilir.
  • Bakım - modüllere bölünmüş bir programın anlaşılması ve bakımı daha kolaydır.

Karmaşık bir problemi basit parçalara ayırmanın tüm tasarım tekniklerinin amacı olduğu söylenebilir . Ve çoğu durumda "mimari" terimi, böyle bir bölünmenin sonucuna ve "bir kez benimsendiğinde değiştirilmesi zor olan bazı tasarım kararlarına" atıfta bulunur (Martin Fowler "Kurumsal Yazılım Uygulamalarının Mimarisi").

Bu nedenle, bir biçimde veya başka bir şekilde çoğu tanım aşağıdakilere indirgenir:

" Mimarlık, sistemin ana bileşenlerini ve nasıl etkileşimde bulunduklarını tanımlar. Aynı zamanda, temel olarak yorumlanan ve gelecekte değişmeyecek olan bu tür kararların seçimidir ."

" Mimarlık, bileşenlerinde, bunların birbirleriyle ve çevreyle olan ilişkilerinde somutlaşan bir sistemin organizasyonudur. Bir sistem, belirli bir işlevi yerine getirmek için bir araya getirilmiş bir dizi bileşendir ."

Dolayısıyla iyi bir mimari, her şeyden önce modüler/blok bir mimaridir . İyi bir mimari elde etmek için, sistemi doğru bir şekilde nasıl ayrıştıracağınızı bilmeniz gerekir. Bu, hangi ayrıştırmanın "doğru" kabul edildiğini ve bunu en iyi nasıl gerçekleştireceğini anlamak gerektiği anlamına gelir.