İçeriğe geç
academia.sh

Ders 11 / 16

Yapılandırma Modelleri

Aygıt yapılandırması bir veri modeliyle tanımlandığında model genişledikçe kapsanan alan 80'den 113'e çıkar ve eksik temsil edilen aygıt 30'dan 9'a iner; kalan dokuz alan hiçbir modele girmez çünkü değer kaynağı aygıtın kendisidir.

İçindekiler

Önceki ders şablonu bir kabul üzerine kurdu: kırk aygıtın yapılandırması aynı alanlarla tarif edilebilir. Ölçüm bu kabulün tutmadığı yeri de gösterdi — alan listesindeki son satır, özel aygıtın istediği yerel kuraldı ve hiçbir şablon onu taşımıyordu. O satırın nereye gittiği açıkta kaldı.

Bu dersin sorusu tam olarak odur. Bir aygıtın yapılandırması metin olmaktan çıkıp bir veri modeliyle tanımlandığında, model neyi temsil edebilir? Hangi aygıt modele sığmaz? Ve modelin dışında kalan alan yok mu olur, yoksa gözden mi kaybolur? Ölçülen şey modelin kapsadığı değil, kapsamadığıdır.

Model Bir Sözleşmedir

Elle yapılandırmanın çıktısı bir metindir ve metnin anlamı onu okuyan aygıtın içindedir. Aynı metni iki ayrı yönetim aracı, iki ayrı biçimde yorumlayabilir; hangisinin haklı olduğunu söyleyecek bir yer yoktur.

Yapılandırma modeli (configuration model) bu boşluğu kapatır. Model, yapılandırmanın hangi alanlardan oluştuğunu, her alanın türünü, hangi koşulda zorunlu olduğunu ve hangi değer aralığını kabul ettiğini aygıttan bağımsız bir yerde bildirir. Bildirimsel yapılandırmanın “istenen son durum” dediği şey, ancak böyle bir modelle yazılabilir; model yoksa istenen durumun yazılacağı bir dilbilgisi de yoktur.

Modelin üç işi vardır. Doğrulama: modele uymayan bir yapılandırma aygıta gönderilmeden reddedilir. Karşılaştırma: iki yapılandırma alan alan karşılaştırılabilir, çünkü ikisi de aynı alan kümesiyle yazılmıştır — yapılandırma sapması ancak bu karşılaştırmayla ölçülebilir. Üretim: aynı model üzerinden farklı aygıtlar için farklı değerler üretilebilir.

# ogretilen model semasi , calistirilmamistir

aygit:
  arayuz      : metin       , zorunlu                        , ortak deger
  adres       : adres       , zorunlu                        , aygita ozgu
  oncelik     : sayi 0-7    , sinif etkilesim ise zorunlu    , ortak deger
  zamanlayici : sayi (ms)   , gecikme esigin ustundeyse zor. , aygita ozgu
  toplama     : liste       , kapasite esigin ustundeyse zor., ortak deger
  # yerel_kural : modelde karsiligi yok

Şemanın son satırı yorum içinde duruyor ve bu dersin ölçtüğü şey odur.

Değerin Kaynağı: Üç Sınıf

Bir alanın modelde bulunması, o alanın değerinin nereden geleceğini söylemez. Üç kaynak ayrılır ve ayrım modelin sınırını belirler.

Ortak değer. Alan bütün aygıtlarda aynıdır. Şablon değeri bir kez taşır ve kırk aygıta aynı değeri yazar. Bu, kaldıracın en verimli çalıştığı yerdir.

Aygıta özgü değer. Alan modelde vardır ama değeri aygıdın kendi niteliğinden türer — adres envanterden gelir, zamanlayıcı gecikmeden hesaplanır. Şablon burada bir değer değil, bir kural taşır; kural kırk kez ayrı ayrı çalıştırılır. Kaldıraç hâlâ tektir, çıktısı kırk ayrı değerdir.

Temsil edilemez alan. Alanın modelde karşılığı yoktur ve olamaz. Bir aygıtın yalnız kendisine ait bir kuralı modele eklemek, modeli kırk ayrı şekle sokardı; o noktada model bir sözleşme olmaktan çıkıp kırk ayrı yapılandırmanın toplamı olurdu. Modelin dışında kalan alan bir eksiklik değil, modelin tanımının sonucudur.

Ölçümün varsayımları:

  • OT7 — Kırk aygıtlık özne kümesi kursun sabitidir ve değiştirilmez; alan türetimi önceki dersteki kuralın aynısıdır.
  • OT8 — Model bir alan adı kümesidir. Bir aygıt, ancak gerektirdiği bütün alanlar modelde varsa tam temsil edilir; tek bir alanı eksikse eksik temsil edilir.
  • OT9 — Üç model genişliği iç içedir: her biri bir öncekinin üstüne alan ekler, hiçbiri alan çıkarmaz. Genişlik sırası çekirdek, genişletilmiş, tam.
  • OT10yerel_kural hiçbir modelde yoktur. Bu bir kusur değil kurgunun kararıdır; gerekçesi yukarıdaki üçüncü sınıftır.
  • OT11 — Her alanın tek bir değer kaynağı vardır: ortak, aygıta özgü ya da temsil edilemez. Kaynak alanın adına bağlıdır, aygıta göre değişmez.
  • OT12 — Şablon aygıtın sınıfına göre yazılır ve rapor etkileşim sınıfı üzerine kuruludur; sınıfı uyuşmayan özel aygıt sapar, başka sınıftaki sapma rapora düşmez.

Ölçüm

"""Yapilandirma modeli: modelin temsil edemedigi aygit.

Bolum 1 - uc model genisligi: kapsanan alan, disarida kalan alan ve aygit.
Bolum 2 - alanin deger kaynagi: ortak, aygita ozgu, temsil edilemez.
Bolum 3 - kuyruk: sablonun disinda kalan ve raporda gorunmeyen.
"""
TOHUM = 20260812
KAYNAK = {"arayuz": "ortak", "adres": "aygıta özgü", "oncelik": "ortak",
          "zamanlayici": "aygıta özgü", "toplama": "ortak",
          "yerel_kural": "temsil edilemez"}
MODELLER = {
    "çekirdek": ("arayuz", "adres"),
    "genişletilmiş": ("arayuz", "adres", "oncelik", "zamanlayici"),
    "tam": ("arayuz", "adres", "oncelik", "zamanlayici", "toplama"),
}


def uretec(tohum):
    d = tohum % 2147483646 + 1

    def r(n):
        nonlocal d
        d = (d * 48271) % 2147483647
        return d % n
    return r


def ozneler(sayi=40, tohum=TOHUM):
    r, liste = uretec(tohum), []
    for i in range(sayi):
        liste.append({"no": i + 1, "kapasite": 20 + r(81),
                      "gecikme": 5 + r(45),
                      "sinif": ("etkilesim", "toplu", "yedek")[r(3)],
                      "ozel": r(9) == 0})
    return liste


def alanlar(o):
    """Aygitin yapilandirmasinin gerektirdigi alanlar."""
    a = ["arayuz", "adres"]
    if o["sinif"] == "etkilesim":
        a.append("oncelik")
    if o["gecikme"] > 30:
        a.append("zamanlayici")
    if o["kapasite"] >= 80:
        a.append("toplama")
    if o["ozel"]:
        a.append("yerel_kural")
    return a


def olc(oz, model):
    """Modelin kapsadigi ve disarida biraktigi alan ile aygit sayisi."""
    kapsanan = disarida = tam = eksik = 0
    for o in oz:
        d = [a for a in alanlar(o) if a not in model]
        kapsanan += len(alanlar(o)) - len(d)
        disarida += len(d)
        if d:
            eksik += 1
        else:
            tam += 1
    return kapsanan, disarida, tam, eksik


def uygula(oz, sablon_sinifi):
    """Tek sablon kirk aygita uygulanir; ozel aygitlar sapar."""
    uyan = sapan = gizli = 0
    for o in oz:
        if o["sinif"] == sablon_sinifi or not o["ozel"]:
            uyan += 1
        else:
            sapan += 1
            if o["sinif"] != "etkilesim":
                gizli += 1
    return uyan, sapan, gizli


oz = ozneler()
toplam = sum(len(alanlar(o)) for o in oz)
print(f"özne {len(oz)} | toplam alan örneği {toplam} | ayrı alan adı "
      f"{len(KAYNAK)} | özel aygıt {sum(o['ozel'] for o in oz)}")
print()
print(f"{'model':<14s} {'alan adı':>9s} {'kapsanan':>9s} {'dışarıda':>9s} "
      f"{'tam temsil':>11s} {'eksik temsil':>13s}")
for ad, model in MODELLER.items():
    k, d, t, e = olc(oz, model)
    print(f"{ad:<14s} {len(model):9d} {k:9d} {d:9d} {t:11d} {e:13d}")

print()
print(f"{'alan':<13s} {'aygıt':>6s} {'değer kaynağı':>16s} "
      f"{'ilk kapsayan model':>19s}")
for alan, kaynak in KAYNAK.items():
    sayi = sum(1 for o in oz if alan in alanlar(o))
    ilk = next((ad for ad, m in MODELLER.items() if alan in m), "yok")
    print(f"{alan:<13s} {sayi:6d} {kaynak:>16s} {ilk:>19s}")

print()
for kaynak in ("ortak", "aygıta özgü", "temsil edilemez"):
    sayi = sum(1 for o in oz for a in alanlar(o) if KAYNAK[a] == kaynak)
    print(f"{kaynak:<16s} alan örneği {sayi:4d}  toplamın {sayi / toplam:.3f} payı")

print()
print(f"{'şablon sınıfı':<14s} {'uyan':>6s} {'sapan':>6s} "
      f"{'raporda görünmeyen':>19s}")
for s in ("etkilesim", "toplu", "yedek"):
    u, sp, g = uygula(oz, s)
    print(f"{s:<14s} {u:6d} {sp:6d} {g:19d}")
özne 40 | toplam alan örneği 122 | ayrı alan adı 6 | özel aygıt 9

model           alan adı  kapsanan  dışarıda  tam temsil  eksik temsil
çekirdek               2        80        42          10            30
genişletilmiş          4       105        17          23            17
tam                    5       113         9          31             9

alan           aygıt    değer kaynağı  ilk kapsayan model
arayuz            40            ortak            çekirdek
adres             40      aygıta özgü            çekirdek
oncelik           11            ortak       genişletilmiş
zamanlayici       14      aygıta özgü       genişletilmiş
toplama            8            ortak                 tam
yerel_kural        9  temsil edilemez                 yok

ortak            alan örneği   59  toplamın 0.484 payı
aygıta özgü      alan örneği   54  toplamın 0.443 payı
temsil edilemez  alan örneği    9  toplamın 0.074 payı

şablon sınıfı    uyan  sapan  raporda görünmeyen
etkilesim          34      6                   6
toplu              34      6                   3
yedek              34      6                   3

Modelin Kapatabildiği

Üst tablo modeli genişletmenin ne kazandırdığını veriyor. İki alanlı çekirdek model kırk aygıtın yalnız 10’unu tam temsil ediyor; 30 aygıtın en az bir alanı modelin dışında kalıyor ve dışarıda kalan alan örneği 42. Model dört alana çıktığında dışarıda kalan alan 17’ye, eksik temsil edilen aygıt 17’ye iniyor. Beş alanlı tam modelde dışarıda kalan alan 9, eksik temsil edilen aygıt 9.

Kazancın biçimi öğreticidir. İki alandan dört alana geçiş dışarıda kalan alanı 42’den 17’ye indiriyor — yirmi beş alanlık bir kazanç, iki alan karşılığında. Dört alandan beş alana geçiş ise yalnız 8 alan kazandırıyor. Modelin her yeni alanı bir öncekinden daha az aygıtı ilgilendirir, çünkü alanlar aygıtlara eşit dağılmaz: arayüz ve adres kırk aygıtta, zamanlayıcı 14, öncelik 11, toplama 8 aygıtta gerekli.

Bu, model tasarımının pratik kuralını verir. Modeli genişletme kararı alan sayısına değil, o alanın kaç aygıtı eksik temsilden çıkardığına bakarak verilir; ve bu sayı her adımda küçülür.

Modelin Kapatamadığı

Son satırda dışarıda kalan alan 9’da duruyor ve modeli genişleterek buradan aşağı inilemiyor. Orta tablo nedenini söylüyor: yerel_kural alanının ilk kapsayan modeli yok. Bu dokuz alan örneği, kırk aygıtın 9 özel aygıdına aittir ve her biri yalnız kendi aygıdına anlamlıdır.

Alt tablo aynı şeyi paya çevirerek gösteriyor. Yüz yirmi iki alan örneğinin 59’u ortak değerli — toplamın 0,484’ü. 54’ü aygıta özgü, yani modelde tanımlı ama değeri kırk kez ayrı hesaplanan alanlar; payı 0,443. Geriye kalan 9 alan örneği, toplamın 0,074’ü, hiçbir modele girmiyor.

Bu üç payın toplamı modelin ne olduğunu tarif ediyor. Kaldıracın gerçekten tek bir değer taşıdığı kısım toplamın yarısına bile ulaşmıyor. İkinci pay kaldıracın bir kural taşıyıp kırk ayrı sonuç ürettiği kısım — burada model çalışıyor ama tek bir değeri kırk aygıta yazmanın sadeliği yok. Üçüncü pay ise kaldıracın hiç uzanmadığı yer.

Alt tablonun sonuncu satırları bunun şablon tarafındaki karşılığını veriyor: şablon hangi sınıfa göre yazılırsa yazılsın uyan 34, sapan 6. Sapan altı aygıdın hepsi özeldir, yani hepsi yerel_kural taşır. Ama dikkat edilmesi gereken şey ötekilerdir: dokuz özel aygıdın üçü her seferinde şablonun sınıfına uyar ve şablonu alır — modelin temsil edemediği bir alanı taşıdıkları hâlde. Raporda görünmeyen sapan yine 6, 3 ve 3.

Modelin İki Yönlü Sınırı

Ölçüm modelin bir yönünü sayıyor: aygıdın istediği alan modelde yok. Sınırın ikinci yönü de vardır ve bu kurguda ölçülmez — modelin bildirdiği alanı aygıt kabul etmez. Model beş alan tanımlar, aygıt bunların dördünü tanır ve beşincisini reddeder; ya da tanır ama modelin izin verdiği aralığın tamamını kabul etmez.

İki yön aynı sonucu vermez. Birinci yöndeki eksiklik yazma anında bellidir: model yazılırken alanın orada olmadığı görülür ve karar bilinçli verilir. İkinci yöndeki eksiklik ise uygulama anında ortaya çıkar ve kırk aygıtın hepsinde aynı anda çıkmaz — alanı kabul eden aygıtlar değişir, etmeyenler değişmez. Sonuç, önceki derste sayılan hata modlarından biridir: sıraya bağlı kısmi uygulama. Ağın bir kısmı yeni, bir kısmı eski yapılandırmayla kalır ve ikisi arasında tutarsız davranır.

Bu yüzden modelin doğrulaması iki aşamalıdır. Birinci aşama modelin kendi içinde tutarlı olup olmadığına bakar ve aygıta hiç gitmez. İkinci aşama, modelin belirli bir aygıtta uygulanabilir olup olmadığını sorar ve bu ancak aygıta sorularak öğrenilir. İkinci aşamayı uygulamadan önce yapmanın adı sonraki derslerde ölçülecek olan kuru çalışmadır; modelin kendi doğrulaması onun yerine geçmez.

Model Dışı Alan Nereye Gider

Modelin dışında kalan alan yok olmaz; aygıtta durmaya devam eder. İki politika vardır ve ikisi de bir yüzey açar.

Dokunmama politikası. Yönetim aracı modelin tanımadığı alana hiç dokunmaz. Aygıtın yapılandırması ikiye bölünür: modelle yönetilen kısım ve elle yönetilen kısım. Bu kurguda elle kalan 9 alan örneğidir. Yapılandırma sapması tam olarak bu bölgede yaşar, çünkü karşılaştırma yalnız modelin bildiği alanlarda yapılabilir — model bilmediği bir alanın değiştiğini göremez.

Serbest alan politikası. Model, tanımadığı yapılandırmayı taşımak için yapısı olmayan bir alan bulundurur ve içeriği olduğu gibi aygıta yazar. Alan artık taşınır ama doğrulanmaz: tür denetimi, aralık denetimi ve karşılaştırma bu alanda çalışmaz. Dokuz alan örneği modelin içinde görünür, modelin verdiği güvencelerin hiçbirini almaz.

Sayılan yüzey ve daraltmalar şunlardır.

Birinci yüzey — doğrulanmayan yapılandırma metni. Serbest alan, doğrulamadan geçmeden kırk aygıta ulaşabilecek bir yoldur; içeriğindeki bir hata modelin hiçbir denetimine takılmaz. Daraltma: serbest alan aygıt başına adlandırılır ve yalnız o aygıtta geçerli kılınır; içeriği şablonun değil, aygıtın envanter kaydının parçası olur. Böylece bir yerdeki hata bir aygıtta kalır.

İkinci yüzey — modelin göremediği bölge. Dokunmama politikasında aygıdın bir kısmı hiçbir karşılaştırmaya girmez ve o bölgedeki yapılandırma sapması sessizdir. Daraltma: yönetilmeyen bölgenin sınırı modelde açıkça bildirilir ve bu bölgenin varlığı raporun bir satırına dönüştürülür — “şu aygıtta şu kadar alan yönetim dışıdır” satırı, sapmanın kendisini göstermese de nerede olabileceğini gösterir.

Üçüncü yüzey — modele giren gizli bilgi. Kimlik bilgisi, anahtar ve erişim belirteci yapılandırma modelinin içinde taşınmaz. Model bir depoda durur, karşılaştırılır, kopyalanır ve gözden geçirilir; bu işlemlerin hiçbiri gizli bir değer için uygun değildir. Daraltma: model yalnız bir başvuru taşır ve değerin kendisi ayrı bir yerde durur; hangi yerde durduğu işletmenin ayrı bir kararıdır ve bu kursun konusu değildir.

Özet

  • Yapılandırma modeli alanların adını, türünü ve zorunluluğunu aygıttan bağımsız bildirir; doğrulama, karşılaştırma ve üretim ancak bu bildirimle yapılabilir.
  • Model genişledikçe kapsanan alan 80 → 105 → 113, eksik temsil edilen aygıt 30 → 17 → 9 olur; her yeni alanın kazancı bir öncekinden küçüktür.
  • Alanların değer kaynağı üçe ayrılır: ortak 59 örnek (0,484), aygıta özgü 54 örnek (0,443), temsil edilemez 9 örnek (0,074).
  • Dokuz alan hiçbir modele girmez çünkü değeri yalnız kendi aygıdına anlamlıdır; modeli oraya kadar genişletmek, modeli kırk ayrı yapılandırmanın toplamına çevirirdi.
  • Şablon tarafında uyan 34, sapan 6, raporda görünmeyen 6 / 3 / 3; dokuz özel aygıdın üçü ise şablonu alır ve modelin temsil edemediği alanı taşımaya devam eder.

Sonraki Adım

Bu ders modelin ne söyleyebildiğini ölçtü ve modelin yazıldığı yerde durduğunu varsaydı. Oysa modelin bir işe yaraması için aygıta ulaşması gerekir: bir yerden bir istek gider, aygıt onu alır, uygular ve bir yanıt döner. Bu yolun kendi kuralları vardır ve en önemlisi şudur — aynı isteği iki kez göndermek ne yapar? Sonraki ders yapılandırmaya erişimi sağlayan programlanabilir arayüzleri ve arayüzün etkisiz olup olmamasının kırk aygıtta ne değiştirdiğini ölçer.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat