İyi bir yazılım mimarisini nasıl anlarsınız?

Adanali

Member


  1. İyi bir yazılım mimarisini nasıl anlarsınız?

Bugün, iyi bir yazılım mimarisini neyin oluşturduğuyla ilgilenen Alexander Eisenhuth’un konuk katkısını sunmak istiyorum. Alexander, 1996’dan beri yazılım mühendisliğinde serbest meslek sahibidir. Bir yazılım mimarı olarak, on yılı aşkın bir süredir geliştirme ekiplerine gömülü sistemler için yazılım mimarisi çalışmalarında destek vermektedir. Alexander tutkusu hakkında yazıyor: iyi yazılım mimarisi.







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.













“İyi bir yazılım mimarisini nasıl anlarsınız?” “Çevik Yazılım Mimarisi” web seminerimin sonundaki soru buydu. Yarışmacı daha önce şu hikayeyi paylaşmıştı: “Yerleşik yazılımımızla artık onu genişletemeyeceğimiz noktaya geliyoruz. Yazılım, cihaz ailelerimizi on yılı aşkın bir süredir desteklemektedir. Bir üründe yapılan değişikliklerden sonra diğer ürünlerde beklenmeyen davranışlar oluşuyor“.

Hiç böyle bir hikaye duydunuz mu? Yazılımın durumu bu nedenle “tarihsel olarak büyümüş” veya “büyük çamur yumağı” olarak da adlandırılır.

Cevap kalite özellikleridir


İyi bir yazılım mimarisi sorusu kolaylıkla cevaplanabilir: İyi bir yazılım mimarisi, gerekli kalite özelliklerini uygulamasıyla tanınabilir. Yukarıdaki hikaye söz konusu olduğunda, yazılımın sürdürülebilirlik kalitesi kapsamına girer. Prensip olarak, “tarihsel olarak geliştirilmiş” yazılım bakımı yapılabilir, ancak onu tekrar istenen, teknik olarak doğru duruma dönüştürmek pahalıdır. Her durumda, sonuç tatmin edici değildir:

  • yüksek efor
  • işlevsellik için gerekli uzantılar muhtemelen yazılımın birçok yerinde dağıtılmıştır.

Kalite karakteristikleri ISO 25010 kalite modelinde detaylı olarak anlatılmıştır.Kalite karakteristiklerinin yazılım yaşam döngüsünün farklı aşamalarını etkilediği görülmektedir.








Kalite özelliklerine öncelik vermenin önemli bir yönü vardır. Önemli, kritik ve ilgisiz kalite özelliklerine ayrılabilirler.

Kritik kalite özellikleri garanti edilmelidir, çünkü bunlar olmadan yazılım veya sistemin çalıştırılmasına ve satışına izin verilmez. Bu kalite özelliklerinin karşılanması sağlanmalıdır.

Her durumda, yazılım mimarisi üzerinde yapılan çalışmalarda önemli kalite özellikleri de dikkate alınmalıdır, ancak bunlar doğrudan kritik değildir.

Sürdürülebilirlik genellikle önemli bir kalite özelliğidir. En başından beri örneğimizin de gösterdiği gibi, yetersiz bakımın etkileri yıllar içinde belirgindir.

Kalite özelliklerinin sürdürülebilirliği


Sürdürülebilirliğin kalite özelliği, bir yazılım üzerinde zaman alan bakım görevlerinin gerçekleştirilebildiği kalite olarak anlaşılmaktadır.

Bakım faaliyetleri şunlardır:

  • İşlevselliği genişletin: yeni işlevsel gereksinimler uygulayın,
  • analiz gerçekleştirme: hata analizi veya statik kod analizi gerçekleştirme veya yorumlama,
  • Programlama hatalarını ortadan kaldırın e
  • Kontrol edin: Değişikliklerden sonra hataları hariç tutun.
Yönetilebilir yazılımı nasıl edinebilirim?


Bir ekibin yukarıda listelenen görevleri verimli bir şekilde yerine getirebilmesi için kaynak kodunun temelde yeterli bir yapıya sahip olması özellikle önemlidir. Ekibin, yazılımın bakımının kolay olması için özelliklerin kaynak kodun neresinde olduğu ve yazılımın nasıl geliştirildiği konusunda net bir anlayışa sahip olması gerekir. Kabaca söylemek gerekirse, bu yazılım mimarisi çalışmasının sonucudur:

  • mimari kararlar
  • tasarım çalışması
  • kavramsal çalışma
Teknik kavramlar, yazılımın çeşitli yapı taşlarını (bileşen, modül, sınıf) etkileyen bir gereksinime yönelik temel çözümü tanımlar. Etki tarzlarına çapraz denir. Bakımı etkiler çünkü bir gereksinim için tam olarak tek bir teknik çözüm olmalıdır. Teknik kavramlar, kullanılan platform veya programlama dili teknolojisindeki somut uygulamayı tanımlar.

Sürdürülebilirliği destekleyen kavramlar


Aşağıdaki tablo, yazılım bakımını sağlamak için tipik teknik kavramları listeler:









Örnek olarak tıbbi termometre kullanan mimari stil ve model



Tasarım çalışmasının başında yazılımın temel organizasyonu belirlenir. Bir mimari tarz bu temel yapıyı tanımlar. Mimari modeller, mimari tarzın teknik olarak somut tasarımıdır.

Mimari model seçiminde hangi yönlerin rol oynadığını göstermek için, bunu tıbbi bir termometre kullanarak gözlemlemek istiyorum.








Dijital tıbbi termometre, hiyerarşik bir sistem mimarisi tarzında organize edilmiş entegre bir sistemdir. En üst seviyede, temeldeki donanımı kullanan yazılım bulunur. Yazılımın kendisi de hiyerarşik olarak yapılandırılmıştır. Bunun nedeni, en düşük yazılım seviyesinin, donanımın kontrol edildiği donanım soyutlamasını içermesidir.

Mimari model seçimi mimari bir karardır. Mimari kararlar, teknik ve organizasyonel çerçevesiyle kararın çerçevesini oluşturan bir şirkette bir geliştirme projesinin arka planına karşı verilir.

İki mimari modeli tanıtacağım ve sürdürülebilirlik yönlerini açıklayacağım. Aşağıdaki diyagramlarda bağımlılıkları temsil etmeden iki mimari modelin yapısını bloklarla çok basitleştirilmiş bir biçimde gösterdim.

katmanlı mimari


Katmanlı yazılım yapılandırması uzun yıllardır kullanılmaktadır. Temel kavram, işlevleri düzenlemek için soyutlama katmanları oluşturmaktır. Seviyelerde, daha yüksek seviyeler yalnızca daha düşük seviyelere erişebilir. Bu, döngüsel bağımlılık olasılığını ortadan kaldırır. Düzeyler değiştirilebilir ve genel işlevsellik korunur. Aşağıdaki mimari model, gömülü sistemlerde yaygındır:

Termometre yazılımı benim görüşüme göre üç katmana ayrılmıştır:

  1. başvuru: Sistemin kullanım durumlarını içerir. Bu durumda, sıcaklık ölçümü ve pil zayıfken davranış.
  2. hizmet: Uygulamaların uygulanabileceği teknik soyutlamalara erişim sağlar. Burada sıcaklıkları ölçme, görüntüleme ve bir sinyal sesi verme imkanı. Burada soyutlama katmanının korunması ve uygulama için donanım erişimi türü hakkında herhangi bir bilgi gerekmemesi önemlidir.
  3. Donanım soyutlama katmanı: Donanımı kontrol etmek için bir arayüz sağlar







Notlar:

  • ADC: Gerilim ölçümü
  • LCD: ekran kontrolü
  • HAL: donanım soyutlama katmanı
bileşen mimarisi


Bileşenler, sunulan arabirimler aracılığıyla sisteme özel işlevsellik sağlar. Bileşenlerin çalışması için, gerekli arabirimler aracılığıyla aldıkları ek işlevsellik gerekir.

Gerekli ve sağlanan arayüzler bildirildiği takdirde bileşenler birbirinden bağımsız olarak geliştirilebilir. Ayrıca bileşenler, programlama dili çalışma zamanı kitaplıkları gibi teknik özellikler gerektirir. İşletim sistemi olmayan gömülü sistemlerde, bileşenler statik kitaplıklar olarak uygulanır.

Yeniden kullanılabilirlik, bileşenlerden yazılım oluşturmanın arkasındaki itici güçtür.








Burada gösterilen bileşen mimarisi de hiyerarşik bir mimari tarzıdır. Uygulama katmanı en üst katmandır ve gösterilen bileşenleri kullanır. Bileşenlerin bir hizmet düzeyi ve bir HAL’si vardır.

Bakım katmanı mimarisi ile bileşen mimarisi arasındaki karşılaştırma


En belirgin fark, üst düzey bileşen mimarisi yazılımının altı bloğa, katmanlı mimarinin ise üç bloğa bölünmesidir. Bileşen mimarisi durumunda, yazılımın daha ince bir alt bölümü vardır.

Diğer bir fark ise, bileşen mimarisinin uyumlu işlevsel bloklar oluşturmasıdır. Uyum, bir blok içinde birbirine ait olmayı tanımlar. Uyum, bileşenin işlevselliği tarafından belirlenir.

ADC engelleme, bileşen mimarisinde birden çok kez gerçekleşir.

Bir tıbbi termometrenin yazılımındaki sürdürülebilirliğin karşılaştırılması









farklılıkların değerlendirilmesi



Bileşen mimarisinin potansiyel faydaları, bileşen arayüzlerini uygularken daha fazla çaba sarf edilmesi pahasına gelir. Mimari modelin seçiminde, sürdürülebilirlik kalite özelliği tek belirleyici faktör değildir. Daha önce de belirtildiği gibi, bir geliştirme projesinin geçmişine bağlıdır.

Termometre gibi çok basit bir sistemle yazılımı parçalara ayırmaya değmez. Bununla birlikte, daha karmaşık sistemler söz konusu olduğunda veya ürün veya cihazlarda farklılıklar söz konusu olduğunda, basit sistemler için bir bileşen mimarisi de anlamlı olabilir.

Her durumda, yazılım mimarisi çalışması bir geliştirme projesinin önemli bir parçasıdır. Yazılımda kalite özelliklerini daha sonra uygulamak, başlangıçta dikkate almaktan daha pahalıdır.

Özet

  • Sürdürebilirlik, yazılımın kalite özelliğidir,
  • yazılımın bakımı ne kadar kolaysa, bakım faaliyetlerine (analiz, genişletme, test) o kadar az zaman harcanır.
  • Yazılım mimarisi stilini seçmek, geniş kapsamlı sonuçları olan önemli bir mimari karardır.
Sürdürebilirlik şu şekilde sağlanır:

  • uygun bir yazılım mimarisi stili,
  • sürdürülebilirlik için iyi teknik kavramlar e
  • Probleme uygun tasarım çalışmaları.
Sıradaki ne?


Bir sonraki makalemde, Katmanlı Mimari, Borular ve Filtreler, Aracı, Model Görünümü Denetleyicisi ve Reaktör mimarisi kalıplarını inceleyeceğim.


(rm)



Haberin Sonu
 
Üst