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.
- OT10 —
yerel_kuralhiç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.