Ders 10 / 15
İnceleme Ölçütleri
Üç inceleyici aynı eksende 6 inceleme turu, 36 birim bekleme ve 3 kalan kusur üretir; tek inceleyici beş eksende 2 tur, 12 birim ve 0 kalan verir, ve aynı fark inceleme kuyruğunda 2'ye karşı 15 turluk açık kalmaya dönüşür.
İçindekiler
Üç ders aynı iki sayıya çıktı. Değişiklik boyutu okunan öbeği belirledi ve bulunanı; not yazımı bulunanın kapanma hızını; karara bağlama kuralı kapanıp kapanmayacağını. Üçünde de sonuç bir inceleme turu sayısı ve bir bekleme miktarıydı.
Bu ders o iki sayıyı doğrudan ölçüt olarak alıyor ve üçüncü bir ölçüt ekliyor: incelemenin tek bir değişikliğe değil, inceleme kuyruğuna yaptığı. Sorulan şey şudur — bu üç sayı neyi ölçer, hangi kararı destekler, ve tek başına okunduğunda neyi gizler.
Üç Ölçüt
Bekleme süresi, bir değişikliğin incelemeye girdiği andan kapandığı ana kadar geçen süredir. Ortak kurguda her inceleme turu beklemeye 6 birim ekler; bekleme, inceleme turu sayısının doğrudan bir işlevidir.
İnceleme turu sayısı, değişikliğin kapanmadan önce kaç kez gidip geldiğidir. Kaynağı tek bir şeydir ve önceki üç ders bunu üç ayrı yoldan gösterdi: ilk turda kapanmayan iş. İlk turda görülemeyen kusur, yazılmayan kapanma ölçütü ve karara bağlanmayan tartışma aynı yere çıkar.
İnceleme kuyruğu sağlığı, tek bir değişikliğin değil, aynı anda açık olan bütün değişikliklerin ölçütüdür. Ekibin inceleme kapasitesi sınırlıdır: aynı anda ancak belirli sayıda değişiklik incelenebilir. Her değişiklik daha çok inceleme turu tuttukça kapasite daha uzun süre bağlanır ve arkadan gelen değişiklikler bekler. Kuyruk sağlığı bu birikmenin olup olmadığını gösterir.
Ölçütler Neden Kişi Başına Raporlanmaz
Bu üç ölçüt sürecin ölçütleridir ve kişi başına raporlanmaz; çünkü tablonun her satırını üreten şey kişilerin çabası değil eksen atamasıdır — üç inceleyicinin 6 inceleme turu üretmesi, üçünün de işini eksiksiz yapmasına rağmen olur.
Ölçümün ikinci satırı bunun kanıtıdır. Orada üç inceleyici vardır, üçü de bakmakla yükümlü oldukları eksende her kusuru bulur ve sonuç 24 kusurun 6’sıdır. Kişi başına bir sayı çıkarılsaydı üç inceleyici de düşük görünürdü; oysa değiştirilmesi gereken tek şey, üçünün aynı eksene bakmasıdır. Ölçüt yanlış özneye bağlandığında düzeltme de yanlış yere gider.
Bir ikinci gerekçe önceki dersten çıkıyor. Not yazımı değiştiğinde bulunan kusur sayısı hiç değişmiyordu — 22 sabit kalıyordu. Yani not sayısı ile bulunan kusur sayısı birbirinden bağımsızdır. Kişi başına not sayısı raporlanan bir düzende artan şey not sayısı olur, bulunan kusur sayısı olmaz.
Ölçümün varsayımları:
- IK20 — Ortak kurgu değişmez: 600 satır, 12 öbek, 24 kusur, sınıf dağılımı sabit. Değişen tek şey eksen atamasıdır.
- IK21 — Dört atama ölçülür: tek inceleyici tüm eksenlerde; üç inceleyici aynı eksende; üç inceleyici ayrı eksenlerde; beş inceleyici beş eksende. Her inceleyicinin dikkati 12 öbektir.
- IK22 — Her inceleme turunda bulunan kusurlar düzeltilir; kalan kusur sonraki tura kalır ve her turda bulunanın yarısı kadarı temizlenir. Bir değişiklik en çok 6 inceleme turu açık kalabilir.
- IK23 — Bir inceleme turu beklemeye 6 birim ekler ve bu atamadan bağımsızdır.
- IK24 — İnceleme kuyruğunda her turda bir değişiklik gelir; toplam 12 değişiklik girer. Ekibin kapasitesi 3 eşzamanlı incelemedir.
- IK25 — Kuyruktaki bütün değişiklikler aynı atamayla incelenir; bu yüzden hepsi aynı inceleme turu sayısını tutar.
- IK26 — Kuyruk ölçümü 60 tur boyunca izlenir; bu süre dört atamanın dördünde de bütün değişikliklerin kapanmasına yeter.
- IK27 — Kümenin çözünürlüğü 24 kusurda 1/24 = 0,042’dir; bekleme ve inceleme turu birim başına sayılır.
Ölçüm
"""Inceleme olcutleri: bulunan, inceleme turu, bekleme ve kuyruk sagligi. Bolum 1 - dort eksen atamasinin bulundugu ve kacirdigi. Bolum 2 - ayni atamalarin inceleme turu, bekleme ve kalan kusuru. Bolum 3 - ayni turlarin inceleme kuyruguna yaptigi. """ TOHUM = 20260815 EKSENLER = ("arayuz", "gerceklestirim", "test", "belge", "bicim") YAZILMAYAN = "eksik gereksinim" SINIFLAR = EKSENLER + (YAZILMAYAN,) DIKKAT = 12 OBEK = 50 KAPASITE = 3 # ayni anda incelenebilen degisiklik sayisi GELEN = 12 # olcum boyunca kuyruga giren degisiklik def uretec(tohum): d = tohum % 2147483646 + 1 def r(n): nonlocal d d = (d * 48271) % 2147483647 return d % n return r def degisiklik(satir, kusur_sayisi=24, tohum=TOHUM): r, kusurlar = uretec(tohum), [] obek_sayisi = max(1, satir // OBEK) for i in range(kusur_sayisi): kusurlar.append({"no": i + 1, "sinif": SINIFLAR[r(6)], "obek": r(obek_sayisi)}) return {"satir": satir, "obek": obek_sayisi, "kusurlar": kusurlar} def incele(d, eksenler, dikkat=DIKKAT): okunan = set(range(min(dikkat, d["obek"]))) return {k["no"] for k in d["kusurlar"] if k["sinif"] in eksenler and k["obek"] in okunan} def kurul(d, atamalar, dikkat=DIKKAT): bulunan = set() for eksenler in atamalar: bulunan |= incele(d, eksenler, dikkat) return bulunan def tur_dongusu(bulunan, kusur_sayisi, tur_basina_bekleme=6): """Her tur bulunanlari duzeltir; kalan kusur sonraki tura kalir.""" kalan, tur, bekleme = kusur_sayisi - len(bulunan), 1, tur_basina_bekleme while kalan > 0 and tur < 6: tur += 1 bekleme += tur_basina_bekleme kalan -= max(1, len(bulunan) // 2) return tur, bekleme, max(0, kalan) def kuyruk(tur, gelen=GELEN, kapasite=KAPASITE, sure=60): """Her turda bir degisiklik gelir; ayni anda en cok kapasite kadari incelenir.""" sira, calisan, biten, anlik = [], {}, [], 0 for t in range(1, sure + 1): if t <= gelen: sira.append(t) for no in [n for n, b in calisan.items() if b == t]: biten.append((no, t)) del calisan[no] while sira and len(calisan) < kapasite: calisan[sira.pop(0)] = t + tur if t == gelen: anlik = len(sira) + len(calisan) return anlik, max(b - g for g, b in biten), max(b for _, b in biten) TAM = set(EKSENLER) ATAMALAR = { "tek inceleyici, tüm eksenler": [TAM], "üç inceleyici, aynı eksen": [{"gerceklestirim"}] * 3, "üç inceleyici, ayrı eksen": [{"arayuz"}, {"gerceklestirim"}, {"test", "belge"}], "beş inceleyici, beş eksen": [{e} for e in EKSENLER], } d = degisiklik(600) print(f"{'atama':<30s} {'inceleyici':>10s} {'bulunan':>8s} {'kaçan':>6s} " f"{'yazılmayan kaçan':>17s}") for ad, atama in ATAMALAR.items(): b = kurul(d, atama) kacan = [k for k in d["kusurlar"] if k["no"] not in b] yaz = sum(1 for k in kacan if k["sinif"] == YAZILMAYAN) print(f"{ad:<30s} {len(atama):10d} {len(b):8d} {len(kacan):6d} {yaz:17d}") print() print(f"{'atama':<30s} {'tur':>4s} {'bekleme':>8s} {'kalan kusur':>12s}") for ad, atama in ATAMALAR.items(): tur, bekleme, kalan = tur_dongusu(kurul(d, atama), len(d["kusurlar"])) print(f"{ad:<30s} {tur:4d} {bekleme:8d} {kalan:12d}") print() print(f"inceleme kuyruğu: her turda bir değişiklik gelir, {GELEN} değişiklik, " f"kapasite {KAPASITE}") print(f"{'atama':<30s} {'tur':>4s} {'12. turda açık':>15s} " f"{'en uzun açık kalma':>19s} {'son kapanış':>12s}") for ad, atama in ATAMALAR.items(): tur = tur_dongusu(kurul(d, atama), len(d["kusurlar"]))[0] anlik, en_uzun, son = kuyruk(tur) print(f"{ad:<30s} {tur:4d} {anlik:15d} {en_uzun:19d} {son:12d}")
atama inceleyici bulunan kaçan yazılmayan kaçan tek inceleyici, tüm eksenler 1 22 2 2 üç inceleyici, aynı eksen 3 6 18 2 üç inceleyici, ayrı eksen 3 15 9 2 beş inceleyici, beş eksen 5 22 2 2 atama tur bekleme kalan kusur tek inceleyici, tüm eksenler 2 12 0 üç inceleyici, aynı eksen 6 36 3 üç inceleyici, ayrı eksen 3 18 0 beş inceleyici, beş eksen 2 12 0 inceleme kuyruğu: her turda bir değişiklik gelir, 12 değişiklik, kapasite 3 atama tur 12. turda açık en uzun açık kalma son kapanış tek inceleyici, tüm eksenler 2 2 2 14 üç inceleyici, aynı eksen 6 9 15 27 üç inceleyici, ayrı eksen 3 3 3 15 beş inceleyici, beş eksen 2 2 2 14
Turu Uzatan Şey
İlk iki tablo yan yana okunduğunda konunun sonucu çıkıyor. Üç inceleyici aynı eksende çalıştığında 6 kusur bulunuyor, süreç 6 inceleme turu ve 36 birim bekleme tutuyor ve sonunda 3 kusur hâlâ kalıyor. Tek inceleyici beş eksene baktığında 22 kusur bulunuyor, süreç 2 inceleme turu ve 12 birim tutuyor, kalan 0.
Karşılaştırma önemlidir çünkü ikinci satırda üç kat daha çok inceleyici vardır. Üç kişi altı kat bekleme üretiyor ve sonunda üç kusur teslim edemiyor; bir kişi bunu üçte bir beklemeyle ve eksiksiz yapıyor. İnceleme kuyruğunu uzatan şey inceleyici sayısı değil, ilk turda görülemeyendir.
Bağ doğrudan aritmetiktir. İlk turda bulunan azsa geriye çok kusur kalır; kalan kusurlar sonraki turlarda ancak bulunanın yarısı hızıyla temizlenir; bu yüzden az bulmak, hem daha çok inceleme turu hem de sınırda kalan kusur demektir. Üç inceleyici ayrı eksenlere dağıldığında 15 bulunuyor ve süreç 3 tur / 18 birim ile kapanıyor: aynı üç kişi, yalnız eksen dağılımı değişti.
Kaçan sütununun en sağı bütün satırlarda 2‘dir. Dört yapılandırmanın dördü de iki eksik gereksinim kusurunu kaçırıyor. Bu sayı ne inceleyici ekleyerek ne eksen ekleyerek düşüyor — hiçbir eksen yazılmayanı aramaz. Ölçütlerin okunmasında bu satır bir taban görevi görür: 24 kusurun 2’si incelemenin erişemeyeceği yerdedir ve bir sürecin hedefi 22’dir. Tabanı bilmeyen bir okuma her incelemeyi eksik bulur ve ulaşılamayacak bir sayıyı hedef olarak koyar; ölçütün üst sınırı, ölçtüğü sürecin sınırıdır.
Kuyruğun Sağlığı
Üçüncü tablo aynı farkın tek bir değişikliğin dışında ne yaptığını gösteriyor. Ekip aynı ekiptir, kapasite 3 eşzamanlı incelemedir, her turda bir değişiklik gelir.
İnceleme turu sayısı 2 olduğunda kuyruk sağlıklıdır: on ikinci turda yalnız 2 değişiklik açıktır, en uzun açık kalma 2 turdur ve son değişiklik 14. turda kapanır. İnceleme turu sayısı 3 olduğunda sistem tam sınırdadır — kapasite 3, hizmet süresi 3 — ve açık sayısı 3’te durur.
İnceleme turu sayısı 6 olduğunda kuyruk bozulur. On ikinci turda 9 değişiklik açıktır; en uzun açık kalma 2 turdan 15 tura çıkar; son değişiklik 27. turda kapanır. Tek bir değişiklikte fark 2’ye karşı 6 iken, kuyrukta 2’ye karşı 15’tir. Kapasite tükendiğinde gecikme yalnız eklenmez, birikir.
Kuyruk sağlığının sade bir kuralı buradan çıkıyor: inceleme turu sayısı kapasiteyi aştığında kuyruk büyür. Bu, incelemeye ayrılan kişi sayısıyla değil, bir incelemenin kaç turda kapandığıyla ilgilidir — ve önceki üç ders o sayının nereden geldiğini tek tek gösterdi.
Birikmenin aritmetiği de sadedir. Kapasite 3 ve hizmet süresi 6 iken sistem turda ancak 0,5 değişiklik kapatabilir, oysa turda 1 değişiklik geliyor. Üstelik ilk kapanış 7. turdan önce olamaz; on ikinci turda gelen 12 değişikliğin yalnız 3’ü kapanmıştır ve 9’u açıktır. Girişin durması bu birikimi hemen silmez: en son gelen değişikliğin sırası 21. turda gelir ve 27. turda kapanır. Kuyruk, bozulduğu hızda düzelmez.
Üç Ölçütün Tek Başına Gizledikleri
Hiçbir ölçüt tek başına okunmaz, çünkü her biri iki ayrı nedenle aynı değeri alabilir.
Kısa bekleme iyi bir işaret olabilir ya da hiç okunmamış bir değişikliğin işareti olabilir. Değişiklik boyutu dersinde 2400 satırlık bir inceleme de tek turda onaylanıyordu; bulunan kusur 2’ydi. Bekleme tek başına okunduğunda bu inceleme örnek görünür.
Az inceleme turu ya ilk turda çok bulunmasından gelir ya da hiçbir şeyin bulunmamasından. İkisini ayıran şey ikinci tablonun son sütunudur: kalan kusur. Anlaşmazlık dersinde erteleme kuralı 2 tur / 12 birim veriyordu — tablonun en iyi satırıyla aynı — ama kodda 8 kusur bırakıyordu.
Sağlıklı kuyruk ya hızlı kapanan incelemelerden gelir ya da kuyruğa hiç girmeyen değişikliklerden. Üçünün ortak çaresi aynıdır: ölçütler bulunan ve kaçan kusurla birlikte okunur. Bu konunun bütün tabloları bu yüzden iki tarafı da taşıdı.
Hangi Ölçüt Hangi Kararı Destekler
Bir ölçütün değeri, desteklediği karar kadardır. Üç ölçüt üç ayrı karara bakar ve birbirinin yerine geçmez.
İnceleme turu sayısı eksen dağılımı kararını destekler. İkinci tablo bunu doğrudan veriyor: aynı üç kişi aynı eksende 6 tur, ayrı eksenlerde 3 tur üretiyor. Tur sayısı yükseldiğinde sorulacak soru “kim yavaş” değil, hangi eksene bakılmıyor olmalıdır.
Bekleme süresi değişiklik boyutu kararını destekler. Bekleme, inceleme turu sayısının altı katıdır ve inceleme turu sayısını belirleyen şey ilk turda bulunandır; ilk turda bulunanı en çok düşüren şey de okunmayan öbektir. Beklemenin uzaması, çoğu zaman incelemeye gönderilen değişikliğin dikkate sığmadığının işaretidir.
Kuyruk sağlığı kapasite kararını destekler. Üçüncü tablo, hizmet süresinin kapasiteyi aştığı anda birikmenin başladığını gösteriyor. Buradaki karar iki yönlüdür: ya inceleme turu sayısı düşürülür ya da eşzamanlı inceleme kapasitesi artırılır. İkisinin maliyeti aynı değildir — birincisi eksen dağılımıyla ve değişiklik boyutuyla ödenir, ikincisi başka işten alınan zamanla.
Üçü birlikte okunduğunda tablo tek bir cümleye iner: bulunanı artıran her düzeltme, beklemeyi ve kuyruğu da düzeltir. Ölçümde bunun tersi bir satır yoktur; en çok bulan iki yapılandırma aynı zamanda en az bekleyen ve kuyruğu en sağlıklı olanlardır.
Özet
- Üç ölçüt sürecin ölçütleridir: bekleme süresi, inceleme turu sayısı ve inceleme kuyruğu sağlığı. Kişi başına raporlanmazlar, çünkü değerlerini üreten şey eksen atamasıdır — üç inceleyicinin 6 inceleme turu üretmesi, üçünün de işini eksiksiz yapmasına rağmen olur.
- Üç inceleyici aynı eksende 6 kusur bulur, 6 tur / 36 birim tutar ve 3 kusur kalır; tek inceleyici beş eksende 22 bulur, 2 tur / 12 birim tutar, 0 kalır. Üç kat inceleyici, üç kat bekleme.
- İnceleme kuyruğunu uzatan şey inceleyici sayısı değil, ilk turda görülemeyendir: az bulunan, hem daha çok inceleme turu hem de sınırda kalan kusur üretir.
- Kapasitesi 3 olan bir kuyrukta inceleme turu sayısı 2 iken en uzun açık kalma 2 tur, 6 iken 15 turdur; on ikinci turda açık değişiklik 2’den 9’a çıkar. Kapasite aşıldığında gecikme birikir.
- Dört yapılandırmanın dördü de 2 eksik gereksinim kusurunu kaçırır; bu, ölçütlerin okunduğu tabandır — incelemenin ulaşabileceği en çok kusur 24’ün 22’sidir.
- Hiçbir ölçüt tek başına okunmaz: kısa bekleme, az inceleme turu ve sağlıklı kuyruk hem en iyi hem en kötü durumda aynı değeri alabilir; ayıran şey bulunan ve kaçan kusurdur.
Sonraki Adım
Bu konuda inceleme hep tek bir değişikliğin çevresindeydi: bir değişiklik gelir, okunur, notlar yazılır, kapanır. Üçüncü tablo o çemberin dışına ilk adımı attı ve değişikliklerin birbirini beklediğini gösterdi. Peki değişikliğin kendisi bir başlangıç değil, daha uzun bir zincirin içindeki bir öğeyse? Sonraki konu incelemeyi bu zincirin bir durağı olarak ele alıyor: öğenin incelemeye gelmeden önce ve kapandıktan sonra nerede durduğu, ve incelemenin toplam sürede hangi payı tuttuğu.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.