---
title: 'Uyumluluk Gereksinimleri'
source: 'https://academia.sh/tr/kurslar/mimari-yonetisim/uyumluluk-gereksinimleri'
course: 'Kalite Nitelikleri ve Yönetişim'
language: tr
updated: '2026-08-17T18:10:33+00:00'
license: 'CC BY-SA 4.0'
---

# Uyumluluk Gereksinimleri

Dışarıdan gelen kısıtların denetime çevrilmesi: beş kısıt türünün 15 bildirilmiş kopya üzerinde koşturulması, dar erişim tanımıyla 10 ihlalin 7'sinin yakalanıp 3'ünün kaçması, tanım genişleyince yakalananın 8'e ve yanlış alarmın 3'e çıkması, gevşetme yerine yılda 27.375 satır kanıt üretilmesi ve kısıtın mimariye bir yeni bileşen ile 11 yeni bağa mal olması.

Önceki ders kuralın eskimesini ölçtü ve iki çıkış yolu saydı: yapılandırmayı güncellemek ya da
kuralı gevşetmek. İkisi de mimarinin elindeydi, çünkü kuralları mimarinin kendisi koymuştu — kapı
listesini, izin listesini ve istisnaları seçen de, eskiyince değiştiren de aynı taraftı.

Bu dersin kısıtları dışarıdan gelir. Bir **uyumluluk gereksinimi** (compliance requirement),
sistemin dışındaki bir yükümlülüğün mimariye düşen payıdır; kaldırmak, gevşetmek ya da kendi
kararıyla istisna yazmak seçenek değildir. Kursun ölçüsü aynı kalır — kısıt koşturulabilir bir
denetime çevrilebiliyor mu, çevrilemiyorsa yerine ne konuyor — ama üç yerde ayrışır: gevşetmenin
yerini **kanıt** alır, çevrilemeyen kısım kuralın yorumunda durur ve kısıt mimarinin biçimini
doğrudan değiştirir. Kısıtlar burada **tür olarak** anılır: saklama süresi zorunluluğu, veri
yerleşimi kısıtı, silme hakkı, erişim kaydı tutma yükümlülüğü, denetlenebilirlik yükümlülüğü.

## Beş Kısıt Türü, Beş Denetim

Örnek yine kursun kurgu **bölgesel kütüphane ağı**dır. **YN19 — veri sınıfı çizelgesi:** beş veri
sınıfı, her biri için saklama alt sınırı, üst sınırı, izinli bölge, silme hakkının olup olmadığı ve
erişim kaydı yükümlülüğü. **YN20 — bildirilmiş kopya çizelgesi:** on beş kopya; her satır bir veri
sınıfının bir bileşende, bir bölgede duran örneğidir ve en eski kaydın yaşını, erişim kaydının
tutulup tutulmadığını, silme akışına bağlı olup olmadığını taşır. **YN21 — bilinen ihlal kümesi:**
on elle etiketli ihlal; ikisi çizelgede hiç görünmeyen **bildirilmemiş kopya**dır. **YN22 — erişim
tanımının iki kapsamı:** dar tanım yalnız doğrudan okumayı erişim sayar, geniş tanım türetilmiş
okumayı da sayar.

Aşağıdaki dosya çizelgeleri, beş denetimi ve ölçümü kurar. Süreç içi bir **modeldir**; gerçek depo,
ağ ya da kayıt yoktur.

```js
// uyum/olc.mjs — disaridan gelen kisitlarin koşturulabilir denetime cevrilmesi. Surec ici model:
// bolgesel kutuphane agi (kurgu); gercek depo, ag ve kayit yoktur, her kopya bir satirdir.

const satir = (s) => s.trim().split("\n").map((l) => l.trim().split("|"));
const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));

// Veri sinifi: ad|saklama alt siniri (gun)|ust sinir (0 = yok)|izinli bolge|silme hakki|erisim kaydi
const SINIF = Object.fromEntries(satir(`
  uye-kimlik|0|1825|ic|1|1
  odunc-kaydi|365|1095|ic|1|1
  odeme-kaydi|3650|0|ic|0|1
  arama-gecmisi|0|180|ic dis|1|1
  erisim-kaydi|730|2555|ic|0|0`).map(([ad, alt, ust, b, s, k]) => [ad, { alt: +alt, ust: +ust,
  bolge: b.split(" "), silme: s === "1", kayit: k === "1" }]));

// Bildirilmis kopya: sinif|bilesen|bolge|en eski kaydin yasi|erisim kaydi tutuluyor|silme akisinda|okuma
const KOPYA = satir(`
  uye-kimlik|uyelik|ic|900|1|1|dogrudan
  uye-kimlik|odunc|ic|1200|1|1|dogrudan
  uye-kimlik|bildirim|ic|400|0|0|dogrudan
  uye-kimlik|arsiv|dis|2000|0|0|dogrudan
  uye-kimlik|yedek|ic|2200|0|0|dogrudan
  odunc-kaydi|odunc|ic|1200|1|1|dogrudan
  odunc-kaydi|rapor|ic|1500|0|0|turetilmis
  odunc-kaydi|arsiv|dis|2000|0|0|dogrudan
  odeme-kaydi|ucret|ic|2000|1|0|dogrudan
  odeme-kaydi|yedek|ic|2200|0|0|dogrudan
  odeme-kaydi|rapor|ic|3700|0|0|turetilmis
  arama-gecmisi|katalog-kapisi|ic|30|0|1|turetilmis
  arama-gecmisi|rapor|ic|300|0|0|turetilmis
  erisim-kaydi|olay-gunlugu|ic|800|1|0|dogrudan
  erisim-kaydi|yedek|ic|2200|0|0|dogrudan`).map(([sinif, bilesen, bolge, yas, kayit, silme, okuma]) =>
  ({ ad: `${sinif}|${bilesen}`, sinif, bilesen, bolge, yas: +yas,
    kayit: kayit === "1", silme: silme === "1", okuma }));

// Bes kisit turu. "kapsam" erisim tanimidir: dar yalnizca dogrudan okumayi erisim sayar.
const denetim = (kapsam) => ({
  "D1 saklama ust siniri": (k) => SINIF[k.sinif].ust > 0 && k.yas > SINIF[k.sinif].ust,
  "D2 saklama alt siniri": (k) => SINIF[k.sinif].alt > 0 && k.yas < SINIF[k.sinif].alt,
  "D3 veri yerlesimi": (k) => !SINIF[k.sinif].bolge.includes(k.bolge),
  "D4 silme hakki": (k) => SINIF[k.sinif].silme && !k.silme,
  "D5 erisim kaydi": (k) => SINIF[k.sinif].kayit && !k.kayit
    && (kapsam === "genis" || k.okuma === "dogrudan"),
});

// Elle etiketlenmis gercek ihlal kumesi (model girdisi); son ikisi bildirilmemis kopyadir
const GERCEK = satir(`
  uye-kimlik|bildirim
  uye-kimlik|arsiv
  odunc-kaydi|odunc
  odunc-kaydi|rapor
  odunc-kaydi|arsiv
  odeme-kaydi|yedek
  arama-gecmisi|katalog-kapisi
  arama-gecmisi|rapor
  uye-kimlik|rapor
  odeme-kaydi|bildirim`).map((x) => x.join("|"));

const KAPSAM = ["dar", "genis"];
console.log(`${KOPYA.length} bildirilmis kopya, ${Object.keys(SINIF).length} veri sinifi, ` +
  `${Object.keys(denetim("dar")).length} kisit turu, ${GERCEK.length} elle etiketli ihlal ` +
  `(${GERCEK.filter((a) => !KOPYA.some((k) => k.ad === a)).length} tanesi bildirilmemis kopya)`);

const K = [-24, 12, 12];
console.log();
yaz(K, "kisit turu", "isaretli: dar", "genis");
for (const ad of Object.keys(denetim("dar")))
  yaz(K, ad, ...KAPSAM.map((s) => KOPYA.filter(denetim(s)[ad]).length));

const S = [-16, 16, 11, 7, 14, 13], R = {};
console.log();
yaz(S, "erisim tanimi", "isaretli kopya", "yakalanan", "kacan", "yanlis alarm", "dogru gecen");
for (const s of KAPSAM) {
  const d = denetim(s);
  const isaretli = KOPYA.filter((k) => Object.values(d).some((f) => f(k)));
  const yakalanan = isaretli.filter((k) => GERCEK.includes(k.ad)).length;
  R[s] = { isaretli: isaretli.length, yakalanan, kacan: GERCEK.length - yakalanan,
    yanlis: isaretli.length - yakalanan,
    dogru: KOPYA.length - isaretli.length - (GERCEK.length - yakalanan
      - GERCEK.filter((a) => !KOPYA.some((k) => k.ad === a)).length) };
  yaz(S, s, R[s].isaretli, `${yakalanan}/${GERCEK.length}`, R[s].kacan, R[s].yanlis, R[s].dogru);
}

// Kanit: gevsetme secenegi yok, kosum kaydi isteniyor. Kanit da bir veri sinifidir.
const SATIR_BAYT = 120, GUN = 365, SAKLA = SINIF["erisim-kaydi"].ust;
const kosum = KOPYA.length * Object.keys(denetim("dar")).length;
console.log(`\nkanit: kosum basina ${KOPYA.length} x 5 = ${kosum} satir; gunde bir kosum -> ` +
  `yilda ${(kosum * GUN).toLocaleString("tr-TR")} satir, ` +
  `${((kosum * GUN * SATIR_BAYT) / 1e6).toFixed(2)} MB`);
console.log(`kanit ${SAKLA} gun saklanir (erisim kaydi ust siniri) -> ` +
  `${(kosum * SAKLA).toLocaleString("tr-TR")} satir, ${((kosum * SAKLA * SATIR_BAYT) / 1e6).toFixed(2)} MB`);

// Kisitin mimariye maliyeti: yerinden oynayan bilesen ve yeni bag
const M = [-28, 10, 12];
console.log();
yaz(M, "mimariye maliyet", "dar", "genis");
const disari = new Set(KOPYA.filter(denetim("dar")["D3 veri yerlesimi"]).map((k) => k.bilesen));
const silmeBag = KOPYA.filter(denetim("dar")["D4 silme hakki"]).length;
yaz(M, "yerinden oynayan bilesen", disari.size, disari.size);
yaz(M, "yeni bilesen (silme yayini)", 1, 1);
yaz(M, "yeni bag: silme akisi", silmeBag, silmeBag);
const kayitBag = KAPSAM.map((s) => KOPYA.filter(denetim(s)["D5 erisim kaydi"]).length);
yaz(M, "yeni bag: erisim kaydi", ...kayitBag);
yaz(M, "yeni bag toplam", ...kayitBag.map((x) => x + silmeBag));

// Cevrilemeyen kisim: yukumlulugun yorumu ve kapsamin siniri
const [YORUM, GOZDEN, SAAT] = [6, 2, 3];                     // model girdisi
console.log(`\ncevrilemeyen: yukumlulugun yorumu ve kapsamin siniri; yerine ${YORUM} yorum kaydi, ` +
  `yilda ${GOZDEN} gozden gecirme x ${SAAT} kisi-saat = ${YORUM * GOZDEN * SAAT} kisi-saat/yil`);
console.log(`yorum dar'dan genis'e cevrilince: yakalanan ${R.dar.yakalanan} -> ${R.genis.yakalanan}, ` +
  `kacan ${R.dar.kacan} -> ${R.genis.kacan}, yanlis alarm ${R.dar.yanlis} -> ${R.genis.yanlis}, ` +
  `yeni bag ${kayitBag[0] + silmeBag} -> ${kayitBag[1] + silmeBag}`);
```

```
15 bildirilmis kopya, 5 veri sinifi, 5 kisit turu, 10 elle etiketli ihlal (2 tanesi bildirilmemis kopya)

kisit turu              isaretli: dar       genis
D1 saklama ust siniri              6           6
D2 saklama alt siniri              2           2
D3 veri yerlesimi                  2           2
D4 silme hakki                     6           6
D5 erisim kaydi                    5           9

erisim tanimi     isaretli kopya  yakalanan  kacan  yanlis alarm  dogru gecen
dar                            9       7/10      3             2            5
genis                         11       8/10      2             3            4

kanit: kosum basina 15 x 5 = 75 satir; gunde bir kosum -> yilda 27.375 satir, 3.29 MB
kanit 2555 gun saklanir (erisim kaydi ust siniri) -> 191.625 satir, 23.00 MB

mimariye maliyet                   dar       genis
yerinden oynayan bilesen             1           1
yeni bilesen (silme yayini)          1           1
yeni bag: silme akisi                6           6
yeni bag: erisim kaydi               5           9
yeni bag toplam                     11          15

cevrilemeyen: yukumlulugun yorumu ve kapsamin siniri; yerine 6 yorum kaydi, yilda 2 gozden gecirme x 3 kisi-saat = 36 kisi-saat/yil
yorum dar'dan genis'e cevrilince: yakalanan 7 -> 8, kacan 3 -> 2, yanlis alarm 2 -> 3, yeni bag 11 -> 15
```

Sayılar **ölçüm** sınıfındadır; girdileri yukarıdaki varsayımlardır. Beş kısıt türünün beşi de
koşturulabilir bir denetime çevriliyor: saklama süresinin iki ucu birer karşılaştırma, yerleşim
bir küme üyeliği, silme hakkı bir erişilebilirlik sorusu, erişim kaydı bir yüklem. Dar tanımda on
beş kopyanın dokuzu işaretleniyor; on ihlalin yedisi yakalanıyor, üçü kaçıyor, iki temiz kopyaya
yanlış alarm veriliyor.

Kaçan üçün ikisi denetimin göremeyeceği yerdedir: çizelgede bildirilmemiş kopyalar. Denetim yalnız
bildirilen kopyayı okur ve bildirilmeyen için ürettiği sayı yoktur — bu kuralın kaçırması değil,
**veri kaynağının eksikliğidir** ve kuralı sıkılaştırmak onu kapatmaz. Yanlış alarmların ikisi de
kapsam kusurudur: yedekteki üye kimliği saklama üst sınırını aştığı için işaretleniyor ama yedek
ayrı bir düzenin konusudur; ücret bileşenindeki ödeme kaydı alt sınırın altında görünüyor ama alt
sınırı karşılayan kayıt başka bir depoda duruyor. İkisi de denetimin yanlışı değil, denetimin
baktığı çizelgenin dar oluşudur.

## Gevşetme Yok, Kanıt Var

Önceki derste yanlış alarmın ürettiği davranış kuralı kapatmaktı ve iki kural kapatıldığında
yakalanan yediden dörde inmişti. Burada o düğme yoktur. Dışarıdan gelen kısıtın ayırt edici yanı,
uyulmadığının değil **uyulduğunun gösterilmesinin** istenmesidir: istisna yerine kanıt.

Kanıt bir çıktıdır ve bedeli sayılır. Koşum başına on beş kopya çarpı beş kısıt, yani 75 satır;
günde bir koşumla yılda 27.375 satır ve 3,29 MB. Kanıt kaydı denetlenebilirlik yükümlülüğü gereği
saklanır — **YN23**, erişim kaydının üst sınırı olan 2555 gün — ve toplamı 191.625 satır, 23,00 MB
olur. Buradaki kapalı halka söylenmeye değer: **kanıt da bir veri sınıfıdır.** Kendi saklama süresi,
kendi yerleşim kısıtı ve kendi erişim kaydı yükümlülüğü vardır; denetim, ürettiği kaydı da
denetlemek zorundadır.

## Kısıtın Mimariye Maliyeti

Kısıt yalnız bir denetim eklemez, bileşenleri de yerinden oynatır. **YN24 — kısıtın uygulanışı:**
izinli bölgenin dışında duran kopyaları taşıyan bileşen bölge içine taşınır, silme hakkı için bir
**silme yayını** bileşeni eklenir ve akışa bağlı olmayan her kopyaya bir bağ açar, erişim kaydı
tutulmayan her erişim için olay günlüğüne bir bağ açılır.

Alt tablo bunu sayıyor: bir bileşen yerinden oynuyor (arşiv, bölge dışındaki iki kopyayı taşıdığı
için), bir bileşen doğuyor ve on bir yeni bağ açılıyor — altısı silme akışı, beşi erişim kaydı. Bu
bağların hiçbiri bir niteliği yükseltmek için seçilmedi ve hiçbiri bir ödünleşmenin sonucu değil;
mimarinin biçimini burada bir dış yükümlülük belirliyor. Ölçünün değeri de bu: kısıtın bedeli
"uyum maliyeti" diye tek kalemde değil, taşınan bileşen ve açılan bağ olarak duruyor.

## Çevrilemeyen Kısım: Yükümlülüğün Yorumu

Beş denetimin beşi de bir tanımı verilmiş kabul eder. "Erişim" nedir — bir raporun türetilmiş
okuması erişim midir? "Silme" nedir — maskeleme silme sayılır mı? Denetim bu soruları yanıtlamaz,
yanıtı **girdi olarak alır**. Çevrilemeyen kısım budur: yükümlülüğün yorumu ve kapsamın sınırı.

Yerine konan şey yazılı yorum kaydıdır ve bedeli sayılır — **YN25:** altı yorum kaydı, yılda iki
gözden geçirme, kalem başına üç kişi-saat, toplam 36 kişi-saat. Asıl ölçüm ise yorumun sonucudur.
Aynı denetim, "erişim" tanımı dardan genişe çevrildiğinde başka bir şey ölçer: yakalanan yediden
sekize çıkar, kaçan üçten ikiye iner, yanlış alarm ikiden üçe çıkar ve mimarideki yeni bağ on
birden on beşe. Tek bir sözcüğün kapsamı dört sayıyı birden değiştiriyor. **Çevrilemeyen kısım
denetimin dışında değil, girdisindedir**; kuralın kendisi kadar açık yazılmadığında denetimin
ürettiği her sayı tartışmalı hâle gelir.

## Özet

- Beş dış kısıt türünün beşi de koşturulabilir denetime çevrildi: saklama süresinin alt ve üst
  sınırı, veri yerleşimi, silme hakkı, erişim kaydı.
- Dar erişim tanımında on beş bildirilmiş kopyanın dokuzu işaretleniyor; on ihlalin yedisi
  yakalanıyor, üçü kaçıyor, iki temiz kopyaya yanlış alarm veriliyor.
- Kaçan üçün ikisi bildirilmemiş kopyadır: denetim yalnız bildirilen kopyayı okur ve bildirilmeyen
  için ürettiği sayı yoktur.
- Gevşetme seçeneği yoktur, yerine kanıt istenir: yılda 27.375 satır ve 3,29 MB, 2555 günlük
  saklamayla 191.625 satır ve 23,00 MB. Kanıt da bir veri sınıfıdır ve kendi kısıtlarına tabidir.
- Kısıtın mimariye maliyeti sayıldı: bir bileşen yerinden oynuyor, bir bileşen doğuyor, on bir yeni
  bağ açılıyor (geniş tanımda on beş).
- Çevrilemeyen kısım yükümlülüğün yorumu ve kapsamın sınırıdır; yerine konan altı yorum kaydı yılda
  36 kişi-saat eder ve tanımı genişletmek yakalananı 7'den 8'e, yanlış alarmı 2'den 3'e taşır.

## Kurs Kapanışı

Kurs on derste tek bir soruyu sordu: bir nitelik ya da mimari kural, koşturulabilir bir denetime
çevrilebiliyor mu, çevrilemiyorsa yerine ne konuyor?

| Ders | Denetime çevrilen | Yakalanan / kaçan / yanlış alarm | Çevrilemeyen ve yerine konan |
|---|---|---|---|
| Nitelik Ağacı | 30 yaprağın 25'i bir sayıya, 20'si denetime bağlandı | 11 / 7 / 23 | 10 yaprak; çeyrek ölçüm oturumu ve gözden geçirme kaçanın 4'ünü 8,5 pencere gecikme ve 100 kişi-saatle yakalıyor |
| Nitelikler Arası Gerilim | 12 karardan gerilim matrisi, eşik taraması | sekiz puanda 4 / 1 / 0, altı puanda 4 / 1 / 5 | düşüşün kabul edilebilirliği bir yargıdır; yerine 5 muafiyet kaydı, yanlış alarm 5 → 0 |
| Güvenlik Mimarisi | 7 bölge, 8 sınır, 18 geçiş; sınır başına gerekli denetim | 6 / 4 / 3 (3 açık boşluk) | sınırın doğru yerde olup olmadığı; 8 sınır için çeyrekte gözden geçirme, 24 kişi-saat |
| Ölçeklenebilirlik Kararları | üç ölçek birimi adayında kopyalama kuralı | 5 / 1 / 1 (3 doğru sessizlik) | bildirilmeyen paylaşılan kaynak; yerine kopyalama sınaması, 10 denemede 60 kişi-saat |
| Sürdürülebilirlik Ölçütleri | 12 değişikliğin dosya, modül ve derinlik ölçütü; eşik kuralı | 3 / 1 / 1 (7 doğru sessizlik) | değişikliğin zorluğu; çeyrekte 12 kişi-saatlik yerleşim gözden geçirmesi, altı çeyrekte 72 |
| Mimari Yönetişim Modelleri | 9 yönetişim kuralının 5'i denetime çevrildi; 24 karar | merkezî 12 / 0 / 8, federatif 9 / 3 / 1, danışman 6 / 6 / 1 | 4 kural; yerine 1/3 örneklem, 32 elle bakış, 12 ihlalin 7'sini görmüyor |
| Uygunluk İşlevleri | F1 yüzey büyüklüğü, F2 ölü yüzey oranı | F1 `> 2` ile 5 / 0 / 6, `> 10` ile 1 / 4 / 0; F2 4 / 1 / 1 | "dışa açılan ad modülün işini anlatır"; yerine 66 sembolün 22'sini okuyan örneklem |
| Bağımlılık ve Katman Denetimi | aynı katman kuralının beş biçimi; 13 modül, 34 kenar | yasak listesi 3 / 6 / 0, katman izin listesi 7 / 2 / 1, modül izin listesi 9 / 0 / 0 | onaylanmış göç kenarı kuralla anlatılamıyor; yerine 2 süreli istisna kaydı, süre denetimi olmadan yakalama 7 → 6 |
| Evrimsel Mimari | değişime açıklığı ölçen uygunluk işlevi; 12 öneri | 7 / 1 / 1 | henüz istenmemiş değişikliğin ucuzluğu; yerine 6 senaryo ve yılda 4 gözden geçirme (24 kalem), gelen 12 değişikliğin 5'ini kapsıyor |
| Uyumluluk Gereksinimleri | beş dış kısıt türü, 15 bildirilmiş kopya | dar tanımda 7 / 3 / 2, geniş tanımda 8 / 2 / 3 | yükümlülüğün yorumu ve kapsamın sınırı; yerine 6 yorum kaydı, yılda 36 kişi-saat |

Tablonun kuralı adıyla anılmalı: **bir nitelik ya da mimari kural, koşturulabilir bir denetime
çevrilebildiği ölçüde yönetilebilir; çevrilemeyen kısım adıyla yazılır ve yerine konan sayılır.**
"Bu nitelik önemlidir" cümlesi bu kursta hiçbir yerde karar taşımadı. Üç sütun birbirinin yerine de
geçmez: ikincisi denetimin neye baktığını, üçüncüsü ne kadarını doğru gördüğünü, dördüncüsü hiç
bakamadığı yerde ne yapıldığını söyler. Üçünü birden yazmayan bir yönetişim düzeni yalnız
yakaladıklarını bilir.

Tabloda iki örüntü tekrar ediyor. Birincisi, yakalamayı artıran her ayar yanlış alarmı da
artırıyor — Nitelik Ağacı'nın 23 alarmı, Nitelikler Arası Gerilim'in altı puanlık eşiği, bu dersin
geniş erişim tanımı — ve yanlış alarmın bedeli kuralın kapatılmasıdır: Nitelik Ağacı'nda iki
denetim kapatılınca yakalanan 11'den 9'a, Uygunluk İşlevleri'nde F1 dördüncü yayımda kapanınca 9
ihlalli yayımın 8'i, Evrimsel Mimari'de iki kural kapatılınca yakalanan 7'den 4'e gitti. İkincisi,
çevrilemeyenin yerine konan şey her derste **insan zamanıdır** ve pahalıdır: 100, 24, 60, 72 ve 36
kişi-saat, 32 elle bakış, 22 sembollük örneklem, 24 inceleme kalemi.

Kursun bıraktığı soru tablonun altındadır. Kurallar yazıldı, denetime çevrildi, yakaladığı ve
kaçırdığı sayıldı. Ama kuralı yazan, koşturan, yanlış alarm karşısında kapatan ve çevrilemeyen
kısım için gözden geçirme oturumuna oturan **insanlardır**. Ekiplerin nasıl bölündüğü, kararın
hangi sınırda alındığı ve teslimatın nasıl aktığı mimariyi doğrudan biçimlendiriyor; bu kurs
boyunca hiç ele alınmadı. Sonraki kurs **Süreç, Ekip ve Teslimat** o katmanı ele alır.
