1.09.2009

Etkinlik (Activity) diyagramı

Etkinlik diyagramları, sistemin akış yönünden davranışını betimler. Etkinlik diyagramları bir şeyin durumlarını temsil etmesi niteliği ile durum diyagramlarına benzer. Fakat durum diyagramları gerçekleşen eylemler neticesinde oluşan durumları nitelerken etkinlik diyagramları ise koşullu ya da paralel ilerleyen eylemleri betimler.
Etkinlik diyagramları nasıl çizilir:
Etkinlik diyagramları sistem içerisindeki eylemlerin akışını gösterir. Diyagram yukarıdan aşağıya doğru okunur ve dallanmalar paralel eylemleri ve durumları belirtir. Dallanma, aynı anda birden fazla sürecin işlediğini gösterir. Aşağıdaki diyagramda 1.Aktivite’den sonra bir çatal yer almakta ve dallanma meydana gelmektedir. Bu, 2.Aktivite ve 3. Aktivite’nin aynı anda gerçekleştiğini göstermektedir. 2.Aktivite’den sonra da bir dallanma vardır. Dallanma belirli koşullar altında hangi eylemlerin gerçekleşeceğini gösterir. Tüm dallar bir noktada koşullu durumda işletilecek eylemlerin sonunu belirtmek üzere birleşirler. Tüm paralel aktiviteler sonuca ulaşmadan önce birleşmek zorundadır.
Aşağıda, sipariş işleminin olası bir etkinlik diyagramı görülmektedir. Diyagram, sistem akışı içerisinde eylemlerin akışını göstermektedir. Sipariş alındıktan sonra eylemler iki farklı eylem kümesine ayrılmaktadır. Bir yönde sipariş hazırlanmakta ve gönderilmekte, diğerinde ise faturalandırma işlemi yerine getirilmektedir. Sipariş hazırlama dalında teslim metodu duruma göre tespit edilmektedir. Duruma göre Acil teslimat ya da Normal teslimat işlemi gerçekleştirilir. Son olarak paralel yürüyen aktiviteler siparişi kapatmak üzere birleşirler.

Durum diyagramı

Durum diyagramları bir sistemin davranışlarını modeller ve bir olay gerçekleştiğinde olası tüm durumları tanımlar. Her bir diyagram bir sınıfın tek bir nesnesini ele alır ve sistem içerisindeki farklı durumlarını irdeler. Bir durum diyagramı aşağıdaki elemanlardan oluşur:
Durum makinesi (State machine): Bir nesnenin bütün durumlarını bir şema halinde gösteren yapıdır.
Durum (State): Tek bir nesnenin herhangi bir durumuna verilen addır.
Olay (Event): Nesnenin durumları arasında geçişini sağlayan yordama olay denir.
Eylem (Action): Nesnenin bir durumdan diğer bir duruma geçtiğinde yaptığı işlere eylem denir. Eylem, çalışıtırılabilir herhangi bir durum olabilir.
Geçiş (Transition): Nesnenin durumları arasındaki, geçişin gösterilmesine geçiş denir. Bir nesnenin her durumu arasında bir ilişki olmayabileceğinden dolayı iki durum arasında bir geçiş olmak zorunda değildir. Bir geçişte 4 yapı vardır. Bu yapılardan ikisi hedef (target) ve kaynak (source)’tır. Geçişler daima kaynak durumdan hedefv duruma doğru yapılır. Üçüncü yapı, kaynak durumdan hedef duruma geçişi sağlayan olay ateşleyicisi (event trigger)’dir. Son yapı da nesnenin geçiş sonrası ne şekilde davranacağını belirleyen eylem (action)’dir.
Özgeçiş (Self transaction): Bazen bir nesnenin gçişleri iki farklı durum arasında olmayıp, kendi üzerine döner. Daha net söylersek; geçişin kaynak ve hedef durumu aynı olur. Bu durum özgeçiş olarak adlandırılır.
İlk durum (Initial state): Programtaik olarak bir koda karşılık geşmese de ilk durum bir nesnenin ilk geçişinden hemen önceki durumunu temsil eder ve geçeceği ilk duruma geçişi sağlamak için bir ilk nokta teşkil eder ve durum kutusunda farklı olarak içi dolu daire olarak gösterilir.
Son durum (Final state): Nesnenin ömrü bittiğinde aldığı son durumu ifade etmek için kullanılan semboldür. Bir nesne birden fazla son duruma sahip olabilir.
Durum diyagramları nasıl çizilir:
Durum diyagramları çok az sayıda eleman içerir. Temel elemanlar, nesnenin durumunu temsil eden kutular ve bir sonraki duruma geçişi temsil eden oklardır. Durum sembolünün eylem kısmı nesnenin o durumda ne yapacağını betimler.
Tüm durum diyagramları, nesnenin ilk durumu ile başlar. Bu durum nesnenin ilk yaratıldığı andaki durumudur. İlk durumu takiben nesne durum değiştirmeye başlar. Eylemlerin koşuluna göre nesnenin geçeceği bir sonraki durum çeşitlenir.
Aşağıda sipariş örneğine uygun bir durum diyagramı görülmektedir. Nesne “Denetleniyor” durumuna geçtiğinde “ürün denetle” eylemini gerçekleştirir. Eylem tamamlandıktan sonra bir sonraki geçilecek durum “ürün mevcut” ve “ürün yok” koşullarına göre belirlenir. Eğer ürün mevcut değilse sipariş iptal edilir. Eğer ürün stoklarda mevcut ise ürün gönderilir. Nesne “Gönderiliyor” durumuna geçtiğinde ise “göndermeyi başlat” eylemi gerçekleşir ve nesne “Gönderildi” durumuna geçer.
Durum diyagramları aynı zamanda bir nesnenin üst durumunu da gösterebilir. Üst durum, pek çok geçişin belirli bir duruma gittiği zamanlarda kullanılır. Son duruma kadar olan ara geçişleri göstermek yerine tek bir üst durum içerisinde durumlar tanımlanıp, son duruma geçiş üst durum üzerinden gösterilebilir. Bu, durum diyagramını okumayı kolaylaştırır.
Aşağıdaki diyagramda bir üst durum görülmektedir. “Denetleniyor” ve “Gönderiliyor” durumları “İptal edildi” durumuna geçebileceğinden geçiş sadece bir üst durum olan “Aktif” durumundan “İptal edildi” durumuna gösterilmiştir. Bunun tam tersine “Gönderildi” durumuna sadece “Gönderiliyor” durumundan geçilebileceği için “Gönderildi” durumuna gelen ok sadece “Gönderiliyor” durumundan çıkarılır.

İşbirliği (Collaboration) diyagramı

İşbirliği diyagramları nesneler arasındaki ilişkileri ve aralarında gezen mesajların sırasını gösterir. Nesneler kutular ile gösterilirken, oklar nesnelerin arasında gezen mesajları gösterir. Mesajların yanındaki numaralar “sıra (dizge) numarası” olarak adlandırılır ve nesneler arasında iletilen mesajların sırasını gösterir. UML 1,2,3.. gibi numaralandırma sistemlerinin yanında 1.1, 1.2, 1.3, 2.1, 2.2,... gibi numaralandırma sistemlerini de kabul edilmektedir.
Aşağıdaki örnekte ise sipariş verme use case’i ile ilgili basit bir işbirliği diyagramını göstermektedir.. Bu sefer iki noktadan sonra sınıf isimleri yer almaktadır. Bunun nedeni ise bu sınıftan türetilen tüm nesnelerin aynı şekilde davranacağındandır.
İşbirliği diyagramlarında nesneler iki türde yer alır. Tedarikçi (supplier) ve istemci (client). Bu iki kavram işbirliği diyagramlarında parametreler gösterilirken karşımıza çıkar. Temel olarak tedarikçi nesneler çağrılan metodu sunan nesnelerdir. Bir dizge diyagramında aradaki bağlantıyı gösteren okun ucundaki nesne, mesajı alan ve çağrılan metodu sunan tedarikçi nesnedir. İstemci nesneler tedarikçi nesne üzerindeki metodları çağırır.
İşbirliği diyagramında kullanılan nesneleri daha detaylı incelersek:
Nesne: Yukarıdaki işbirliği diyagramında bize dizge diyagramlarından da tanıdık geleceği üzere nesne aynı şekilde gösterilmektedir. Nesne kutusunun içerisinde yer alan “a” harfi nesneyi, “A” harfi ise sınıfı temsil etmektedir.
Senkron mesaj: Gönderildiği nesneden yanıt bekleyen mesajlardır ve belirli bir süre sonra, işlem tamamlandığında aynı bağlantı üzerinden yanıt alınmaktadır. Bir senkron mesaj
ile gösterilirken geri dönen yanıt da
işaretiyle gösterilir.
Asenkron mesaj: Senkron mesajların aksine cevap beklemeyen mesajlardır. Bir işbirliği diyagramında asenkron mesaj aşağıdaki simge ile gösterilir.
Prosedür çağrısı: Yukarıdaki diyagramda “b” nesnesi “c” nesnesi üzerinden bir prosedürü çağırmaktadır.
Sıra numarası: İşbirliği diyagramlarında zaman bilgisi bulunmadığından mesajlaşmalarda sıra numarası kullanılır. Dizge diyagramlarında zaten bir zaman ekseni mevcut olduğundan sıra bilgisini yazmak seçime bağlıdır. Fakat işbirliği diyagramlarında zamanı ekseni olmadığından mesaj numarası kullanmak zorunludur.
Belirsiz nesne (Anonymous object): Bir sınıftan türeyen her nesnenin aynı şekilde davranacağının düşünüldüğü tasarımlarda sınıftan türeyen nesne için isim kullanılmayabilir. Bu durumda nesne adı belirtilmez ve belirsiz nesne “:A” şeklinde sadece sınıf adı ile nitelenir.
Kendine referans (Self-reference): Kendi üzerindeki bir metodu çağıran nesnedir. Çoğu durumda nesne, kontrol amaçlı olarak sahip olduğu metodları kullanabilir.
Zaman aşımı (Timeout): Belirli bir zaman cevap gelmeyince çağrılan mesaj tipidir. Aşağıdaki gibi gösterilir.
Çoklu nesne (Multi object): Bir nesen kendi içerisinde birden fazla nesne içeriyorsa bu nesne çoklu nesne olarak tanımlanırve aşağıdaki gibi gösterilir.
Yorum: Diyagramın kim tarafından, ne zaman oluşturulduğunu ve kapsamını tutan bileşendir. Bilgi amaçlı olarak sağ üst köşeye konulabilir.
Karmaşık sistemler, tasarlanan görevlerine yerine getirmek için ortaklaşa çalışan bir çok nesne içermektedir. UML içindeki işbirliği diyagramları temel olarak bu nesneler arasındaki ilişkiye yoğunlaşırken dizge diyagramları mesaj sırası ile ilgilenmektedir. Her iki diyagram da pek çok noktada ortaklık gösterir. Aralarındaki farklara bir göz atmek istersek:
1. Dizge diyagramları, zamana bağımlı olarak nesneler arasındaki mesajlaşmayı gösterir. İşbirliği diyagramları ise zamandan bağımsızdır.
2. İşbirliği diyagramları ile tek bir diyagram üzerinde dinamik yapıyı ve nesnelerin statik ilişkisini göstermek mümkündür. Dizge diyagramları ise sadece dinamik yapıyı temsil eder.
3. Dizge diyagramları ilk analiz safhasında oluşturulurken işbirliği diyagramları daha çok tasarım aşamasında oluşturulur.
4. Dizge diyagramlarından mesajlaşma sıraları, işbirliği diyagramlarında ise ilişkiler daha kolay gözlemlenir. Büyük diyagramlar için işbirliği diyagramlarını takip etmek zorken dizge diyagramlarında bu iş daha kolaydır. Ancak işbirliği diyagramları daha az alanda daha çok bilgiyi gösterebilir.
5. Belirli bir amacı yerine getirmek üzere bir araya gelen nesneler arasındaki ilişkiler işbirliği diyagramları ile daha rahat görülür. Yine genel resmi görmek işbirliği diyagramları ile daha kolay olmaktadır.
6. Dizge diyagramlarındaki bir bağlantı bir nesneden diğer bir nesneye giden mesajı gösterirken işbirliği diyagramlarındaki bir bağlantı nesneler arasındaki bir ya da daha fazla mesajı gösterebilir.
7. Dizge diyagramlarında nesnelerin yaratılışı ve sonlandırışı daha kolay görülür. İşbirliği diyagramında ise aynı iş bu kadar kolay gerçekleştirilemez.
8. İşbirliği diyagramlarında zaman kavramı olmadığı için bir nesnenin ne zaman aktif ne zaman pasif olduğunu anlamak zordur. Bunu anlamak içn mesaj tiplerini incelemek gerekmektedir. Fakat dizge diyagramlarında bunu kavramak çok kolaydır.
9. İşbirliği diyagramları daha karışıuk dallanmalara (branching) ve eş zamanlı akış denetimine (concurrent flow of control) izin verirken dizge diyagramları doğası gereği çok daha basit dallanmalara müsaade etmektedir. Bu yönüyle işbirliği diyagramları daha karışık sistemleri modelleyebilmektedir.