Yazılım geliştirmede yapılar: mimari modeller
Mimari modeller, bir yazılım sisteminin temel yapısını tanımlar ve genellikle tasarım modellerine dayanır. “Pattern-Oriented Software Architecture” serisindeki beş kitap, mimari örüntüler konusunda değerli bilgiler ve ipuçları 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.
Bir sınıflandırmaya genel bakışla başlayalım: Mimari kalıplar, tasarım kalıpları ve deyimler nasıl farklılık gösterir?
Mimari modeller, tasarım modelleri ve deyimler
Mimari model, tasarım modeli ve dil arasındaki temel fark, kapsamlarına ve soyutlama düzeylerine göre yapısal sınıflandırmada yatmaktadır:
Beş bölümden oluşan Model Odaklı Yazılım Mimarisi (POSA) kitap serisi, mimari modeller hakkında değerli bir kaynaktır:
POSA 1, bir ilk sınıflandırma sağlar.
Çamurdan (orijinal) yapıya
Aşağıdaki modeller, genel bir sistem etkinliğinin işbirliği yapan alt sistemlere kontrollü bir şekilde ayrışmasına izin verir.
Aracı modeli, bileşenleri farklı işlemlerde veya adres alanlarında bulunan sistemler oluşturmak için kullanılabilir.
İnsan-bilgisayar etkileşimi ile bir sistem oluşturun.
Çoğullamayı çözme ve olay iletme
Ağa bağlı ve dağıtılmış sistemlerde olayları başlatma, alma, çoğullamayı çözme ve gönderme.
Bileşenlerin, alt sistemlerin ve uygulamaların eşzamanlı mimari ve tasarım problemlerini çözer.
POSA kitaplarına ve içinde yer alan maketlere bu ilk genel bakışın ardından, bir sonraki yazımda mimari maket katmanlarını daha detaylı bir şekilde sunacağım.
(harita)
Haberin Sonu
Yazılım geliştirmede yapılar: mimari modeller
Mimari modeller, bir yazılım sisteminin temel yapısını tanımlar ve genellikle tasarım modellerine dayanır. “Pattern-Oriented Software Architecture” serisindeki beş kitap, mimari örüntüler konusunda değerli bilgiler ve ipuçları 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.

Bir sınıflandırmaya genel bakışla başlayalım: Mimari kalıplar, tasarım kalıpları ve deyimler nasıl farklılık gösterir?
Mimari modeller, tasarım modelleri ve deyimler
Mimari model, tasarım modeli ve dil arasındaki temel fark, kapsamlarına ve soyutlama düzeylerine göre yapısal sınıflandırmada yatmaktadır:
- mimari model tüm yazılım sisteminin temel yapısını tanımlar. Genellikle tasarım modellerine dayanırlar.
- tasarım desenleri bileşenlerin etkileşimini tanımlar ve alt sistemlere odaklanır.
- A deyim bir mimarinin veya tasarım modelinin somut bir programlama dilinde uygulanmasıdır. C++’daki en popüler deyimlerden biri Resource Acquisition Is Initialization’dır (RAII). Konteynerler, akıllı işaretçiler ve asma kilitlerle temsil edilirler.
- Yapısal kategoriler soyuttan somuta kadar değişir. Deyimler en somut olanlardır.
- Makro düzeyde (mimari desenler), mikro düzeyde (tasarım desenleri) ve programlama dilinde (deyimler) çalışırlar.
- Mimari kalıplar sisteme, tasarım kalıpları alt sistemlere ve deyimler programlama diline odaklanır.
Beş bölümden oluşan Model Odaklı Yazılım Mimarisi (POSA) kitap serisi, mimari modeller hakkında değerli bir kaynaktır:
- Model Odaklı Yazılım Mimarisi, Cilt 1, Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad ve Michael Stal (POSA 1)
- Model Yönelimli Yazılım Mimarisi, Cilt 2: Ağa Bağlı ve Eşzamanlı Nesneler için Modeller, Douglas C. Schmidt, Michael Stal, Hans Rohnert ve Frank Buschmann (POSA 2)
- Model Odaklı Yazılım Mimarisi, Cilt 3: Kaynak Yönetimi Modelleri, Michael Kirchner ve Prashant Jain (POSA 3)
- Model Odaklı Yazılım Mimarisi, Cilt 4: Dağıtılmış Programlama için Bir Model Dil, Frank Buschmann, Kevlin Henney ve Douglas C. Schmidt (POSA 4)
- Model Odaklı Yazılım Mimarisi, Cilt 5: Modeller ve Model Dili, Frank Buschmann, Kevlin Henney ve Douglas C. Schmidt (POSA 5)
POSA 1, bir ilk sınıflandırma sağlar.
Çamurdan (orijinal) yapıya
Aşağıdaki modeller, genel bir sistem etkinliğinin işbirliği yapan alt sistemlere kontrollü bir şekilde ayrışmasına izin verir.
- katmanlı mimari: Bir aktiviteyi seviyelere bölün. Her seviyenin belirli bir sorumluluğu vardır ve bir üst seviyeye hizmet sağlar.
- Borular ve filtreler: Karmaşık işlemleri gerçekleştirmek için tasarlanmış bir görevi, yeniden kullanılabilecek bir dizi ayrı öğeye ayırır. İşlemeyi gerçekleştiren iş öğeleri bağımsız olarak konuşlandırılıp ölçeklendirilebildiğinden, bu performansı, ölçeklenebilirliği ve yeniden kullanılabilirliği iyileştirebilir.
Aracı modeli, bileşenleri farklı işlemlerde veya adres alanlarında bulunan sistemler oluşturmak için kullanılabilir.
- komisyoncu: Uzak hizmet çağrılarıyla etkileşime giren dağıtılmış yazılım sistemlerini yapılandırır. İletişimleri, sonuçlarını ve istisnaları koordine etmekten sorumludur.
İnsan-bilgisayar etkileşimi ile bir sistem oluşturun.
- Model Görünümü Denetleyicisi (MVC): Bir kullanıcı arabiriminin program mantığını tek tek model, görünüm ve denetleyici bileşenlerine ayırır. Model, uygulama verilerini ve kurallarını yönetir. Görünüm, verileri işler ve denetleyici, kullanıcıyla etkileşime girer.
Çoğullamayı çözme ve olay iletme
Ağa bağlı ve dağıtılmış sistemlerde olayları başlatma, alma, çoğullamayı çözme ve gönderme.
- reaktör: Aynı anda birden çok istemci isteğini kabul edebilen ve bunları farklı hizmet sağlayıcılara dağıtabilen olay güdümlü bir uygulama.
Bileşenlerin, alt sistemlerin ve uygulamaların eşzamanlı mimari ve tasarım problemlerini çözer.
- aktif nesne: Yöntem yürütmeyi yöntem çağırmadan ayırır.
- nesneyi izle: Bir seferde yalnızca bir üye işlevin yürütülebilmesi için bir nesneye erişimi senkronize edin.
POSA kitaplarına ve içinde yer alan maketlere bu ilk genel bakışın ardından, bir sonraki yazımda mimari maket katmanlarını daha detaylı bir şekilde sunacağım.
(harita)
Haberin Sonu