Ders 15 / 15
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.
İçindekiler
Ö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.
# ö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.
degisiklikve 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
"""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.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.