---
title: 'Gösterim Ailesi ve Kayıp'
source: 'https://academia.sh/tr/kurslar/modelleme-ve-gosterim/gosterim-ailesi-ve-kayip'
course: 'Modelleme ve Gösterim'
language: tr
updated: '2026-08-17T18:08:17+00:00'
license: 'CC BY-SA 4.0'
---

# Gösterim Ailesi ve Kayıp

Bir gösterim, sistemin bilgi atan bir izdüşümüdür: beş bağlı bir bakım atölyesinin 31 olgusundan 20'sini yazan yapı gösterimi 2048 ayrı sistemi tek diyagrama düşürür ve atılan 11 alan gösterimden geri getirilemez.

İşletim Sistemi Kavramları kursu on beş derste bir makinenin soyutlamalarını saydı: her
soyutlamanın ödettiği adım ölçüldü ve hiçbir olumsuz sonuç saklanmadı. O ölçümlerin ortak yanı
şuydu — hepsi çalıştırılabilir bir metnin çıktısıydı, doğruluğunu koşumun kendisi taşıyordu.
Bir sistemi başkasına anlatmak bu değildir. Anlatmak, sistemi **daha az bilgiyle**
göstermektir; gösterim sistemin tamamı olsaydı anlatı değil kopya olurdu.

Az bilgiyle göstermenin bir bedeli var ve bu kurs onu sayıyor. Bakım atölyesi modelinde beş bağ
ve otuz bir olgu duruyor; bunların yirmisini yazan bir yapı gösterimi, aynı çizimi üreten
**2047 başka sistemden ayırt edilemez** hâle geliyor. Diyagram yanlış değil; eksik, ve
eksikliği kendisi üzerinde görünmüyor.

## Sistem Veridir, Gösterim Onun İzdüşümüdür

Kurs boyunca tek bir kurgu alan kullanılıyor: bir bakım atölyesi. İş emri açılıyor, kalemlere
bölünüyor, kalemler parça istiyor, bir usta atanıyor, usta tezgâh kullanıyor, iş emri belge
üretiyor. Bu alanın kendisi bir diyagram değil, **veridir**: bağlar, akışlar, önkoşullar,
durumlar ve varlıklar birer Python yapısıdır. Gösterim, o verinin bir izdüşümüdür ve her
izdüşüm bilgi atar.

Bu derste ölçülen izdüşüm en dar olanıdır: bağların yalnız kaynağını, hedefini, yönünü ve
çokluğunu yazan bir yapı gösterimi.

- **YD1** — Sistem beş bağdan oluşur ve her bağ yedi alan taşır. Dördü gösterime çıkar
  (kaynak, hedef, yön, **çokluk (multiplicity)**), üçü çıkmaz (yaşam, sıralı, benzersiz).
- **YD2** — Çokluğu bir olan tarafta sıralılık ve benzersizlik tanımsızdır. N:1 bağın tek
  gizli alanı, 1:N ve N:M bağların üç gizli alanı vardır; beş bağda toplam on bir.
- **YD3** — Gizli alanların hepsi ikili değer alır: yaşam bağımsız ya da bağımlı, sıralı ve
  benzersiz doğru ya da yanlış.
- **YD4** — Sayım **tam sayımdır**. Gizli alanların bütün birleşimleri üretilir ve gösterimi
  değişmeyenler sayılır; tahmin, örneklem ya da rastgelelik yoktur.

```python
"""M01/K06 ortak tanim (kesit): sistem VERIDIR , gosterim o verinin bir izdusumudur.
Kurgu alan bir bakim atolyesi. Her bag gosterime CIKAN ve CIKMAYAN alanlar tasir."""
from itertools import product

BAGLAR = [
    {"ad": "b1", "kaynak": "IsEmri", "hedef": "Usta",  "yon": "tek", "cokluk": "N:1",
     "yasam": "bagimsiz", "sirali": False, "benzersiz": True},
    {"ad": "b2", "kaynak": "IsEmri", "hedef": "Kalem", "yon": "tek", "cokluk": "1:N",
     "yasam": "bagimli",  "sirali": True,  "benzersiz": False},
    {"ad": "b3", "kaynak": "Kalem",  "hedef": "Parca", "yon": "tek", "cokluk": "N:1",
     "yasam": "bagimsiz", "sirali": False, "benzersiz": True},
    {"ad": "b4", "kaynak": "Usta",   "hedef": "Tezgah", "yon": "cift", "cokluk": "N:M",
     "yasam": "bagimsiz", "sirali": False, "benzersiz": True},
    {"ad": "b5", "kaynak": "IsEmri", "hedef": "Belge", "yon": "tek", "cokluk": "1:N",
     "yasam": "bagimli",  "sirali": True,  "benzersiz": True},
]


def gizli_alanlar(bag):
    """Cokluk 1 olan tarafta sirililik ve benzersizlik yoktur."""
    alanlar = ["yasam"]
    if bag["cokluk"] in ("1:N", "N:M"):
        alanlar += ["sirali", "benzersiz"]
    return alanlar


def yapi_gosterimi(baglar, ayrinti=0):
    """ayrinti 0: kaynak , hedef , yon , cokluk. 1: + yasam. 2: + sirali ve benzersiz."""
    simge = []
    for b in baglar:
        s = {"kaynak": b["kaynak"], "hedef": b["hedef"], "yon": b["yon"], "cokluk": b["cokluk"]}
        if ayrinti >= 1:
            s["yasam"] = b["yasam"]
        if ayrinti >= 2:
            for a in gizli_alanlar(b):
                s[a] = b[a]
        simge.append(s)
    return simge


def simge_sayisi(gosterim):
    return sum(len(s) for s in gosterim)


def ayni_gosterime_dusen(baglar, ayrinti=0):
    """Ayni gosterimi ureten kac ayri sistem var. Sayim tam sayimdir."""
    secenek = {"yasam": ("bagimsiz", "bagimli"), "sirali": (False, True),
               "benzersiz": (False, True)}
    hedef = yapi_gosterimi(baglar, ayrinti)
    uzaylar = []
    for b in baglar:
        alanlar = gizli_alanlar(b)
        uzaylar.append([dict(zip(alanlar, d)) for d in product(*[secenek[a] for a in alanlar])])
    sayi = 0
    for secim in product(*uzaylar):
        aday = [dict(b, **s) for b, s in zip(baglar, secim)]
        if yapi_gosterimi(aday, ayrinti) == hedef:
            sayi += 1
    return sayi


G = yapi_gosterimi(BAGLAR, 0)
gizli = sum(len(gizli_alanlar(b)) for b in BAGLAR)
print("sistem  : bag", len(BAGLAR), "| gorunur alan", simge_sayisi(G),
      "| gizli alan", gizli, "| toplam olgu", simge_sayisi(G) + gizli)
print("gosterim:", simge_sayisi(G), "simge")
print("bedel   :", ayni_gosterime_dusen(BAGLAR, 0), "sistem ayni gosterime dusuyor")
print()
print("yazilan satirlar:")
for s in G:
    print("  ", s["kaynak"], s["yon"], s["hedef"], s["cokluk"])
print()
print("b2 (IsEmri -> Kalem) icin yazilmayan alanlarin butun secenekleri:")
for yasam in ("bagimsiz", "bagimli"):
    for sirali in (False, True):
        for benzersiz in (False, True):
            aday = [dict(b) for b in BAGLAR]
            aday[1].update(yasam=yasam, sirali=sirali, benzersiz=benzersiz)
            print(f"   yasam={yasam:9s} sirali={str(sirali):5s} benzersiz={str(benzersiz):5s}"
                  f"  ayni gosterim: {yapi_gosterimi(aday, 0) == G}")
```

```
sistem  : bag 5 | gorunur alan 20 | gizli alan 11 | toplam olgu 31
gosterim: 20 simge
bedel   : 2048 sistem ayni gosterime dusuyor

yazilan satirlar:
   IsEmri tek Usta N:1
   IsEmri tek Kalem 1:N
   Kalem tek Parca N:1
   Usta cift Tezgah N:M
   IsEmri tek Belge 1:N

b2 (IsEmri -> Kalem) icin yazilmayan alanlarin butun secenekleri:
   yasam=bagimsiz  sirali=False benzersiz=False  ayni gosterim: True
   yasam=bagimsiz  sirali=False benzersiz=True   ayni gosterim: True
   yasam=bagimsiz  sirali=True  benzersiz=False  ayni gosterim: True
   yasam=bagimsiz  sirali=True  benzersiz=True   ayni gosterim: True
   yasam=bagimli   sirali=False benzersiz=False  ayni gosterim: True
   yasam=bagimli   sirali=False benzersiz=True   ayni gosterim: True
   yasam=bagimli   sirali=True  benzersiz=False  ayni gosterim: True
   yasam=bagimli   sirali=True  benzersiz=True   ayni gosterim: True
```

Üç sayı yan yana duruyor ve bundan sonraki her derste duracak. **Sistem:** beş bağ, otuz bir
olgu. **Gösterim:** yirmi simge. **Bedel:** aynı gösterime düşen 2048 sistem — yani yazılan
diyagram, birbirinden gerçekten farklı 2048 sistemin ortak resmidir.

## Yazılmayan Alan Geri Getirilemez

Çıktının son bloğu bedeli tek bir bağ üzerinde gösteriyor. `b2` bağı, bir iş emrinin
kalemlerini taşıyor ve gösterimde tek satır olarak duruyor: iş emrinden kaleme tek yönlü,
çokluk 1:N. Bu satırın **söylemediği** üç şey var. Kalemler iş emriyle birlikte mi yaşıyor,
yoksa iş emri kapandıktan sonra da duruyor mu. Kalemlerin bir sırası var mı, yoksa küme mi.
Aynı kalem iki kez geçebilir mi.

Üç ikili soru sekiz seçenek yapıyor ve sekizinin de gösterimi **birebir aynı**. Diyagrama bakan
biri bu üç soruyu yanıtlayamaz; sorabileceği tek yer sistemin kendisidir. Beş bağın on bir
gizli alanı birlikte alındığında sayı $2^{11} = 2048$ oluyor.

Asıl nokta sayının büyüklüğü değil, yönü. İzdüşüm tek yönlüdür: sistemden gösterime giden yol
tektir, gösterimden sisteme dönen yol 2048 tanedir. Diyagramı okuyan kişi bu 2048 sistemden
birini seçmek zorundadır ve **hangisini seçtiğini fark etmez**, çünkü diyagram bir seçim
yapıldığını söylemez. Kaybın en pahalı yanı budur: kaybın kendisi gösterimde görünmez.

## Gösterim Ailesi: Yapı, Davranış, Veri

Bu derslerde kullanılan gösterim ailesi bir belirtimde tanımlıdır ve adı **UML (Unified
Modeling Language)**'dir. Belirtim bir aracın değil bir **gösterimin** tanımıdır: hangi ögenin
hangi anlamı taşıdığını sabitler. Kursun konusu belirtimin kendisi değil, **izin verdiği
izdüşümlerin ne kadar bilgi attığıdır**.

Aile üç öbeğe ayrılır ve üçü de aynı sistemin üç ayrı izdüşümüdür. **Yapı gösterimleri**
sistemin durağan bağlarını taşır: hangi tür neyle ilişkilidir, kaç tanedir, hangi çalışma
zamanı birimindedir. **Davranış gösterimleri** sistemin zaman içindeki işleyişini taşır:
iletiler, sıralar, durumlar, geçişler. **Veri gösterimleri** saklanan olguyu taşır: varlıklar,
öznitelikler, ilişkiler, kısıtlar.

Aşağıdaki tablo üç öbeğin kaybını yan yana koyuyor. Yapı satırı bu derste ölçüldü; diğer iki
satır ortak tanımın doğrulanmış okumalarındandır ve ilgili konularda ayrıntısıyla ölçülecektir.

| Aile | Sistemdeki olgu | Gösterimin taşıdığı | Geri getirilemeyen |
|---|---|---|---|
| Yapı | 5 bağ, 31 alan | 20 simge | 11 alan; 2048 sistem tek diyagrama düşüyor |
| Davranış | 24 iz | bir sıra gösterimi 1 iz | 23 iz; kapsam 0,0417 |
| Veri | 26 olgu (5 varlık, 12 öznitelik, 4 ilişki, 5 kısıt) | ilişkisel yapıya taşınan 3 kısıt | 2 kısıt düşüyor, 114 karar modelde yazmıyor |

Üç satırın hiçbiri diğerini kapsamıyor ve üçü birleştirildiğinde de sistem geri gelmiyor.
Aile bir bütünün parçaları değil, **aynı bütünün üç ayrı kaybıdır**.

Yazılım Mimarlığı müfredatındaki Mimari Dokümantasyon kursu bu türleri başka bir eksende ölçtü:
on sekiz soruyu dört türe eşledi, yanlış türün bıraktığı eksik bilgi ögesini ve her türün
bakım maliyetini saydı. O kursun sorusu **hangi türün seçileceğiydi**. Bu kursun sorusu
başkadır ve tür seçildikten sonra başlar: seçilen tür, kaç sistemi birbirinden ayırt edemiyor.
Soru–tür eşlemesi burada yeniden kurulmaz.

## Gösterim Doğrusal, Belirsizlik Üstel Büyür

Ortak tanımın çözünürlük kuralı gereği her ders sayısını **ikinci bir yapılandırmayla** sınar.
Buradaki sınama şudur: sisteme altıncı bir bağ eklendiğinde gösterim ile belirsizlik aynı
hızda mı büyüyor.

- **YD5** — Eklenen bağ gösterime dört simge ekler; bu, çokluğundan bağımsızdır.
- **YD6** — Eklenen bağın gizli alan sayısı çokluğuna bağlıdır: N:1 ise bir, 1:N ya da N:M ise
  üç.

```python
"""Ikinci yapilandirma: bir bag eklenince gosterim ile belirsizlik ayni hizda buyumuyor.
Gizli alan kurali ortak tanimdandir: cokluk 1:N ya da N:M ise yasam , sirali ve benzersiz ,
degilse yalniz yasam. Gorunur alanlar sabit oldugu icin ayni gosterime dusen sistem sayisi ,
gizli alan seceneklerinin tam sayimidir."""
from itertools import product


def gizli_alanlar(cokluk):
    return ["yasam", "sirali", "benzersiz"] if cokluk in ("1:N", "N:M") else ["yasam"]


def tam_sayim(cokluklar):
    uzaylar = [list(product(*[(False, True)] * len(gizli_alanlar(c)))) for c in cokluklar]
    return sum(1 for _ in product(*uzaylar))


TEMEL = ["N:1", "1:N", "N:1", "N:M", "1:N"]
DURUM = [("bes bag  (ortak tanim)", TEMEL),
         ("+ Usta-Belge     N:1", TEMEL + ["N:1"]),
         ("+ Tezgah-Parca   1:N", TEMEL + ["1:N"]),
         ("+ Kalem-Tezgah   N:M", TEMEL + ["N:M"])]

print("yapilandirma            bag  simge  gizli alan  ayni gosterime dusen")
for ad, c in DURUM:
    print(f"{ad:24s}{len(c):4d}{4 * len(c):7d}"
          f"{sum(len(gizli_alanlar(x)) for x in c):12d}{tam_sayim(c):22d}")
print()
temel = tam_sayim(TEMEL)
for ad, c in DURUM[1:]:
    print(f"{ad:24s} simge x{4 * len(c) / 20:.2f}   belirsizlik x{tam_sayim(c) // temel}")
```

```
yapilandirma            bag  simge  gizli alan  ayni gosterime dusen
bes bag  (ortak tanim)     5     20          11                  2048
+ Usta-Belge     N:1       6     24          12                  4096
+ Tezgah-Parca   1:N       6     24          14                 16384
+ Kalem-Tezgah   N:M       6     24          14                 16384

+ Usta-Belge     N:1     simge x1.20   belirsizlik x2
+ Tezgah-Parca   1:N     simge x1.20   belirsizlik x8
+ Kalem-Tezgah   N:M     simge x1.20   belirsizlik x8
```

Üç eklemenin üçü de gösterime **aynı sayıda** simge koyuyor: dört. Diyagram her durumda yüzde
yirmi büyüyor. Belirsizlik ise ikiye, sekize ve sekize katlanıyor. Aynı çizim emeği, hangi
bağın eklendiğine göre 2048'i 4096 ya da 16384 yapıyor.

Farkın kaynağı çokluk. Bir N:1 bağın karşı tarafında tek nesne durur; orada sıralılık ve
benzersizlik sorulamaz, dolayısıyla saklanan tek şey yaşam alanıdır. Bir 1:N ya da N:M bağın
karşı tarafında bir topluluk durur ve topluluğun sırası ile tekrar kabul edip etmediği ayrı
iki olgudur. Çokluk simgesi bu yüzden diyagramın en yüklü simgesidir: kendisi bir olgu
söylerken **iki olgunun daha var olduğunu** da haber verir ve o iki olguyu yazmaz.

Gösterim bağ başına sabit sayıda simgeyle, yani **doğrusal** büyür; belirsizlik gizli alan
sayısının **üssü** kadar. Sistem büyüdükçe diyagramın anlattığı payın küçülmesi bir
dikkatsizlik değil, iki büyüme hızı arasındaki farkın sonucudur.

## Simge Çıkarmanın Bedeli

Aynı ölçü ters yönde de işler. Yirmi simgelik gösterim, çokluk yazmayan on beş simgelik bir
gösterime indirilebilir; bağların kim kime bağlı olduğu durur, kaç tane olduğu düşer.

- **YD7** — Çokluk yazılmadığında bir bağın çokluğu dört seçenekten biri olabilir: 1:1, N:1,
  1:N ya da N:M. Çokluk bilinmediği için ona bağlı gizli alanların **kaç tane olduğu** da
  bilinmez.

```python
"""Daha dar bir gosterim: cokluk simgesi hic yazilmazsa ne oluyor. Cokluk yazilmayinca
hem coklugun kendisi hem de ona bagli gizli alanlar bilinmez olur ; bir bag icin gecerli
sistem sayisi , dort coklugun her birinin gizli alan seceneklerinin toplamidir."""
from itertools import product

COKLUKLAR = ("1:1", "N:1", "1:N", "N:M")


def gizli_alanlar(cokluk):
    return ["yasam", "sirali", "benzersiz"] if cokluk in ("1:N", "N:M") else ["yasam"]


def bag_secenegi(cokluk_yazili, cokluk):
    """Bir bag icin gosterimi degistirmeyen sistem sayisi , tam sayim."""
    sayi = 0
    for c in ([cokluk] if cokluk_yazili else list(COKLUKLAR)):
        for _ in product(*[(False, True)] * len(gizli_alanlar(c))):
            sayi += 1
    return sayi


TEMEL = ["N:1", "1:N", "N:1", "N:M", "1:N"]
sonuc = {}
for yazili, bag_simge in ((True, 4), (False, 3)):
    toplam = 1
    for c in TEMEL:
        toplam *= bag_secenegi(yazili, c)
    sonuc[yazili] = toplam
    print(f"cokluk yazili {str(yazili):5s} | simge {bag_simge * len(TEMEL):3d}"
          f" | ayni gosterime dusen {toplam:9d}")
print("5 simge cikarmanin bedeli: x", sonuc[False] / sonuc[True], sep="")
```

```
cokluk yazili True  | simge  20 | ayni gosterime dusen      2048
cokluk yazili False | simge  15 | ayni gosterime dusen   3200000
5 simge cikarmanin bedeli: x1562.5
```

Beş simge eksiliyor, belirsizlik 1562,5 katına çıkıyor. Oran, çıkarılan simge başına ikiden
fazla bit demektir; oysa gizli alanların her biri ikili olduğu için simge başına en çok bir bit
beklenirdi. Fark çokluğun **ikili olmamasından** geliyor: dört değer alabilen bir alanın
yazılmaması iki bit götürür, üstüne o alan başka alanların var olup olmadığını belirlediği için
bir de yapıyı belirsizleştirir.

Bir gösterimden simge çıkarmak onu okunaklı yapabilir, ama okunaklılık ölçülmüş bir kazanç
değildir; **1562,5 ise ölçülmüş bir bedeldir**. İkisi aynı tabloya yazılmadıkça sadeleştirme
bir iyileştirme sayılamaz.

## Kursun Kuralı

Bu ders kursun ölçüsünü kuruyor: **bir gösterimin sayısı taşıdığı simge değil, aynı gösterime
düşen sistem sayısıdır.** Kaç sistemi birbirinden ayıramadığı yazılmayan bir gösterim
ölçülmemiş sayılır. Yirmi simge bir diyagramın büyüklüğüdür; 2048 onun bedelidir ve ikisi
birlikte yazılmadıkça diyagram hakkında hiçbir şey söylenmiş olmaz.

Ölçünün çözünürlüğü de burada belirlenir. Sayım tamdır, örneklem değildir: 2048'in etrafında
bir ölçüm bandı yoktur ve iki gösterim karşılaştırılırken **bir sistemlik fark bile
anlamlıdır**.

## Özet

- Gösterim, sistemin bilgi atan bir izdüşümüdür; sistemden gösterime giden yol tek, gösterimden
  sisteme dönen yol çoktur ve kaybın kendisi gösterim üzerinde görünmez.
- Bakım atölyesinin beş bağı 31 olgu taşıyor. Yirmi simgelik ayrıntısız yapı gösterimi bunun
  20'sini yazıyor, 11'ini atıyor ve $2^{11} = 2048$ ayrı sistemi tek diyagrama düşürüyor.
- Tek bir bağın yazılmayan üç alanı sekiz seçenek üretiyor ve sekizinin gösterimi birebir aynı;
  diyagramı okuyan kişi seçim yapmak zorundadır ve seçim yaptığını fark etmez.
- Gösterim ailesinin üç öbeği aynı sistemin üç ayrı kaybıdır: yapı 11 alanı, davranış 24 izin
  23'ünü, veri düzeyi 5 kısıttan 2'sini atıyor ve üçü birleştirildiğinde de sistem geri gelmiyor.
- Altıncı bir bağ eklemek gösterimi her durumda 4 simge büyütüyor, belirsizliği ise çokluğa
  göre 2 ya da 8 katına çıkarıyor: gösterim doğrusal, belirsizlik üstel büyür.
- Çokluk hiç yazılmazsa gösterim 20 simgeden 15'e iner ve aynı gösterime düşen sistem 2048'den
  3.200.000'e çıkar: 1562,5 kat. Sadeleştirmenin kazancı ölçülmemiş, bedeli ölçülmüştür.

## Sonraki Adım

Bu derste yalnız en dar izdüşüm ölçüldü ve 2048 sayısı tek başına duruyor. Diyagrama simge
eklemek bu sayıyı düşürür — ama ne kadar düşürdüğü ölçülmedi. Bir simge belirsizliği yarıya mı
indiriyor, daha fazlasını mı alıyor, yoksa hiç almayan simgeler de var mı.

Sonraki ders sınıf gösterimini alıp bunu simge simge sayar: yaşam döngüsü simgesi eklendiğinde
20 simge 25'e çıkarken 2048 kaça iner, sıralılık ve benzersizlik notları da yazıldığında geriye
kaç sistem kalır. Aynı derste sıkı ve gevşek bileşim ayrımının hangi olguyu taşıdığı
ölçülecek: bir iş emri silindiğinde kaç nesnenin gittiğini belirleyen şey, diyagramda tek bir
simgedir.
