---
title: 'Değişiklik Boyutu'
source: 'https://academia.sh/tr/kurslar/kod-inceleme/degisiklik-boyutu'
course: 'Kod İnceleme ve Ekip Süreci'
language: tr
updated: '2026-08-17T18:10:46+00:00'
license: 'CC BY-SA 4.0'
---

# Değişiklik Boyutu

Dikkat 12 öbekte sabittir; aynı 24 kusur 100 satırda 22, 900 satırda 18, 2400 satırda 2 kez bulunur ve 2400 satırın 36 öbeği hiç okunmaz.

Önceki ders biçim eksenini araca devretti ve dikkatin başka bir eksene kaydığını ölçtü.
Konu boyunca kurulan örüntü buydu: eksen sayısını artırmak bulunan kusur sayısını artırdı.
Bir inceleyici beş eksene baktığında beş inceleyicinin bulduğunu buluyordu; sayıyı büyüten
şey bakan kişi değil, bakılan eksendi.

Bu dersin sorusu ters yönden geliyor. Eksen sayısı sabit kalsın ve **bakılacak şey büyüsün**.
Aynı inceleyici, aynı beş eksen, aynı kusurlar — yalnız değişiklik 100 satır yerine 2400
satır olsun. Eksen çeşitliliği hiç bozulmadığı hâlde bulunan sayısı ne olur?

## Dikkat Bir Bütçedir

Ortak kurgunun inceleyicisi iki sınırla çalışıyor. Birincisi **ekseni**: yalnız baktığı
eksenlerdeki kusuru görür. İkincisi **dikkati**: bir inceleme turunda gerçekten okuduğu
**öbek** sayısı sınırlıdır. Öbek 50 satırdır, dikkat 12 öbektir. Bu, bir oturuşta gerçekten
okunan yaklaşık 600 satır demektir.

Dikkatin bir bütçe olması, kurgunun en önemli varsayımıdır ve gözlemle uyumludur. İnceleyen
bir değişikliği baştan sona aynı yoğunlukta okumaz; ilk öbekler dikkatli okunur, sonrakiler
giderek daha hızlı taranır ve bir yerden sonra okuma yerini onaya bırakır. Kurgu bu
azalmayı sertleştirip ikili hâle getiriyor: ilk 12 öbek okunur, gerisi okunmaz. Sertleştirme
sayıyı abartmaz, çünkü gerçekte okunmayı bırakan öbekler de tamamen kör değildir — ama
örüntüyü görünür kılar.

Buradan çıkan ilk sonuç aritmetiktir. Değişiklik 600 satırın altındaysa öbeklerin hepsi
okunur ve dikkat sınırı hiç devreye girmez; sınırlayan tek şey eksen listesidir. Değişiklik
600 satırı aştığındaysa **artan her öbek okunmayanlar kümesine gider.** Dikkat büyümez;
değişiklik büyür.

## Aynı Kusur, Dört Boyut

Ölçümü anlamlı kılan kısıt şudur: dört boyutta da **aynı 24 kusur** vardır. Kurgu kusur
sayısını değişiklik boyutuyla birlikte büyütmez. Bu kasıtlıdır. Kusur sayısı da büyüseydi
oranın düşmesi şaşırtıcı olmazdı; sabit tutulduğunda düşüşün tek kaynağı kalır — okunmayan
öbek.

Sınıf dağılımı da dört boyutta aynıdır: arayüz 3, gerçekleştirim 6, test 3, belge 3, biçim 7
ve **eksik gereksinim 2**. Altıncı sınıf hiçbir eksenin aramadığı sınıftır: yazılmamış
olanın kusuru. İnceleme gönderilen değişikliğin içine bakar; gönderilmemiş olanın yokluğunu
göremez. Bu ders o iki kusuru **kaçan** sütununda ayrıca gösterir, çünkü boyut ne olursa
olsun kaçmaya devam ederler ve düşüşün nedeni onlar değildir.

Değişen tek şey satır sayısıdır. Satır sayısı öbek sayısını belirler, öbek sayısı da
kusurların dağıldığı alanı. Kusurlar bu alana serpilir; dikkat sabit kaldığı için serpilme
alanı büyüdükçe kusurların giderek artan bir bölümü okunmayan öbeklere düşer.

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

- **IK1** — Dört boyut da aynı ortak kurgudan üretilir: 24 kusur, aynı sınıf dağılımı, aynı
  kâhin. Kusurları biz yerleştirdiğimiz için hangisinin hangi öbekte olduğu bilinir.
- **IK2** — Değişen tek şey satır sayısıdır. Eksen ataması sabittir: tek inceleyici, beş
  eksenin hepsi. Dikkat sabittir: 12 öbek.
- **IK3** — Okuma öbeğin başından başlar ve dikkat dolunca durur. Okunmayan öbekteki kusur,
  sınıfı hangi eksende olursa olsun görülmez.
- **IK4** — İkinci ölçümde `incele` bir başlangıç öbeği alır; bu, dikkat sınırının nereye
  yerleştiğini değiştirmektir, dikkati büyütmek değildir. Her pencerede yine 12 öbek okunur.
- **IK5** — Bölme kusurları yeniden dağıtmaz. Aynı 2400 satır, aynı 48 öbek, aynı 24 kusur;
  yalnız okuma dört ayrı pencerede yapılır.
- **IK6** — Kümenin çözünürlüğü 24 kusurda **1/24**, yani **0,042**'dir; öbek düzeyinde
  **1/12**. Bundan küçük bir fark bu kümeyle savunulamaz.

## Ölçüm

```python
"""Degisiklik boyutu: ayni 24 kusur, dort olcek, sabit dikkat.

Bolum 1 - olcek buyudukce okunan obek sabit kalir, bulunan oran duser.
Bolum 2 - ayni 2400 satir dort pencerede okundugunda ne degisir.
"""
TOHUM = 20260815
EKSENLER = ("arayuz", "gerceklestirim", "test", "belge", "bicim")
YAZILMAYAN = "eksik gereksinim"
SINIFLAR = EKSENLER + (YAZILMAYAN,)
DIKKAT = 12          # bir turda gerçekten okunan öbek sayısı
OBEK = 50            # satır
OLCEKLER = (100, 300, 900, 2400)


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, bas=0, dikkat=DIKKAT):
    """Inceleyici bas obeginden baslar ve dikkati kadar obek okur."""
    okunan = set(range(bas, min(bas + dikkat, d["obek"])))
    return {k["no"] for k in d["kusurlar"]
            if k["sinif"] in eksenler and k["obek"] in okunan}


TAM = set(EKSENLER)
d0 = degisiklik(600)
dagilim = {s: sum(1 for k in d0["kusurlar"] if k["sinif"] == s) for s in SINIFLAR}
print("sınıf dağılımı: " + ", ".join(f"{s} {n}" for s, n in dagilim.items()))
print()
print(f"{'satır':>6s} {'öbek':>5s} {'okunan':>7s} {'okunmayan':>10s} "
      f"{'bulunan':>8s} {'kaçan':>6s} {'yazılmayan kaçan':>17s} {'oran':>6s}")
for satir in OLCEKLER:
    d = degisiklik(satir)
    b = incele(d, TAM)
    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"{satir:6d} {d['obek']:5d} {min(DIKKAT, d['obek']):7d} "
          f"{max(0, d['obek'] - DIKKAT):10d} {len(b):8d} {len(kacan):6d} "
          f"{yaz:17d} {len(b) / len(d['kusurlar']):6.3f}")

print()
buyuk = degisiklik(2400)
toplam = set()
print(f"{'parça':>6s} {'öbek aralığı':>13s} {'bulunan':>8s}")
for i, bas in enumerate(range(0, buyuk["obek"], DIKKAT)):
    b = incele(buyuk, TAM, bas)
    toplam |= b
    print(f"{i + 1:6d} {f'{bas}-{bas + DIKKAT - 1}':>13s} {len(b):8d}")
kacan = [k for k in buyuk["kusurlar"] if k["no"] not in toplam]
print(f"dört pencere toplamı: bulunan {len(toplam)}, kaçan {len(kacan)}, "
      f"oran {len(toplam) / 24:.3f}")
print("kaçan sınıfları: " + ", ".join(sorted({k["sinif"] for k in kacan})))
```

```
sınıf dağılımı: arayuz 3, gerceklestirim 6, test 3, belge 3, bicim 7, eksik gereksinim 2

 satır  öbek  okunan  okunmayan  bulunan  kaçan  yazılmayan kaçan   oran
   100     2       2          0       22      2                 2  0.917
   300     6       6          0       22      2                 2  0.917
   900    18      12          6       18      6                 2  0.750
  2400    48      12         36        2     22                 2  0.083

 parça  öbek aralığı  bulunan
     1          0-11        2
     2         12-23       12
     3         24-35        2
     4         36-47        6
dört pencere toplamı: bulunan 22, kaçan 2, oran 0.917
kaçan sınıfları: eksik gereksinim
```

## Oranın Çöktüğü Yer

Üst tablonun ilk iki satırı sıkıcıdır ve sıkıcı olması gerekir. 100 satırda 2 öbek, 300
satırda 6 öbek vardır; ikisi de dikkatin altındadır, ikisinde de okunmayan öbek **0**'dır.
Bulunan **22**, kaçan **2** ve kaçan ikisinin ikisi de **eksik gereksinim**. Yani değişiklik
dikkatin altında kaldığı sürece boyutun hiçbir etkisi yoktur; kaçan tek şey zaten hiçbir
eksenin aramadığı sınıftır.

Üçüncü satırda sınır devreye giriyor. 900 satır 18 öbektir, 12'si okunur, **6 öbek okunmaz**.
Bulunan **18**'e iner, oran **0,750** olur. Kaçan **6**'nın **2**'si eksik gereksinim,
kalan **4**'ü ise okunabilir olduğu hâlde okunmamış kusurdur. Bunlar sınıfları itibarıyla
inceleyicinin baktığı eksenlerdedir — gerçekleştirim ve biçim. İnceleyicinin listesinde
vardır, kâhinde vardır, yalnız gözünün önünde değildir.

Dördüncü satır çöküştür. 2400 satır **48 öbektir** ve dikkat hâlâ 12'dir; **36 öbek hiç
okunmaz.** Bulunan **2**'ye düşer, oran **0,083** olur. Kusur sayısı değişmedi, sınıf
dağılımı değişmedi, inceleyicinin eksen listesi değişmedi. Yalnız değişiklik büyüdü.

Kaçan sütunundaki sınıf listesi de bu satırda genişliyor. 900 satırda kaçanlar iki eksene
dağılmıştı; 2400 satırda kaçan 22 kusur **altı sınıfın altısına** birden yayılıyor. Bir
eksenin kapatılmasıyla oluşan kayıp o eksenle sınırlıdır ve nereye baktığı bilinir;
okunmayan öbeğin ürettiği kayıp ise **eksenden bağımsızdır** ve nereye düştüğü bilinmez.
İki kayıp aynı değildir: birincisi bir karardır, ikincisi bir kazadır.

İki satır arasındaki farkı bir cümlede toplamak mümkün: **oran, okunan öbeğin toplam öbeğe
oranını izler.** 900 satırda 12/18 okunur ve oran 0,750'ye düşer; 2400 satırda 12/48 okunur
ve oran 0,083'e düşer. İkincisinin 12/48 = 0,250'nin de altına inmesinin nedeni kusurların
öbeklere düzgün dağılmamasıdır: ilk 12 öbekte yalnız 3 kusur vardır ve biri eksik gereksinim
sınıfındadır. Büyük değişiklikte inceleyicinin nerede durduğu bir kumar hâline gelir.

Farkların ölçüm bandının içinde olup olmadığına da bakmak gerekir. 22'den 18'e iniş
**4/24 = 0,167**'lik bir farktır; kümenin çözünürlüğü 0,042 olduğuna göre bu fark dört
basamak yukarıdadır ve savunulabilir. 18'den 2'ye iniş **16/24 = 0,667**'dir ve tartışma
gerektirmez. Buna karşılık 100 ile 300 satır arasındaki fark **0**'dır — kümenin
söyleyebileceği hiçbir şey yoktur ve olmadığını söylemek de bir sonuçtur.

## Büyük Değişikliğin Nereden Geldiği

Sayılar bir sınır gösteriyor, ama sınırın neden aşıldığını göstermiyor. 2400 satırlık bir
değişikliği kimse tek oturuşta yazmaz; o boyut **birikir**. Birikmenin üç yaygın kaynağı
vardır ve üçü de akışla ilgilidir, yazımla değil.

Birincisi **dalın ömrüdür**. Dallanma ve İşbirliği kursunda kurulan ayrım burada sayıya
dönüşür: kısa ömürlü dal küçük değişiklik üretir, uzun ömürlü dal her gün biraz daha büyür
ve incelemeye geldiğinde tek bir amaç değil, bir haftanın toplamıdır. İkincisi **karışan
sınıflardır**: yeniden adlandırma, dosya taşıma ve biçim düzeltmesi davranış değişikliğiyle
aynı değişiklikte gelir. Üçüncüsü **üretilen dosyalardır**: bağımlılık kilit dosyası,
derlenmiş çıktı ya da yeniden üretilebilen tablo değişikliğe girdiğinde satır sayısını
büyütür, ama içinde inceleyicinin karar verebileceği hiçbir şey yoktur.

Üçünün ortak sonucu aynıdır ve ölçümdeki dördüncü satırdır: dikkat aynı kalır, öbek sayısı
büyür. Üçünün de çaresi inceleme sırasında değil, incelemeden **önce** verilir — dalın
ömrünü kısaltmak, sınıfları ayırmak, üretilen dosyayı incelemenin dışına almak. İnceleme
masasına 48 öbek geldiğinde yapılabilecek tek şey kalmıştır: geri göndermek.

## Bölmek Satırı Azaltmaz, Okunan Öbeği Artırır

Alt tablo aynı 2400 satırı dört pencerede okuyor. Değişiklik bölünmedi, kusurlar yeniden
serpilmedi, dikkat büyütülmedi — yalnız okuma dört kez, her seferinde 12 öbeklik başka bir
pencereden yapıldı. Sonuç: **2 + 12 + 2 + 6 = 22** bulunan, **2** kaçan, oran **0,917**.

Bu, 100 satırlık değişiklikle **aynı** orandır. Bulunan sayısını belirleyen şey değişikliğin
satır sayısı değil, **okunan öbek sayısıdır.** 2400 satır dört pencerede okunduğunda 48
öbeğin 48'i okunur ve okunmayan kalmaz. Kaçan **2** kusur yine eksik gereksinim sınıfındadır
ve bölmek onlara dokunmaz: hiçbir pencere yazılmamış olanı göstermez.

Pencerelerin arasındaki dengesizlik de öğreticidir. İlk pencere yalnız **2**, ikincisi
**12** kusur veriyor. Tek geçişte okunan pencere, kusur bakımından en fakir penceredir.
Değişikliği bir turda okuyan inceleyici bunu bilemez; hangi öbeklerin yoğun olduğunu ancak
hepsini okuduktan sonra öğrenir.

Bölmenin bedeli sayıda görünmez ama gerçektir: dört pencere dört ayrı okuma demektir. Bu
bedel bu konunun son dersinde bekleme süresi ve inceleme turu sayısı olarak ödenecek. Burada
kaydedilmesi gereken şey bedelin **var** olduğu ve **öngörülebilir** olduğudur — 22 kusuru
bulmanın karşılığı, okumayı dörde bölmektir.

## İncelenebilir Değişikliğin Sınırı

Ölçüm pratik bir sınır veriyor: bir değişiklik, inceleyicinin dikkati kadar öbeğe sığdığında
incelenebilirdir. Kurgunun sayılarıyla bu yaklaşık 600 satırdır. Sayının kendisi kurgunun
varsayımıdır ve ekipten ekibe değişir; değişmeyen şey **bir sınırın olduğu ve aşıldığında
oranın sessizce düştüğüdür.**

Sessizlik burada anahtar sözcüktür. Okunmayan öbek geri bildirim üretmez. 2400 satırlık bir
değişikliğin incelemesi de onaylanır, o da kapanır ve dışarıdan bakan biri iki incelemeyi
birbirinden ayıramaz. **Onay, okunduğunun kanıtı değildir.** Ölçümdeki 22 kaçan kusur da
onaylanmış bir incelemenin ardından koda girmiştir.

Sınırı korumanın yolu değişikliği bölmektir, ama bölme keyfi olamaz. Her parçanın kendi
başına anlaşılır ve kendi başına doğru olması gerekir; yoksa inceleyen parçayı okur, ne
yaptığını anlamaz ve bir sonraki parçayı bekler — bu da okumayı ertelemenin başka bir
adıdır. Uygulanabilir bölme ölçütleri şunlardır: **tek amaç** (bir parça tek bir şey
yapar), **kendi başına doğruluk** (parça tek başına birleştirilse sistem bozulmaz), ve
**taşınan ile taşınmayanın ayrılması** (yeniden adlandırma, dosya taşıma ve biçim düzeltmesi
davranış değişikliğiyle aynı değişikliğe konmaz).

Son ölçüt en çok kazandıranıdır. Biçim düzeltmesi 300 satır büyütüyorsa, o 300 satır 6 öbek
demektir ve dikkatin 6 öbeği davranış değişikliğinden çalınmıştır. Önceki ders biçim eksenini
araca devretmişti; bu ders aynı devrin ikinci kazancını gösteriyor — devredilen eksen yalnız
tartışmayı değil, **öbeği** de incelemenin dışına çıkarır.

Bölünemeyen değişiklikler de vardır. Tek bir arayüzün adı değişiyorsa ve o ad iki bin satırda
geçiyorsa, parçalara ayırmak her parçayı kendi başına bozuk bırakır — birinci ölçüt ile
ikinci ölçüt çakışır. Böyle bir durumda yapılabilecek şey bölmek değil, **okuma sırasını
bildirmektir**: değişikliğin hangi öbeklerinin karar gerektirdiği, hangilerinin aynı düzenin
tekrarı olduğu yazan tarafından açıkça yazılır. Alt tablo bunun neden işe yaradığını
gösteriyor — dört pencerenin ikisi 2, biri 12, biri 6 kusur veriyor. Okunacak öbekler
işaretlenmiş olsaydı inceleyicinin ilk 12 öbeği okuması bir kumar olmaktan çıkardı.

Bu bildirim bir hesap verme aracı değildir ve öyle kullanılmamalıdır. Ölçtüğü şey kişinin
dikkati değil, **değişikliğin okunabilirliğidir**: aynı 48 öbek, sırası bildirilmiş hâlde
başka bir sonuç veriyor. Sıradaki iki ders bu ayrımı sürdürecek — ölçülen şey her seferinde
değişikliğin ve sürecin bir özelliğidir.

## Özet

- Dikkat bir bütçedir: bir inceleme turunda okunan öbek sayısı sabittir (kurguda 12 öbek,
  600 satır). Değişiklik bundan büyükse artan her öbek okunmayanlar kümesine gider.
- Aynı 24 kusur, aynı eksen listesi: 100 ve 300 satırda **22** bulunur (**0,917**), 900
  satırda **18** (**0,750**), 2400 satırda **2** (**0,083**). Kusur sayısı değişmedi,
  yalnız değişiklik büyüdü.
- 2400 satır **48 öbektir** ve **36 öbek hiç okunmaz**; okunan 12 öbek kusur bakımından en
  fakir penceredir, bu yüzden oran 12/48'in bile altına iner.
- Aynı 2400 satır dört pencerede okunduğunda bulunan **22**'ye, oran **0,917**'ye çıkar.
  Belirleyici olan satır sayısı değil, **okunan öbek sayısıdır.**
- Kaçan **2** kusur her boyutta ve her pencerede aynı kalır: **eksik gereksinim**. Boyutu
  küçültmek de bölmek de yazılmamış olanı göstermez.
- Onay okunduğunun kanıtı değildir; okunmayan öbek geri bildirim üretmez ve iki inceleme
  dışarıdan aynı görünür.

## Sonraki Adım

Değişiklik incelenebilir boyutta olduğunda inceleyen 22 kusuru buluyor. Ama bulunan bir
kusur, düzeltilmiş bir kusur değildir: aradaki mesafeyi bir **inceleme notu** kapatır ve
notun ne dediği, kusurun kaç inceleme turunda kapandığını belirler. Sonraki ders aynı 22
bulguyu iki ayrı yazımla ölçüyor — ne değişeceği ve neden değişeceği yazılı olan not ile
yalnız ne görüldüğünü söyleyen not aynı kusuru kaç inceleme turunda kapatır, ve hangi not
biçimi değişikliği açık kusurla birlikte kapanmaya zorlar.
