Kullanıcıların Senaryoları Use Case'ler


Usa Case 

Use Case’ler yani Türkçe tabirle kullanıcı senaryoları, bir kullanıcının spesifik bir amaca ulaşabilmek için bir sistem içerisinde atması gereken adımları tanımlamak için kullanılırlar. Söz konusu amacı gerçekleştirmeye yönelik tüm olası senaryoların bir arada yer aldığı bir klasör olarak da düşünülebilirler. Use Case (Kullanıcı Senaryosu) Diyagramları, UML yani Unified Modelling Language — Birleşik Modelleme Dili diyagramlarındandır.

Peki nedir bu UML? UML, proje ve iş sistemlerinin modellenmesi konusunda ortaya çıkmış standart bir diyagram çizme ve ilişkisel modelleme dilidir, bir programlama dili değildir. Genellikle yazılım sektöründe kullanılmakla beraber, iş sistemlerini, bir süreci veya herhangi bir işi grafikler ile açıklamak isteyenlerce kullanılır. Bir projenin her türlü bileşeninin ve bu bileşenlerin aralarındaki ilişkilerin görsel olarak ifade edilebilmesini sağlayan bir standarttır. Büyük çaplı projelerde karmaşık yapıları hem geliştirme takımına kolayca aktarmak hem de projenin mimarisini daha proje geliştirilmeye başlanmadan önce belirlemek için oluşturulmuştur.

UML, bir yazılımın geliştirme sürecinde yer alan farklı yönelimleri modelleyecek farklı diyagramlara sahiptir.
Şekil 1. UML Diyagram Türleri
Şimdi konumuz olan Use case diyagramlarına tekrar dönelim. Use case diyagramı için kısa bir tanım yapmak gerekirse “Bir kullanıcı ve bir sistem arasındaki etkileşimi anlatan senaryo topluluğudur.” diyebiliriz. Ivar Jacobson (kendisi UML diyagramlarının mimarı bir bilgisayar mühendisi ve yazılım mühendisidir) senaryo tanımı için der ki:
“Aktörle sistem arasında gerçekleştirilen, sonucunda aktöre fark edilir getirisi/ faydası oluşan etkileşimli diyalogdur.”

Use case analizi ise, yazılım mimarlarının ve analistlerin, geliştirilecek yazılımın gereksinimlerini elde etmek ve düzenlemek için kullandıkları bir yazılım modelleme tekniğidir. Bu analizin öncelikli amacı; sistemi kullanıcı perspektifinden tasarlamak, sistemsel davranışları bizzat kullanıcılarının diliyle ifade etmek ve olası tüm sistemsel davranışları ‘high level’ detay seviyesinde ortaya koymaktır.
Şekil 2. Kullanım Fonksiyonları

Diğer yandan; sistemin fonksiyonel gereksinimlerini, sistemin ne şekilde kullanılacağını, kullanıcıların sistem içerisinde bürüneceği rolleri, kullanıcıların etkilerine bağlı olarak sistemin ne gibi tepkiler vereceğini, müşteri ya da kullanıcıların sistemden hangi faydaları elde edeceğini açık bir şekilde ortaya koymak da bu tekniğin amaçları içerisinde yer almaktadır.

Use Case Diyagramlarının Amacı
·         Bir sistemin gereksinimlerini toplamak için kullanılır. Toplanan gereksinimler üzerinde anlaşmayı kolaylaştırır.
·         Bir sistemin dış görünümünü elde etmek için kullanılır.
·         Sistemi etkileyen dış ve iç faktörleri tanımlamak için kullanılır.
·         Gereksinimler arasındaki etkileşimi aktörler bazında göstermek için kullanılır.
·         Use case diyagramları yazılım ekip üyeleri arasındaki iletişimi geliştirir.
·         İş süreçlerinin anlaşılmasını kolaylaştırır.
Use case’ler vasıtasıyla bir sistemin fonksiyonel gereksinimleri kolayca tanımlanıp, yönetilebilir ve bu şekilde belirlenen kapsam içerisinde kalmak kolaylaşır. Fikirler; müşterilere, geliştirme ekibine, yöneticilere ve proje içerisindeki diğer paydaşlara hızlı, kolay ve anlaşılabilir bir şekilde aktarılabilirler. Tüm bu avantajlar, use case analizinin, bir sistemin fonksiyonel gereksinimlerinin tanımlanması noktasında en sık kullanılan teknik olmasını sağlamıştır.

Kullanım diyagramlarının kullanıldığı yerler:
  • Gereksinim analizi ve üst düzey tasarım
  • Bir sistem bağlamını modelleme
  • Tersine mühendislik
  • İleri mühendislik

Use Case Ögeleri
Use case diyagramlarının 4 temel ögesi vardır. Bunlar;

  • Aktör
  • Sistem
  • Use case
  • İlişki

Şekil 3. Use Case Öğeleri
Bir use case diyagramı, kapsamı içerisindeki use case’lerin detaylarına yönelik ayrıntılar içermez; daha çok aktörler, use case’ler ve sistemler arasındaki ilişkileri bize gösterir. Başka bir deyişle, use case’ler tarafından temsil edilen amaçlara ulaşmak için kullanıcının atması gereken adımları bu diyagramlara bakarak anlayamayız. Diğer yandan, bu fonksiyonları yerine getirecek, yani sistemle etkileşime geçecek kullanıcılar aktör olarak adlandırılır.  Aktörler, bir insan olabileceği gibi; harici bir donanım ya da başka yazılım sistemleri de olabilir.

Use case ilişkilerine gelecek olursak burada 4 ana ilişkiden bahsetmek mümkündür.


1. Inclusion (içerme): Bazı durumlarda bir use case’in tamamlanabilmesi için, başka use case’lerin işin içerisine katılması zorunludur. Yani söz konusu use case, bir takım başka use case’ler olmaksızın tamamlanamaz. Örnek vermek gerekirse müşteri, online yemek siparişi sitesi üzerinden sipariş verebilmek için önce sipariş vermek istediği restoranı seçip, menüyü görüntülemeli ve daha sonra sipariş etmek istediği ürünü / ürünleri alışveriş sepetine eklemelidir. Yani, “Sipariş Ver” isimli use case’in tamamlanabilmesi, “Menüyü Görüntüle” ve “Sepete Ürün Ekle” isimli use case’lerin çalıştırılmasına bağlıdır. Include olarak adlandırdığımız bu ilişki türü, use case diyagramlarında aşağıdaki resimde aktarıldığı şekilde ifade edilmektedir. Burada okların yönü, hangi use case’in tamamlanabilmek için diğer hangi use case’lere bağımlı olduğunu gösterir.

Şekil 4. Inculude İlişkisi

2. Extension (eklenti): Use case’ler arasındaki diğer bir ilişki türü extend olarak adlandırdığımız ilişki türüdür. Bu ilişki türü, iki use case arasında opsiyonel olarak varolabilecek bir durumu ifade etmek için kullanılır. Biz bu iki use case’i “base use case” ve “extending use case” olarak adlandıracağız. 



Bu ilişki, bir use case’in kapsamının başka bir use case tarafından genişletilebilmesinin olası olduğu durumlar için geçerlidir. Elimizde bir use case ve bu use case’in kapsamını oluşturan bir dizi adım olduğunu varsayarsak; sürecin bazı noktalarında, başka bir use case’in kapsamını oluşturan adımların kullanılması suretiyle, use case’in adımlarına yeni adımlar eklenmesi ve kapsamının genişletilmesi mümkün olabilir.
Şekil 5. Extension İlişkisi
3. Generalization (genelleme): Bildiğiniz gibi sınıflar için türetme kavramı vardır. Türetme ile oluşturulan sınıf ana sınıfın tüm özelliklerini alır ve istenirse yeni sınıfa yeni özellikler eklenir. Use Case ‘ler arasındaki bu generalization ilişkisi de sınıflarda türetme (inheritance) kavramına benzemektedir. Gösterim biçimi sınıf diyagramlarındaki türetmenin gösteriliş şekliyle aynıdır. Yani use case ‘ler arasında düz bir çizgi çizilir ve çizginin taban(base) sınıfı gösteren ucuna içi boş bir üçgen çizilir. 
Şekil 6. Generalization İlişkisi
Şekilde, bir siteye ait kullanıcıların genellemesinin nasıl yapıldığını görebilirsiniz. Bir sitedeki online kullanıcılar ziyaretçilerden ve üyelerden oluşur, ayrıca sitenin üye kullanıcıları ve ziyaretçiler için sunduğu hizmetler farklı olabileceği için aktörler arasında genelleme yapılmıştır.

4. Grouping (gruplama): Gruplama metodu tamamen fiziksel olarak bazı use case ‘leri bir arada toplamak için kullanılır. Gruplama tekniği genellikle birkaç alt sistemden oluşan büyük sistemlerde kullanılır.

Use case kullanımını bir örnekle incelemeye devam edelim. Aşağıdaki diyagramda henüz geliştirilme aşamasında olan Fazla Mesai Yönetim Modülü için çizilmiş use diyagramını görebilirsiniz.
Şekil 7. Fazla Mesai Modülü Use Case Diyagramı
Fazla mesai taslağı oluşturmak için sisteme giren ofis uzmanı kullanıcısı fazla mesai bilgilerini girmeli, personel seçmeli ve yemek talebi oluşturmalıdır. Fakat burada personel seçebilmek için personellerin verilerinin SAP aktörü tarafından paylaşılması (fazla mesai modülüne entegre olması) gerekmektedir. Yine aynı şekilde personeller için yemek talebi oluşturmak için yemek menülerinin idari işler aktörü tarafından tanımlanmış ve güncellenmiş olması gerekir. Bu fonksiyonel girişleri kaydettikten sonra fazla mesai taslağını oluşturmuş olur.

Operasyon yöneticisi aktörü ofis uzmanı tarafından oluşturulan fazla mesai taslağını kontrol eder ve gerekirse düzenleme yapıp onaylar. Operasyon yönetici aynı zamanda fazla mesai raporlarını da sistemden alabilir.

İdari işler uzmanı aktörü ise taslağı excel formatında alır ve sorumlu bulunduğu tablo ve girdileri günceller.

UML Use Case Diagramı’nın Flow Chart‘la arasındaki farklar nelerdir?

Use case diyagramları fonksiyoniteyi yukarıdan-aşağı yöntemi ile sunarlar. Bunun yerine flow chart’lar lineer ve zaman bazlı bir davranış sergilerler. Ayrıca ikisini üretiş şekli de başlı başına farklıdır.

Use case diyagramları oluştururken ilk adım, en üst seviye davranışın belirlenmesidir. Bir kez yapıldı mı (zor bir süreç değil), sistemin üst seviye yetenekleri hali hazırda tanımlanmış olur. Use case’ler, top-seviye use case’in kullanacağı alt use case’lere bölünerek daha fazla detaylandırılabilinir. Geliştirme sürecinin her aşamasında, use case diyagram sistemin fonksiyonun tam bir açıklamasını içerir. Detay vermeyebilir, ancak özellikleri eksiksiz gösterir. Proje süresince sisteme fonksiyonlar ya da davranışlar eklenip silindiğinde, yapmanız gereken değişikliğin kapsamı, sistemin kendisi ile, modelin olgunluğundaki değişikliğin kapsamı ile orantılıdır. Sadece yüksek seviyeli diyagramların çizilmesi, modelinizin genç olması ve şiddetli değişliklerin çok fazla çalışmayı çöpe atmayı gerektirmemesi açısından faydalıdır. Halbuki flow chart, çizimi tamamlanmadan, sistemi doğru şekilde tarif edemez ve küçük sistem değişiklikleri flow chart’ların ciddi anlamda değişmesi ile sonuçlanır. Genel olarak, use case diyagramları analiz ve tasarım sürecine flow chart’lara oranla çok daha fazla katkıda bulunur.

Şekil 8. Big Picture
Kısaca özetlemek gerekirse, use case projelerin stratejik analiz süreçlerinde ihtiyacın doğru tespit edilebilmesi için talep sahibi gözüyle “bütün resmin görülmesi”dir. Use Case diyagramları projelerin analiz süreçlerinde “Mevcut Durum”u ve “Hedef Durum”u tespit etmek ve talep sahibi paydaşlar ile mutabık kalmak üzere kullanılabilecek araçlardır. Use Case diyagramlarının odak noktası “bütün resim”dir. Use case diyagramları, sistemin kullanıcı gözünde hangi fonksiyonlara sahip olduğu ve fonksiyonlar arasındaki ilişkiyi kullanıcıların bir bütün olarak görmelerini sağlar. 

Kaynaklar:
1. Use Case Analizi #1 – Use Case Diyagramları, Emre Alagöz, 

2. UML ve Modelleme, Neslihan ÇALIŞKANEL, Deniz KILINÇ, 

3. What is Use Case Diagram?, Visual Paradigm, 

4. Kullanım Durumu Diyagramları (Use-case Diyagramları), Fırat Üniversitesi Teknoloji Fakültesi Yazılım Mühendisliği Bölümü, - Dr. Muhammet BAYKARA,

5. UML Nedir?, ENES KURU, 

Yorumlar

  1. Bilgilendirici bir içerik olmuş , ellerine sağlık :)

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

Operasyonel Mükemmellik (OPEX) Araçları

Değer Akışı Haritalama / Value Stream Mapping