SEN2022 · 6. hafta · Use Cases and Use Case Diagrams

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 caseactorprimary actorsecondary actorsystem boundaryassociationinclude relationshipextend relationshipextension pointgeneralizationuse case diagramsubjectstakeholder

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:

  1. Actor bir roldür, sistemin dışındadır. İnsan, dış sistem ya da zaman olabilir.
  2. Use case aktöre değer veren bir hedeftir. Adı fiil + nesne: “Book Class”.
  3. Include zorunlu, extend koşullu. Include oku temelden eklenene, extend oku genişletenden temele.
  4. Generalization üçgen uçlu düz çizgi, alttan üste.

Temel öğeler

ÖğeGösterimAnlamı
ActorÇöp adam (ya da <<actor>> kutusu)Sistemle etkileşen rol
Use caseOval, içinde adAktör için bir hedef
System boundaryDikdörtgen, üstünde sistem adıKapsam
AssociationDüz çizgi (aktör - use case)Aktör bu use case’e katılır
IncludeKesik ok, <<include>>Zorunlu ortak parça
ExtendKesik ok, <<extend>>Koşullu ek davranış
GeneralizationDü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

IncludeExtendGeneralization
Ne zaman çalışırHer zamanKoşul doğuncaAlt tür üst türün yerine geçer
Temel use case tek başına tamam mıHayırEvetÜst tür soyut olabilir
Ok yönüTemel → eklenenGenişleten → temelAlt → üst
ÇizgiKesik, açık okKesik, açık okDü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ç.

AdayAktör mü?Neden
Kişi / ÜyeEvet: MemberRol
Ön büro görevlisiEvet: Front Desk StaffRol
AntrenörEvet: TrainerRol
PersonelEvet: Staff (üst aktör)Ortak rol
Ödeme servisiEvet: Payment ServiceDış sistem
Ay sonuEvet: TimeZamanla tetiklenen iş
TurnikeHayır (bu çözümde)Sistemin parçası sayıldı
Ders programı, raporHayırVeri

Adım 2: Use case’leri bul. Fiilleri tara.

Use casePrimary actorNot
Register MemberFront Desk Staff
Renew MembershipMemberPayment Service secondary
Pay Reactivation Fee(extend)Koşullu
Book ClassMember
Cancel BookingMember
Check InMember
Verify Membership(include)Ortak zorunlu
Manage Class ScheduleTrainer
Generate Monthly ReportTime

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üşünceDoğrusu
Aktör belirli bir kişidirRoldür; bir kişi birden çok rol oynayabilir
Veritabanı ya da rapor aktördürVeridir, sistemin içindedir
Include koşulludurInclude her zaman çalışır; koşullu olan extend
Extend oku temelden çıkarExtend oku genişletenden temele gider
Her ekran ya da adım bir use caseUse 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 çizmekAktör her zaman dışarıda
Generalization oku üstten altaAlttan üste, boş üçgen üst türde

Kendini test et

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

Soru 1kolay

In a use case diagram, what does an actor represent?

  1. A specific person, e.g., 'Ayşe'
  2. A role played by a person, a system or time that interacts with the system
  3. A class in the design
  4. A screen of the application
Cevabı göster
B) A role played by a person, a system or time that interacts with the system

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.

Soru 2orta

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
Customer, Courier, Restaurant Staff, Payment Gateway

İ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.

Soru 3orta

For the same food-delivery scenario, list the use cases.

Cevabı göster
Browse Restaurants, Place Order, Pay Online, Accept Delivery, Mark as Delivered, Update Menu

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.

Soru 4kolay

Both 'Book Class' and 'Check In' always need to verify that the membership is active. Which relationship models this?

  1. Extend
  2. Include
  3. Generalization
  4. Association
Cevabı göster
B) Include

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.

Soru 5orta

In an extend relationship, which way does the arrow point?

  1. From the base use case to the extending use case
  2. From the extending use case to the base use case
  3. From the actor to the use case
  4. There is no arrow
Cevabı göster
B) From the extending use case to the base use case

<<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.

Soru 6orta

'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
A use case 'Pay Reactivation Fee' that <<extend>>s 'Renew Membership' (condition: expired > 30 days).

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.

Soru 7zor

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
Create a general actor 'Staff' associated with View Member Profile; make Front Desk Staff and Trainer specialize Staff (actor generalization); Trainer keeps its own association to Create Workout Plan.

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.

Soru 8kolay

Which is a BAD use case name?

  1. Reserve Book
  2. Pay Fine
  3. Database Update
  4. Return Book
Cevabı göster
C) Database Update

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ı.

Soru 9orta

In the gym diagram on this page, how many use cases are inside the system boundary?

Cevabı göster
9

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.

Soru 10zor

Why is 'Enter Password' usually not modeled as a separate use case?

Cevabı göster
It is a step inside a use case (too small), not a complete goal that gives the actor value.

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.

Soru 11kolay

What does the system boundary rectangle show?

Cevabı göster
What is inside the system (use cases) versus outside (actors); the scope of the system.

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ı.

Deftere not kartı

Actor = rol (insan, dış sistem, zaman), sınırın DIŞINDA, çöp adam Primary actor: use case'i başlatır; secondary: sistemin yardım aldığı Use case = aktöre değer veren hedef, oval, "fiil + nesne" System boundary = kapsam kutusu, üstte sistem adı Association: aktör ile use case arası düz çizgi <<include>>: ZORUNLU ortak davranış; ok temel → eklenen (kesik) <<extend>>: KOŞULLU/opsiyonel davranış; ok genişleten → temel (kesik) Generalization: düz çizgi + boş üçgen, alt → üst (aktör ya da use case) Alt aktör üst aktörün tüm use case'lerini miras alır Adım ≠ use case ("şifre gir" adımdır) Aktör sayılmaz, use case sınır içinde sayılır Bir diyagramda ideal 3-9 use case ana grubu