Yazılım Mimarisi Nedir?
İnşaata başlamadan önce mimar, projenin ön çizimlerini ve tasarımını çizdi. Tıpkı bunun gibi, yazılım projelerinin inşa edilmeden önce planlanması gerekir. Bu plana "yazılım mimarisi" denir ve bu planı tasarlayan kişiye "yazılım mimarı" denir. Mimari, yazılım uygulamasının işletmenin donanımı, ağı ve diğer bileşenleri ile nasıl etkileşime gireceğini gösteren eksiksiz bir tasarım belgeleri setini içerir. Bu nedenle yazılım geliştiricilerin izleyeceği yol genellikle belirlenir.
İşlevsellik: Yazılımın kullanım amacına göre performans düzeyini ifade eder. Güvenilirlik: Bir ürünün belirli koşullar altında gerekli işlevleri sağlama yeteneğini ifade eder.
Kullanılabilirlik: Yazılım ürününün kullanım kolaylığını ifade eder.
Performans: İşlem hızı, yanıt süresi, kaynak kullanımı, çıktı ve üretkenliği hesaba katan tahminleri ifade eder.
Desteklenebilirlik: Programlama geliştiricilerinin herhangi bir değişiklik yapmadan veya çok az değişiklikle yazılımı bir platformdan diğerine kolayca aktarabilmeleri anlamına gelir.
Güven: Bağımsız hizmetlerden birinin kesintiye uğramasına rağmen en iyi şekilde performans gösterme yeteneğini ifade eder.
Yazılım mimarisinin yukarıdaki özelliklere sahip olması ve başarılı bir mimari tasarım olabilmesi için yazılım mimarisi ilkelerine (S.O.L.I.D ilkeleri) uyması gerekir.
Tek sorumluluk ilkesi
Her sistem işlevinin (servis/modül/api gibi) yalnızca bir sorumluluğu olmalıdır, dolayısıyla değişimin bir nedeni vardır. Sorumluluk kapsamını mümkün olduğunca azaltmak, kullanıcının amaçlanan amacı bilmesi ve dolayısıyla hataların azaltılması anlamına gelir.
Açma ve kapama prensibi
Bu ilke, davranışını değiştirmeden sistemi genişletmenin en iyisi olduğunu varsayar. Gereksinimlerdeki değişiklikleri tahmin etmeye çalışmak genellikle iyi bir fikir olmasa da (çünkü aşırı karmaşık tasarımlara yol açabilir), mevcut bileşenlerde minimum değişiklikle yeni özelliklere uyum sağlayabilmek, bir uygulamanın ömrünün anahtarıdır.
Richter'in İkame Prensibi
Herhangi iki bağımsız hizmet, gerektiğinde API çağrıları aracılığıyla birbirleriyle iletişim kurabilmelidir. Ayrıca aynı sözleşmeye sahip iki hizmet, tüm sistemi değiştirmeden birbirinin yerine geçebilmelidir.
Arayüz izolasyon prensibi
Arayüzler/sözleşmeler mümkün olduğunca ayrıntılı ve müşteriye özel olmalıdır, böylece müşteri çağrıları kullanmadıkları fonksiyonlara bağlı olmaz. Bu, tek sorumluluk ilkesiyle yakından ilgilidir: ayrıştırıcı arayüzlerin bir kombinasyonunu, onları rol/sorumluluklara göre ayırmayı ve türetilmiş modülleri gereksiz sorumluluk kombinasyonlarından ayırmayarak ayırmayı tercih ediyoruz.
Bağımlılık ters çevirme ilkesi
Yüksek seviyeli modüller, düşük seviyeli modüllere bağlı olmamalıdır; her ikisi de soyutlamaya dayalı olmalıdır. Benzer şekilde, soyutlama ayrıntılara bağlı olmamalı ve ayrıntılar soyutlamalara bağlı olmalıdır. Bu ilke, aralarındaki bağımlılıkları ortadan kaldırmak için yüksek seviyeli ve düşük seviyeli yazılım bileşenleri veya katmanları arasındaki arayüzün bir soyutlamasını sağlar.
Kısa ve öz olarak yazılım mimarisinin bütünleşmesi için bu prensiplerin hepsine ihtiyacımız vardır. Uygulanan bu prensipler bize müşterinin isteğini doğrudan oluşturmamızı sağlayan kümeler haline yarar sağlayacaktır.
Not: Bir sonraki konumuzda görüşmek üzere sağlıcakla kalın
İnşaata başlamadan önce mimar, projenin ön çizimlerini ve tasarımını çizdi. Tıpkı bunun gibi, yazılım projelerinin inşa edilmeden önce planlanması gerekir. Bu plana "yazılım mimarisi" denir ve bu planı tasarlayan kişiye "yazılım mimarı" denir. Mimari, yazılım uygulamasının işletmenin donanımı, ağı ve diğer bileşenleri ile nasıl etkileşime gireceğini gösteren eksiksiz bir tasarım belgeleri setini içerir. Bu nedenle yazılım geliştiricilerin izleyeceği yol genellikle belirlenir.
Yazılım mimarisinin hangi özelliklere ihtiyacı var?
İşlevsellik: Yazılımın kullanım amacına göre performans düzeyini ifade eder. Güvenilirlik: Bir ürünün belirli koşullar altında gerekli işlevleri sağlama yeteneğini ifade eder.
Kullanılabilirlik: Yazılım ürününün kullanım kolaylığını ifade eder.
Performans: İşlem hızı, yanıt süresi, kaynak kullanımı, çıktı ve üretkenliği hesaba katan tahminleri ifade eder.
Desteklenebilirlik: Programlama geliştiricilerinin herhangi bir değişiklik yapmadan veya çok az değişiklikle yazılımı bir platformdan diğerine kolayca aktarabilmeleri anlamına gelir.
Güven: Bağımsız hizmetlerden birinin kesintiye uğramasına rağmen en iyi şekilde performans gösterme yeteneğini ifade eder.
Yazılım mimarisinin yukarıdaki özelliklere sahip olması ve başarılı bir mimari tasarım olabilmesi için yazılım mimarisi ilkelerine (S.O.L.I.D ilkeleri) uyması gerekir.
Tek sorumluluk ilkesi
Her sistem işlevinin (servis/modül/api gibi) yalnızca bir sorumluluğu olmalıdır, dolayısıyla değişimin bir nedeni vardır. Sorumluluk kapsamını mümkün olduğunca azaltmak, kullanıcının amaçlanan amacı bilmesi ve dolayısıyla hataların azaltılması anlamına gelir.
Açma ve kapama prensibi
Bu ilke, davranışını değiştirmeden sistemi genişletmenin en iyisi olduğunu varsayar. Gereksinimlerdeki değişiklikleri tahmin etmeye çalışmak genellikle iyi bir fikir olmasa da (çünkü aşırı karmaşık tasarımlara yol açabilir), mevcut bileşenlerde minimum değişiklikle yeni özelliklere uyum sağlayabilmek, bir uygulamanın ömrünün anahtarıdır.
Richter'in İkame Prensibi
Herhangi iki bağımsız hizmet, gerektiğinde API çağrıları aracılığıyla birbirleriyle iletişim kurabilmelidir. Ayrıca aynı sözleşmeye sahip iki hizmet, tüm sistemi değiştirmeden birbirinin yerine geçebilmelidir.
Arayüz izolasyon prensibi
Arayüzler/sözleşmeler mümkün olduğunca ayrıntılı ve müşteriye özel olmalıdır, böylece müşteri çağrıları kullanmadıkları fonksiyonlara bağlı olmaz. Bu, tek sorumluluk ilkesiyle yakından ilgilidir: ayrıştırıcı arayüzlerin bir kombinasyonunu, onları rol/sorumluluklara göre ayırmayı ve türetilmiş modülleri gereksiz sorumluluk kombinasyonlarından ayırmayarak ayırmayı tercih ediyoruz.
Bağımlılık ters çevirme ilkesi
Yüksek seviyeli modüller, düşük seviyeli modüllere bağlı olmamalıdır; her ikisi de soyutlamaya dayalı olmalıdır. Benzer şekilde, soyutlama ayrıntılara bağlı olmamalı ve ayrıntılar soyutlamalara bağlı olmalıdır. Bu ilke, aralarındaki bağımlılıkları ortadan kaldırmak için yüksek seviyeli ve düşük seviyeli yazılım bileşenleri veya katmanları arasındaki arayüzün bir soyutlamasını sağlar.
Kısa ve öz olarak yazılım mimarisinin bütünleşmesi için bu prensiplerin hepsine ihtiyacımız vardır. Uygulanan bu prensipler bize müşterinin isteğini doğrudan oluşturmamızı sağlayan kümeler haline yarar sağlayacaktır.
Not: Bir sonraki konumuzda görüşmek üzere sağlıcakla kalın