---
title: 'Sürüm Yayımlama Düzeni'
source: 'https://academia.sh/tr/kurslar/kod-inceleme/surum-yayimlama-duzeni'
course: 'Kod İnceleme ve Ekip Süreci'
language: tr
updated: '2026-08-17T18:10:47+00:00'
license: 'CC BY-SA 4.0'
---

# Sürüm Yayımlama Düzeni

Yirmi dört iş öğesi ve altı okur sorusu 144 karar eder: ham değişiklik listesi 22'sini yanıtlar (0,153), sınıflanmış liste 44'ünü, anlam listesi 88'ini, etiket ve dağıtım varlığıyla birlikte 132'sini (0,917); yanıtsız kalan 12 kararın 12'si de eksik gereksinim sınıfındandır.

Önceki ders zincirin sonundaki geçişi bir sayıyla gördü: tümleşen iş bir noktaya bağlanıp
dışarıya bildiriliyordu. O bildirimin kendisi bir metindir ve bir okuru vardır — kursun boyunca
hiç görünmeyen biri. İnceleme yazanı ve inceleyeni tanır; **sürüm notunun okuru ise ne
değişikliği görmüştür ne tartışmayı.**

Bu dersin sorusu notun nasıl üretildiği değil. Soru şudur: **not okura ne söylüyor?**
Değişikliklerin listesi ile değişikliklerin **anlamının** listesi arasındaki fark kaç soruya
yanıt veriyor, ve okurun sorduğu sorulardan kaçı hiçbir biçimde yanıt bulamıyor?

## Okur Neyi Sorar

Sürüm notunu okuyan kişi sürümü merak etmez; **kendi durumunu** merak eder. Altı soru sorar ve
her sorunun yanıtı notta ancak belirli bir alan yazılmışsa bulunur.

`değişti mi` sorusunun yanıtı **başlıktadır** — bir şeyin değiştiğini söyleyen en az alan budur.
`hangi alan` sorusu **sınıf** ister: değişiklik nereye dokundu. `beni etkiler mi` sorusu **etki**
ister; `ne yapmalıyım` sorusu **eylem** ister. `hangi noktadan sonra` sorusunun yanıtı bir
**sınırdır** ve onu etiket verir. `nasıl edinirim` sorusunun yanıtı bir **varlıktır** ve onu
dağıtım varlığı verir.

Etiketin nasıl konduğu ve neyi işaretlediği **Sürüm Kontrolüne Giriş** kursunda kuruldu;
sürümün hangi hattan geçerek yayımlandığı **Sürekli Tümleştirme ve Teslimat** kursunun konusudur.
İkisi de burada tekrarlanmaz. Bu derste etiket ve **dağıtım varlığı (release asset)** yalnız
birer **alan** olarak sayılır: okurun iki sorusunu yanıtlayan iki alan.

## İki Liste

Aynı sürüm iki biçimde yazılabilir ve ikisi aynı bilgiden üretilir.

```text
# örnek sürüm notu — iki biçim, çalıştırılmamıştır

## değişiklik listesi
- #377 ödeme çağrısında zaman aşımı ayarı
- #381 yeniden deneme sayacı düzeltmesi
- #388 günlük biçimi güncellendi

## anlam listesi
### Dış çağrı yapan uygulamalar
- Zaman aşımı süresi artık ayarlanabilir; varsayılan değişmedi.
  Yapılacak: ayar verilmezse davranış aynıdır, işlem gerekmez.
- Yeniden deneme sayısı üç yerine iki. Yapılacak: üç deneme
  bekleyen çağrı yolları gözden geçirilmeli.
### İç değişiklikler
- Günlük biçimi ve biçim düzeltmeleri; okur tarafında etkisi yok.
```

Fark uzunlukta değil. Birinci liste **ne yapıldığını** söylüyor, ikincisi **okura ne olduğunu**.
Birinci listede üç satır da aynı ağırlıkta duruyor; ikincisinde okuru ilgilendirmeyen değişiklik
tek bir satıra toplanmış ve okurun gerçekten bakması gereken iki madde ayrılmış. Ölçüm bu iki
farkı ayrı ayrı sayar: **yanıtlanan soru** ve **taranan satır**.

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

- **EA29** — Sürümün iş öğeleri ortak tanımın kümesinden alınır: **24** öğe ve sınıf dağılımı
  kursun sabit dağılımıdır. `degisiklik` ve sınıf listesi değiştirilmez.
- **EA30** — **Eksik gereksinim** sınıfındaki öğe birleştirilmemiştir; hiçbir not biçimine
  giremez. Nota giren öğe sayısı bu yüzden **22**'dir.
- **EA31** — Okurun altı sorusu vardır ve her sorunun yanıtı tek bir alanda durur. Alan yazılıysa
  soru yanıtlanır, yazılmamışsa yanıtsız kalır; yanlış yanıt bu ölçümde yoktur.
- **EA32** — Dört not biçimi denenir ve her biri bir öncekinin alanlarını kapsar: başlık;
  başlık ve sınıf; anlam listesi; anlam listesine etiket ve dağıtım varlığının eklenmiş hâli.
- **EA33** — Okura dönük sınıflar **arayüz**, **gerçekleştirim** ve **belgedir**; test ve biçim
  öğeleri okurun durumunu değiştirmez. Sınıf alanı yazılmamışsa okur ayrım yapamaz ve nota giren
  bütün satırları tarar.
- **EA34** — Kümenin çözünürlüğü 24 öğede **1/24**, karar ölçeğinde **1/144**'tür; bir öğenin
  bir sorusu bu ölçümde ölçülebilen en küçük birimdir.

## Ölçüm

```python
"""Surum notu: degisiklik listesi ile anlam listesi arasindaki fark.

Bolum 1 - dort not bicimi ve okurun alti sorusu.
Bolum 2 - okurun taradigi satir ile isine yarayan satir.
"""
TOHUM = 20260815
EKSENLER = ("arayuz", "gerceklestirim", "test", "belge", "bicim")
YAZILMAYAN = "eksik gereksinim"
SINIFLAR = EKSENLER + (YAZILMAYAN,)
OBEK = 50
# Okurun sorusu -> yanıtı taşıyan alan.
SORULAR = {"değişti mi": "başlık", "hangi alan": "sınıf",
           "beni etkiler mi": "etki", "ne yapmalıyım": "eylem",
           "hangi noktadan sonra": "sınır", "nasıl edinirim": "varlık"}
BICIMLER = {
    "ham değişiklik listesi": ("başlık",),
    "sınıflanmış liste": ("başlık", "sınıf"),
    "anlam listesi": ("başlık", "sınıf", "etki", "eylem"),
    "anlam + etiket + varlık": ("başlık", "sınıf", "etki", "eylem",
                                "sınır", "varlık"),
}
# Okura donuk sinif: surum notunun okuru bunlari arar.
DISARI = {"arayuz", "gerceklestirim", "belge"}


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}


d = degisiklik(600)
# Sürümün iş öğeleri: sınıf dağılımı kursun sabit dağılımıdır.
OGELER = [{"no": k["no"], "sinif": k["sinif"]} for k in d["kusurlar"]]
# Yazılmayan sınıf birleştirilmemiştir; hiçbir not biçimine giremez.
NOTTA = [o for o in OGELER if o["sinif"] != YAZILMAYAN]
dagilim = {s: sum(1 for o in OGELER if o["sinif"] == s) for s in SINIFLAR}
print("sürüm: " + ", ".join(f"{s} {n}" for s, n in dagilim.items()))
print(f"iş öğesi {len(OGELER)} | nota giren {len(NOTTA)} | okur sorusu "
      f"{len(SORULAR)} | karar {len(OGELER) * len(SORULAR)}")
print()
print(f"{'not biçimi':<24s} {'alan':>4s} {'yanıtlanan':>10s} {'yanıtsız':>8s} "
      f"{'oran':>6s} {'yazılmayandan':>13s}")
toplam = len(OGELER) * len(SORULAR)
for ad, alanlar in BICIMLER.items():
    yanit = sum(1 for o in NOTTA for s in SORULAR if SORULAR[s] in alanlar)
    yazsiz = (len(OGELER) - len(NOTTA)) * len(SORULAR)
    print(f"{ad:<24s} {len(alanlar):4d} {yanit:10d} {toplam - yanit:8d} "
          f"{yanit / toplam:6.3f} {yazsiz:13d}")

print()
print(f"{'not biçimi':<24s} {'taranan satır':>13s} {'işe yarayan':>11s} "
      f"{'oran':>6s}")
for ad, alanlar in BICIMLER.items():
    # Sınıf alanı yoksa okur bütün satırları tarar; varsa dış gruba iner.
    taranan = (len(NOTTA) if "sınıf" not in alanlar
               else sum(1 for o in NOTTA if o["sinif"] in DISARI))
    yarayan = sum(1 for o in NOTTA if o["sinif"] in DISARI)
    print(f"{ad:<24s} {taranan:13d} {yarayan:11d} {yarayan / taranan:6.3f}")
```

```
sürüm: arayuz 3, gerceklestirim 6, test 3, belge 3, bicim 7, eksik gereksinim 2
iş öğesi 24 | nota giren 22 | okur sorusu 6 | karar 144

not biçimi               alan yanıtlanan yanıtsız   oran yazılmayandan
ham değişiklik listesi      1         22      122  0.153            12
sınıflanmış liste           2         44      100  0.306            12
anlam listesi               4         88       56  0.611            12
anlam + etiket + varlık     6        132       12  0.917            12

not biçimi               taranan satır işe yarayan   oran
ham değişiklik listesi              22          12  0.545
sınıflanmış liste                   12          12  1.000
anlam listesi                       12          12  1.000
anlam + etiket + varlık             12          12  1.000
```

## Farkın Okunması

Yüz kırk dört kararın ham değişiklik listesinde **22**'si yanıtlanıyor — oran **0,153**. Liste
eksiksizdir, hiçbir iş öğesi atlanmamıştır ve okurun altı sorusundan beşine yanıt vermez.
Eksiksizlik ile yanıtlayıcılık aynı şey değildir.

Sınıf alanının eklenmesi yanıtlananı **44**'e çıkarıyor, anlam listesi **88**'e. Asıl sıçrama
üçüncü satırdadır: **etki** ve **eylem** alanları tek başlarına **44** karar taşıyor, yani
kümenin yaklaşık üçte biri. Bu iki alanın ortak yanı, ikisinin de değişiklikten **türetilemez**
olmasıdır. Başlık ve sınıf birleştirilen işten çıkarılabilir; etki ve eylem ancak biri
yazarsa vardır.

Dördüncü satırda oran **0,917**'ye çıkıyor. Bu sayı kursta tanıdıktır: 100 satırlık değişiklikte
bulunan kusurun oranı da **0,917**'ydi. Tesadüf değil — her ikisinde de dışarıda kalan tam olarak
**2/24**'tür ve o iki öğe aynı sınıftandır.

Alttaki tablo ikinci farkı veriyor. Ham listede okur **22** satır tarıyor ve **12**'si işine
yarıyor: oran **0,545**. Okurun yarıya yakını boşa okuma. Sınıf alanı eklendiğinde taranan
**12**'ye iniyor ve oran **1,000** oluyor. Dikkat çekici olan, bu kazancın **ikinci** satırda
sağlanmasıdır: gruplama, etki ve eylem yazılmadan da okurun taramasını yarıya indiriyor.
**En ucuz iyileştirme, notu yeniden yazmak değil, sınıflamaktır.**

## Özet

- Sürüm notunun okuru ne değişikliği ne tartışmayı görmüştür; altı sorusu vardır ve her sorunun
  yanıtı notta yazılmış tek bir alanda durur.
- Yüz kırk dört kararın ham değişiklik listesi **22**'sini yanıtlar (**0,153**), sınıflanmış
  liste **44**'ünü, anlam listesi **88**'ini, etiket ve dağıtım varlığıyla birlikte **132**'sini
  (**0,917**).
- **Etki** ve **eylem** alanları tek başlarına **44** karar taşır ve ikisi de birleştirilen işten
  türetilemez; ancak biri yazarsa vardır.
- Okur ham listede **22** satır tarayıp **12**'sini kullanır (**0,545**); sınıf alanı taramayı
  **12**'ye indirir ve oranı **1,000** yapar — bu kazanç etki ve eylem yazılmadan elde edilir.
- Yanıtsız kalan **12** kararın **12**'si de **eksik gereksinim** sınıfındandır; birleştirilmemiş
  iş hiçbir not biçiminde görünmez.

## Kurs Kapanışı

Kurs tek bir ölçüyle yürüdü: bir incelemenin sayısı **bakan kişi sayısı değil, bakılan eksen
sayısı ve okunan öbek sayısıdır.** On beş ders bu ölçüyü ayrı yerlere uyguladı.

| ders | ölçülen | bulunan ya da kaçan |
|---|---|---|
| Kod İncelemenin Amacı | eksen çeşitliliğinin bulduğu | üç inceleyen aynı eksende 6, ayrı eksende 15, tek inceleyen beş eksende 22, beş inceleyen yine 22; dördünde de 2 eksik gereksinim kaçar |
| Arayüz Anlamı | bir ekseni kapatmanın bedeli | beş eksenin kümeleri ayrık, ikili kesişimlerin toplamı 0; arayüz kapatılınca bulunan 22'den 19'a iner ve arayüzsüz on inceleyen 19'da kalır |
| Gerçekleştirim Anlamı | bir eksenin marjinal katkısı | gerçekleştirim iki sırada da 6, biçim 7, kalan üçü 3'er ekler; aynı eksene 1, 3 ve 12 okuma 6'da kalır, oran 0,250 |
| Testlerin İncelenmesi | testin kendisinin taşıdığı kusur | üç test kusuru 9, 1 ve 7 numaralı öbeklerde ve o öbeklerde 1, 2, 1 başka eksen bulgu vermiş; okunmamış öbekte kaçan beş eksende de 0, test ekseni kapatılınca bulunan 22'den 19'a iner |
| Belgelendirme İncelemesi | belge ekseni kapatıldığında kaçan | beş eksenin tek tek kapanış bedeli 3, 6, 3, 3 ve 7; belge kapatılınca bulunan 22'den 19'a iner, belge ekseni açıkken belge kaçan 0 ve yazılmayan kaçan yine 2 |
| Kod Biçimi ve Otomasyon | biçim ekseni araca devredilince dikkatin kayması | insanın bulgusu 22'den 15'e, biçim payı 0,318'den 0,000'a iner; aracın katkısı kapsanmayan eksen kadardır — beş eksen kapsanıyorsa 0, üç inceleyende 15'ten 22'ye, ve araçlı en iyi durumda kaçan yine 2 |
| Değişiklik Boyutu | sabit dikkat karşısında boyut | 100 ve 300 satırda 22 (0,917), 900'de 18 (0,750), 2400'de 2 (0,083); 48 öbeğin 36'sı hiç okunmaz |
| Geri Bildirim Dili | aynı bulgunun yazımının ürettiği tur | eyleme dönük 2 tur / 12 bekleme / 44 not-turu, gözlem 3 / 18 / 66, ölçütsüz 4 / 24 / 88; bulunan 22 ve kaçan 2 değişmez |
| Anlaşmazlık Çözümü | kararsız bulgunun taşındığı tur | kural yokluğu 6 tur / 36 bekleme ve kodda 8 kusur; ölçüte bağlama 3 tur / 18 birim ve kodda yalnız 2 |
| İnceleme Ölçütleri | bekleme, tur ve kuyruk sağlığı | üç inceleyen aynı eksende 6 tur / 36 bekleme / 3 kalan, tek inceleyen beş eksende 2 / 12 / 0; kuyrukta en uzun açık kalma 2 tura karşı 15 tur |
| İş Takibi ve Panolar | zincir beklemesi ve incelemenin payı | inceleme dışı 19 sabit, halka 12 ile 36 arası, pay 0,387 ile 0,655; kalan 3 kusur zinciri 55'ten 105'e taşır |
| Katkı Rehberleri | yazılı beklentinin kapattığı tur | dar incelemede tur 6, 5, 4, 3, 2 ve bekleme 36'dan 12'ye; gereksinim beyanı eksik gereksinim kaçanını 2'den 0'a indirir |
| Sahiplik ve Onay Kuralları | zorunlu inceleyenin eksen çeşitliliğine etkisi | onay 1'den 3'e çıkarken bulunan 6, tur 6, bekleme 36 sabit; eksen kısıtsız tek onay 22 bulur, dar sahiplikte 4 eksen açık ve orada 16 kusur |
| Depo Platformu Yetenekleri | her yeteneğin kısalttığı geçiş | zincir 45'ten 21'e, kazanç 24; bulunan 15, kaçan 9 ve yazılmayan 2 her satırda sabit; tartışmanın kazancı 4, 6, 12 |
| Sürüm Yayımlama Düzeni | notun okura yanıtladığı soru | 144 kararın 22'si (0,153), 44'ü, 88'i ve 132'si (0,917); yanıtsız kalan 12'nin 12'si eksik gereksinim |

Tablodan üç okuma çıkar. **Birincisi:** sayıyı büyüten şey kişi değil eksendir ve bu her konuda
yeniden doğrulandı — aynı eksene bakan üçüncü kişi 0, yeni bir eksen 3 ile 7 arası kusur ekler.
**İkincisi:** turu ve beklemeyi belirleyen şey ilk turda görülemeyendir; rehber, sahiplik kuralı
ve platform yetenekleri beklemeye dokunur, bulunana dokunmaz. **Üçüncüsü:** on beş satırın
hepsinde aynı iki kusur kaçar. Eksen eklemek, boyut küçültmek, tur kısaltmak, kural yazmak, yüzey
açmak — hiçbiri onlara ulaşmaz. Onlara ulaşan tek düzenek, yazanın gereksinimi **yazmasını**
isteyen rehber maddesiydi ve o bir inceleme aracı değildi.

Üçüncü okuma kursun sınırını çiziyor. **İnceleme yazılana bakar.** Gönderilen değişikliğin
içindeki her şeyi — arayüzü, gerçekleştirimi, testi, belgeyi, biçimi — yeterince çok eksenle ve
yeterince küçük bir boyutla görmek mümkündür. Gönderilmemiş olanın yokluğu ise incelemenin
konusu değildir; onu ancak **yazmak** kapatır.

Sonraki kurs — Teknik Yazarlık ve Dokümantasyon — tam bu işi ele alır: doküman türlerinin
birbirinden ayrılması, öğretici ile referansın ayrı yapıları, deponun kendi belgeleri, arayüz
referansının düzeni ve sürüm notlarının okura anlamıyla yazılması. Bu dersin son ölçümü oraya
bir sayı bırakıyor: notun altı sorudan kaçını yanıtladığı, notu kimin yazdığına değil,
**hangi alanların yazıldığına** bağlıydı. Ayrım baştan konmalıdır: **inceleme yazılana bakar;
yazılmayanı yazmak ayrı bir iştir.** Bu kursun bıraktığı ölçü, orada yazılan her belgenin kaç
soruyu yanıtladığını saymakta kullanılacak birimdir.
