31.08.2009

Dizge (Sequence) diyagramı

Dizge diyagramları bir use case içerisindeki nesnelerin davranışlarını ve birbirlerine ilettikleri mesajları gösterir. Diyagram soldan sağa ve yukarıdan aşağı okunur. Bir dizge diyagramı temel olarak nesnelerden, mesajlardan ve zaman eksenlerinden oluşur. Dizge diyagramları, tasarımı yapan kişi ya da ekibin bakış açısına, gerekliliklerine ve modülün tüm çalışanlar tarafından bilinirliğine göre değişebilmektedir. Kolayca anlaşılabilecek sistemler için basit bir dizge diyagramı yeterli olabilecekken yeni geliştirilen bir sistem için her ayrıntıyı gösteren bir siyagram gerekebilmektedir. Bu ayrım gözetildiğine dizge diyagramları iki türe ayrılmaktadır. Genellike basit bir şemanın çizildiği, ve en iyi olasılıkları ele alan “best case” senaryo üzerinden yürüyen örnek (instance) diyagramı ve modelin her yönüyle ele alındığı ve daha karışık bir model olan genel (generic) diyagram.

Nesneler, diğer UML diyagramlarında olduğu gibi belirli görevleri gerçekleştirmek üzere tanımlı yapı bloklarıdır. Dizge diyagramında nesneler, diyagramında fiziksel olarak en üstten alta ve soldan sağa okunur. Her bir nesnenin altından çıkan kesikli çizgi zaman çizgisini (timeline) göstermektedir. Kesikli çizgi zaman akışını gösterirken üzerinde bulunan ince uzun dikdörtgenler o nesnenin zaman içerisinde meydana getirdiği aktivitelerdir. Her ne kadar teorik olarak dikdörtgenin uzunluğu aktivitenin uzunluğu ile doğru orantılı olsa ve da genellikle bu kurala pek uyulmaz.

Mesajlar bir nesnenin zaman çizgisinden diğer bir nesnenin zaman çizgisine doğru çizilen ok şekillerinden oluşmaktadır. Nesnelerin birbirleri ile haberleşmesi, birbirlerine gönderdikleri komutları temsil eden bu oklarla gösterilir. Bir nesne başka bir nesnenin dışında kendine de mesaj gönderebilir (öz yineleme - recursion). Bunun yanında, Actor gibi nesne olmayan UML bileşeni de nesnelere meaj gönderebilir.

Dizge diyagramlarında 3 çeşit mesaj tip kullanılmaktadır.

Basit (Simple) mesaj: Bu mesaj tipi bir nesnenin akış kontrolünü diğer bir nesneye verdiği durumlarda kullanılır. Sık kullanılan bir mesaj tipi değildir. Gösterimi aşağıdaki gibi olmaktadır:
Senkron (Synchronous) mesaj: Bir nesnenin mesajı gönderdikten sonra, zaman çizelgesinde devam edebilmek için karşı nesneden cevap beklemesi gereken durumlarda kullanılır. Varsayılan mesaj tipi olduğundan sıklıkla kullanılmaktadır. Gösterimi aşağıdaki gibidir:
Asenkron (Asynchronous) mesaj: Senkron mesajların aksine bir nesnenin mesajı gönderdikten sonra, zaman çizelgesinde devam edebilmek için karşı nesneden cevap beklemesi gerekmediği durumlarda kullanılır. Sıklıkla asenkron işlemesi gereken komut zincirlerinde kullanılmaktadır. Gösterimi aşağıdaki gibidir:
Aşağıdaki örnek, Sınıf1 nesnesinin Sınıf2 nesnesine bir mesaj göndermesi ile başlamakta olup Sınıf3 son mesajı alıncaya kadar farklı nesneler arasındaki mesaj alışverişi ile devam etmektedir.
Aşağıda ise biraz daha karmaşık bir örnek görülmektedir. Açık mavi dikey kutular nesnenin aktif olduğu süreci gösterirken yeşil kesikli çizgi ise nesnenin ömrünü göstermektedir. Yeşil dikey kutular ise o anda kontrolü elinde tutan nesneyi ifade eder. Turuncu kutu ise nesnenin yok edildiğini belirtir. Bu diyagram aynı zamanda bir nesneye mesaj gönderilme koşullarını gösterir. Koşul, mesajın yanına köşeli parantez içerisinde yazılır. Örneğin aşağıdaki örnekte Sınıf2’nin Sınıf3’e mesajını gönderebilmesi için [koşul] ifadesi sağlanmalıdır.
Sonraki diyagram, bir sipariş alımı için olan dizge diyagramının başlangıç kısmını göstermektedir. “Sipariş Giriş Penceresi” adında bir nesne yaratılmakta ve siparişin hazırlanması için Sipariş nesnesine mesaj göndermektedir. Diyagramda nesne isimlerinden sonra iki nokta üst üste konulduğuna dikkat ediniz. Şekilde nesnelerin türedikleri sınıf adları belirtilmemiştir. Buna rağmen “nesneAdı : sınıfAdı” biçiminin korunması için iki nokta üst üste işaretinin kullanılması gerektiğini unutmayınız.

Daha sonra Sipariş nesnesi ürünün stokta olup olmadığına bakmakta ve eğer [StoktaVar] koşulu sağlanırsa “Sipariş Edilen Ürün” nesnesine mesaj göndermektedir.
Bir sonraki diyagramda ise Sipariş nesnesine koşullu mesaj eklenmiştir. Eğer ürün [StoktaYok] koşulunu sağlarsa “Sipariş Giriş Penceresi” nesnesine ürünün kalmadığını belirten bir mesaj gönderir.

3 yorum: