---
title: 'İnceleme Ölçütleri'
source: 'https://academia.sh/tr/kurslar/kod-inceleme/inceleme-olcutleri'
course: 'Kod İnceleme ve Ekip Süreci'
language: tr
updated: '2026-08-17T18:10:46+00:00'
license: 'CC BY-SA 4.0'
---

# İ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.

Üç 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

```python
"""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.
