Ders 10 / 11
Kalite Göstergeleri
Kaçan hata, geri dönüş ve döngü süresinin aynı olay kümesinden hesaplanması: hattı ucuzlatan tek bir kararın iki dönemde ölçülmesi, altı göstergenin eşikleri ve eşiklerin kaynaklarıyla birlikte taranması, hangisinin bir kararı değiştirdiğinin sayılması ve kararı değiştirmeyen göstergenin dikkat cinsinden bedeli.
İçindekiler
Önceki ders tek bir koşumun sonucunu okunur kıldı ve o koşumun kökünü bir karara bağladı. Bir raporun yanıtlayamadığı bir soru kaldı: bu ekip zaman içinde daha mı iyi sınıyor. Şema uyuşmazlığının bir gece çıkması bir olaydır, her hafta çıkması bir süreç kusurudur ve tek koşumun raporunda ikisi aynı görünür. Bu ders ölçüyü dönem düzeyine taşır.
Ölçülecek şey burada sistem değil, ekiptir. Çalışan sistemin yanıt süresi, hata oranı ve doyumu Başarım Karşıt Kalıpları ve İzleme kursunun konusudur; buradaki göstergeler sınamanın kendisini ölçer. Dağıtılan kaynak yine dikkattir ve miktarı gösterge sayısıdır: her gösterge dönem başına toplanmayı ve okunmayı ister, karşılığında bir karar üretmesi beklenir. Üretmiyorsa gürültüdür.
Üç Gösterge, Tek Veri
Kaçak oranı (defect leakage rate), hattın hiçbir aşamasında yakalanmayıp üretime giden kusurun toplam kusura oranıdır; payındaki kaçan hata M21/K03’ün kaçan gerçek hatasıyla aynı kavramdır. Geri dönüş (iş) (rework), bir kusur yüzünden yeniden yapılan iştir ve saat cinsinden ölçülür; Dayanıklılık ve Güvenilirlik kursundaki geri dönüş devralmadan sonra asıl kopyaya dönüşü anlatır — aynı sözcük, ayrı iki kavram. Döngü süresi (cycle time) bir değişikliğin gönderilmesinden ana dala girmesine kadar geçen süredir; yayıma kadar olan süre uçtan uca süredir (lead time) ve bu derste ölçülmez.
Üçünün ortak yanı şudur: hepsi tek bir olay kümesinden çıkar — hangi kusur hangi aşamada yakalandı. Aşama sırası, geri bildirim dakikaları ve kusur kümesi Sürekli Tümleştirmede Test dersinin üç sıklık düzeninden alınır.
// donem.mjs — iki donemin ayni kusur kumesi uzerinden bes gostergesi // TS9 (otomasyon-altyapisi/01): 100 degisiklik, 20 is gunu. Sinif adlari ve yuz degisiklikteki // sayilari ayni dersin TS7 kusur kumesinden; asama, o sinifi yakalayan takimin uc siklik // duzenindeki yeridir. Toplam 80 kusur, 20 temiz degisiklik. export const SINIF = [ ['sinir karsilastirmasi', 13, 'hizli'], ['kirici degisiklik', 6, 'hizli'], ['istek bicimi kaymasi', 5, 'hizli'], ['sozlesmedeki alanin kaybolmasi', 4, 'hizli'], ['sema uyusmazligi', 8, 'orta'], ['kart durumunun guncellenmemesi', 7, 'orta'], ['durum kodu eslemesi', 6, 'orta'], ['reddedilen istekte uyari yoklugu', 4, 'orta'], ['gocte veri kaybi', 3, 'orta'], ['kontrol-sonra-yaz yarisi', 2, 'orta'], ['dagilima bagli rapor kusuru', 2, 'orta'], ['gecikme gerilemesi', 4, 'gecelik'], ['birlestirilmis sorgu', 3, 'gecelik'], ['kurtarma eksigi', 1, 'gecelik'], ['kapasite siniri', 1, 'gecelik'], ['erisilebilirlik olcutu', 5, 'surum'], ['az ornekle okunan yuzdelik', 1, 'surum'], ['anlamsal uyusmazlik', 3, 'kacar'], ['surec omrune bagli durum', 2, 'kacar'], ]; // Geri bildirim dakikasi otomasyon-altyapisi/01'in uc siklik duzeninden okundu. // TS20: asamaya gore geri donus (is) saati — gec yakalanan kusur baglam kaybi, yeniden // sinama ve uretimde olay yonetimi yuzunden buyur. TS21: kacan kusur uretimde bir surum // dongusu (2400 dk) sonra bildirilir; bir degisikligin taban dongu suresi 480 dk. export const GERI = { hizli: 8, orta: 49, gecelik: 425, surum: 2221, kacar: 2400 }; export const IS = { hizli: 0.25, orta: 1, gecelik: 3, surum: 6, kacar: 16 }; export const TABAN = 480, GUN = 480, DEGISIKLIK = 100; export const KAPASITE = 800; // TS22: 5 kisi x 20 is gunu x 8 saat // Donem 2'nin tek farki, otomasyon-altyapisi/01'in "elle is hat disi" duzenidir: elle // guvenlik incelemesi surum kapisindan cikarilir ve erisilebilirlik olcutu artik yakalanmaz. export const donem = (ikinci) => SINIF.map(([ad, n, a]) => [ad, n, ikinci && ad === 'erisilebilirlik olcutu' ? 'kacar' : a]); export function olc(k) { const kusur = k.reduce((a, [, n]) => a + n, 0); const kacan = k.filter(([, , a]) => a === 'kacar').reduce((a, [, n]) => a + n, 0); const is = k.reduce((a, [, n, x]) => a + n * IS[x], 0); const geri = k.reduce((a, [, n, x]) => a + n * GERI[x], 0) / kusur; // Dongu suresi: temiz ve kacan degisiklik tabanda birlesir, yakalanan kusur asamasinin // geri bildirimini ve geri donus isini bekler. const d = []; for (let i = 0; i < DEGISIKLIK - kusur; i += 1) d.push(TABAN); for (const [, n, x] of k) for (let i = 0; i < n; i += 1) d.push(x === 'kacar' ? TABAN : TABAN + GERI[x] + IS[x] * 60); d.sort((a, b) => a - b); const y = (q) => d[Math.ceil((q / 100) * d.length) - 1] / GUN; return { kusur, kacan, kacak: kacan / kusur, is, isOran: is / KAPASITE, geri, medyan: y(50), p90: y(90), yakalanan: kusur - kacan }; }
Döngü süresi hesabındaki bir ayrıntı sonucun tamamını belirler: kaçan kusur döngü süresini uzatmaz. Kimse onu görmediği için değişiklik zamanında birleşir; bedeli üretimde, başka bir kalemde ödenir. Bu satır, ilerideki tabloda döngü süresinin neden yanlış yöne gittiğini açıklar.
İki Dönem, Tek Karar
Karşılaştırılan iki dönem arasında tek bir fark vardır. Birinci dönem üç sıklık düzenini kullanır. İkinci dönemde ekip hattı ucuzlatmaya karar verir ve elle güvenlik incelemesini sürüm kapısından çıkarır — Sürekli Tümleştirmede Test dersinde bu düzenin değişiklik başına 98,2 dakikadan 86,2 dakikaya indiği ölçülmüştü. Aynı derste bu kararın kaçan hatayı beşten ona çıkardığı da ölçülmüştü; buradaki soru, göstergelerin bunu görüp göremediğidir.
// karar.mjs — bes gostergenin iki donemdeki degeri ve hangisinin bir karari degistirdigi import { SINIF, IS, KAPASITE, DEGISIKLIK, donem, olc } from './donem.mjs'; const D = [olc(donem(false)), olc(donem(true))]; const p = (x, n) => String(x).padStart(n); const b = (x, n) => x.toFixed(n); // Esik ve esigin kaynagi. Esigi olmayan gostergeye bagli bir karar da yoktur. const G = [ { ad: 'kacak orani', al: (x) => x.kacak * 100, y: (v) => `%${b(v, 2)}`, esik: 8, karar: 'envantere sinama ekle' }, { ad: 'geri donus orani', al: (x) => x.isOran * 100, y: (v) => `%${b(v, 2)}`, esik: 25, karar: 'sinifi erken asamaya tasi' }, { ad: 'dongu suresi p90', al: (x) => x.p90, y: (v) => `${b(v, 2)} gun`, esik: 3.5, karar: 'asama yerlesimini degistir' }, { ad: 'dongu suresi medyan', al: (x) => x.medyan, y: (v) => `${b(v, 2)} gun`, esik: null, karar: 'yok' }, { ad: 'ort geri bildirim', al: (x) => x.geri, y: (v) => `${b(v, 1)} dk`, esik: 480, karar: 'kapi sikligini degistir' }, { ad: 'yakalanan kusur', al: (x) => x.yakalanan, y: (v) => String(v), esik: null, karar: 'yok' }, ]; console.log(`${DEGISIKLIK} degisiklik, ${SINIF.length} kusur sinifi, ${D[0].kusur} kusur, ` + `${DEGISIKLIK - D[0].kusur} temiz degisiklik; ekip kapasitesi ${KAPASITE} saat`); console.log(`\n${'gosterge'.padEnd(19)}${p('donem 1', 10)}${p('donem 2', 10)}${p('esik', 9)}` + `${p('D1 asti', 9)}${p('D2 asti', 9)}${p('karar degisti', 15)}${' bagli karar'}`); let degistiren = 0; for (const g of G) { const [v1, v2] = [g.al(D[0]), g.al(D[1])]; const [a1, a2] = [g.esik !== null && v1 >= g.esik, g.esik !== null && v2 >= g.esik]; const degisti = g.esik !== null && a1 !== a2; if (degisti) degistiren += 1; console.log(`${g.ad.padEnd(19)}${p(g.y(v1), 10)}${p(g.y(v2), 10)}` + `${p(g.esik === null ? '-' : g.y(g.esik), 9)}${p(g.esik === null ? '-' : (a1 ? 'evet' : 'hayir'), 9)}` + `${p(g.esik === null ? '-' : (a2 ? 'evet' : 'hayir'), 9)}${p(degisti ? 'EVET' : 'hayir', 15)}` + ` ${g.karar}`); } // TS23: bir gostergenin donem basina toplama ve inceleme bedeli 30 dakika. console.log(`\n${G.length} gosterge x 30 dk = ${G.length * 30} dk/donem inceleme; ` + `karari degistiren ${degistiren}, gurultu ${(G.length - degistiren) * 30} dk`); // Karar "hangi sinif" sorusunu da sorar: geri donus saatinin sinif kirilimi. console.log(`\ngeri donus saatini en cok yiyen uc sinif ` + `(toplam ${b(D[0].is, 0)} -> ${b(D[1].is, 0)} saat)`); console.log(`${' '.repeat(3)}${p('donem 1', 32)}${p('donem 2', 32)}`); const sirala = (ikinci) => donem(ikinci).map(([ad, n, a]) => [ad, n * IS[a]]) .sort((x, y2) => y2[1] - x[1]).slice(0, 3); const [s1, s2] = [sirala(false), sirala(true)]; for (let i = 0; i < 3; i += 1) console.log(`${`${i + 1}.`.padEnd(3)}${p(`${s1[i][0]} ${b(s1[i][1], 0)} sa`, 32)}` + `${p(`${s2[i][0]} ${b(s2[i][1], 0)} sa`, 32)}`);
100 degisiklik, 19 kusur sinifi, 80 kusur, 20 temiz degisiklik; ekip kapasitesi 800 saat
gosterge donem 1 donem 2 esik D1 asti D2 asti karar degisti bagli karar
kacak orani %6.25 %12.50 %8.00 hayir evet EVET envantere sinama ekle
geri donus orani %22.75 %29.00 %25.00 hayir evet EVET sinifi erken asamaya tasi
dongu suresi p90 2.26 gun 1.23 gun 3.50 gun hayir hayir hayir asama yerlesimini degistir
dongu suresi medyan 1.05 gun 1.05 gun - - - hayir yok
ort geri bildirim 386.8 dk 398.0 dk 480.0 dk hayir hayir hayir kapi sikligini degistir
yakalanan kusur 75 70 - - - hayir yok
6 gosterge x 30 dk = 180 dk/donem inceleme; karari degistiren 2, gurultu 120 dk
geri donus saatini en cok yiyen uc sinif (toplam 182 -> 232 saat)
donem 1 donem 2
1. anlamsal uyusmazlik 48 sa erisilebilirlik olcutu 80 sa
2. surec omrune bagli durum 32 sa anlamsal uyusmazlik 48 sa
3. erisilebilirlik olcutu 30 sa surec omrune bagli durum 32 sa
Eşikler ve Kaynakları
Bir göstergenin değeri tek başına karar taşımaz; onu karara çeviren şey bir eşiktir ve eşiğin bir kaynağı olmak zorundadır.
- Kaçak oranı, yüzde 8. Kaynağı envanterin kör noktasıdır: Sürekli Tümleştirmede Test dersinde hiçbir sınama takımının görmediği iki kusur sınıfı sayıldı, seksen kusurun beşi. Bu, kaçak oranının tabanıdır — yüzde 6,25. Eşik bu tabanın altına konamaz, çünkü ulaşılamaz bir eşik hiçbir dönemde karar üretmez, yalnız kalıcı bir alarm bırakır.
- Geri dönüş oranı, yüzde 25. Kaynağı ekip kapasitesidir: 800 saatin dörtte biri 200 saattir ve bunun üstü, bir dönemin çeyreğinin yeni iş yerine düzeltmeye gitmesi demektir.
- Döngü süresi p90, 3,5 iş günü. Kaynağı sürüm kapısının kendisidir: o kapının ortalama beklemesi 1200 dakika, yani 2,5 iş günüdür. Eşik bunun altına konursa sürüm kapısına takılan her değişiklik eşiği aşar ve gösterge kapı düzeninin bir sonucunu kusur gibi bildirir.
- Ortalama geri bildirim, 480 dakika. Bir iş günü: bir kusurun sahibine aynı gün içinde ulaşması ölçütü.
- Döngü süresi medyanı ve yakalanan kusur sayısının eşiği yoktur, çünkü bağlı bir kararları yoktur.
Kararı Değiştiren Gösterge
Altı göstergeden ikisi bir kararı değiştirdi. Kaçak oranı yüzde 6,25’ten yüzde 12,50’ye çıkarak eşiği geçti; geri dönüş oranı yüzde 22,75’ten yüzde 29,00’a çıkarak geçti. Kalan dördü ya eşiği hiçbir dönemde aşmadı ya da eşiği yoktu.
İki gösterge aynı yönde hareket etti ama aynı şeyi göstermiyor. Kaçak oranı kusur sayar, geri dönüş oranı saatle tartar ve sıraları farklıdır. Birinci dönemde geri dönüş saatini en çok yiyen sınıf anlamsal uyuşmazlıktır: 48 saat, ama yalnız üç kusur. Seksen kusurun içinde üç kusur hiçbir sayım tabanlı listede üste çıkmaz; saatle tartıldığında birinci sıradadır. İkinci dönemde erişilebilirlik ölçütü 30 saatten 80 saate fırlayarak birinci sıraya geçiyor — beş kusurun tamamı artık üretimde bulunuyor ve düzeltmeleri altı saat yerine on altı saat sürüyor. Karar bu yüzden “bir şey yap” değil, “şunu yap” biçiminde çıkar.
Kalan dört gösterge dersin asıl bulgusudur. Döngü süresi p90’ı 2,26 günden 1,23 güne düştü — yani kalite düşerken bu gösterge iyileşti. Nedeni koddaki tek satırda yazılı: kaçan kusur döngü süresini uzatmaz. Sürüm kapısında bekleyen beş değişiklik artık orada beklemiyor, çünkü orada onları bekleten bir sınama kalmadı. Medyan ise hiç kıpırdamadı, 1,05 gün. Bir sınamayı silmek, döngü süresini her zaman iyileştirir.
Ortalama geri bildirim süresi 386,8 dakikadan 398,0 dakikaya, yani yüzde üç kadar bozuldu — kaçak iki katına çıkarken. Bunun nedeni sayıların yakınlığıdır: sürüm kapısı bir kusuru 2221 dakikada bildiriyordu, üretimdeki bir kaçan hata 2400 dakikada bildiriliyor. Ortalama, yakalamayı kaçırmadan ayırt edemez. Yakalanan kusur sayısı da 75’ten 70’e düştü; tek başına okunduğunda “daha az hata” gibi görünen bu satırın anlattığı şey daha az yakalamadır.
Dikkat hesabı bunun bedelini verir: altı gösterge dönem başına 180 dakika toplama ve inceleme ister, 120 dakikası hiçbir kararı değiştirmez. Kararı değiştirmeyen gösterge gürültüdür — ve bedeli yalnız o 120 dakika değildir. Aynı dönemde döngü süresi ile yakalanan kusur sayısı birlikte iyileşmiş görünüyor; ikisine bakan bir ekip, kaçağı ikiye katlayan kararı bir başarı olarak okuyabilir.
Kararın Geri Dönüşü
Kaçak oranının kararı envanteri değiştirir: kör noktadaki sınıf için yeni bir sınama yazılır ve o sınamanın koşum bedeli bir sonraki dönemin hat süresine eklenir. Bu, döngü süresini kötüleştirir. Göstergeler birbirinden bağımsız değildir; biri iyileştirilirken öteki ödeme yapar ve bu yüzden tek bir gösterge hedef alınmaz.
Geri dönüş oranının kararı bir kusur sınıfını erken bir aşamaya taşır ve sahibi kapı düzenini kuran kişidir. Döngü süresinin kararı aşama yerleşimini değiştirir. Bağlı kararı olmayan bir göstergenin sahibi yoktur; dönem toplantısında bir sayı olarak okunur, kimse ona dayanarak bir şey yapmaz ve bedeli her dönem yeniden ödenir.
Özet
- Kaçak oranı, geri dönüş (iş) oranı ve döngü süresi aynı kusur kümesinden hesaplandı; geri dönüş (iş), Dayanıklılık ve Güvenilirlik kursundaki geri dönüşten (devralma sonrası asıl kopyaya dönüş) ayrı bir kavramdır.
- Hattı ucuzlatan tek bir karar kaçak oranını yüzde 6,25’ten yüzde 12,50’ye, geri dönüş oranını yüzde 22,75’ten yüzde 29,00’a çıkardı; ikisi de eşiğini geçti ve bir karar üretti.
- Aynı karar döngü süresi p90’ını 2,26 günden 1,23 güne düşürdü, çünkü kaçan kusur döngü süresini uzatmaz; medyan hiç değişmedi ve yakalanan kusur 75’ten 70’e indi.
- Ortalama geri bildirim süresi yalnız yüzde üç bozuldu: üretimde fark etme süresi (2400 dk) sürüm kapısının beklemesine (2221 dk) yakın olduğu için ortalama kaçırmayı gizler.
- Altı göstergenin ikisi bir kararı değiştirdi; kalan dördü dönem başına 120 dakika dikkat yedi ve ikisi yanlış yöne işaret etti. Kararı değiştirmeyen gösterge gürültüdür.
Sonraki Adım
Göstergeler bir şeyi söylüyor, bir şeyi söylemiyor. Söyledikleri: bu dönemde şema uyuşmazlığı sekiz kez geldi, sınır karşılaştırması on üç kez, ve geri dönüş saatinin çoğu birkaç sınıfta toplanıyor. Söylemedikleri: neden. Sekiz şema uyuşmazlığının sekizi de ayrı ayrı düzeltildi ve her biri kendi geri dönüş saatini yeniden ödetti; sekizin altında tek bir ortak neden varsa hiçbir gösterge bunu göstermez, çünkü göstergeler sayar, açıklamaz. Aynı sınıfın yinelenmesi bir kusur değil bir belirtidir ve belirtiden nedene inen bir yöntem gerekir. Sonraki ders o yöntemi kurar.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.