---
title: 'Kurumsal Mimari Kavramı'
source: 'https://academia.sh/tr/kurslar/kurumsal-baglam/kurumsal-mimari-kavrami'
course: 'Kurumsal Bağlam ve Tümleştirme'
language: tr
updated: '2026-08-17T18:10:34+00:00'
license: 'CC BY-SA 4.0'
---

# Kurumsal Mimari Kavramı

Tek sistemin dışına çıkan düzey: kurumun sistemlerini, sahiplerini, bütçelerini ve iş yeteneklerini bir veri yapısına çevirmek, iş ile teknoloji arasındaki hizalamayı üç sayıya bağlamak — hiçbir sistemin karşılamadığı yetenek, birden çok sistemin karşıladığı yetenek ve hiçbir yeteneğe bağlanamayan sistem.

Önceki kurs kararı bir kayda, sistemi bir görünüme çevirdi ve her belgeyi yanıtladığı soru
sayısıyla ölçtü. O kayıtların ve görünümlerin hepsinin ortak bir sınırı vardı: tek bir sistemin
içinde duruyorlardı. Oysa bir sistem kendi başına durmaz. Yanında, aynı üyeye aynı gün hizmet
veren başka sistemler vardır; bazısı dışarıdan alınmıştır, bazısının bütçesi başka bir birimin
kaleminden çıkar, bazısına o kurumun hiçbir çalışanı kod yazamaz.

Bu ders ölçeği bir basamak yukarı taşıyor. Mimarın Rolü kursundaki mimarlık düzeyleri dersi
kurumsal düzeyi kapsamla tanımlamıştı: bir kararın bağladığı dağıtım birimi sayısı. O dersin
habersiz birim ölçümü burada tekrarlanmaz, girdi olarak alınır. Değişen şey birimin kendisidir:
artık ayrı yayınlanan bir dağıtım birimi değil, **ayrı sahibi ve ayrı bütçesi olan bir sistem**
sayılıyor. Kurumsal mimari (enterprise architecture) bu ölçeğin adıdır ve ilk sorusu şudur: kurumun
yapmak zorunda olduğu işler ile elindeki sistemler birbirini ne kadar karşılıyor.

## Kurum Bir Veri Yapısıdır

**İş ve teknoloji hizalaması** (business–IT alignment), söz olarak bakıldığında ölçülemez bir
iddiadır. Ölçülebilir hale gelmesi için iki listenin yan yana konması gerekir: kurumun karşılamak
zorunda olduğu **iş yetenekleri** (business capability) ve bu yetenekleri karşıladığını iddia eden
sistemler. Yetenek listesi sistemlerden türetilmez; kurumun kendi işinden gelir (**KM1**). Bu ayrım
ölçümün tamamını taşır: liste sistemlerden türetilseydi karşılanmayan bir yetenek hiç görünmezdi.

Model olarak bölgesel bir kütüphane ağı kullanılıyor. Kurgudur; gerçek bir kurum, satıcı, ürün ya
da kişi anlatılmaz. Ağda şube sistemleri, dışarıdan alınmış bir katalog sistemi, içeride yazılmış
ödünç ve ücretlendirme servisleri, ayrı bir üyelik sistemi, belediye tarafında duran bir kimlik
doğrulama servisi ve raporlama isteyen bir yönetim birimi var. Sahipler ve bütçeler ayrıdır.

Bir sistem, ayrı bütçeden ödenen, ayrı sahibi olan ve ayrı yayınlanan yazılımdır (**KM2**). Sistem
kaydındaki karşılama listesi bir **iddiadır**; iddianın kodda karşılığı olup olmadığı bu derste
sınanmaz (**KM3**). **Bağ** (integration edge), aynı veri varlığı üzerinden yazan sistemden okuyan
sisteme giden yönlü çifttir (**KM4**) — bu kursun ölçü birimi budur.

```js
// kurum/model.mjs — MODEL bolgesel kutuphane agi: sistemler, sahipler, yetenekler, veri.
// Kurgudur; gercek bir kurum, satici, urun ya da kisi anlatilmaz.
export const SISTEM = {
  katalog: { sahip: "dis-saglayici", butce: "hizmet-bedeli" },
  odunc: { sahip: "bt-birimi", butce: "ic-gelistirme" },
  ucretlendirme: { sahip: "bt-birimi", butce: "ic-gelistirme" },
  uyelik: { sahip: "uye-hizmetleri", butce: "uye-hizmetleri" },
  kimlik: { sahip: "belediye-bt", butce: "belediye" },
  "sube-yerel": { sahip: "sube-yonetimi", butce: "sube" },
  kiosk: { sahip: "sube-yonetimi", butce: "sube" },
  raporlama: { sahip: "yonetim-birimi", butce: "yonetim" },
  arsiv: { sahip: "yok", butce: "yok" },
};
// YETENEK — kurumun karsilamak zorunda oldugu is yetenekleri (sistemden bagimsiz liste)
export const YETENEK = ["materyal-arama", "odunc-verme", "iade-alma", "ayirtma",
  "uyelik-acma", "uye-dogrulama", "ucret-hesaplama", "ucret-tahsilati",
  "subeler-arasi-aktarim", "demirbas-sayimi", "kullanim-raporlama",
  "satin-alma-onerisi", "gecikme-bildirimi"];
// KARSILAMA[s] = s sisteminin karsiladigini iddia ettigi yetenekler
export const KARSILAMA = {
  katalog: ["materyal-arama", "demirbas-sayimi"],
  odunc: ["odunc-verme", "iade-alma", "ayirtma", "gecikme-bildirimi"],
  ucretlendirme: ["ucret-hesaplama", "gecikme-bildirimi"],
  uyelik: ["uyelik-acma", "uye-dogrulama"],
  kimlik: ["uye-dogrulama"],
  "sube-yerel": ["iade-alma", "subeler-arasi-aktarim", "demirbas-sayimi"],
  kiosk: ["odunc-verme", "materyal-arama"],
  raporlama: ["kullanim-raporlama"],
  arsiv: [],
};
// VERI[v] = veri varligi; hangi sistem yaziyor, hangileri okuyor
export const VERI = {
  "uye-kaydi": { yazan: ["uyelik"], okuyan: ["odunc", "ucretlendirme", "kiosk", "raporlama"] },
  "kimlik-eslesmesi": { yazan: ["kimlik", "uyelik"], okuyan: ["odunc", "kiosk"] },
  "materyal-kaydi": { yazan: ["katalog"], okuyan: ["odunc", "kiosk", "sube-yerel", "raporlama"] },
  "nusha-durumu": { yazan: ["katalog", "odunc", "sube-yerel"], okuyan: ["kiosk", "raporlama"] },
  "odunc-hareketi": { yazan: ["odunc", "kiosk"], okuyan: ["ucretlendirme", "raporlama"] },
  "ucret-kaydi": { yazan: ["ucretlendirme"], okuyan: ["uyelik", "raporlama", "kiosk"] },
  "ceza-kurali": { yazan: ["ucretlendirme"], okuyan: ["odunc", "kiosk"] },
  "aktarim-istegi": { yazan: ["sube-yerel"], okuyan: ["odunc", "katalog"] },
  "eski-kayit": { yazan: [], okuyan: ["arsiv", "raporlama"] },
  "sayim-farki": { yazan: ["sube-yerel"], okuyan: [] },
};
export const SISTEMLER = Object.keys(SISTEM);
export const sahibi = (s) => SISTEM[s].sahip;
// bag = ayni veri varligi uzerinden yazan sistemden okuyan sisteme giden yonlu cift
export function baglar() {
  const b = new Map();
  for (const [v, d] of Object.entries(VERI))
    for (const y of d.yazan) for (const o of d.okuyan)
      if (y !== o) b.set(`${y}->${o}`, [...(b.get(`${y}->${o}`) ?? []), v]);
  return b;
}
```

## Ölçüm

İkinci dosya hizalamayı üç sayıya indirger ve aynı modeli iki envanter biçiminde okur.

```js
// kurum/hizalama.mjs — bosluk, ortusme, yetim sistem; iki envanter biciminin gordugu
import { SISTEM, YETENEK, KARSILAMA, VERI, SISTEMLER, sahibi, baglar } from "./model.mjs";

const sut = (s, n) => String(s).padEnd(n);
const sahipler = [...new Set(SISTEMLER.map(sahibi))].filter((o) => o !== "yok");
const karsilayan = (y) => SISTEMLER.filter((s) => KARSILAMA[s].includes(y));
const B = baglar();
const ciftYonlu = [...B.keys()].filter((k) => {
  const [a, b] = k.split("->");
  return B.has(`${b}->${a}`) && a < b;
});
const sahipAsan = [...B.keys()].filter((k) => {
  const [a, b] = k.split("->");
  return sahibi(a) !== sahibi(b);
});

console.log(`MODEL kurum: ${SISTEMLER.length} sistem, ${sahipler.length} sahip, ` +
  `${YETENEK.length} is yetenegi, ${Object.keys(VERI).length} veri varligi`);
console.log(`bag: ${B.size} yonlu bag, ${ciftYonlu.length} cift yonlu, ` +
  `${sahipAsan.length} tanesi sahip degistiriyor\n`);

console.log(sut("is yetenegi", 24) + sut("sistem", 8) + sut("sahip", 7) + "durum");
console.log("-".repeat(60));
const durumu = (n, os) => (n === 0 ? "bosluk" : n === 1 ? "tek" : os > 1 ? "ortusme+cakisma" : "ortusme");
for (const y of YETENEK) {
  const k = karsilayan(y);
  const os = new Set(k.map(sahibi)).size;
  console.log(sut(y, 24) + sut(k.length, 8) + sut(os, 7) + durumu(k.length, os));
}

const bosluk = YETENEK.filter((y) => karsilayan(y).length === 0);
const ortusme = YETENEK.filter((y) => karsilayan(y).length > 1);
const cakisma = ortusme.filter((y) => new Set(karsilayan(y).map(sahibi)).size > 1);
const yetim = SISTEMLER.filter((s) => KARSILAMA[s].length === 0);
const uzlasma = ortusme.reduce((t, y) => t + new Set(karsilayan(y).map(sahibi)).size - 1, 0);

console.log(`\nbosluk=${bosluk.length} (${bosluk.join(", ")})`);
console.log(`ortusme=${ortusme.length}, bunlarin ${cakisma.length}'i sahiplik cakismasi`);
console.log(`yetim sistem=${yetim.length} (${yetim.join(", ")})`);
console.log(`hizalama orani = ${YETENEK.length - bosluk.length}/${YETENEK.length} = ` +
  `${(((YETENEK.length - bosluk.length) / YETENEK.length) * 100).toFixed(1)}%`);
console.log(`ortusen yetenekler icin gereken uzlasma sayisi = ${uzlasma}`);

// ---- iki envanter bicimi ayni modelden turetiliyor ----
// A: sistem envanteri  — kayit birimi sistemdir, yetenek adi sistem kaydinin icinde gecer
// B: yetenek envanteri — kayit birimi yetenektir, sistem adi yetenek kaydinin icinde gecer
const bulgu = [...bosluk.map((y) => ["bosluk", y]), ...ortusme.map((y) => ["ortusme", y]),
  ...yetim.map((s) => ["yetim", s])];
const evrenA = new Set(Object.values(KARSILAMA).flat()); // A yalniz iddia edilen yetenekleri bilir
const gorurA = (t) => t !== "bosluk";                    // yetim sistem A'da bos kayit olarak durur
const gorurB = (t) => t !== "yetim";                     // yetenek kaydi hicbir sistemi anmaz
const sayA = bulgu.filter(([t]) => gorurA(t)).length;
const sayB = bulgu.filter(([t]) => gorurB(t)).length;
console.log(`\nA sistem envanterinin yetenek evreni: ${evrenA.size}/${YETENEK.length} yetenek`);
console.log(sut("bicim", 20) + sut("gorulen bulgu", 16) + "gormedigi");
console.log("-".repeat(60));
console.log(sut("A sistem envanteri", 20) + sut(`${sayA}/${bulgu.length}`, 16) + `${bosluk.length} bosluk`);
console.log(sut("B yetenek envanteri", 20) + sut(`${sayB}/${bulgu.length}`, 16) + `${yetim.length} yetim sistem`);
console.log(sut("kurum modeli (A+B)", 20) + sut(`${bulgu.length}/${bulgu.length}`, 16) + "-");
```

```
MODEL kurum: 9 sistem, 6 sahip, 13 is yetenegi, 10 veri varligi
bag: 23 yonlu bag, 4 cift yonlu, 20 tanesi sahip degistiriyor

is yetenegi             sistem  sahip  durum
------------------------------------------------------------
materyal-arama          2       2      ortusme+cakisma
odunc-verme             2       2      ortusme+cakisma
iade-alma               2       2      ortusme+cakisma
ayirtma                 1       1      tek
uyelik-acma             1       1      tek
uye-dogrulama           2       2      ortusme+cakisma
ucret-hesaplama         1       1      tek
ucret-tahsilati         0       0      bosluk
subeler-arasi-aktarim   1       1      tek
demirbas-sayimi         2       2      ortusme+cakisma
kullanim-raporlama      1       1      tek
satin-alma-onerisi      0       0      bosluk
gecikme-bildirimi       2       1      ortusme

bosluk=2 (ucret-tahsilati, satin-alma-onerisi)
ortusme=6, bunlarin 5'i sahiplik cakismasi
yetim sistem=1 (arsiv)
hizalama orani = 11/13 = 84.6%
ortusen yetenekler icin gereken uzlasma sayisi = 5

A sistem envanterinin yetenek evreni: 11/13 yetenek
bicim               gorulen bulgu   gormedigi
------------------------------------------------------------
A sistem envanteri  7/9             2 bosluk
B yetenek envanteri 8/9             1 yetim sistem
kurum modeli (A+B)  9/9             -
```

## Hizalamanın Üç Sayısı

Hizalama tek bir sayı değil, üç ayrı sayıdır ve üçü farklı şeyi söyler.

**Boşluk**, hiçbir sistemin karşılamadığı iş yeteneğidir. Modelde iki tane var: ücret tahsilatı ve
satın alma önerisi. İkisi de yapılıyor — ücret bankoda alınıyor, satın alma önerileri elde
tutulan çizelgelerde toplanıyor — ama hiçbir sistemin kaydında geçmiyor. Boşluk, işin yapılmadığı
anlamına gelmez; **işin sistem dışında yapıldığı** anlamına gelir. Hizalama oranı bu modelde
11/13, yani %84,6.

**Örtüşme**, birden çok sistemin aynı yeteneği karşıladığı durumdur: altı tane. Örtüşmenin kendisi
kusur değildir; kiosk ile ödünç servisinin ikisinin de ödünç verebilmesi bir gerekliliktir.
Belirleyici olan örtüşmenin **kaç sahibe** yayıldığıdır. Altı örtüşmenin beşinde karşılayan
sistemlerin sahibi farklı; bunlar **sahiplik çakışmasıdır** (ownership conflict). Gecikme bildirimi
iki sistem tarafından karşılanıyor ama ikisinin de sahibi aynı birim; kuralın değişmesi tek bir
masada halledilir. Diğer beşinde kural değişikliği iki ayrı bütçenin, iki ayrı takvimin ve iki
ayrı önceliğin uzlaşmasını gerektirir. Modelde uzlaşma sayısı beştir ve bu sayı kurumun
koordinasyon yükünün alt sınırıdır.

**Yetim sistem**, hiçbir yeteneğe bağlanamayan sistemdir: arşiv. Sahibi de yok. Yetim sistem
kendiliğinden kapatılacak bir şey değildir — arşiv kaydını hâlâ raporlama okuyor — ama savunması
olmayan bir kalemdir: bütçe tartışmasında onu kimin savunacağı belirsizdir.

Bağ sayısı bu üç sayının üstüne oturur. On veri varlığı üzerinden yirmi üç yönlü bağ çıkıyor;
dördü çift yönlü, yirmisi bir sahiplik sınırını geçiyor. Yirmi üç bağın yirmisinin sahip
değiştirmesi, kurum ölçeğinde tümleştirmenin teknik değil örgütsel bir işlem olduğunu sayıyla
söyler: bağların %87'sinde bir tarafın yaptığı değişiklik başka bir bütçenin sahibini ilgilendirir.

## Envanterin Biçimi Bulguyu Belirler

Aynı model iki biçimde yazılabilir. **Sistem envanterinde** kayıt birimi sistemdir; her sistemin
kaydında karşıladığı yetenekler listelenir. **Yetenek envanterinde** kayıt birimi yetenektir; her
yeteneğin kaydında onu karşılayan sistemler listelenir. İkisi de aynı model üzerinden yazılıyor,
ama gördükleri bulgu kümesi aynı değil.

Modelde toplam dokuz bulgu var: iki boşluk, altı örtüşme, bir yetim sistem. Sistem envanteri
bunların yedisini gösteriyor. Göremediği boşluktur, çünkü sistem envanterinin yetenek evreni
sistem kayıtlarından türer: on üç yeteneğin yalnız on biri herhangi bir kayıtta geçer, hiç
geçmeyen iki yetenek envanterde hiç yoktur. Yetenek envanteri sekiz bulguyu gösteriyor; göremediği
yetim sistemdir, çünkü hiçbir yeteneğin kaydında adı geçmeyen bir sistem o envantere hiç girmez.

Dokuzun tamamını yalnız iki yönlü eşleme — kurum modeli — gösterir. Kurumsal mimarinin ilk ürünü
bu yüzden bir liste değil bir **eşlemedir**: iki listenin hangi noktalarda birbirine değmediği,
listelerin kendisinden daha çok bilgi taşır.

## Özet

- Kurumsal mimarinin birimi dağıtım birimi değil, ayrı sahibi ve ayrı bütçesi olan sistemdir;
  model kurumda 9 sistem, 6 sahip, 13 iş yeteneği ve 10 veri varlığı var.
- İş ve teknoloji hizalaması tek sayı değil üç sayıdır: 2 boşluk, 6 örtüşme, 1 yetim sistem;
  hizalama oranı 11/13 (%84,6).
- Örtüşmenin maliyetini sahip sayısı belirler: 6 örtüşmenin 5'i iki ayrı sahibe yayılıyor ve
  toplam 5 uzlaşma gerektiriyor; aynı sahipteki örtüşme tek masada çözülür.
- Model kurumda 23 yönlü bağ var, 4'ü çift yönlü ve 20'si bir sahiplik sınırını geçiyor.
- Sistem envanteri 9 bulgunun 7'sini, yetenek envanteri 8'ini gösterir; dokuzunun tamamı yalnız
  iki listenin eşlemesinden okunur.

## Sonraki Adım

Bu ders kurum modelini bir kez kurdu ve üç sayı üretti. Modelin **nasıl belgeleneceği** hiç
sorulmadı: hangi katmanlara ayrılacağı, kaç ayrı görünümle yazılacağı, kimin ne sıklıkta gözden
geçireceği ve bu belgenin kendisinin ne kadar bakım isteyeceği açık değil. Kurumsal mimari
çerçeveleri tam olarak bu soruya yanıt verme iddiasındadır. Sonraki ders aynı kurum modelini iki
çerçeve biçiminde — ayrıntılı katmanlı ve hafif — belgeler; her birinin kaç soruyu yanıtladığını,
kaç kalem bakım istediğini ve çerçevenin kendi bakım maliyetinin ne zaman yanıtladığı sorunun
değerini aştığını sayar.
