SEN2022 · 7. hafta · Use Case Descriptors

Use case tanımları: brief'ten fully dressed'e

Bir use case'i metin olarak yazma: trigger, preconditions, normal flow, subflow, alternate ve exception flow. Sınavda baştan sona bir use case description yazman istenir.

use case descriptionbrief descriptioncasual use casefully dressed use casetriggerexternal triggertemporal triggerpreconditionspostconditionsnormal flow of eventssubflowalternate flowexceptional flowstakeholders and interestsimportance leveloverview use casedetail use caseessential use casereal use case

Use case diyagramı ne yapılacağını gösterir ama ayrıntı vermez. Ayrıntıyı use case description verir: aktör sistemle adım adım nasıl etkileşir, ne yanlış gidebilir, bittiğinde ne doğru olur. Bu metin hem tasarımcının hem test yazanın girdisidir: her alternate flow bir test case’e dönüşür. Sınavda tipik soru: “Write a fully dressed use case description for X.” Şablonu ezbere bil, adımları düzgün cümleyle yaz, alternate flow’ları atlama.

Altın kurallar:

  1. Normal flow tek bir başarılı senaryodur. Hata ve seçenekler ayrı başlıkta.
  2. Her adımda özne belli olsun: “Öğrenci …”, “Sistem …”. Pasif cümle yok.
  3. Sapmalar adım numarasıyla yazılır: “4a. Kitap zaten rezerveyse …”.
  4. Aynı soyutlama seviyesi. Bir adım “kitap seçer”, diğeri “fareyi sağa kaydırır” olmasın.

Üç ayrıntı seviyesi

SeviyeUzunlukNe zaman
Brief2-4 cümle, sadece ana senaryoErken analiz, use case listesini tanıtmak
CasualBirkaç paragraf, alternatifler düz metinOrta önemde use case’ler
Fully dressedTam şablon, numaralı adımlarÖnemli, riskli, karmaşık use case’ler

Ayrıca iki ayrım:

  • Overview vs detail: Overview use case üst düzeydir (genelde brief), detail use case tam akışı verir.
  • Essential vs real: Essential use case teknolojiden bağımsızdır (“Öğrenci kitabı seçer”). Real use case belirli arayüzü anlatır (“Öğrenci ‘Rezerve et’ butonuna dokunur”). Analizde essential yaz.

Fully dressed şablon

Alanİçerik
Use case nameFiil + nesne
IDUC-xx
Importance levelHigh / Medium / Low
Primary actorBaşlatan rol
Use case typeOverview/detail, essential/real
Stakeholders and interestsSonuçla ilgilenen herkes ve beklentisi
Brief description1-2 cümle
TriggerBaşlatan olay
Trigger typeExternal / temporal
RelationshipsAssociation, include, extend, generalization
PreconditionsBaşlamadan doğru olması gerekenler
Normal flow of eventsNumaralı ana başarı adımları
SubflowsUzun adımların ayrıntısı (S-1, S-2)
Alternate / exceptional flowsSapmalar (4a, 6a …)
PostconditionsBaşarıyla bitince doğru olan durum

Bazı şablonlar ayrıca “special requirements” alanı içerir: bu use case’e ait nonfunctional gereksinimler (ör. “Rezervasyon onayı 3 sn içinde”).

Adım yazma kuralları

  1. SVDPI kalıbı: Subject - Verb - Direct object - Preposition - Indirect object. “Sistem (S) onay e-postasını (D) öğrenciye (I) gönderir (V).” Türkçe söz diziminde fiil sona gelir; önemli olan öznenin ve nesnenin belli olması.
  2. Kim başlatıyor belli olsun. Her adım ya aktörün ya sistemin eylemidir.
  3. Bağımsız gözlemci gibi yaz. “Ben butona basıyorum” değil, “Öğrenci isteği gönderir.”
  4. Aynı soyutlama seviyesi. Ekran ayrıntısı (renk, buton yeri) analiz description’ına girmez.
  5. Makul adım sayısı. 3-9 adım ideal. Çok uzunsa subflow’a ya da ayrı use case’e böl.
  6. Basit tut (KISS). Her olası durumu normal flow’a doldurma.
  7. Tekrar talimatı yaz. Alternate flow’un sonunda nereye dönüldüğünü belirt: “4. adıma dön” ya da “use case biter”.

TUZAK · if/else ile normal flow yazmak. “Kitap müsaitse rezerve eder, değilse bekleme listesine ekler” cümlesi normal flow’a girmez. Normal flow müsait olduğu durumu anlatır; müsait değilse kısmı “4a” olarak alternate’e yazılır.

Çözümlü örnek: Reserve Book (fully dressed)

Bağlam: Kampüs kütüphanesinin rezervasyon sistemi. Öğrenci müsait bir kitabı 48 saatliğine rezerve eder, kitap ödünç masasında tutulur.

Use case name : Reserve Book
ID            : UC-04
Importance    : High
Primary actor : Student
Use case type : Detail, essential

Stakeholders and interests:

  • Student: istediği kitabı kuyrukta beklemeden almak.
  • Librarian: rezervasyonların düzenli ve gelmeyenlerin az olması.
  • Library manager: kaynakların adil kullanımı.

Brief description: Öğrenci bir kitabı arar, müsait bir kopyayı 48 saatliğine rezerve eder; sistem kopyayı ayırır ve onayı gönderir.

Trigger: Öğrenci bir kitabı rezerve etmek ister. Trigger type: External.

Relationships:

  • Association: Student
  • Include: Verify Membership
  • Extend: Join Waiting List
  • Generalization: yok

Preconditions:

  • Öğrenci sisteme giriş yapmış.
  • Kütüphane kataloğu güncel.

Normal flow of events:

1. Öğrenci kitabı başlık, yazar ya da ISBN
   ile arar.
2. Sistem eşleşen kitapları ve her birinin
   müsait kopya sayısını listeler.
3. Öğrenci bir kitap ve teslim şubesi seçer.
4. Sistem S-1: Check Eligibility alt akışını
   çalıştırır.
5. Sistem müsait bir kopyayı 48 saat için
   öğrenci adına ayırır.
6. Sistem rezervasyon kaydını oluşturur ve
   bir rezervasyon kodu üretir.
7. Sistem kopyanın durumunu "On Hold"
   yapar.
8. Sistem onayı ekranda gösterir ve
   öğrenciye e-posta gönderir.

Subflows:

S-1: Check Eligibility
 1. Sistem öğrencinin üyeliğinin aktif
    olduğunu doğrular (Verify Membership).
 2. Sistem öğrencinin ödenmemiş cezası
    olmadığını kontrol eder.
 3. Sistem öğrencinin aktif rezervasyon
    sayısının 3'ten az olduğunu kontrol eder.

Alternate / exceptional flows:

2a. Eşleşen kitap yoksa:
    2a1. Sistem "Sonuç bulunamadı" der.
    2a2. 1. adıma dönülür.
3a. Seçilen kitabın müsait kopyası yoksa:
    3a1. Sistem bekleme listesine katılmayı
         önerir (extend: Join Waiting List).
    3a2. Öğrenci kabul ederse listeye
         eklenir; use case biter.
S-1.2a. Ödenmemiş ceza varsa:
    Sistem ceza tutarını gösterir ve
    rezervasyonu reddeder; use case biter.
S-1.3a. Aktif rezervasyon sayısı 3 ise:
    Sistem limit mesajı gösterir;
    use case biter.
5a. Kopya bu arada başka biri tarafından
    ayrıldıysa:
    Sistem bilgi verir, 2. adıma dönülür.

Postconditions:

  • Başarı: Bir kopya öğrenci adına 48 saatliğine “On Hold” durumda, rezervasyon kaydı ve kodu var.
  • Başarısızlık: Hiçbir kopyanın durumu değişmedi.

Örneği çözümle

  • Normal flow 8 adım. Her adımın öznesi belli: Öğrenci (1, 3), Sistem (2, 4-8).
  • Uygunluk kontrolü subflow’a alındı, ana akış okunur kaldı.
  • Verify Membership başka use case’lerde de (Borrow Book) kullanıldığı için include.
  • Join Waiting List sadece kopya yoksa çalışıyor: extend, alternate flow 3a’da tetikleniyor.
  • 5a, eşzamanlılık sorununu yakalıyor. Bu tür sapmalar tasarımda kilitleme (locking) gereksinimine dönüşür.

Description’dan diğer modellere

Description, sonraki haftaların hammaddesidir:

Description’dakiNereye gider
İsimler (kitap, kopya, rezervasyon, öğrenci)Class diagram adayları (8. hafta)
Adımlar ve sıralarıActivity ve sequence diyagramları (10. hafta)
Durum değişimi (“On Hold”)State machine diyagramı (10. hafta)
Alternate/exception flow’larTest case’ler (13. hafta)

Sık yapılan hatalar

Yanlış düşünceDoğrusu
Normal flow’a if/else yazmakNormal flow tek başarı yolu; sapmalar alternate’e
Pasif adımlar (“kontrol edilir”)Özneyi yaz: “Sistem kontrol eder”
Trigger = preconditionTrigger başlatan olay, precondition önceden doğru olan durum
Arayüz ayrıntısı yazmak (buton rengi)Analizde essential yaz, teknolojiden bağımsız
Alternate flow’da dönüş noktasını yazmamak“2. adıma dön” ya da “use case biter” yaz
25 adımlı normal flowSubflow’a böl ya da use case’i parçala
Postcondition = son adımBittikten sonra doğru olan durumdur (kayıt var, durum değişti)
Stakeholder = sadece aktörlerAktör olmayan ilgililer de yazılır (yönetici, denetçi)

Kendini test et

Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.

Soru 1kolay

What is the difference between a brief and a fully dressed use case description?

Cevabı göster
Brief: a short paragraph (a few sentences) of the main success scenario. Fully dressed: a complete template with actors, stakeholders, trigger, pre/postconditions, numbered normal flow, subflows and alternate/exception flows.

Brief erken analizde, use case listesini hızlıca anlatmak için yazılır. Casual birkaç paragraf, alternatifler düz metin. Fully dressed ise önemli ve riskli use case'ler için tüm alanları dolu, numaralı adımlı şablondur.

Soru 2kolay

'Every night at 23:00 the system sends reminder e-mails for books due tomorrow.' What type of trigger is this?

  1. External trigger
  2. Temporal trigger
  3. Exceptional trigger
  4. Include trigger
Cevabı göster
B) Temporal trigger

Zamanla tetiklenen olay temporal trigger'dır (aktör genelde Time). External trigger dışarıdan bir aktörün eylemidir: "Öğrenci rezervasyon butonuna basar."

Soru 3kolay

Which part of a use case description lists what must be true before the use case can start?

  1. Trigger
  2. Postconditions
  3. Preconditions
  4. Normal flow
Cevabı göster
C) Preconditions

Preconditions başlamadan önce doğru olması gereken durumlardır: "Öğrenci sisteme giriş yapmış olmalı." Trigger başlatan olaydır, postconditions bitince doğru olan durumdur.

Soru 4orta

In the Reserve Book description on this page, which flow handles 'the book is already reserved by someone else'?

  1. Normal flow
  2. Subflow S-1
  3. Alternate/exceptional flow
  4. Postcondition
Cevabı göster
C) Alternate/exceptional flow

Ana başarı senaryosundan sapan durumlar alternate/exceptional flow'da yazılır ve hangi adımdan ayrıldığı numarayla belirtilir (ör. 4a). Subflow ise normal akışın içinde çağrılan, ayrıntısı ayrı yazılmış bir parçadır.

Soru 5orta

What is wrong with this step: 'The system is used to check the fine'?

Cevabı göster
It is passive and unclear who acts; write it as 'The system checks whether the student has unpaid fines.'

İyi adım SVDPI kalıbında yazılır: Subject (kim), Verb, Direct object, Preposition, Indirect object. Pasif cümle aktörü gizler. "Sistem, öğrencinin ödenmemiş cezası olup olmadığını kontrol eder." Kim yapıyor belli.

Soru 6orta

What is the difference between an alternate flow and an exceptional flow?

Cevabı göster
An alternate flow is a valid different path that still reaches the goal; an exceptional flow handles an error and usually ends without reaching the goal.

Alternate: "Öğrenci şubeden teslim yerine kargo seçer", hedef yine gerçekleşir. Exception: "Kitap başka biri tarafından rezerve edilmiş", use case başarıyla bitmez ya da hata mesajıyla geri döner. Bazı şablonlar ikisini tek başlıkta yazar.

Soru 7kolay

The normal flow of 'Reserve Book' on this page has how many numbered steps?

Cevabı göster
8

1 Öğrenci arama yapar ... 8 Sistem onayı gösterir ve e-posta gönderir. Sayfadaki örnekte sekiz adım var. İyi bir normal flow genelde 3-9 adımdır; 15-20 adımı geçerse use case bölünmeli.

Soru 8kolay

Which field records who cares about the use case and why, e.g., 'Librarian: wants fewer no-shows'?

  1. Primary actor
  2. Stakeholders and interests
  3. Relationships
  4. Importance level
Cevabı göster
B) Stakeholders and interests

Primary actor use case'i başlatan roldür. Stakeholders and interests, sonuçla ilgilenen herkesi (aktör olmasalar bile) ve beklentilerini listeler. Bu alan gizli gereksinimleri yakalamaya yarar.

Soru 9orta

Write a brief description for the use case 'Track Order' in a food-delivery app.

Cevabı göster
e.g., 'The customer views the current status and estimated delivery time of an active order; the system shows the courier's position once the order is picked up.'

Brief description bir iki cümledir: kim, ne yapar, ne elde eder. Teknik detay (API, ekran rengi) yazılmaz. Sınavda aktörü ve sonucu içeren tek cümle tam puan alır.

Soru 10zor

An essential use case and a real use case differ how?

Cevabı göster
Essential: describes only the minimum essential steps, technology-independent. Real: describes the steps with specific technology/interface (screens, buttons).

Analizde essential use case yazılır: "Öğrenci kitabı seçer." Tasarımda real use case'e dönüşebilir: "Öğrenci listedeki 'Rezerve et' butonuna dokunur." Analizde arayüze bağlanmak erken karar vermektir.

Soru 11zor

In the fully dressed 'Reserve Book', step 3 says 'Perform S-1: Check Eligibility'. Why use a subflow instead of writing the checks inline?

Cevabı göster
To keep the normal flow short and readable at one level of detail; the subflow holds the details (and can be reused).

Normal flow aynı soyutlama seviyesinde kalmalı. Uygunluk kontrolünün üç alt adımı (ceza, limit, üyelik) ana akışı şişirir. Subflow (S-1) ayrıntıyı ayrı yazar. Birden çok use case aynı kontrolü yapıyorsa bu, include ilişkisine adaydır.

Doğrulama: Kavramsal ve yazma soruları; şablon alanları, akış türleri ve trigger türleri standart use case description tanımlarıyla (Dennis, Wixom ve Tegarden şablonu ve Cockburn'ün brief / casual / fully dressed ayrımı) karşılaştırılarak kontrol edildi. Adım numaraları ve sayımlar sayfadaki örnek üzerinden elle sayıldı.

Deftere not kartı

Brief: 2-4 cümle; Casual: birkaç paragraf; Fully dressed: tam şablon Şablon: name, ID, importance, primary actor, stakeholders & interests, brief description, trigger, trigger type, relationships, preconditions, normal flow, subflows, alternate/exceptional, postconditions Trigger: external (aktör eylemi) / temporal (zaman) Pre: başlamadan önce doğru; Post: bittikten sonra doğru Normal flow: ana başarı yolu, numaralı, 3-9 adım Subflow: uzun parçayı ayır (S-1), normal akıştan "Perform S-1" Alternate: farklı ama geçerli yol; Exception: hata, hedefe ulaşmaz Numaralama: 4a, 4b = 4. adımdan sapma Adım kalıbı SVDPI: kim + fiil + ne + kime/nereye Bağımsız gözlemci bakışı; aynı soyutlama seviyesi; pasif yok Essential (teknolojisiz) vs real (ekran, buton) Include = description'da "Perform/Include X"; extend = alternate'te koşul