UML ve Modelleme



Modelleme bir mühendislik tekniğidir. Model sayesinde anlaşılması güç yazılımları basit bir dille ifade edebiliriz. Bu da yazılımın anlaşılmasını kolaylaştırır ve hataları kolaylıkla görüp en düşük seviyeye indirgememizi sağlayacaktır.

UML nedir?

UML’ in Türkçe deki karşılığı “Birleşik Modelleme Dili” olsa da aslında bir programlama dili değil yazılım mühendisliğinde nesne tabanlı modellemede kullanılan standart olmuş görsel modelleme dilidir.
Yazılım yaşam döngüsü içerisinde farklı görev tanımlamaları bulunmaktadır (Analistler, tasarımcılar, parogramcılar, testçiler, kalite sorumluları, müşteriler / kullanıcılar, teknik yazarlar).  Her birinin sisteme yada projeye bakış açısı birbirinden farklıdır. Müşteri açısından projeye baktığımızda müşteriyi işlerin sıralandırılması, sisteme artıları ve eksileri , işler arasındaki ilişkiler ilgilendirirken bir fonsiyonun detayları ilgilendirmemektedir. Analist açısından baktığımızda nesne özellikleri, fonksiyonlar ve alacakları parametreler yeterli iken tasarımcı açısından parametrelerin veri tipleri, fonsiyonun performansı, yaşam süresi gibi bilgiler de önemli olmaktadır. Bu nedenle UML  bu ekip için gerekli farklı diyagramlar içermektedir. Yazılım geliştirme işinde yer alacak farklı ekiplerin farklı bakış açılarına uygun farklı UML diyagramları bulunmaktadır.  UML, yazılım geliştirmede analiz ve tasarım aşamalarında büyük rol oynamaktadır.

UML’ye Neden Gerek Var?
  • Hataların kolaylıkla fark edilip en düşük seviyeye indirgenmesi.(Risk, zaman, maliyet)
  • Yazılım üretiminde başarı oranının düşük olması. (%16 )
  • Yazılımda paylaşım önemlidir. Tüm ekibin aynı dili konuşabilmesi gerekmektedir.
  • Sistemin tamamını basit bir dille ve görsellikle görebilmek ve tasarlayabilmek gerekli.
  • Modellenmiş ve dökümante edilmiş bir yazılımın tanıtımının kolay olması.
  • Yazılım kalitesini arttırma.
UML’nin avantajları

Yazılım da kodlama başlamadan tasarlanacağından;

·        Kodlama kolaylığı sağlar.
·        Kullanılan tekrar kod sayısı ayırt edilebilir bu sayede verim sağlanır.
·        Mantıksal hataların minimum seviyeye düşürülmesini sağlar.
·        Geliştirme maliyetinin düşmesini sağlar.
·        Resmin tamamının görülmesini sağlar.
·    UML diagramları ile yazılım tamamını görebileceğimiz için verimli bellek  kullanımı sağlanabilir.
·        Karmaşık sistemlerde değişiklik yapmayı kolaylaştırır.
·        UML ile dokümanlandırılmış kodları düzenlemek daha az zaman alacaktır
·   UML diyagramlarını kullanan yazılımcılar aynı dili konuşacaklarından kolay iletişim sağlanır.             



UML’de Diyagram Türleri

UML modellemede nesneler arasındaki ilişki kurmak için gereken 9 adet diyagram türü bulunmaktadır.

Şekil 1.
UML Model ve Diyagramlar

1. Use Case Diyagram:  Bir kullanıcı ve bir sistem arasındaki etkileşimi anlatan senaryo topluluğudur. Use case diyagramlarda use case’ler ve aktörler adını verdiğimiz iki ana bileşen bulunmaktadır.

Şekil 2. Use Case Diyagram

2. Class (Sınıf) Diyagram: Nesne tabanlı programlamada kullanılan sınıflar ve bunların arasındaki ilişkileri modelleyebileceğimiz diyagramlardır. Sınıflar isim, özellikler ve işlemler den oluşmaktadır.
 


Şekil 3. Class Diyagram


3. Object (Nesne) Diyagram:  Gerçekleşmiş nesne bilgilerinin bulunduğu diyagramlardır. Sınıfın nesne kullanılmış halidir.
4. State(Durum) Diyagram: State diyagramları sistem davranışlarını gösterir.  Her diyagram tek bir sınıfın nesnelerini ve bu sistem içerisinde nesnelerin durumlarını göstermektedir.


Şekil 4. State Diyagram

5. Sequence Diyagram: Sequence diagramları use case içerisinde bulunan nesnelerin davranışlarını gösteren diyagramlardır. Bu diyagramlar soldan sağa okunur.


Şekil 5. Sequence Diyagram

    6. Colloboration Diyagram: Collaboration diagramların çizimi oldukça basittir. Nesnelerin birbirleri arasındaki ilişkiyi belirten diyagramlardır. Bu diyagramların sequence diyagramlardan farkı mesajlar nesneler arasında farklı şekilde iletilir.


Şekil6. Colloboration Diyagram

7. Activity Diyagram: Aktivite diyagramları sistemin iş akışını gösteren diyagramlardır.


Şekil 7. Activity Diyagram

8. Component Diyagram: Component diyagramları sistemin yazılım bileşenlerinden ve birbirleri arasındaki bağlantının nasıl olduğunu gösterir.


Şekil 8. Component Diyagram

9. Deployment Diyagram: Deployment diyagramlar sistemin donanım ve yazılım ilişkilerinin fiziksel gösterimidir. Deployment Diyagramlarda connection (bağlantı) ve node (uç birim)lar kullanılır.


Şekil 9. Deployment Diyagram


USE CASE DİYAGRAMLARI

Sistem üzerindeki muhtemel kullanıcı senaryolarını modellemek için kullanılır. Belirlenen senaryolarda sistemin ne yaptığı yüzeysel olarak aktarılır; sistemin amacını ve ayrıntılarını vermez.
Use case diyagramları dört ana elemandan oluşmaktadır:
  •          Aktörler
  •          Sistem
  •          Use caseler
  •          İlişkiler

Bu modelde aktör olarak tanımlanan kullanıcı bir senaryoyu başlatır ve varsa oluşan sonucu başka bir kullanıcıya aktarır. Diyagram üzerinde senaryolar elips şeklinde çizilir. Kullanıcı ile senaryo arasındaki ilişki düz bir çizgiyle belirtilir.
Bu diyagramlarda senaryolar aktör tarafından tetiklenmektedir. Aşağıdaki örnekte aktör senaryoyu başlatır, use case sonucunda elde edilen değer diğer aktöre verilmektedir.


Bu modelde senaryolar arasında içerme (include, uses) ve genişleme (extend) olmak üzere iki tür ilişki kurulabilir.
İçerme (include, uses)
İçerme ilişkisi bir ana senaryonun bir alt senaryo içerdiğini belirtir. Söz konusu alt senaryo birden fazla senaryo tarafından kullanılır. İçerme ilişkisi senaryo içerisinde iki veya daha fazla tekrarlanan adım var ise tekrar edilen kısımlar ayrı use case olarak bölünüp içerme  ilişkisi kurulur.
Genişleme (extend)
Genişleme ilişkisi ana senaryodan ayrılma noktasından sonra yapılanları belirtir. Genişleme ilişkisinde mevcut senaryoya yeni bir senaryo eklenir.
Örnek 1.
Örnekte kullanıcının sipariş oluşturması için öncelikle sisteme giriş yapması ve sözleşmeyi kabul etmesi gerekir. Müşteri siparişini iptal ettikten sonra sistemin log dosyasına not düşmesi de ek bir adım olarak eklenmiştir.



Örnek 2.
Örnekte bir otel rezervasyon sisteminde, sistemle etkileşimde olan dört aktör bulunmaktadır. Muhasebe aktörü genel bir kullanıcı olmayıp, otel rezervasyon sisteminden etkilenen dış sisteme ait bir yazılımı temsil etmektedir. Sistem, Otel Giriş/Çıkış, Yeni Rezervasyon, Rezervasyon Değişiklik şeklinde üç ana Use Case’den oluşmaktadır, diğer Use Case’ler ana Use Case’lerle ilişkide bulunan alt Use Caselerdir.


Örnek 2. Use case dökümantasyonu

Adı: Yeni Rezervasyon
Aktörler: Resepsiyon Görevlisi, Rezervasyon Görevlisi, Muhasebe

Ön Koşullar: Sisteme login olunmalıdır, son Durumda: Muhasebe sistemi ve rezervasyon kayıt sistemi güncellenir.
Genişleme Noktası: Rezervasyon Tipi, müşteri bilgi kaydı

Başarılı Senaryo:
·         Müşteriye oda tipleri sunulur
·       ·         Müşteri oda tipini seçer
·         Müşteri konaklama başlangıç tarihini ve konaklama süresini girer
·         Müşteri mevcut odalar üzerinde arama yapar
·         Eğer oda bulunamamışsa (A1)
·         Oda bulunmuştur, fiyat görüntülenir
·         Müşteri teklifi reddederse (A2)
·         Müşteri bilgilerini girer
·         Rezervasyon Yapılır
·         Rezervasyonda anlaşılan fiyat kayıt edilir ve rezervasyon numarası verilir
·         Muhasebe sistemi haberdar edilir

Alternatif Yollar:
A1. Farklı bir oda tipi yada tarih deneyin mesajı ile 2. adıma geri döner
A2. Use case iptal edilir ve herhangi bir değişiklik yapılmaz 

Yorumlar

Bu blogdaki popüler yayınlar

Nesneye dayalı programlama

Çocuklarımızı Yapay Zekaya yönlendirmek o kadar da zor değil!

Veri ambarları, OLTP ve OLAP