Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Sefer Algan
Sefer Algan
http://www.seferalgan.com
İletişme geçmek için tıklayın.
71 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: asagida birbirleri dikkat diyagrami diyagraminda diyagramlari diyagramlarini durumlari ederseniz nesnelerin nesnenin paranin senaryo senkron sonraki UML / Analiz Sefer Algan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : UML / Analiz
Yayınlanma Tarihi : 16.11.2004
Okunma Sayısı : 90460
Yorum Sayısı : 3     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 21.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 21.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 21.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 21.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
UML ile "Sequence" Diyagramları
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Uzun bir aradan sonra UML yazı dizisine devam ediyoruz. Yaklaşık 1.5 yıl önce yazmış oluğum "Durum (State) Diyagramları" makalesinden sonra bir daha UML’e eğilememiştim. Gerek iş yoğunluğu gereksede özel işlerimin yoğunluğu UML’e uzun bir süre ara vermeme neden oldu. Ancak buna rağmen siz değerli okurlarımdan gelen UML makalelerine yoğun istek beni bu alanda araştırmaya ve yazı yazmaya itti. Bu ve bundan sonraki yazılarımda UML’in diğer önemli diyagramlarını ve konularını inceleyeceğim.

"Sequence" Diyagramları

Bu makalemizde UML’in en önemli diyagramlarından biri olan "Sequence" diyagramlarını inceleyeceğiz. "Sequence" kelime anlamı olarak "birbirini takip eden, ardışıl olan, peşi sıra" anlamlarına gelmektedir. UML diyagramı olarak ise nesnelerin peşi sıra etkileşimde bulunmalarını ve nesnelerin zaman boyutunda birbirleri ile ilişkiye girmeleri anlamında kullanılmaktadır. Bu yazı boyunca bu diyagramlardan kelime kargaşası yaratmama adına "Sequence" diyagramları şeklinde bahsedeceğim. Bir önceki UML makalesinde incelemiş olduğumuz Durum diyagramlarının aksine "sequence" diyagramları nesnelerin birbirleriyle haberleşmesini zaman boyutunda ele almaktadır. Dikkat ederseniz şu ana kadar incelemiş olduğumuz, nesne,durum ve use case diyagramlarında nesnelerin ilişkileri zamandan bağımsız olarak ele alınmıştı. İlk olarak zaman kavramını "sequence" diyagramlarında ele almış olacağız.

Hatırlarsanız Durum Diyagramları yazısında nesnelerin ömürleri boyunca alabilecekleri durumları incelemiştik. Ancak nesnelerin birbirleri ile haberleşmesini ve durumlarını bu haberleşme mantığına göre değiştirebilmelerini incelememiştik. İşte bu yazıda göreceğimiz "sequence" diyagramları vasıtası ile nesnelerin birbirleri ile haberleşmesini zamana bağlı olarak ele alacağız. Bir diyagramın zaman bağlı olmasından kastımız, nesnelerin gerçekleştirdikleri aktivitelerin peşisıra gerçekleşmesi ve bu peşisıralığın belirlenen zaman dilimleri içerisinde maydana gelmesidir. İlerleyen kısımlarda daha detaylı olarak inceleyeceğimiz için isterseniz bir "sequence" diyagramında olabilecek nesneleri tek tek ele alalım :

Bir "sequence" diyagramı temel olarak nesnelerden(objects), mesajlardan (messages) ve zaman eksenlerinden(timeline) oluşmaktadır. Aşağıda bu üç UML bileşenide ayrıntılı bir şekilde açıklanmıştır.

Nesneler (Objects)

Nesneler diğer UML diyagramlarında da belirttiğimiz gibi belirli görevleri gerçekleştirmek için tanımlanan yapı bloklarıdır. Nesneler, tasarım ve modellemenin en küçük yapı taşı olduğu için hemen hemen her tür diyagramda nesneleri görmekteyiz. "sequence" diyagramında nesneler aşağıdaki şekilde görüleceği üzere diktörtgen ve bu diktörtgen içinde nesne ismi olacak şekilde temsil edilir. Önemli noktalardan birisi ise nesne isminin :NesneIsmi formatında olmasıdır. "sequence" diyagramlarında nesneler genellikle diyagramın fiziksel olarak en üstünden ve soldan sağa olacak biçimde sıralanır. Yani nesnelerin "sequence" diyagramlarındaki orjini sol üst köşedir. Ve yayılım biçimi soldan sağadır. Bu bir kural olmamakla beraber kullanılan en yaygın biçimi bu şekildedir. Bizde bu yazının sonunda vereceğimiz örnektte bu şekilde kullanacağız.


Şekil 1 : Nesne

Her bir nesnenin altından çıkan ve kesik kesik olan çizgi nesnenin zaman çizgisini(timeline) belirtmektedir. "Sequence" diyagramlarındaki zaman olgusu bu çizgilerle belirtilmektedir. Kesik çizginin en altı teorik olarak sonraki zamanı göstermektedir. Zaman çizgisi üzerinde bulunan ince ve uzun diktörgenler ise o nesnenin o zaman içerisinde meydana getirdiği aktivitedir(activation). Yine teorik olarak diktörgenin uzunluğu aktivitenin ne kadar zaman aldığı ile doğru orantılıdır. Yani uzun süren bir aktivite daha uzun dikdörtgenle gösterilir. (Çoğu zaman bu kurala uyulmamaktadır.)

Mesajlar (Messages)

Mesajlar bir nesnenin zaman çizgisinden diğer bir nesnenin zaman çizgisine doğru çizilen simgelerden oluşmaktadır. Nesnelerin birbirleri ile haberleşmesi, birbirlerine komut göndermesi kalın çizilmiş oklarla gösterilmektedir. Bir nesne kendisine mesaj gönderebileceği (recursion - öz yineleme-) gibi başka nesneyede mesaj gönderebilir. Dahası nesne olmayan farklı bir UML bileşenide nesnelere mesaj gönderebilir. Örneğin use case diyagramlarında kullandığımız aktör bileşeni aşağıdaki gibi "sequence" diyagramındaki bir nesneye mesaj gönderebilir.


Şekil 2 : Mesaj Örneği

"Sequence" diyagramlarında 3 çeşit mesaj tipi kullanılmaktadır. Aşağıda bu 3 mesaj tipi grafiksel gösterimleriyle birlikte açıklanmıştır.

Mesaj Tipleri :

1 - Basit(Simple) Mesaj Tipi : Bu mesaj tipi basit anlamda 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 gibidir :


Şekil 3 : Basit Mesaj

2 - Senkron (Synchronous) Mesaj Tipi : Bir nesnenin mesajı gönderdikten sonra, zaman çizgisinde devam edebilmesi için karşı nesneden cevap beklenmesi gereken durumlarda kullanılır. Varsayılan mesaj tipi olduğundan sıklıkla bu mesaj tipi kullanılmaktadır. Gösterimi UML diyagramlarında aşağıdaki gibidir.


Şekil 4 : Senkron Mesaj

3 - Asenkron (Asynchronous) Mesaj Tipi : Senkron mesajların aksine bir nesnenin mesajı gönderdikten sonra, zaman çizgisinde devam edebilmesi için karşı nesneden cevap beklenmesi gerekmiyorsa kullanılır. Sıklıkla asenkron işlemesi gereken komut zincirlerinde kullanılmaktadır.


Şekil 5 : Asenkron Mesaj

Zaman (Time)

"Sequence" diyagramlarının son ve en önemli bileşeni zaman olgusunun sembolize edildiği zaman çizgisidir. (time line) Daha önce de denildiği gibi zaman çizgisi nesneden dikey olarak aşağı doğru kesik bir çizgi şeklinde ilerler. Nesneye en yakın olan aktiviteler daha erken gerçekleşir anlamındadır. Aşağıdaki örnekte iki nesnenin zaman çizgileri aynı diyagram üzerinde gösterilmiş ve farklı zamanlarda gerçekleşen aktivitelere örnek verilmiştir.


Şekil 6 : Basit bir "sequence" Diyagramı

Yukarıdaki basit diyagramda senkron mesajlar 1-2-3-4 sırasında gerçekleşmektedir. Her mesaj gönderiminden sonra dikkat ederseniz aktivite kutuları çizilmiştir. Ayrıca 3. mesajda ise öz yinelemeli (recursion - kendi kendine mesaj) mesajlara örnek verilmiştir.

Gerçek "Sequence" Diyagramları Nasıl Çizilir ?

Gerçek projelerde "sequence" diyagramlarını çıkarmak sanıldığı kadar zor bir işlem değildir. Yeterki karşılaştığımız sorunun ve tasarım probleminin farkında olalım. Proje modülleri için çıkaracağımız "sequence" diyagramları, bakış açımıza, proje ekibinin iletişim biçimine veya modülün herkes tarafından bilinirliğine göre değişebilmektedir. Söz gelimi akış biçimi kolayca anlaşabilecek sistemler de basit bir "sequence" diyagramı yeterli olabilecekken henüz yeni geliştirilen bir sistem için her ayrıntıyı "sequence" diyagramları üzerinde göstermek gerekebilecektir. "Sequence" diyagramları bu ayrım gözetilerek genellikle iki biçimde incelenmektedir : Instance (örnek) ve generic (genel) "sequence" diyagramları. Instance olarak adlandırılan diyagramlarda genellikle basit bir şema çizlir, ayrıntılar gözardı edilir ve "best case" denilen en iyi olasılıklar ele alınır. Örneğin bir ATM makinasının akışını modelleyen diyagramda sadece kullanıcı aktivitelerinin, paranın kullanıcıya verilmesinin ele alınması aynı zamanda hesapta paranın olmaması, ATM makinasında paranın olmaması gibi durumları ele alınmaması bu tarz diyagramlara örnek olabilir. Generic diyagramlarda ise model daha karışık ve her yönüyle ele alınır. Öyleki döngü ve koşul yapıları dahi "sequence" diyagramında gösterilir. Koşul ve döngü ifadeleri aynı nesne üzerinde farklı aktivite kutuları ile gösterilmektedir. Aşağıda her iki yaklaşımla çizilmiş iki "sequence" diyagramını bulabilirsiniz.

Instance "Sequence" Diyagramına Örnek :

Üç nesneli bir ATM makinasının çalışmasını modelleyen "sequence" diyagramını örnek verelim. Sistemimizde ilgilendiğimiz üç nesne bulunmaktadır.

Tuş Takımı ve Para Alma Modülü: Kullanıcnın ATM makinası ile haberleştiği arayüzler (Nesne 1)
Hesap Kontrol Modülü : Kullanıcı doğrulama ve bakiye kontrol gibi mantıkların işletildiği birim (Nesne 2)
Para İletme Bölümü : Kullanıcının yani talebinin arayüz yani Nesne1 yardımıyla kullanıcıya sunulması. (Nesne 3)

Diyagramımızı çizmeden önce iş kurallarımızı maddeler halinde yazalım :

1 - Kullanıcı şifresini yazar.
2 - Ardından çekmek istediği tutarı nesne 1 yardımıyla yazar. (tuş takımı)
3 - Çekmek istenilen tutar nesne 2 tarafından kontrol edilir.
4 - Eğer bakiye uygun ise Nesne 3 e mesaj gönderilerek bu modüle para aktarımı sağlanır. Not : Bu örnekte bakiyenin uygun olacağı varsayılacaktır. (yukarıda anlatılan best case durumu)
5 - Nesne 3, Nesne 1 i yani arayüzü uyararak paranın alınması sağlanır.

Örneğe ilişkin "sequence" diyagramı ise aşağıdaki gibi çizilebilir. Diakkat ederseniz sadece kullanıcının girdiği tutar’ın bakiyeden küçük olduğu "best case" dediğimiz en ideal durum modellenmiştir. Diğer durumlar bu modelde bulunmamaktadır.


Şekil 7 : Örneğe ilişkin instance "sequence" diyagramı

Generic "Sequence" Diyagramına Örnek :

Generic "sequence" diyagramında birden fazla senaryo aynı anda ele alınmaktadır. Söz gelimi aşağıdaki örnekte kullanıcının girdiği tutar bakiyeden büyük ise iki senaryo daha eklenmektedir. Bu durumda ya ödenebilen maksimum miktar ödenmekte yada işlem iptal edilmektedir. Bunun gibi bir çok senaryo diyagrama eklenebilir. Tabi eklenen her senaryo diyagramı iyice karıştıracaktır. Bu yüzden diyagramlarımızı oluştururken bütün senaryoları içerebilecek durumları çıkarmaya çalışma ile birlikte maksimum okunabirliği de gözönünde bulundurmak gerekir. Zira çıkaracağımız diyagramlar geliştiricilerin işini zorlaştırma yerine kolaylaştırmalıdır. Zaten temel amacımız da bu olmalı.


Şekil 8 : Örneğe ilişkin generic "sequence" diyagramı

Yukarıdaki örnekte dikkat ederseniz kolaylık olması açısından aynı nesne birden fazla zaman çizgisine sahip olabilmektedir. (Bkz : Nesne 1 zaman çizgisi)

Bu yazımda sizlere "sequence" diyagramlarının temellerini aktarmaya çalıştım. Unutmayın! bir kere okuma ile bu konuların iyi bir şekilde algılanması mümkün değildir. Her şeyin ilacı zaman ve deneyimdir. Bu kural her meslekte olduğu gibi bizim meslekte de geçerlidir. Bir sonraki yazımda "Collaboration" diyagramlarını inceleyeceğim. Bir sonraki yazıda görüşmek üzere...

Makale:
UML ile "Sequence" Diyagramları UML ve Sistem Analizi Sefer Algan
  • Yazılan Yorumlar
  • Yorum Yaz
MAR
31
2005
UML makaleleri, Türkçe olmalarının yanında sade ve anlaşılır, hazırlayanahazırlayanlara teşekkürü borç bilirim.
ARA
22
2004
UML kullanımı giderek yaygınlaşmaya devam ediyor, embedded sistemlerde UML kullanımından sonra şimdi de YapayZeka sistemleri için ilginç UML tasarım yaklaşımları var.
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor