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:  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 : 21.6.2003
Okunma Sayısı : 74398
Yorum Sayısı : 4     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 State(Durum) 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 süreden sonra UML diyagramları ile ilgili yazılarıma devam ediyorum, bundan önceki yazlarda sınıf(class) ve use case diyagramlarını incelemiştik, bu yazıda ise State diyagramlarının ne anlama geldiği ve çeşitli tanımları aktarmaya çalışacağım.

"State" kelimesinin Türkçe karşılığı "Durum" dur. O halde state diyagramlarını, bir nesnenin ömrü buyonca sahip olacağı durumları modelleyen diyagramlar şeklinde tanımlayabiliriz. Peki ne demek bu? Öyle bir nesne düşününki belirli olaylar karşısında değişik durumlarda bulunsun. Ve bu durumlar arasında çeşitli yöntemlerle geçişler mümkün olsun. Mesela bir lambayı düşünün, lambanın yaşam süresince 3 farklı durumda olabileceğini söyleyebiliriz. Birinci durum lambanın kapalı olması, ikinci durum lambanın açık olması son durum da lambanın düşük enerji harcayarak yanması olsun. Bu 3 durum arasında geçişler mümkündür. Bu geçişleri sağlayan ise çeşitli olaylardır. Örneğin lambayı kapalı durumdan açık duruma getirmek için lambanın anahtarını çevirmek gerekir. Aynı şekilde lambayı düşük enerjili halde yanan durumundan açık durumuna getirmek için lamba anahtarını yarım çevirmek gerekir. Lamba nesnesi durum değiştirirken yaptığı işlere "action", lambanın durum değiştirmesini sağlayan mekanizmaya ise event(olay) denilmektedir.

Nesnelerin bu şekilde durumlarını modellemek için UML'deki standart State Diyagramları kullanılır. State diyagramları bir nesneye ait dinamik modellemeyi içermektedir. Dinamik modellemeden kastım nesnenin ömrü boyunca gireceği durumları belirtmesidir. Daha önce gördüğümüz sınıf diagramları ise statik modelleme olarak anılmaktadır. Şimdi bu kısa girişten sonra State Diyagramları ilgili temel bilgileri aktarayım.

State Machine (Durum Makinesi)

"
State Manchine", bir nesnenin bütün durumlarını bir şema halinde gösteren yapıdır. Temel kavramları anlattıktan sonra bir "state machine" örneği vereceğim.

State (Durum)

Tek bir nesnenin herhangi bir durumunu ifade etmek için "State" sözcüğü kullanılır.

Event (Olay)

Nesnenin "state" ler arasındaki geçişini sağlayacak yordama event(olay) denir.

Action (Aksiyon)

Nesnenin bir durumdan diğer bir duruma geçtiğinde yaptığı işlere "action" denilmektedir. Action, çalıştırılabilir herhangi bir durum olabilir.

Transition (Geçiş)

Nesnelerin durumları arasındaki geçişi sembol etmeye "Transition" denir. Bir nesnenin her durumu arasında bir ilişki olmayabilir. Örneğin lamba açıkken lamba kapatılamıyorsa bu iki durum arasında bir geçiş yoktur denir. Bir transiton(geçiş)'da 4 yapı vardır. Bu yapılardan ikisi doğal olarak "hedef(target)" ve "kaynak(source)" durumudur. Geçişler kaynak durumdan hedef duruma doğru yapılır. Üçüncü yapı Kaynak durumdan hedef duruma geçişi sağlayan "event trigger(olay ateşleyicisi)" dır. Son yapı ise nesnenin durum geçişi sonrasında ne şekilde davranacağını belirleyen "action" dır.


Self Transition (Öz-Geçiş)

Bazen bir nesnenin durum geçişleri farklı iki durum arasında olmayabilir. Mesela lamba açık durumda olduğu halde lambayı tekrar açmaya çalışmak "self transition" kavramına bir örnektir. Kısaca hedef durum ve kaynak durumun aynı olduğu durumlar "Self Transition" olarak adlandırılır.

Initial State (İlk durum)

Programatik bir anlam ifade etmiyor gibi görünsede Initial State kavramı nesnenin gerçek bir duruma geçmeden önceki durumunu belirtir. Kısaca, nesne ilk yaratıldığında alacağı duruma bir geçiş sağlamak için gerçek anlamda bir "state" olmayan şekil(içi dolu küre) kullanılır.

Final State (Son Durum)

Nesnenin ömrü bittiğinde aldığı durumu ifade etmek için kullanılan semboldür. Bir nesne birden fazla "Final State" durumuna sahip olabilir.

Yukarıda anlatılan kavramların kafanızda daha belirgin bir hale gelmesi için aşağıdaki şemayı inceleyebilirsiniz. Bu şemaya kabaca "State Macihine" de denilebilir. (Not: Aşağıdaki şema sadece kavramların kafanızda daha net olarak canlanabilmesi için verilmiştir. Gerçek yaşama yönelik bir durum makinesi değildir. )




Bu aşamada önemle vurgulamamız gereken nokta State Diyagramlarının tek bir nesne ile ilişkili olmasıdır.

Nesnelerin durumlarının UML ile nasıl gösterildiğine bakalım. Bir State yukarıdaki şemada olduğu gibi köşeleri yuvarlatılmış dörtgen şeklinde gösterilir. Bir State'in yukarıdaki şemada görülmeyen 3 ana bileşeni vardır. Birinci bileşeni State'in adıdır. İkinci bileşen State değişkenleri üçüncü bileşen ise State ile ilgili çeşitli aktiviteleri belirtmek için kullanılan yapıdır. Bu aktivitilerin bazıları UML'de standart olarak belirtilmiş olmasına rağmen istersek kendimizde aktivite tanımlayabiliriz. Standart olan aktivitelerin sayısı 3'tür. Bunlar entry, exit ve do isimli aktivitelerdir. entry aktivitesi, nesnenin ilgili duruma geçtiği andaki davranışın adını belirtir. exit aktivitesi, nesne ilgili durumdan diğer bir duruma geçişi sırasındaki davranışını belirler. Örneğin bir lambanın açık durumdan kapalı duruma geçtiğinde lambadaki elektrik devresinden akımın kesilmesi yada lambanın kapalı durumdan açık duruma geçişi sırasında devreye akımın verilmesi bu tür aktivitelere örnek verilebilir. Diğer bir standart aktivite olan do ise nesnenin belirtilen durumda olduğu sürece nasıl bir davranış sergileyeceğini belirtir. Lambanın yanması sırasında devreden geçen akımın sabitliğinin korunması do aktivitesine örnek olarak verilebilir. Bir "State" 'in bütün standart aktivitelerini tanımlamak zorunda değiliz. Söz gelimi bir "State" ' in yalnızca do aktivitesi olabilir.

Yukarıdaki "State" tanımlamalarını göz önünde bulundurursak UML'de en temel durum modeli aşağıdaki gibi yapılabilir.



Yukarıdaki şekil teknik makale içeriği sunan bir siteye ait kullanıcının ONLINE olma durumunu modellemektedir. Şekildeki en üstteki kısım "State Name" yani durum adını belirtir. İkinci kısım ilgili duruma ait çeşitli parametreleri gösterir. Bu örnekte ONLINE durumunda olan kullanıcının sisteme ne zaman giriş yaptığı belirtilmektedir. Parametreler bölümüne ihtiyaç olduğunda çeşitli ifadelerde(ToplamSüre = EskiSüre + YeniSüre gibi) yazılabilir. Son ve en alttaki bölüm ise "State" ile ilgili aktiviteleri göstermektedir. entry aktivitesinde kullanıcının "Hoş geldin" mesajı ile karşılanması, exit aktivitesinde "Güle güle" mesajı ile uğurlanması, do aktivitesinde ise kullanıcıya makale okuma iznin verileceği belirtilmektedir. Bu standart aktivitelerin dışında olan tavsiye isimli diğer bir aktivitede ise kullanıcıya diğer teknik makale içeren sitelerin tavsiye edileceği belirtilmektedir.


Durumlar Arası Koşullu Geçişler (Guard Condition)

Bir nesnenin bir durumdan diğerine geçişi için sadece olay tetiklenmesi yetmeyebilir. Mesela gün ışığına göre yanıp sönen aynı zamanda açma kapama düğmeside olan bir lambayı düşünün. Gündüz saatlerinde lamba kapalı durumdayken anahtar çevrilerek lambanın açılması istenmeyebilir. Yani lambanın açılması ortamın karanlık olmasınada bağlıdır. Sadece lambanın anahtarını çevirerek lambanın açılamayacağı koşullu geçişlere örnek olabilir. Lambanın açılması için "anahtar açma" olayının meydana gelmesi ve ortamın aydınlık seviyesinin lambanın açılması için yeterli olması gerekmektedir. Bu durumu geçişler üzerine açılan ve kapanan köşeli parantezler içine koşulu yazarak belirtebiliriz. Örneğin KAPALI ve AÇIK durumları arasındaki geçişe aşağıdaki gibi bir koşul yazılabilir.

                  [Aydınlık == Gunduz Seviyesi]
KAPALI --------------------------------------> AÇIK
                         Anahtarı Çevirme

Eğer geçişler arasında sadece koşul ifadesi yazılırsa, koşul ifadesi gerçekleştiği anda geçişin sağlanması beklenir. Yani olayın ateşlenmesine gerek yoktur. Yukurıdaki gösterimde ise lambanın AÇIK duruma geçebilmesi için hem koşulun sağlanması hemde olayın(anahtarı çevirme) gerçekleşmesi gerekir.

Alt Durumlar (Substates)

Gerçek hayattaki sistemler burada anlattığım sistemlerden çoğu zaman daha kompleks olacaktır. Hatta bir çok sistemin durum modeli çıkarıldığında bazı durumların içinde farklı durumların olduğu görülmektedir. Bu tür "alt durumları" içeren modellemeler UML ile yapılabilmektedir. Alt durumlara bir örnek verelim : Bir CD çalar programını düşünün. CD çalar programı belirli bir anda ya çalışıyor durumdadır yada çalışmıyor durumundadır. Eğer CD çalar programı çalışır durumda ise yine iki durum olabilir. CD çalar programı ya bir kayıt yapıyordur, yada seçilen şarkıyı çalıyordur. Çalışma durumu içindeki bu iki durumu aşağıdaki gibi modelleyebiliriz.



Alt-durumlar ile ilgili önemli durumlar :

1-a ) Bir alt-durum, varolan başka bir durum içinde olmalıdır.

1-b ) Alt-durumu olan bir duruma "Composite State" denir.

1-c ) Bir durum içinde birden fazla seviyede durum olabilir. Örneğin yukarıdaki örnekte Kayıt durumu içinde de alt durumlar olabilir.

1-d ) Herhangi bir alt-durum içermeyen durumlara "Simple State" yani basit durum denir.

Kompozite(Composite) Durumlar ilgili Önemli Özellikler

2-a ) Bir composite duruma geçiş(transition) olabileceği gibi, composite durumdan başka durumlarada geçiş olabilir. Eğer bir geçiş composite duruma doğru ise bu composite durumun "Başlangıç Durumu(Initial State)" içermesi zorunludur. Eğer böyle olmasaydı tanımsız durumlar ortaya çıkardı. Bu durumu aşağıdaki composite durum diyagramından rahatlıkla görebilirsiniz.

2-b ) Eğer geçiş(transition) bir alt-duruma doğru ise, ve dıştaki duruma ilişkin her hangi bir entry aktivitesi varsa çalıştırılır ve ardından alt-duruma ilişkin aktiviteler çalıştırılır.

2-c ) Eğer geçiş(transition), composite durum içindeki bir alt-durumdan, composite durumun dışındaki bir duruma doğru ise, önce composite durumun exit aktivitesi ardından alt-durumun exit aktivitesi çalıştırılır.

2-d ) Eğer geçiş(transition) composite durumdan, dışarıdaki farklı bir duruma doğru ise öncelik sırası diğer alt-durumlara göre bu geçiştedir.

Aşağıda kompleks bir durum modeli verilmiştir. Bu modelde 2-a, 2-b, 2-c ve 2-d maddelerinde verilen geçişler işaretlenmiştir.




Bu makalede durum diyagramları ile ilgili temel kavramları aktarmata çalıştım. Sonraki makalelerimde gerçek bir sistemi tüm yönleri ile ele alıp durum modellenmesi ve bu modelin nesne yönelimli bir programlama dili (C++,C#,JAVA) ile nasıl gerçeklenebileceği üzerinde duracağım.

 

Makale:
UML ile State(Durum) Diyagramları UML ve Sistem Analizi Sefer Algan
  • Yazılan Yorumlar
  • Yorum Yaz
KAS
14
2005
internette uml ile ilgili çok az türkçe çok az kaynak bulabildim ama sizin sayenizde umli daha iyi anladığımı düşünüyorum ayrıca vermiş olduğunuz örnekler basit ve anlaşılması çok kolay günlük yaşamla çok bağlantılı tebrikler..
ŞUB
14
2005
ARKADAŞLAR sizi kutlamakla kalmayıp tebrikler ediyorum. Sizin sayenizde uml yi öğrendim
MAY
14
2004
Cok anlasiyiyor yaziyorsunuz. Devamini bekliyoruz.
EKİ
27
2003
UML makaleleri devam edecek mi ? Tanitimdan sonra pratikte uygulamaya yonelik bilgiler verilse guzel olur. Ornegin bir projede UML hangi asamalarda hangi sirayla kullaniliyor? Ayrica UML araclari da tanitilabilirse faydali olur. Ornegin VS.NET' in bazi paketleri ile birlikte gelen VISIO ile reverse engineering ve code generation ...
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