---
title: 'Sürüm Notları'
source: 'https://academia.sh/tr/kurslar/teknik-yazarlik/surum-notlari'
course: 'Teknik Yazarlık ve Dokümantasyon'
language: tr
updated: '2026-08-17T18:10:49+00:00'
license: 'CC BY-SA 4.0'
---

# Sürüm Notları

Dört tür ürünü bugünkü hâliyle anlatır ve hiçbiri zamanı taşımaz; ham değişiklik listesi on ikinci sürümde 56 bayat iddianın 17'sini tarihlendirir ve sessiz olanların 0'ını, aynı dokuz girdiye yanlışlanan iddia yazıldığında 56'sının 56'sı ve sessiz 39'un 39'u tarihlenebilir olur.

Önceki ders üretilen referansı altıncı sürümde **13/15** ile bıraktı ve okura bir soru
borçlandırdı: kalan ikisi **ne zaman** düştü? İkinci ders bu sorunun adını çoktan koymuştu —
altı okur sorusundan biri, "hangi sürümde değişti", dört türün hiçbirine düşmüyordu.

Bu ders o boşluğu kapatan metni ölçer. Sorulan şey sürüm notunun nasıl yayımlandığı değil,
**neyi tarihlenebilir kıldığıdır**: bayat bir iddiaya bakan okur, o cümlenin hangi sürümde
yanlışlandığını nereden öğrenecek?

## Zamanı Taşıyan Tek Metin

Dört türün ortak bir özelliği vardır ve bugüne kadar hiç adlandırılmadı: **hepsi şimdiki
zamanla yazılır.** Öğretici bugün nasıl başlanacağını, nasıl yapılır bugün nasıl yapılacağını,
açıklama bugün neden öyle olduğunu, referans bugün hangi alanın hangi tipte olduğunu söyler.
Dördü de geçmişi silen metinlerdir; bir alanın tipi değiştiğinde referans eski tipi anmaz,
yenisini yazar ve eskisi hiç var olmamış gibi olur.

Bu, dört tür için doğru bir tasarımdır. Referansın içine tarihçe konursa okur her hücrede
hangi satırın bugüne ait olduğunu ayırmak zorunda kalır ve referansın tek işlevi — hızlı
doğrulama — kaybolur. Ama bir bedeli var: **hiçbir tür zamanı taşımadığı için, hiçbiri
"ne zaman değişti" sorusunu yanıtlayamaz.**

Sürüm notu tam olarak bu boşluğa oturur ve ötekilerden farkı içeriğinde değil, **indeksinde**
durur. Dört tür konuya göre indekslenir: okur bir konu arar, o konunun bölümünü açar. Sürüm
notu **zamana göre** indekslenir: okur bir sürüm arar, o sürümün girdisini açar. Bu yüzden
sürüm notu dört türün beşincisi değil, ayrı bir eksende duran ayrı bir türdür.

Sürümün hangi hattan geçerek yayımlandığı, notun alanlarının okurun altı sorusunu nasıl
karşıladığı ve etiketin neyi işaretlediği **Kod İnceleme ve Ekip Süreci** kursunda ölçüldü ve
burada tekrarlanmaz. Orada ölçülen şey notun **okura** ne söylediğiydi; burada ölçülen şey
notun **öteki dokümanlara** ne yaptığıdır.

## İki Liste

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

```text
# kurgu ürünün sürüm notundan iki biçim
# örnek metin, çalıştırılmamıştır

ham değişiklik listesi
  s6  ölçüm çağrısının seçenek adları düzenlendi
  s6  özet akışında adım sırası değişti

anlam listesi
  s6  ölçüm çağrısının seçenek adları düzenlendi
      yanlışlanan: referanstaki parametre satırları,
      nasıl yapılır metnindeki çağrı örnekleri
  s6  özet akışında adım sırası değişti
      yanlışlanan: öğreticinin üçüncü ve dördüncü adımı
```

İki liste aynı sayıda girdi taşıyor. Fark tek bir alanda: ikincisi her girdiye **ne
yanlışlandığını** yazıyor. Bu alan sıradan bir ayrıntı gibi görünür ama yönü tersine
çevirir. Ham liste **değişikliğin tarafından** yazılmıştır: yapılan işi anlatır. Anlam listesi
**dokümanın tarafından** yazılmıştır: hangi cümlelerin bugünden itibaren yanlış olduğunu
söyler.

Bu ayrımın okur üzerindeki etkisi, notun ne zaman işe yaradığıyla ilgilidir. Ham listeye bakan
okur, aradığının ne olduğunu **zaten bilmek zorundadır**. Bir örnek elinde patladıysa hangi
çağrının bozulduğunu bilir ve listede o çağrıyı arar; bulunca tarihi de öğrenir. Ama hiçbir
şey patlamadıysa listeye bakmak için bir nedeni yoktur, çünkü hangi cümlenin yanlışlandığını
bilmiyordur. **Ham liste, arızayı zaten duymuş okura yarar.**

## Notun Boyu

Bir not yazmanın maliyeti girdi sayısıdır ve o sayı sanıldığı kadar büyük değildir. On iki
sürüm boyunca yüzeyler kendi sıklıklarında değişir; bazı sürümlerde hiçbir yüzey değişmez,
bazılarında birden fazlası aynı anda değişir. Not yalnız **değişimin olduğu** sürümlerde girdi
taşır. Ölçüm bu girdi sayısını ve girdi başına tarihlenen iddia sayısını da verecek.

Girdinin **ne zaman** yazıldığı da bir tercihtir ve sonucu belirler. Not yayım gününde toplu
olarak yazılırsa, yazan kişi geriye dönüp her değişikliğin hangi cümleleri yanlışladığını
çıkarmak zorunda kalır; bu bilgi o noktada artık kolay bulunmaz ve pratikte yazılmaz. Girdi
değişiklik anında yazılırsa, yanlışlanan cümleyi bilen kişi zaten oradadır: değişikliği yapan
kişi. Aradaki fark bir disiplin sorusu gibi görünür ama ölçülen sütunu doğrudan belirler —
aşağıdaki tabloda anlam listesini ham listeden ayıran tek alan, yalnız o anda ucuzdur.

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

- **DT37** — Ölçülen küme kursun kurgu kümesidir: **56** iddia, dört tür, dört yüzey ve
  **17** gömülü örnek. Karışım değiştirilmez.
- **DT38** — Yüzey sıklıkları sabittir: imza **2**, akış **3**, ad **5**, kavram **12**
  sürümde bir. Bir yüzey, sıklığının katı olan her sürümde bir kez değişir.
- **DT39** — Bir iddianın **düşüş sürümü**, bağlandığı yüzeyin ilk değiştiği sürümdür ve
  kurguyu biz yazdığımız için bilinir. Okur bunu ancak yazılmışsa bilir.
- **DT40** — Sürüm notu, en az bir yüzeyin değiştiği her sürüm için bir girdi taşır. Hiçbir
  yüzeyin değişmediği sürümlerde girdi yoktur.
- **DT41** — Üç not biçimi denenir: **sürüm notu yok**, **ham değişiklik listesi** ve
  **anlam listesi**. Üçü de aynı olaylardan üretilir.
- **DT42** — **Sürüm notu yokken** bayat bir iddia tarihlenemez; dört türün hiçbiri zaman
  taşımaz.
- **DT43** — **Ham değişiklik listesi** yalnız yapılanı yazar. Bir iddiayı tarihlenebilir
  kılması için okurun o iddiadan şüphelenmiş olması gerekir; bu ölçümde şüphe yalnız
  **gömülü** bir iddia kırıldığında doğar.
- **DT44** — **Anlam listesi** her girdiye yanlışlanan iddiaları yazar; okurun şüphelenmesi
  gerekmez, bayat olan her iddia tarihlenebilir olur.
- **DT45** — Bir iddia **tarihlenebilir** sayılmak için önce **bayat** olmalıdır; henüz doğru
  olan iddia bu sütuna girmez.
- **DT46** — Kümenin çözünürlüğü **1/56**'dır; not girdisi ölçeğinde **1/9**'dur.

## Ölçüm

```python
"""Surum notu: bayat bir iddianin ne zaman dustugu okur icin tarihlenebilir mi.

Bolum 1 - on iki surumdeki degisim olaylari ve notun satir sayisi.
Bolum 2 - uc not bicimi altinda tarihlenebilir bayat iddia ve sessiz olani.
"""
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}
SURUMLER = (2, 3, 5, 6, 12)
SON = 12


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


def olaylar(son=SON):
    """Her surumde hangi yuzeyler degisti: notun yazacagi girdiler."""
    return [(s, [y for y in SIKLIK if s % SIKLIK[y] == 0])
            for s in range(1, son + 1)
            if any(s % SIKLIK[y] == 0 for y in SIKLIK)]


# Not bicimleri: bayat bir iddiayi hangi kosulda tarihlenebilir kiliyorlar.
BICIMLER = {
    "sürüm notu yok": lambda i: False,
    "ham değişiklik listesi": lambda i: i["gomulu"],
    "anlam listesi": lambda i: True,
}

L = iddialar()
O = olaylar()
print(f"iddia {len(L)} | örneğe gömülü {sum(i['gomulu'] for i in L)} | "
      f"on iki sürümde değişim olayı {sum(len(y) for _, y in O)} | "
      f"not girdisi {len(O)}")
print("not girdileri: " + "; ".join(f"s{s}: {', '.join(y)}" for s, y in O))

print()
print(f"{'sürüm':>5s} {'bayat':>5s} {'sessiz':>6s} " +
      " ".join(f"{ad:>23s}" for ad in BICIMLER))
print(f"{'':5s} {'':5s} {'':6s} " +
      " ".join(f"{'tarihlenebilir/sessizi':>23s}" for _ in BICIMLER))
for s in SURUMLER:
    bayat = [i for i in L if s // SIKLIK[i["yuzey"]] >= 1]
    sessiz = [i for i in bayat if not i["gomulu"]]
    satir = f"{s:5d} {len(bayat):5d} {len(sessiz):6d} "
    for ad, kural in BICIMLER.items():
        t = [i for i in bayat if kural(i)]
        ts = [i for i in t if not i["gomulu"]]
        satir += f" {f'{len(t)}/{len(ts)}':>23s}"
    print(satir)

print()
print(f"{'not biçimi':<24s} {'girdi':>5s} {'tarihlenen iddia':>16s} "
      f"{'girdi başına':>12s} {'sessizden':>9s}")
son_bayat = [i for i in L if SON // SIKLIK[i["yuzey"]] >= 1]
son_sessiz = [i for i in son_bayat if not i["gomulu"]]
for ad, kural in BICIMLER.items():
    t = [i for i in son_bayat if kural(i)]
    ts = [i for i in t if not i["gomulu"]]
    girdi = 0 if ad == "sürüm notu yok" else len(O)
    pay = len(t) / girdi if girdi else 0
    print(f"{ad:<24s} {girdi:5d} {f'{len(t)}/{len(son_bayat)}':>16s} "
          f"{pay:12.3f} {f'{len(ts)}/{len(son_sessiz)}':>9s}")
```

```
iddia 56 | örneğe gömülü 17 | on iki sürümde değişim olayı 13 | not girdisi 9
not girdileri: s2: imza; s3: akis; s4: imza; s5: ad; s6: imza, akis; s8: imza; s9: akis; s10: imza, ad; s12: imza, akis, kavram

sürüm bayat sessiz          sürüm notu yok  ham değişiklik listesi           anlam listesi
                    tarihlenebilir/sessizi  tarihlenebilir/sessizi  tarihlenebilir/sessizi
    2    22     17                      0/0                     5/0                   22/17
    3    38     24                      0/0                    14/0                   38/24
    5    45     28                      0/0                    17/0                   45/28
    6    45     28                      0/0                    17/0                   45/28
   12    56     39                      0/0                    17/0                   56/39

not biçimi               girdi tarihlenen iddia girdi başına sessizden
sürüm notu yok               0             0/56        0.000      0/39
ham değişiklik listesi       9            17/56        1.889      0/39
anlam listesi                9            56/56        6.222     39/39
```

## Tarihlenebilirliğin Okunması

İlk satır notun boyunu veriyor: on iki sürümde **13** değişim olayı var ama not yalnız **9**
girdi taşıyor. Üç sürümde birden fazla yüzey aynı anda değişiyor — altıncı sürümde imza ile
akış, onuncuda imza ile ad, on ikincide üçü birden. Üç sürümde ise hiçbir şey değişmiyor ve
not o sürümler için girdi taşımıyor.

Üst tablonun sol sütunları kursun tanıdık sayılarını veriyor: bayat iddia ikinci sürümde
**22**, üçüncüde **38**, beşincide **45**, on ikincide **56**; sessiz olanlar sırasıyla
**17**, **24**, **28** ve **39**. Sağdaki üç sütun aynı satırlarda okurun ne
tarihlendirebildiğini gösteriyor.

**Sürüm notu yokken** her satırda **0/0**. Bu, dersin başındaki savın sayısal karşılığıdır:
dört tür ne kadar iyi yazılırsa yazılsın, tek bir iddianın ne zaman yanlışlandığını
söyleyemez.

**Ham değişiklik listesi** ikinci sürümde **5**, üçüncüde **14**, beşincide **17**
tarihlendiriyor ve orada duruyor. On ikinci sürümde bayat iddia **56**'ya çıktığı hâlde ham
liste hâlâ **17**'de kalıyor. Sayı tesadüf değil: gömülü iddia sayısı **17**'dir ve ham liste
tam olarak onları tarihlendirir, bir tanesini bile fazla değil. Beşinci sürümden sonra ham
listenin eğrisi düzleşiyor: değişiklikler sürüyor, not büyüyor, tarihlenen iddia sayısı
sabit kalıyor. Not yazmaya harcanan emek artıyor, karşılığı artmıyor.

Asıl bulgu ise ham listenin sağdaki payında: **0/39**. Sessiz bayatlayan otuz dokuz iddianın
**hiçbiri** ham değişiklik listesiyle tarihlenemiyor. Neden açık — ham liste yalnız
şüphelenmiş okura yarar ve sessiz bir iddia kimseyi şüphelendirmez. Ham liste, işe yaraması
için okurun zaten bilmesini gerektiren bir metindir; bilmeyen okur için **hiçbir şey** yapmaz.

**Anlam listesi** aynı satırlarda bayat sayısının tamamını tarihlendiriyor: **22/17**,
**38/24**, **45/28** ve **56/39**. Son sütun bunu tek bir oranla veriyor — sessiz otuz dokuz
iddianın **39**'u tarihlenebilir hâle geliyor.

Alt tablo bedeli ölçüyor ve dersin en pratik sonucu orada. **İki biçim de 9 girdi taşıyor.**
Anlam listesi daha uzun bir not değildir; aynı dokuz girdiye fazladan bir alan yazılmış
hâlidir. Buna karşılık girdi başına tarihlenen iddia **1,889**'dan **6,222**'ye çıkıyor —
üç katından fazlası. Yazma emri tek cümleyle söylenebilir: **girdiye ne yapıldığını yazmak
yetmez, neyi yanlışladığını yazmak gerekir.**

Bu, kursun boyunca sessiz bayatlamaya ulaşan ilk düzenektir ve nasıl ulaştığı önemli. Sessiz
bayatlamayı görünmez kılan şey, dokümanın kendisinden hiçbir sinyal gelmemesiydi. Anlam
listesi sinyali dokümandan değil, **değişikliğin kendisinden** alır: kod değişirken hangi
cümlelerin yanlışlandığı o anda bilinir, sonradan bilinmez. Notun tuttuğu şey bu andır.
Yazılmazsa kaybolur ve bir daha üretilemez.

## Notun Kapatmadığı

Tablo notun ne yaptığını söylüyor; ne yapmadığını da yazmak gerekir, çünkü **56/56**
görüntüsü fazlasını vaat ediyor.

Birincisi: tarihlemek düzeltmek değildir. Anlam listesi okura "referanstaki parametre satırı
altıncı sürümde yanlışlandı" der; **doğrusunun ne olduğunu** demez. Okur yanlışı öğrenir,
doğruyu öğrenmez. Bu yine de büyük bir kazançtır — yanlış olduğunu bilmek, yanlışı doğru
sanmaktan iyidir — ama iddiayı doğru kalanlar sütununa geri taşımaz. Tabloda **doğru** sütunu
hiçbir not biçiminde değişmiyor; değişen yalnız bayat olanın görünürlüğü.

İkincisi: notun okuru dokümanın okuru değildir. Sürüm notunu izleyen kişi ürünü zaten
kullanandır. Bugün ilk kez gelen okur, geçmiş notları okumaz; onun için doküman yine
tarihsizdir ve **17** gömülü iddia dışında hiçbir şey ona bir uyarı vermez. Anlam listesi
bayatlamayı **bakım yapan** için görünür kılar, **yeni okur** için kılmaz.

Üçüncüsü: not ancak yazıldığı kadar doğrudur ve kendisi de bir dokümandır. Girdilerindeki
"yanlışlanan" alanı, yazıldığı andaki doküman yapısına bağlıdır; bölümler yeniden
düzenlendiğinde o alan da bayatlar. Notun kendisi bu ölçümün dışında tutuldu, ama gerçek bir
depoda o da sayılan kümeye girer.

## Özet

- Dört tür şimdiki zamanla yazılır ve konuya göre indekslenir; sürüm notu **zamana göre**
  indekslenen ayrı bir türdür ve "hangi sürümde değişti" sorusunu yalnız o kapatır.
- On iki sürümde **13** değişim olayı, notta **9** girdi eder; bazı sürümlerde birden çok
  yüzey aynı anda değişir, bazılarında hiçbiri değişmez.
- Sürüm notu yokken bayat iddiaların **0/56**'sı tarihlenebilir; ham değişiklik listesiyle
  **17/56** ve bu sayı gömülü iddia sayısına eşittir, on ikinci sürümde de büyümez.
- Ham değişiklik listesi sessiz bayatlayan **39** iddianın **0**'ını tarihlendirir; yalnız
  arızayı zaten duymuş okura yarar.
- Anlam listesi aynı **9** girdiyle **56/56** ve sessizlerin **39/39**'unu tarihlenebilir
  kılar; girdi başına tarihlenen iddia **1,889**'dan **6,222**'ye çıkar.
- Fark girdi sayısında değil, girdiye yazılan **yanlışlanan iddia** alanındadır; bu bilgi
  değişiklik anında vardır ve yazılmazsa sonradan üretilemez.

## Sonraki Adım

Bu ders okurun iki karşılıksız sorusundan birini kapattı. İkincisi duruyor ve ötekinden daha
sık sorulur: **"bu neden çalışmıyor?"** Bu soruyla gelen okur ne bir konu adı bilir ne bir
sürüm numarası; elinde yalnız bir belirti vardır — bir hata satırı, boş bir çıktı, beklenenden
başka bir sonuç. Elindeki tek şey ürünün ona gösterdiğidir ve o gösterilen şey, dokümanın
hiçbir bölüm başlığıyla eşleşmez. Sonraki ders belirtiden başlayan bir metnin kapsadığı okur
sorusuyla
kavramdan başlayanın kapsadığını karşılaştırır ve sorun giderme içeriğinin ulaşamadığı sınırı
adlandırır.
