---
title: 'Kullanım Senaryosu Diyagramları'
source: 'https://academia.sh/tr/kurslar/modelleme-ve-gosterim/kullanim-senaryosu-diyagramlari'
course: 'Modelleme ve Gösterim'
language: tr
updated: '2026-08-17T18:08:15+00:00'
license: 'CC BY-SA 4.0'
---

# Kullanım Senaryosu Diyagramları

Aktör, senaryo ve sistem sınırı gösteriminin taşıdığı olgu ile attığı olgunun ayrı ayrı sayılması: bilerek atılan yedi iç adım, farkında olmadan düşen iki bağ ve aynı diyagrama düşen 512 sistem.

Önceki konu bir sistemin durağan yanını ölçtü: hangi sınıf hangisine bağlı, bağ hangi yöne
gidiyor, aynı sınıf kümesi kaç ayrı bileşen bölüntüsüne düşüyor. Sorulan her soru sistemin
çalışmadığı andaki hâline bakıyordu.

Bu konu sistemin çalıştığı ana bakıyor: kim neyi başlatıyor, iletiler hangi sırayla gidiyor, işler
hangi sırayla yapılabiliyor, bir nesne hangi durumlardan geçiyor. Dört davranış gösteriminin
ilki, dördünün içinde **en az bilgi taşıyanıdır** — ve bu bir kusur değildir. Kullanım senaryosu
gösterimi sistemin içini bilerek boşaltır. Bu dersin işi o boşluğu saymaktır, çünkü sayılmadıkça
bir boşluğun **bilerek mi bırakıldığı** yoksa **gözden mi kaçtığı** bilinemez.

Dersin sorusu, diyagram türünün hangi soruya uyduğu değildir; o ölçüm Yazılım Mimarlığı
müfredatının Mimari Dokümantasyon kursunda on sekiz soruluk bir küme üzerinde yapıldı ve burada
tekrarlanmıyor. Buradaki soru tür **seçildikten sonra** başlar: seçilen tür kaç ayrı sistemi
birbirinden ayırt edemiyor.

## Gösterimin Taşıdığı Dört Alan

Kullanım senaryosu gösterimi dört tür bilgi taşır: **aktör**, **senaryo**, aktörü senaryoya
bağlayan **bağ**, ve neyin sistemin işi neyin komşusunun işi olduğunu söyleyen **sistem sınırı**.
Listenin tamamı budur. Sıra yoktur, koşul yoktur, iç adım yoktur, veri yoktur.

Bakım atölyesinde bu dört alanın karşılığı şudur. İki aktör var: müşteri ve kabul görevlisi. Üç
dış olgu var: iş emri açma, durum sorma, teslim alma. Üçü de sistemin dışından başlatılır ve üçü
de atölyenin kendi işidir — sınırın söylediği şey budur, ve bu üç sahiplik kararı üç ayrı olgudur.
Buna karşılık sistemin içinde yedi iç adım dönüyor — stok ayırma, usta atama, tezgâh ayırma, kalem
işleme, belge üretme, maliyet hesabı, kayıt tutma — ve bunların hiçbirini bir aktör başlatmaz.

Toplam **20 olgu**: 2 aktör, 3 senaryo, 5 aktör–senaryo bağı, 3 sahiplik, 7 iç adım.

## Diyagramın Kurulması ve Sayılması

Aşağıdaki model diyagramı çizmez; diyagramın **taşıdığı alanların listesini** kurar ve o listeyi
üreten kaç ayrı sistem olduğunu tam sayımla bulur. Gerçek bağ kümesi beş bağdır (**DD1**);
çizilmiş diyagram bunların üçünü yazıyor (**DD2**).

```python
"""Kullanim senaryosu gosterimi: bilerek atilan olgu ile farkinda olmadan
dusen olgu ayri ayri sayilir. Sayim tam sayimdir , tahmin degildir."""
from itertools import product

IC_OLGULAR = ["stok ayirma", "usta atama", "tezgah ayirma", "kalem isleme",
              "belge uretme", "maliyet hesabi", "kayit tutma"]
DIS_OLGULAR = ["is emri acma", "durum sorma", "teslim alma"]

# DD1: atolyenin gercek aktor-senaryo baglari ve her senaryonun sahibi
AKTORLER = ["Musteri", "KabulGorevlisi"]
GERCEK_BAGLAR = [("Musteri", "is emri acma"), ("Musteri", "durum sorma"),
                 ("Musteri", "teslim alma"), ("KabulGorevlisi", "is emri acma"),
                 ("KabulGorevlisi", "teslim alma")]
GERCEK_SAHIP = {s: "sistem" for s in DIS_OLGULAR}   # ucu de atolyenin isi
# DD2: cizilmis diyagram bes bagin ucunu yaziyor
CIZILEN = [("Musteri", "is emri acma"), ("Musteri", "durum sorma"),
           ("Musteri", "teslim alma")]


def gosterim(baglar, ic, sahip, cizilen_bag, cizilen_ic=(), sinir=True):
    """Gosterim yalnizca sunu tasir: aktor , senaryo , aktor-senaryo bagi ,
    sistem siniri. Cizilmemis bag ve ic adim gosterime hic cikmaz; sinir
    cizilmezse senaryonun sistemin isi mi komsunun isi mi oldugu yazilmaz."""
    return (tuple(AKTORLER),
            tuple(DIS_OLGULAR) + tuple(sorted(i for i in ic if i in cizilen_ic)),
            tuple(sorted(b for b in baglar if b in cizilen_bag)),
            tuple(sahip[s] for s in DIS_OLGULAR) if sinir else None)


def simge(cizilen_bag, cizilen_ic=(), sinir=True):
    return (len(AKTORLER) + len(DIS_OLGULAR) + len(cizilen_bag) + (1 if sinir else 0)
            + 2 * len(cizilen_ic))


def ayni_gosterime_dusen(cizilen_bag, cizilen_ic=(), sinir=True):
    """Ayni diyagrami ureten kac ayri sistem var: tam sayim."""
    hedef = gosterim(GERCEK_BAGLAR, IC_OLGULAR, GERCEK_SAHIP, cizilen_bag,
                     cizilen_ic, sinir)
    sayi = 0
    for bm in product((0, 1), repeat=len(GERCEK_BAGLAR)):
        baglar = [b for b, m in zip(GERCEK_BAGLAR, bm) if m]
        for im in product((0, 1), repeat=len(IC_OLGULAR)):
            ic = [i for i, m in zip(IC_OLGULAR, im) if m]
            for sm in product(("sistem", "komsu"), repeat=len(DIS_OLGULAR)):
                sahip = dict(zip(DIS_OLGULAR, sm))
                if gosterim(baglar, ic, sahip, cizilen_bag, cizilen_ic, sinir) == hedef:
                    sayi += 1
    return sayi


olgu = (len(AKTORLER) + len(DIS_OLGULAR) + len(GERCEK_BAGLAR) + len(DIS_OLGULAR)
        + len(IC_OLGULAR))
print("SISTEM  :", olgu, "olgu =", len(AKTORLER), "aktor +", len(DIS_OLGULAR),
      "senaryo +", len(GERCEK_BAGLAR), "bag +", len(DIS_OLGULAR), "sahiplik +",
      len(IC_OLGULAR), "ic adim")
print("GOSTERIM:", simge(CIZILEN), "simge")
print("BEDEL   :", ayni_gosterime_dusen(CIZILEN), "sistem ayni diyagrama dusuyor")
print()
print("  bilerek atilan (gosterim tasiyamaz)   :", len(IC_OLGULAR), "ic adim")
print("  farkinda olmadan dusen (tasinabilirdi):",
      len([b for b in GERCEK_BAGLAR if b not in CIZILEN]), "bag")
for b in GERCEK_BAGLAR:
    if b not in CIZILEN:
        print("     yazilmamis:", b[0], "->", b[1])
print("  cizilen diyagram       : simge", simge(CIZILEN),
      "| dusen", ayni_gosterime_dusen(CIZILEN))
print("  bes bagin besi yazilsa : simge", simge(GERCEK_BAGLAR),
      "| dusen", ayni_gosterime_dusen(GERCEK_BAGLAR), "<- gosterimin TABANI")
print()
print("alan dusurulunce taban ne oluyor")
print("alan kumesi                 simge  dusen  tasidigi bit")
TABAN = ayni_gosterime_dusen(GERCEK_BAGLAR)
for ad, bag, sinir in (("aktor+senaryo+bag+sinir", GERCEK_BAGLAR, True),
                       ("bag dusurulur", [], True),
                       ("sinir dusurulur", GERCEK_BAGLAR, False),
                       ("ikisi de dusurulur", [], False)):
    d = ayni_gosterime_dusen(bag, (), sinir)
    print(f"{ad:26s} {simge(bag, (), sinir):5d} {d:6d} {(d // TABAN).bit_length() - 1:12d}")
print()
# DD3: ikinci yapilandirma. Iki ic adim "dahil edilen senaryo" olarak cizilir.
EK = ("belge uretme", "maliyet hesabi")
print("iki ic adim dahil edilen senaryo olarak cizilirse:")
print("  simge", simge(GERCEK_BAGLAR), "->", simge(GERCEK_BAGLAR, EK),
      "| dusen", TABAN, "->", ayni_gosterime_dusen(GERCEK_BAGLAR, EK))
print("  bedel: aktoru olmayan senaryo sayisi 0 ->", len(EK),
      "| dis olgu orani", f"{len(DIS_OLGULAR)}/{len(DIS_OLGULAR)}",
      "->", f"{len(DIS_OLGULAR)}/{len(DIS_OLGULAR) + len(EK)}")

# DD4: iki aktor tek bir rolde birlestirilirse
OLASI = [(a, s) for a in AKTORLER for s in DIS_OLGULAR]


def birlesik(baglar, ic, sahip):
    """Tek aktorlu diyagram: senaryo basina yalnizca 'bagli bir aktor var mi'."""
    return (("Kullanici",), tuple(DIS_OLGULAR),
            tuple(any(b[1] == s for b in baglar) for s in DIS_OLGULAR),
            tuple(sahip[s] for s in DIS_OLGULAR))


hedef = birlesik(GERCEK_BAGLAR, IC_OLGULAR, GERCEK_SAHIP)
sayi = 0
for bm in product((0, 1), repeat=len(OLASI)):
    baglar = [b for b, m in zip(OLASI, bm) if m]
    for im in product((0, 1), repeat=len(IC_OLGULAR)):
        ic = [i for i, m in zip(IC_OLGULAR, im) if m]
        if birlesik(baglar, ic, GERCEK_SAHIP) == hedef:
            sayi += 1
print()
print("iki aktor tek rolde birlestirilirse:")
print("  simge", simge(GERCEK_BAGLAR), "-> 8 | dusen", TABAN, "->", sayi,
      "| oran", sayi // TABAN, "kat")
```

```
SISTEM  : 20 olgu = 2 aktor + 3 senaryo + 5 bag + 3 sahiplik + 7 ic adim
GOSTERIM: 9 simge
BEDEL   : 512 sistem ayni diyagrama dusuyor

  bilerek atilan (gosterim tasiyamaz)   : 7 ic adim
  farkinda olmadan dusen (tasinabilirdi): 2 bag
     yazilmamis: KabulGorevlisi -> is emri acma
     yazilmamis: KabulGorevlisi -> teslim alma
  cizilen diyagram       : simge 9 | dusen 512
  bes bagin besi yazilsa : simge 11 | dusen 128 <- gosterimin TABANI

alan dusurulunce taban ne oluyor
alan kumesi                 simge  dusen  tasidigi bit
aktor+senaryo+bag+sinir       11    128            0
bag dusurulur                  6   4096            5
sinir dusurulur               10   1024            3
ikisi de dusurulur             5  32768            8

iki ic adim dahil edilen senaryo olarak cizilirse:
  simge 11 -> 15 | dusen 128 -> 32
  bedel: aktoru olmayan senaryo sayisi 0 -> 2 | dis olgu orani 3/3 -> 3/5

iki aktor tek rolde birlestirilirse:
  simge 11 -> 8 | dusen 128 -> 3456 | oran 27 kat
```

Üç sayı yan yana duruyor: sistem **20 olgu**, gösterim **9 simge**, bedel **512 sistem**. Beş yüz
on iki ayrı bakım atölyesi bu diyagramla aynı görünüyor; diyagrama bakan biri hangisine baktığını
bilemez.

## İki Ayrı Kayıp

Beş yüz on iki sayısı iki farklı kaynaktan geliyor ve ayrılmadıkları sürece hiçbir işe yaramazlar.

**Bilerek atılan olgu.** Yedi iç adımın hiçbiri gösterimin bilgi kümesinde yer bulmuyor. Kullanım
senaryosu gösteriminde iç adımı yazacak bir alan yoktur; olsaydı da yazılmazdı, çünkü bu
gösterimin varlık nedeni sistemin içini kapatıp dışını göstermektir. Bu kayıp **çizeni değil türü
bağlar**: her kullanım senaryosu diyagramı bu yedi olguyu atar, ne kadar dikkatli çizilirse
çizilsin.

**Farkında olmadan düşen olgu.** Kabul görevlisinin iki bağı gösterimin taşıyabileceği türdendi —
aktör–senaryo bağı, listenin üçüncü kalemi. Yazılmadılar. Bu kayıp **türü değil çizeni bağlar** ve
başka bir diyagram çizmeye gerek kalmadan düzeltilebilir.

İkisi arasındaki fark, diyagrama bakarak görülemez. Okur her iki durumda da aynı şeyi görür:
orada olmayan bir bilgi. Bir bilginin **kasıtla mı yoksa dikkatsizlikle mi** yok olduğu, ancak
sistemin kendisi elde tutulup gösterimle karşılaştırıldığında ortaya çıkar. Bu yüzden kayıp
sayılmadıkça amaç olduğu bilinemez; sayılmamış bir boşluk savunulmuş bir boşluk değildir, yalnız
görülmemiş bir boşluktur.

## Taban Belirsizlik Türle Gelir

İki bağ yazıldığında belirsizlik 512'den **128**'e iniyor: dört kat. Bu düşüşün tamamı çizenin
hesabına yazılır, çünkü ödenen bedel yalnız iki simgedir — 9 simge 11 oluyor.

Yüz yirmi sekiz sayısı ise oradan aşağı inmiyor. Bu, kullanım senaryosu gösteriminin **taban
belirsizliğidir**: yedi iç adımın her biri sistemde ya vardır ya yoktur, gösterim hiçbirini yazmaz,
dolayısıyla $2^7 = 128$ ayrı sistem aynı diyagrama düşer. Taban çizim ustalığıyla değişmeyen bir
sayıdır; **türle birlikte gelir**.

Bir gösterim değerlendirilirken bakılacak iki sayı budur. Taban, seçilen türün ne kadarını
göstermeyi baştan reddettiğini söyler. Taban ile gerçek belirsizlik arasındaki fark, çizenin ne
kadarını gereksiz yere kaybettiğini söyler. İlki bir tasarım kararıdır, ikincisi bir kusurdur, ve
tek bir sayıyla anıldıklarında ayırt edilemezler.

## Bir Simge Her Zaman Bir Bit Değildir

Orta tablo alanları teker teker düşürüp tabanın nereye çıktığını ölçüyor. Beş bağ simgesi
düşürülünce taban 128'den 4096'ya çıkıyor: beş simge **5 bit** taşıyormuş. Bağ başına tam bir bit,
çünkü her bağ sistemde ya vardır ya yoktur.

Sınır ise böyle davranmıyor. Tek bir sınır simgesi düşürüldüğünde taban 128'den **1024**'e
çıkıyor — bir simge **3 bit** taşıyor. Nedeni şu: sınır tek bir olguyu değil, üç senaryonun
üçünün birden sahipliğini söylüyor. Sınır çizilmemiş bir diyagramda okur, iş emri açmanın
atölyenin işi mi yoksa komşu bir sistemin işi mi olduğunu bilemez; üç senaryo için üç ayrı
bilinmeyen kalır.

Bu, yapı gösteriminde ölçülen orandan farklıdır: orada eklenen her simge tam olarak bir bit
belirsizlik alıyordu, çünkü her simge tek bir ikili alanı yazıyordu. Kullanım senaryosu
gösteriminde bir simgenin taşıdığı bit sayısı, o simgenin kaç olguyu birden sabitlediğine bağlıdır.
İkisi düşürüldüğünde taban 32768'e çıkıyor ve gösterim 5 simgeye iniyor: kalan diyagram iki aktör
ve üç senaryo adından ibarettir, ve **8 bit** bilgi kaybetmiştir. Buradan çıkan kural, simge saymanın
tek başına bir ölçü olmadığıdır; sayılacak şey simge değil, **simgenin sabitlediği olgudur**.

## Rolleri Birleştirmenin Sayısı

Aynı ölçü ters yönde de işler. Müşteri ile kabul görevlisi tek bir kullanıcı rolünde
birleştirilirse (**DD4**) diyagram sadeleşir: 11 simge 8'e iner, bağ sayısı beşten üçe düşer,
çizim küçülür. Belirsizlik ise 128'den **3456**'ya çıkıyor — **27 kat**.

Yirmi yedi sayısı doğrudan okunabilir. Tek aktörlü diyagram her senaryo için yalnız "bir kullanıcı
buna bağlıdır" diyor; hangi rolün bağlı olduğunu söylemiyor. Üç senaryonun her biri için iki rolden
en az birinin bağlı olması gerekiyor, bu da senaryo başına $2^2 - 1 = 3$ olasılık, üç senaryo için
$3^3 = 27$ demektir. Yedi iç adımın 128'i ile çarpılınca 3456 çıkıyor.

Burada rolleri ayrı tutmanın gerekçesi bir üslup tercihi değil, ölçülmüş bir bilgi miktarıdır. Üç
simge tasarruf edildi ve karşılığında yaklaşık 4,75 bit bilgi verildi. Bir gösterim sadeleştirilirken
sorulacak soru, çizimin daha temiz görünüp görünmediği değil, hangi olguların ayırt edilemez hâle
geldiğidir.

## İç Adımı Gösterime Sokmak

Belirsizliği tabanın altına indirmenin tek bir yolu var: taşınmayan olguyu taşınır kılmak. Belge
üretme ile maliyet hesabı, senaryonun içine dâhil edilen ikinci düzey senaryolar olarak çizilebilir
(**DD3**). Sayı hemen düşüyor: taban **128'den 32'ye** iniyor, iki bit kazanılıyor, gösterim 11
simgeden 15'e çıkıyor.

Bedel simge sayısı değil. Yeni çizilen iki senaryonun **hiçbir aktör bağı yok** — hiçbir aktör
onları başlatmıyor, çünkü ikisi de sistemin kendi işidir. Aktörü olmayan senaryo sayısı 0'dan 2'ye
çıkıyor. Diyagramdaki dış olgu oranı 3/3'ten 3/5'e düşüyor: gösterimin beş senaryosundan yalnız
üçü sistemin dışından başlatılıyor.

Bunun anlamı şudur: sistem sınırı artık bir şey ayırmıyor. Sınırın taşıdığı bilgi, "içerisi
kapalıdır, dışarısı bu üç kapıdan girer" bilgisiydi; iç adımlar kapının aynı tarafına taşınınca o
bilgi geçersizleşiyor. Belirsizlik dört kat azaldı, ama gösterimin **söylediği şey değişti** —
artık dışarıdan görünen yüzü değil, işin bir kısmını anlatıyor. Kazanç 2 bittir ve sayılabilir;
kayıp bir alanın anlamıdır ve ancak fark edildiğinde sayılabilir.

## Özet

- Kullanım senaryosu gösterimi dört alan taşır: aktör, senaryo, aktör–senaryo bağı, sistem sınırı.
  Sıra, koşul, iç adım ve veri bu listede yoktur.
- Atölyenin 20 olgusundan (2 aktör, 3 senaryo, 5 bağ, 3 sahiplik, 7 iç adım) çizilen diyagram 9
  simge yazıyor ve **512 ayrı sistem** aynı diyagrama düşüyor.
- Beş yüz on iki iki kaynaktan gelir: gösterimin taşıyamadığı **7 iç adım** ve gösterimin
  taşıyabileceği hâlde yazılmamış **2 bağ**. İkisi diyagrama bakarak ayırt edilemez.
- Eksik iki bağ yazılınca belirsizlik 128'e iner; 128 gösterimin **taban belirsizliğidir**, türle
  birlikte gelir ve çizim ustalığıyla değişmez.
- Beş bağ simgesi 5 bit, tek sınır simgesi 3 bit taşıyor: bir simgenin taşıdığı bit, o simgenin
  kaç olguyu birden sabitlediğine bağlıdır.
- İki aktörü tek rolde birleştirmek 11 simgeyi 8'e indiriyor ama belirsizliği 128'den 3456'ya
  çıkarıyor: 27 kat. İki iç adımı dâhil edilen senaryo olarak çizmek tabanı 32'ye indiriyor ama
  aktörü olmayan senaryo sayısını 0'dan 2'ye çıkarıyor ve dış olgu oranını 3/3'ten 3/5'e düşürüyor.

## Sonraki Adım

Kullanım senaryosu gösterimi sistemin içini bilerek kapattı ve bunun bedeli sayıldı. Sonraki
gösterim tam tersini yapıyor: kapağı kaldırıp içeriyi, iletileri zaman eksenine dizerek gösteriyor.
İlk bakışta bu, kaybı sıfırlayan bir seçim gibi görünür — her ileti, her katılımcı, her sıra
numarası yazılıdır.

Sonraki ders bunun neden yanlış bir okuma olduğunu ölçer. Atölyenin akışı, ayırmanın iki dalı,
usta bulunmasının iki dalı, değişken kalem sayısı ve isteğe bağlı belge üretimi yüzünden **24 ayrı
iz** üretiyor. Bir sıra diyagramı tanımı gereği **tek bir izdir**; kapsamı 1/24, yani 0,0417. Dört
diyagram 0,1667 yapar. Ders koşullu dal ve döngü gösterimlerinin bu oranı nereye taşıdığını, ve
oranı 1,0'a çıkarmanın hangi bedelle geldiğini sayar.
