Use case ve use case diyagramları
Actor, use case, system boundary ve include, extend, generalization ilişkileri. Sınavda bir senaryo verilir, aktörleri ve use case'leri çıkarıp diyagramı çizmen istenir.
Use case modeli fonksiyonel modellemenin başlangıcıdır: kullanıcıların sistemle ne yapmak istediğini gösterir. Diyagram kendisi basittir (çöp adamlar, ovaller, çizgiler) ama sınavda puan kaybı tam olarak detaylardan gelir: include ile extend’i karıştırmak, okun yönünü ters çizmek, bir adımı use case yapmak, veriyi aktör sanmak. Tipik sınav sorusu: bir paragraf senaryo verilir, “Identify the actors and use cases and draw the use case diagram” denir.
Altın kurallar:
- Actor bir roldür, sistemin dışındadır. İnsan, dış sistem ya da zaman olabilir.
- Use case aktöre değer veren bir hedeftir. Adı fiil + nesne: “Book Class”.
- Include zorunlu, extend koşullu. Include oku temelden eklenene, extend oku genişletenden temele.
- Generalization üçgen uçlu düz çizgi, alttan üste.
Temel öğeler
| Öğe | Gösterim | Anlamı |
|---|---|---|
| Actor | Çöp adam (ya da <<actor>> kutusu) | Sistemle etkileşen rol |
| Use case | Oval, içinde ad | Aktör için bir hedef |
| System boundary | Dikdörtgen, üstünde sistem adı | Kapsam |
| Association | Düz çizgi (aktör - use case) | Aktör bu use case’e katılır |
| Include | Kesik ok, <<include>> | Zorunlu ortak parça |
| Extend | Kesik ok, <<extend>> | Koşullu ek davranış |
| Generalization | Düz çizgi, boş üçgen uç | “Bir türüdür” ilişkisi |
Actor
Aktör, sistemin dışında kalan ve sistemle bilgi alışverişi yapan bir roldür. Sınavda dikkat edilecek üç nokta:
- Rol, kişi değil. “Ahmet Hoca” değil “Instructor”.
- Dış sistemler aktördür. Ödeme sağlayıcısı, üniversitenin öğrenci bilgi sistemi.
- Zaman aktör olabilir. “Her ay sonu rapor üret” gibi otomatik işleri başlatan “Time” aktörü.
Primary actor use case’i başlatan, ondan değer alan aktördür. Secondary (supporting) actor sistemin işi yapmak için yardım aldığı aktördür (ör. Payment Service).
Use case
Bir use case, aktörün sistemle gerçekleştirdiği ve sonunda “işim bitti” diyebileceği tam bir hedeftir. Kontrol soruları:
- Aktöre değerli bir sonuç veriyor mu?
- Tek oturumda (bir seferde) tamamlanıyor mu?
- Aktörün dilinde mi, teknik dilde mi?
İyi: “Reserve Book”, “Pay Fine”, “Track Order”. Kötü: “Login Screen” (ekran), “Validate Input” (adım), “Database” (teknoloji).
İlişkiler
Association
Aktörle use case arasındaki düz çizgi. Aktörün bu use case’e katıldığını gösterir. Okun olması şart değildir. İsteğe bağlı olarak çokluk (multiplicity) yazılabilir.
Include
Birden çok use case’in her seferinde ihtiyaç duyduğu ortak davranış ayrı bir use case’e çıkarılır. Temel use case, eklenen olmadan tamamlanamaz.
(Book Class) - - <<include>> - -> (Verify Membership)
(Check In) - - <<include>> - -> (Verify Membership)
Extend
Temel use case’e sadece belirli bir koşulda eklenen davranış. Temel use case, extend olmadan da tamamlanabilir. Genişleme noktası (extension point) temel use case içinde adlandırılabilir.
(Pay Reactivation Fee)
- - <<extend>> - -> (Renew Membership)
koşul: üyelik 30 günden fazla önce bitmiş
TUZAK · ok yönleri. Include: “Book Class, Verify Membership’i içerir” → ok Book Class’tan çıkar. Extend: “Pay Reactivation Fee, Renew Membership’i genişletir” → ok Pay Reactivation Fee’den çıkar. Cümleyi kur, ok öznede başlar.
Generalization
Actor generalization: Alt aktör, üst aktörün tüm ilişkilerini miras alır. Front Desk Staff ve Trainer, Staff’ın özel halleridir.
Use case generalization: Bir use case’in özel türleri. “Pay Fee” genel, “Pay by Card” ve “Pay by Cash” alt türler.
Front Desk Staff ---|> Staff
Trainer ---|> Staff
(Pay by Card) ---|> (Pay Fee)
---|> burada içi boş üçgen uçlu düz çizgiyi temsil ediyor.
Include, extend, generalization karşılaştırma
| Include | Extend | Generalization | |
|---|---|---|---|
| Ne zaman çalışır | Her zaman | Koşul doğunca | Alt tür üst türün yerine geçer |
| Temel use case tek başına tamam mı | Hayır | Evet | Üst tür soyut olabilir |
| Ok yönü | Temel → eklenen | Genişleten → temel | Alt → üst |
| Çizgi | Kesik, açık ok | Kesik, açık ok | Düz, boş üçgen |
Çözümlü örnek: FitHub spor salonu
Senaryo: “Bir kişi resepsiyonda ön büro görevlisi aracılığıyla üye olur. Üyeler üyeliklerini online yeniler; üyelik 30 günden fazla önce bitmişse yeniden aktivasyon ücreti öderler. Ödemeler dış bir ödeme servisi üzerinden alınır. Üyeler grup derslerine rezervasyon yapar ve rezervasyonlarını iptal eder. Salona girişte turnikede check-in yaparlar. Rezervasyon ve check-in için üyeliğin aktif olduğu her seferinde doğrulanır. Antrenörler ders programını yönetir. Her ay sonunda sistem otomatik olarak aylık rapor üretir ve yöneticilere gönderir. Ön büro görevlileri ve antrenörler personel olarak ortak işleri paylaşır.”
Adım 1: Aktörleri bul. İsimleri tara, sistemle etkileşen rolleri seç.
| Aday | Aktör mü? | Neden |
|---|---|---|
| Kişi / Üye | Evet: Member | Rol |
| Ön büro görevlisi | Evet: Front Desk Staff | Rol |
| Antrenör | Evet: Trainer | Rol |
| Personel | Evet: Staff (üst aktör) | Ortak rol |
| Ödeme servisi | Evet: Payment Service | Dış sistem |
| Ay sonu | Evet: Time | Zamanla tetiklenen iş |
| Turnike | Hayır (bu çözümde) | Sistemin parçası sayıldı |
| Ders programı, rapor | Hayır | Veri |
Adım 2: Use case’leri bul. Fiilleri tara.
| Use case | Primary actor | Not |
|---|---|---|
| Register Member | Front Desk Staff | |
| Renew Membership | Member | Payment Service secondary |
| Pay Reactivation Fee | (extend) | Koşullu |
| Book Class | Member | |
| Cancel Booking | Member | |
| Check In | Member | |
| Verify Membership | (include) | Ortak zorunlu |
| Manage Class Schedule | Trainer | |
| Generate Monthly Report | Time |
Adım 3: Diyagram.
+------- FitHub Membership System ---------+
| |
| (Register Member) |
| (Renew Membership)<-<<ext>>-(Pay React. |
| | Fee) |
| (Book Class)--<<inc>>-->(Verify |
| (Check In)----<<inc>>--> Membership) |
| (Cancel Booking) |
| (Manage Class Schedule) |
| (Generate Monthly Report) |
+------------------------------------------+
Associations (dışarıdan):
Member ......... Renew, Book, Cancel, Check In
FrontDeskStaff . Register Member
Trainer ........ Manage Class Schedule
Payment Service Renew Membership
Time ........... Generate Monthly Report
Generalization:
Front Desk Staff --|> Staff
Trainer --|> Staff
Adım 4: Kontrol.
- Her aktör en az bir use case’e bağlı mı? Evet. (Staff üst aktör; ortak bir use case eklenirse, ör. “View Member Profile”, ona bağlanır.)
- Her use case’e bir aktör ulaşıyor mu ya da include/extend ile bağlı mı? Evet.
- Sınır içinde 9 use case var. Okunabilirlik sınırında; daha büyük sistemde paketlere bölünür.
Use case nereden gelir?
Use case’ler 5. haftada topladığın functional gereksinimlerden türetilir. Her functional gereksinim en az bir use case’e izlenebilmeli (traceability). Nonfunctional gereksinimler diyagramda görünmez; ilgili use case description’ın “special requirements” kısmına yazılır (7. hafta).
Sık yapılan hatalar
| Yanlış düşünce | Doğrusu |
|---|---|
| Aktör belirli bir kişidir | Roldür; bir kişi birden çok rol oynayabilir |
| Veritabanı ya da rapor aktördür | Veridir, sistemin içindedir |
| Include koşulludur | Include her zaman çalışır; koşullu olan extend |
| Extend oku temelden çıkar | Extend oku genişletenden temele gider |
| Her ekran ya da adım bir use case | Use case tam bir hedeftir; adımlar description’a |
| Use case’leri oklarla sıralamak (önce login sonra …) | Use case diyagramı sıra göstermez; sıra activity/sequence diyagramındadır |
| Aktörü sınırın içine çizmek | Aktör her zaman dışarıda |
| Generalization oku üstten alta | Alttan üste, boş üçgen üst türde |
Kendini test et
Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.
In a use case diagram, what does an actor represent?
- A specific person, e.g., 'Ayşe'
- A role played by a person, a system or time that interacts with the system
- A class in the design
- A screen of the application
Cevabı göster
Actor bir roldür, kişi değil. Aynı kişi hem Member hem Staff olabilir. Dış sistemler (Payment Service) ve zaman (Time, aylık otomatik işler için) da aktör olabilir. Aktör her zaman sistem sınırının dışındadır.
Food-delivery app: 'A customer browses restaurants and places an order. The customer pays online through an external payment gateway. A courier accepts a delivery and marks it delivered. Restaurant staff update the menu.' List the actors.
Cevabı göster
İnsan rolleri: Customer, Courier, Restaurant Staff. Dış sistem: Payment Gateway (secondary actor, sistem onu kullanır). "Restaurant" ve "menu" aktör değildir, sistemin içindeki veri ya da kavramlardır.
For the same food-delivery scenario, list the use cases.
Cevabı göster
Use case adı fiil + nesne: aktörün sistemden aldığı değerli bir sonuç. Altı use case çıkar. Pay Online, Place Order'ın zorunlu parçasıysa <<include>> ile bağlanabilir; Payment Gateway, Pay Online'a bağlanır.
Both 'Book Class' and 'Check In' always need to verify that the membership is active. Which relationship models this?
- Extend
- Include
- Generalization
- Association
Cevabı göster
Birden çok use case'in her seferinde (zorunlu olarak) kullandığı ortak davranış ayrı bir use case olarak çıkarılır ve <<include>> ile bağlanır: Book Class → Verify Membership, Check In → Verify Membership.
In an extend relationship, which way does the arrow point?
- From the base use case to the extending use case
- From the extending use case to the base use case
- From the actor to the use case
- There is no arrow
Cevabı göster
<<extend>> oku genişleten (opsiyonel) use case'den temel use case'e gider: Pay Late Fee - - -> Renew Membership. <<include>> ise tersine, temelden eklenene gider. İkisi de kesik çizgili oktur.
'When renewing, if the membership expired more than 30 days ago, the member must also pay a reactivation fee.' Model the reactivation fee.
Cevabı göster
Davranış sadece bir koşul doğduğunda çalışıyor: extend. Temel use case (Renew Membership) bu ek olmadan da tamamlanabilir. Koşul, extension point ile birlikte not olarak yazılabilir.
Front Desk Staff and Trainer can both 'View Member Profile', and Trainers can also 'Create Workout Plan'. How can you simplify the diagram?
Cevabı göster
Actor generalization: alt aktör, üst aktörün bütün use case'lerini miras alır. Ok alt aktörden üst aktöre, içi boş üçgen uçlu düz çizgidir. Böylece View Member Profile'a iki ayrı çizgi yerine bir çizgi çekilir.
Which is a BAD use case name?
- Reserve Book
- Pay Fine
- Database Update
- Return Book
Cevabı göster
Use case aktör için değerli bir hedeftir ve aktörün dilinde fiil + nesne ile adlandırılır. "Database Update" iç teknik bir işlemdir, öğrenci için bir hedef değildir. Ayrıca fiil değil isim kalıbı.
In the gym diagram on this page, how many use cases are inside the system boundary?
Cevabı göster
Register Member, Renew Membership, Pay Reactivation Fee, Book Class, Cancel Booking, Check In, Verify Membership, Manage Class Schedule, Generate Monthly Report. Toplam 9. Aktörler (Member, Staff, Front Desk Staff, Trainer, Payment Service, Time) sınırın dışındadır ve sayılmaz.
Why is 'Enter Password' usually not modeled as a separate use case?
Cevabı göster
Use case diyagramı üst düzey hedefleri gösterir. "Şifre gir", "butona bas" gibi adımlar use case description'ın adımlarıdır. Çok ince bölünmüş diyagram (functional decomposition) okunmaz hale gelir. Kural: aktör bu use case bitince "işim bitti" diyebilmeli.
What does the system boundary rectangle show?
Cevabı göster
Sistem sınırı (subject) kapsamı çizer: içindekiler bizim geliştireceğimiz işlevler, dışındakiler etkileşen roller. Sınırın adı sistemin adıdır (ör. 'FitHub Membership System').
Doğrulama: Kavramsal ve 'identify' soruları; aktör/use case listeleri ve ilişki türleri UML 2 use case diyagramı kurallarına (include: zorunlu ortak davranış, temel use case'den eklenene ok; extend: koşullu davranış, genişletenden temele ok; generalization: alt türden üst türe içi boş üçgen) göre tek tek kontrol edildi. Sayım soruları sayfadaki diyagram üzerinden elle sayıldı ve iki kez karşılaştırıldı.