İçeriğe geç
academia.sh

Ders 15 / 15

Geri Bildirim Döngüsü

Sessiz bayatlama ancak okur bildirdiğinde görünür: 240 ziyaret 39 sessiz iddianın 31'ini açığa çıkarır, 39'unun tamamı için 960 ziyaret gerekir ve bildirim başına bedel 5,0'dan 24,6 ziyarete yükselir.

İçindekiler

Önceki ders doküman denetiminin sessiz bayatı bulduğunu gösterdi: elli altı iddianın hepsi okunursa otuz dokuzunun da yanlış olduğu görülür. Denetimin sorunu bulamaması değil, başlamamasıdır. Kimsenin takviminde kendiliğinden yer almaz ve yapılmadığı sürece o otuz dokuz iddia yerinde durur.

Ama bu süre boyunca doküman okunmaya devam eder. Her gün birileri onu açar, bir cümleyi okur, ona göre davranır ve yanılır. Bu dersin sorusu şudur: okur, denetimin yapmadığı işi ne kadar yapar? Sessiz bayatlamanın tek doğal düşmanı, ona çarpan ve bunu söyleyen kişidir. Ölçüm o kişilerin kaçının gerektiğini sayar.

Okurun Çarptığı İddia

Bir okur dokümana bir soruyla gelir ve bir iddiaya çarpar. Üç durum olabilir. İddia doğruysa okur işini yapar ve geri bildirim üretmez. İddia bayatsa ve örneğe gömülüyse okur bir hata görür: örnek çalışmaz, ekranda bir arıza vardır ve okur bunu bir arıza olarak bildirir. İddia bayatsa ve sessizse okur bir arıza görmez — dokümanda yazanı yapar, beklediği sonucu alamaz ve ne olduğunu bilmez.

Üçüncü durumun kritik yanı, okurun kendi hatası ile dokümanın hatası arasında ayrım yapamamasıdır. Doküman bir yetke gibi okunur; onunla çelişen bir sonuç alan okurun ilk varsayımı kendi yanlışıdır. Kimi tekrar dener, kimi vazgeçer, kimi kendi yolunu bulur ve yalnız bir bölümü “burada yazan yanlış” der. Ölçüm bu payı üçte bir alır.

Destek Talebinden Doküman Eksiğine

Bildirim bir doküman eksiği olarak değil, bir çalışmama olarak gelir. Onu doküman kaydına çevirmek üç soruyla yapılır: okur hangi cümleye dayanarak davrandı, o cümle hangi yüzeye bağlı, ve yüzey ne zaman değişti.

# ornek destek talebi ve dokuman kaydi , calistirilmamistir

talep: "ölçüm gönderiyorum, kayıt kimliği yerine hata dönüyor"
  dayandığı cümle : referans / olcum_gonder — kaynak alanı zorunludur
  bağlı yüzey     : imza
  değişim sürümü  : 2
  kayıt           : bayat iddia, sessiz; aynı yüzeye bağlı 21 iddia daha var

Son satır bu işin asıl kazancıdır. Bir bildirim tek bir cümleyi düzeltmek için değil, aynı yüzeye bağlı öbür iddiaları aramak için kullanılır. Okur bir iddia bildirmiştir; bildirdiği şey aslında bir yüzeyin değiştiğidir ve o yüzeye yirmi iki iddia bağlıdır. Tek bildirim, hedefi belli bir doküman denetimini tetikler.

Ölçümün Varsayımları

  • DI31 — Elli altı iddia, dört tür ve dört yüzey ortak kurgudan alınır; ölçüm on ikinci sürümde yapılır ve o sürümde iddiaların hepsi bayattır. Ses çıkaran 17, sessiz 39.
  • DI32 — Her okur ziyareti bir iddiaya düşer ve iddialar eşit olasılıkla seçilir. Gerçek bir kurulumda ilgi dağılımı eşit değildir; eşit dağılım kapsamanın iyimser kestirimidir.
  • DI33 — Gömülü bayat iddiaya çarpan okur bunu her zaman bildirir; örnek çalışmamıştır ve arıza tartışılmaz.
  • DI34 — Sessiz bayat iddiaya çarpan okurların üçte biri bildirir; kalanı kendi hatası sayar, vazgeçer ya da kendi yolunu bulur.
  • DI35 — Aynı iddia birden çok kez bildirilse de bir kez sayılır; ölçülen şey ziyaret değil, açığa çıkan iddia sayısıdır.
  • DI36 — Bildirim yalnız açığa çıkarır; düzeltmeyi ölçüm saymaz. Doküman ziyaretler boyunca değişmez ve yeni bayatlama eklenmez.
  • DI37 — Rastgelelik ortak kurgunun üretecinden gelir ve tek modülle çağrılır; kümenin çözünürlüğü otuz dokuz sessiz iddiada 1/39’dur.

Ölçüm

"""Geri bildirim dongusu: sessiz bayatlamanin okur uzerinden gorunur olmasi.

Bolum 1 - artan okur ziyaretiyle bildirilen sessiz iddia sayisi.
Bolum 2 - iki yuz kirk ziyaretten sonra tur basina kalan sessiz bayat.
"""
TOHUM = 20260816
TURLER = {
    "öğretici":     {"akis": 9, "imza": 3, "ad": 2, "kavram": 1},
    "nasıl yapılır": {"akis": 6, "imza": 5, "ad": 2, "kavram": 1},
    "açıklama":     {"akis": 1, "imza": 1, "ad": 1, "kavram": 9},
    "referans":     {"akis": 0, "imza": 13, "ad": 2, "kavram": 0},
}
SIKLIK = {"imza": 2, "akis": 3, "ad": 5, "kavram": 12}
ORNEKLI = {"öğretici": 0.60, "nasıl yapılır": 0.70, "açıklama": 0.10,
           "referans": 0.00}
SURUM = 12
ZIYARET = (30, 60, 120, 240, 480, 960)
BILDIRIM_PAYI = 3      # sessiz bayata carpan okurun bildirme payi: ucte bir


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

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


def iddialar():
    liste, no = [], 0
    for tur, dagilim in TURLER.items():
        hedef = 0
        for yuzey, adet in dagilim.items():
            for _ in range(adet):
                no += 1
                hedef += ORNEKLI[tur]
                gomulu = hedef >= 1 and yuzey != "kavram"
                if gomulu:
                    hedef -= 1
                liste.append({"no": no, "tur": tur, "yuzey": yuzey,
                              "gomulu": gomulu})
    return liste


def bayat_mi(iddia, surum):
    return surum // SIKLIK[iddia["yuzey"]] >= 1


def dongu(liste, ziyaret_sayisi):
    """Her ziyaret bir iddiaya duser. Gomulu bayat ornek calistirilinca
    gorunur; sessiz bayat ancak okur bildirdiginde gorunur."""
    r = uretec(TOHUM)
    carpan, bildirilen = set(), set()
    for _ in range(ziyaret_sayisi):
        iddia = liste[r(len(liste))]
        if not bayat_mi(iddia, SURUM):
            continue
        carpan.add(iddia["no"])
        if iddia["gomulu"] or r(BILDIRIM_PAYI) == 0:
            bildirilen.add(iddia["no"])
    return carpan, bildirilen


L = iddialar()
BAYAT = [i for i in L if bayat_mi(i, SURUM)]
SESSIZ = [i for i in BAYAT if not i["gomulu"]]
print(f"{SURUM}. sürümde iddia {len(L)}, bayat {len(BAYAT)}, ses çıkaran "
      f"{len(BAYAT) - len(SESSIZ)}, sessiz {len(SESSIZ)} "
      f"({len(SESSIZ) / len(BAYAT):.4f})")
print()
print(f"{'ziyaret':>8s} {'çarpılan':>9s} {'bildirilen sessiz':>18s} "
      f"{'kapsama':>8s} {'bildirim başına ziyaret':>24s}")
for z in ZIYARET:
    carpan, bildirilen = dongu(L, z)
    b = [i for i in SESSIZ if i["no"] in bildirilen]
    print(f"{z:8d} {len(carpan):9d} {len(b):18d} "
          f"{len(b) / len(SESSIZ):8.4f} {z / len(b):24.1f}")
print()
_, bildirilen = dongu(L, 240)
print(f"{'tür':>15s} {'sessiz':>7s} {'240 ziyarette bildirilen':>25s} "
      f"{'kalan':>6s}")
for tur in TURLER:
    grup = [i for i in SESSIZ if i["tur"] == tur]
    b = [i for i in grup if i["no"] in bildirilen]
    print(f"{tur:>15s} {len(grup):7d} {len(b):25d} {len(grup) - len(b):6d}")
12. sürümde iddia 56, bayat 56, ses çıkaran 17, sessiz 39 (0.6964)

 ziyaret  çarpılan  bildirilen sessiz  kapsama  bildirim başına ziyaret
      30        20                  6   0.1538                      5.0
      60        34                 10   0.2564                      6.0
     120        47                 19   0.4872                      6.3
     240        54                 31   0.7949                      7.7
     480        56                 36   0.9231                     13.3
     960        56                 39   1.0000                     24.6

            tür  sessiz  240 ziyarette bildirilen  kalan
       öğretici       7                         6      1
  nasıl yapılır       5                         3      2
       açıklama      12                         9      3
       referans      15                        13      2

Döngü Çalışır, Yavaş Çalışır

Son sütun kapanır: kapsama 1,0000. Yeterince okur geldiğinde sessiz bayatların hepsi açığa çıkar. Geri bildirim döngüsü, üçüncü iddianın gerçekten panzehiridir; doküman denetiminden bağımsız olarak, kimsenin takvimine bir şey koymadan çalışır.

Bedeli sağdaki sütundadır. İlk otuz ziyaret 6 sessiz iddia açığa çıkarır: bildirim başına 5,0 ziyaret. İki yüz kırk ziyarette kapsama 0,7949’a ulaşır ve bedel 7,7’ye çıkar. Son üç iddia için dört yüz seksenden dokuz yüz altmışa geçmek gerekir ve bildirim başına ziyaret 24,6 olur. Kapsama doyduğunda maliyet beş kat artar, çünkü kalan iddialar az okunan ya da bildirilmesi düşük olasılıklı olanlardır.

çarpılan sütunu bu farkı ayırır. Dört yüz sekseninci ziyarette elli altı iddianın hepsine çarpılmıştır; yani doküman baştan sona okunmuştur. Buna karşılık bildirilen sessiz sayısı 36’dır. Aradaki üç iddia, çarpılmış ama bildirilmemiştir: okur onları okumuş, yanılmış ve söylememiştir. Okunmak düzelmek değildir.

Alt tablo iki yüz kırk ziyaretin türlere göre dağılımını verir. Referansın on beş sessiz iddiasının 13’ü, açıklamanın on ikisinin 9’u bildirilmiştir. Kalan sekiz iddia dört türe dağılır ve hiçbir tür temizlenmemiştir. Bu, önceki dersin denetim tablosuyla doğrudan karşılaştırılabilir: aynı otuz dokuz iddiayı tam kapsamlı bir doküman denetimi 56 iddia okuyarak tek geçişte bulur; geri bildirim döngüsü 960 ziyaretle bulur ve o ziyaretlerin her biri yanlış bir cümle okumuş bir okurdur.

Karşılaştırma iki yolun rollerini belirler. Denetim ucuzdur ve başlatılması gerekir; döngü kendiliğinden çalışır ve bedelini okur öder. İkisi birbirinin yerine geçmez: döngü olmadan denetim nereye bakacağını bilmez, denetim olmadan döngü ödediği bedeli düşüremez.

Özet

  • Sessiz bayatlama kendini göstermez; görünür hâle gelmesinin tek doğal yolu ona çarpan okurun bunu bildirmesidir.
  • Okur bildirimi bir doküman eksiğine üç soruyla çevrilir: dayanılan cümle, bağlı olduğu yüzey, yüzeyin değiştiği sürüm. Bir bildirim aynı yüzeye bağlı öbür iddiaları da hedef hâline getirir.
  • Otuz dokuz sessiz iddianın 31’i 240 ziyarette, 39’u 960 ziyarette açığa çıkar; kapsama 1,0000’a ulaşır ama bildirim başına bedel 5,0 ziyaretten 24,6 ziyarete yükselir.
  • Dört yüz seksen ziyarette elli altı iddianın hepsine çarpılmış olmasına karşın bildirilen sessiz sayısı 36’dır; okunmuş olmak düzeltilmiş olmak değildir.
  • Doküman denetimi aynı otuz dokuzu 56 iddia okuyarak bulur; döngünün bedelini yanılan okur öder. İkisi birbirinin yerine geçmez.

Kurs Kapanışı

Kurs tek bir ölçü kurdu ve on beş derste onu taşıdı: bir dokümanın sayısı uzunluğu değil, hâlâ doğru olan iddia sayısıdır — ve bayatlayanların kaçının sessiz olduğudur. Her ders kendi ölçümünü çalıştırdı; aşağıdaki tablonun her satırı o dersin kendi çıktı bloğundan okunmuştur.

ders ölçülen doğru kalan ya da sessiz bayat
Teknik Yazarlığın Kapsamı iddia, tür, yüzey ve gömülülük dağılımı sürüm 0’da 56/56 doğru; gömülü 17, sessiz 39; imza değişimi 22 iddia düşürür, sessiz payı 0,7727
Öğretici, Nasıl Yapılır, Açıklama ve Referans dört türün ikinci sürümdeki ömrü açıklama 11/12 (0,9167), referans 2/15 (0,1333); ömür oranı 6,875 kat
Depo Belgeleri üç depo belgesinin yüzey dağılımı ve yarılanma sürümü yarılanma 3 / 3 / 12; sürüm 12’de karar kaydı 0/10 ve 10 sessiz
API Referansı elle yazılan ile üretilen referansın karşılaştırması sürüm 6’da elle 0/15, üretilen 13/15; kurtarılamayan 2 iddia ad yüzeyinde
Sürüm Notları not biçiminin tarihlenebilir kıldığı iddia sayısı ham liste 17/56 ve sessizlerden 0/39; anlam listesi 56/56 ve 39/39
Sorun Giderme İçeriği belirtiden başlayan metnin karşıladığı okur kararı belirti–neden–çözüm 51/51 (1,0000); kapsanan iddia 17/56, erişilemeyen 39
Okur Tanımı ön bilgi varsayımının okunabilir kıldığı iddia sürüm 3’te doğru 18; okunabilir 3’ten 18’e çıkar, bayat 38 ve sessiz 24 değişmez
Yapı ve Başlıklandırma okurun sorusuna ulaşana kadar okuduğu birim ortalama adım 26,38’den 7,00’a; sürüm 6’da iki düzeyli düzende 24 sessiz bayat başlık
Stil Rehberi ikili adlandırmanın ürettiği belirsizlik serbest rejimde aranan adla bulunan 25/56; yeniden adlandırmada kaçan 31, sessizi 23
Örnek ve Kod Parçacıkları gömülülük oranının sessizliğe etkisi sürüm 12’de 0/56 doğru, sessiz 39 (0,6964); rejime göre 0,8571 ile 0,4464 arası
Görsel Kullanımı diyagramın bağlandığı yüzey ve sesi doğru/bayat değişmez (0/56); sessiz 39’dan karma şemada 56’ya çıkar
Kod ile Birlikte Doküman dokümanın incelemeye girmesinin bayatlamaya etkisi birlikte sürümleme 300/672 ve 39 sessiz; inceleme 43/672 ve 15 sessiz
Doküman Üretim Yaklaşımları üretimin kurtardığı ve kurtaramadığı yüzey sürüm 12’de kaynaktan üretim 22/56 doğru; kalan 34 bayatın 22’si sessiz
Bayatlama ve Doküman Denetimi denetim kapsamının bulduğu sessiz bayat sürüm 12’de 56/56 bayat ve 39 sessiz (0,6964); denetimsiz bulunan yalnız 17
Geri Bildirim Döngüsü okur bildiriminin açığa çıkardığı sessiz iddia 240 ziyarette 31/39 (0,7949), 960 ziyarette 39/39; bedel 5,0’dan 24,6’ya

Kursun kendi kuralına kendi uyması bir biçim şartı değildi. Her ölçüm çalıştırıldı, her çıktı bloğu koşumdan alındı; bu derslerin gömülü iddiaları da bayatladıklarında ses çıkaracaktır.

Bu kurs Yazılım Geliştirme Pratiği müfredatının sonuncusudur. Beş kurs beş ayrı şeyi ölçtü ve hepsi aynı soruyu farklı bir nesneye sordu: yapılan iş geriye ne bırakıyor?

kurs ölçü ekseni
Sürüm Kontrolüne Giriş kaydın hangi bölgede durduğu ve oradan geri getirilebilirliği
Dallanma ve İşbirliği tarihçenin yanıtlayabildiği soru
İleri Git işlemin dokunduğu nesne sayısı
Kod İnceleme ve Ekip Süreci bakılan eksen ve okunan öbek
Teknik Yazarlık ve Dokümantasyon kaç iddia hâlâ doğru, kaçı sessizce bayat

Birinci satır kursun kendi derslerinden okunmuştur: çalışma dizini, hazırlık alanı ve nesne veritabanı ayrımı, kurtarılabilirliğin ölçütünün içeriğin nesne veritabanına yazılmış olması, sıfırlanan işlemelerin veritabanında kalması ve erişilemez nesnelerin silinmemesi — hepsi tek bir ekseni kurar.

Beş kurs birlikte bir ekip disiplini kurdu: değişikliğin kaydedilmesi, birden çok kişi arasında tümleştirilmesi, tarihçenin yönetilmesi, başkası tarafından okunması ve anlatılması. Hepsinin ortak yanı, dilden bağımsız olmalarıdır; sayılan şey hiçbir zaman yazılan kodun kendisi değil, onun çevresindeki işti. Sıradaki müfredatlar bu çevreden merkeze döner ve dilin kendisini ölçer: bir dilin sunduğu yapılar, o yapıların zorunlu kıldığı kararlar ve kararların programa bıraktığı iz.

İ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