Yazılım mimarisinde örüntüler: katmanlı örüntü

Adanali

Active member
Yazılım mimarisinde örüntüler: katmanlı örüntü


  1. Yazılım mimarisinde örüntüler: katmanlı örüntü

Modeller, modern yazılım geliştirme ve yazılım mimarisinde önemli bir soyutlamadır. İyi tanımlanmış terminoloji, açık belgeler sunar ve en iyisinden öğrenirler. Katmanlı model, bir etkinliği yatay katmanlara böler. Her seviyenin belirli bir sorumluluğu vardır ve bir üst seviyeye hizmet sağlar.







Rainer Grimm, uzun yıllardır yazılım mimarı, ekip lideri ve eğitim yöneticisi olarak çalışmaktadır. C++, Python ve Haskell programlama dilleri üzerine makaleler yazmaktan hoşlanır, aynı zamanda sık sık uzmanlık konferanslarında konuşmaktan da keyif alır. Modernes C++ blogunda yoğun bir şekilde C++ tutkusundan bahsediyor.













Pattern-Oriented Software Architecture, Cilt 1 kitabına göre, katmanlı model veya katmanlı mimari, yapıyı kaosa dönüştürmeye yardımcı olan bir mimari modeldir.

Ayrıca şöyle bilinir

Kapsam


  • Sökülecek büyük sistemler

sorun

  • Farklı seviyelerde işlemleri gerçekleştiren bir sistem,
  • daha yüksek seviyeler daha düşük seviyeleri kullanır
Çözüm

  • Sistemin katmanlar halinde yapılandırılması,
  • daha yüksek katmanlı hizmetler, daha düşük katmanlı hizmetler üzerine kuruludur.
yapı









(Resim: Chunte7, CC BY-SA 3.0, Wikimedia Commons aracılığıyla)









Client

  • Üst seviyeye erişim
Layer J

  • özel rol ve sorumluluklarını kapsar. Layer J,
  • kullanarak hizmetlerini sunmaktadır. Layer J-1 onun
  • o sadece kalkabilir Layer J-1 erişim.
Belirtilmediği halde, katmanlı mimarilerin çoğu üç veya dört katmandan oluşur. Her katman diğerlerinden bağımsızdır. Saf versiyonda, bir seviye yalnızca altındaki seviyeye erişebilir. Bir katman, üst katmanına erişemez çünkü bu, daha fazla bağımlılık yaratacak ve kontrol yapısını karmaşıklaştıracaktır. Ayrıca bir üst katmana bağlı olan bir katman başka bir uygulamada kolaylıkla kullanılamaz. Bir katman, işlevselliğini genellikle Cephe modelini uygulayarak sağlar. Cephe modeli, karmaşık bir sisteme basitleştirilmiş bir arayüz sağlar.

örnekler


Katmanlı model, yazılım geliştirmenin ilk günlerinden beri yaygın olarak kullanılmaktadır. Sonuç olarak, birçok kullanım durumu vardır:

OSI modeli ve TCP/IP modeli

Açık Sistemler Ara Bağlantı Modeli (OSI modeli), “sistemlerin koordinasyonu için ortak bir temel sağlayan” kavramsal bir modeldir. [ISO] sistemlerin birbirine bağlanması için standartların geliştirilmesi’.[2] OSI Referans Modelinde, bir bilgisayar sistemi arasındaki iletişim yedi farklı soyutlama düzeyine ayrılır: fiziksel, veri bağlantısı, ağ, taşıma, oturum, sunum ve uygulama. ( )








Aynısı basitleştirilmiş TCP/IP modeli için de geçerlidir: Genel olarak TCP/IP olarak bilinen İnternet protokol takımı, İnternet ve benzeri bilgisayar ağlarında kullanılan iletişim protokolleri setini işlevsel kriterlere göre düzenlemek için bir çerçevedir. Paketin temel protokolleri, İletim Kontrol Protokolü (TCP), Kullanıcı Datagram Protokolü (UDP) ve İnternet Protokolüdür (IP). (https://en.wikipedia.org/wiki/Internet_protocol_suite)

gömülü sistemler

Gömülü sistemler için yazılım geliştirenler, genellikle C++’da çeşitli düzeylerde soyutlama kullanırlar.

  • Biri tipik olarak, yerleşik işletim sisteminin çalışmasını sağlamak için önyükleme sabit yazılımı ve aygıt sürücüleri gibi panoya özgü yapılandırmaları içeren Pano Destek Paketi (BSP) ile başlar.
  • Donanım Soyutlama Katmanı (HAL), BSP’nin üstünde yer alır. Donanım ile gömülü sistem üzerinde çalışan yazılım arasında bir soyutlama katmanıdır. Görevi, donanım farklılıklarını işletim sisteminden gizlemektir.
C/C++’da Python eklentisi/yerleştirmesi

Python’u C/C++’ya genişletmek aşağıdaki adımlardan oluşur:

  1. Değerleri Python’dan C/C++’a dönüştürün,
  2. C/C++ işlevselliğini çalıştırmak için dönüştürülen değerleri kullanın e
  3. sonuçları C/C++’dan Python’a dönüştürün.
Gömme aynı şeyi ters sırada yapar. Python ve C seviyeleri için sırada ne var? İşte basitleştirilmiş strateji.

gibi tüm Python veri türleri int miras kalmak object.








Veri türünün C eşdeğeri object bu C yapısı PyObject. C nesne yönelimli değildir. PyObject Python nesne depolaması için bir tür başlangıç noktasıdır. Uygulama GitHub’da bulunabilir: object.c. PyObject esasen bir referans sayısına ve uygun tipe bir işaretçiye sahiptir.

Python türünde bir yöntem çağırdığınızda, bu çağrı C yapısına gider. PyObjectİçinde object.c tanımlıdır. İçinde object.c C fonksiyonunu belirleyin Py_TYPE nesnenin türü ve C katmanında uygun işlevi çağırın.Bu, ilgili yöntem türetilmiş türde uygulanırsa çağrılacağı anlamına gelir. Aksi takdirde, varsayılan uygulama PyObject mümkünse denir.

Avantajlar ve dezavantajlar


Avantajlar

Her seviyenin belirli bir rolü ve belirli görevleri vardır. Bir arayüz üzerinden hizmetlerini en üst seviyede sunmaktadır. Üst seviye sadece alt seviyenin arayüzüne bağlıdır. Sonuç olarak, alt katman kolayca değiştirilebilir.

Her seviyenin kapsüllenmiş hizmetleri vardır. Bu, her katmanın işlevselliğini test etmeyi kolaylaştırır. Seviyeler içinde birim testleri gibi daha ince testler yapılmalıdır.

Çeşitli katmanların ayrılması (ilişkilerin ayrılması) sayesinde, her katman izole olarak uygulanabilir. İlk olarak, katmanlar arasındaki arayüz tanımlanmalıdır.

Dezavantajları

  • Katman ayrıntı düzeyi
Doğru seviye ayrıntı düzeyini bulmak zor olabilir. Çok fazla düzey, minimum sorumluluğa sahip düzeylere yol açabilir. Ayrıca, mimariyi anlamak zor olabilir. Çok az katman, katmanları değiştirmeyi, test etmeyi ve tek başına geliştirmeyi oldukça zorlaştırır.

Bir müşteri araması, daha düşük seviyede sonuçlanan bir dizi aramayı tetikler. Bu çağrı dizisi, uygulama performansını olumsuz etkileyebilir. Bu, özellikle vardiyalar uzak olduğunda geçerlidir.

Sıradaki ne?


Borular ve Filtreler modeli, verileri birden çok geçişte işleyen bir sisteminiz olduğunda ve her geçişin bağımsız olarak gelişmesini istediğinizde çok kullanışlıdır. Bundan sonraki yazımda bahsedeceğim.


(rm)



Haberin Sonu
 
Üst