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 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:
- Normal flow tek bir başarılı senaryodur. Hata ve seçenekler ayrı başlıkta.
- Her adımda özne belli olsun: “Öğrenci …”, “Sistem …”. Pasif cümle yok.
- Sapmalar adım numarasıyla yazılır: “4a. Kitap zaten rezerveyse …”.
- Aynı soyutlama seviyesi. Bir adım “kitap seçer”, diğeri “fareyi sağa kaydırır” olmasın.
Üç ayrıntı seviyesi
| Seviye | Uzunluk | Ne zaman |
|---|---|---|
| Brief | 2-4 cümle, sadece ana senaryo | Erken analiz, use case listesini tanıtmak |
| Casual | Birkaç paragraf, alternatifler düz metin | Orta önemde use case’ler |
| Fully dressed | Tam ş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 name | Fiil + nesne |
| ID | UC-xx |
| Importance level | High / Medium / Low |
| Primary actor | Başlatan rol |
| Use case type | Overview/detail, essential/real |
| Stakeholders and interests | Sonuçla ilgilenen herkes ve beklentisi |
| Brief description | 1-2 cümle |
| Trigger | Başlatan olay |
| Trigger type | External / temporal |
| Relationships | Association, include, extend, generalization |
| Preconditions | Başlamadan doğru olması gerekenler |
| Normal flow of events | Numaralı ana başarı adımları |
| Subflows | Uzun adımların ayrıntısı (S-1, S-2) |
| Alternate / exceptional flows | Sapmalar (4a, 6a …) |
| Postconditions | Baş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ı
- 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ı.
- Kim başlatıyor belli olsun. Her adım ya aktörün ya sistemin eylemidir.
- Bağımsız gözlemci gibi yaz. “Ben butona basıyorum” değil, “Öğrenci isteği gönderir.”
- Aynı soyutlama seviyesi. Ekran ayrıntısı (renk, buton yeri) analiz description’ına girmez.
- Makul adım sayısı. 3-9 adım ideal. Çok uzunsa subflow’a ya da ayrı use case’e böl.
- Basit tut (KISS). Her olası durumu normal flow’a doldurma.
- 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’daki | Nereye 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’lar | Test case’ler (13. hafta) |
Sık yapılan hatalar
| Yanlış düşünce | Doğrusu |
|---|---|
| Normal flow’a if/else yazmak | Normal flow tek başarı yolu; sapmalar alternate’e |
| Pasif adımlar (“kontrol edilir”) | Özneyi yaz: “Sistem kontrol eder” |
| Trigger = precondition | Trigger 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 flow | Subflow’a böl ya da use case’i parçala |
| Postcondition = son adım | Bittikten sonra doğru olan durumdur (kayıt var, durum değişti) |
| Stakeholder = sadece aktörler | Aktö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ç.
What is the difference between a brief and a fully dressed use case description?
Cevabı göster
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.
'Every night at 23:00 the system sends reminder e-mails for books due tomorrow.' What type of trigger is this?
- External trigger
- Temporal trigger
- Exceptional trigger
- Include trigger
Cevabı göster
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."
Which part of a use case description lists what must be true before the use case can start?
- Trigger
- Postconditions
- Preconditions
- Normal flow
Cevabı göster
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.
In the Reserve Book description on this page, which flow handles 'the book is already reserved by someone else'?
- Normal flow
- Subflow S-1
- Alternate/exceptional flow
- Postcondition
Cevabı göster
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.
What is wrong with this step: 'The system is used to check the fine'?
Cevabı göster
İ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.
What is the difference between an alternate flow and an exceptional flow?
Cevabı göster
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.
The normal flow of 'Reserve Book' on this page has how many numbered steps?
Cevabı göster
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.
Which field records who cares about the use case and why, e.g., 'Librarian: wants fewer no-shows'?
- Primary actor
- Stakeholders and interests
- Relationships
- Importance level
Cevabı göster
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.
Write a brief description for the use case 'Track Order' in a food-delivery app.
Cevabı göster
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.
An essential use case and a real use case differ how?
Cevabı göster
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.
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
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ı.