|
UML ile State(Durum) Diyagramları |
|
Gönderiliyor lütfen bekleyin... |
|
|
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
|
|
|
-
-
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
|
|