Ana içeriğe geç
Programlama

Yazılım mimarisinde deterministik çekirdek yaklaşımı test edilebilirliği artırıyor

Öne çıkanlar

  • Deterministik çekirdek modeli, saf fonksiyonel programlama zorunluluğunu esneterek durum makinelerine alan açıyor.
  • Ağ trafiği, zaman çağrıları ve veri tabanı yazımları gibi dış dünya etkileşimleri kabuk katmanına bırakılıyor.
  • Miras projelerdeki dağınık iş mantıkları adım adım toplanarak deterministik bloklar oluşturulabiliyor.

Gary Bernhardt tarafından on dört yıl önce ortaya atılan fonksiyonel çekirdek ve buyurgan kabuk mimarisi, mevcut sistemlerde test edilebilirlik ve determinizm tartışmalarına zemin hazırladı. Bu modelde iş mantığını yürüten çekirdek, girdi ve çıktı işlemlerinden tamamen yalıtılmış saf fonksiyonlardan oluşuyor. Dış dünyayla etkileşimi, ağ çağrılarını, veri tabanı işlemlerini ve durum yönetimini ise buyurgan kabuk üstleniyor. Böylece iş mantığının yer aldığı çekirdek, harici bağımlılıklara sahte nesneler bağlamaya gerek kalmadan kolayca test ediliyor.

Saf fonksiyonel programlama dillerin yapısı veya performans gereksinimleri nedeniyle her projede pratik bir seçenek sunmuyor. Bu kısıtı aşmak için saf fonksiyonellik yerine determinizm kavramı temel alınıyor. Aynı girdi dizisi karşısında daima aynı durumu üreten durum makineleri, buyurgan kod parçaları barındırsalar dahi deterministik kabul ediliyor. Zaman sorguları, rastgele sayı üreticileri, asenkron süreçler ve dosya işlemleri gibi tekrar edilemeyen adımlar deterministik olmayan kabuk katmanına ötelenerek çekirdeğin öngörülebilirliği korunuyor.

Eski ve karmaşık kod tabanlarında bu ayrımı adım adım uygulamak için determinizm parçalanmasını giderme yöntemi öneriliyor. Sabit disk birleştirme mantığına dayanan bu süreçte, fonksiyonlar ve sınıflar arasına dağılmış deterministik mantık blokları tespit edilip bir araya toplanıyor. Tek bir büyük çekirdek yerine binlerce dağınık mantığın yüzlerce küçük deterministik bloğa dönüştürülmesi, sistemin test edilebilir yüzeyini genişletip genel yazılım güvenilirliğini kademeli olarak yükseltiyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.