C#nedir?com
 
YAZAR HAKKINDA
Çağatay Çatal
Çağatay Çatal
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
6 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: arasindaki diyagram diyagrami diyagramin diyagramlari iliskin isbirligi mesaji nesneler nesnesi oldugu rational siralama tasarim temsil UML / Analiz Çağatay Çatal
 
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 : Orta
Kategori : UML / Analiz
Yayınlanma Tarihi : 28.3.2005
Okunma Sayısı : 50901
Yorum Sayısı : 1     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Ş
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Burak Selim Şenyurt
Asp.Net Core'da Bir WebSocket Macerası 21.10.2017
Burak Selim Şenyurt
.NET Core 2.0 ile Basit Bir Web API Geliştirmek 21.10.2017
Turhal Temizer 'in Blogu
ChatBot UI Sample 21.10.2017
Turhal Temizer 'in Blogu
C# – IRR Function 21.10.2017
  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 İşbirliği (Collaboration) Diyagramları
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bu yazımda sizlere, UML içindeki işbirliği (collaboration) diyagramlarını açıklayacağım. İşbirliği diyagramlarının ne tür durumlarda kullanıldığını, içerdiği özel sembolleri, sıralama (sequence) diyagramlarından farklarını ve nasıl oluşturabileceğimizi örnek üzerinde göreceğiz.

"İşbirliği" Diyagramları

İşbirliği kelimesi (collaboration), "co-labor" (ortak-iş) kelimelerinden oluşmaktadır. İşbirliği diyagramları; tasarımcıların UML içinde çok fazla tercih etmediği diyagramlardandır. Çoğu tasarımcı, sıralama diyagramlarının nesneler arasındaki dinamik yapıyı göstermede yeterli olduğunu düşünür. Ancak; tasarımlarında işbirliği diyagramlarını kullanmış ve yararlarını görmüş olan tasarımcılar, bu diyagramları da modellerine katmayı düşünürler. Bu yazıdaki UML diyagramları Rational Rose tasarım aracı ile çizilecektir.

Önceki makalelerde; sınıf diyagramları ile sistemin statik yapısının, durum diyagramları ile karmaşık sınıfların davranışının, sıralama diyagramları ile sıra mantığının, aktivite diyagramları ile veri akışının modellenebileceğini açıklamaya çalışmıştık. Belirli bir amaca yönelik olarak ortaklaşa çalışan nesneleri ise işbirliği diyagramları ile modelleyeceğiz.

Karmaşık sistemler, tasarlanan görevleri 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, sıralama diyagramları mesaj sırası ile ilgilenmektedir. 2 diyagram bir çok noktada benzerlik göstermektedir. Bu nedenle; birçok tasarım aracı bir diyagramın çizili olması durumunda, diğerini bir tuşa basmanızla birlikte üretebilmektedir. Örneğin; Rational Rose (2002 versiyonu) içinde sıralama diyagramının çizili olduğu durumda, kullanıcı F5 tuşuna basarak işbirliği diyagramını görebilmektedir. Bu durumu, "UML ile Sıralama Diyagramları" makalesinde ATM makinesinin çalışmasını modelleyen sıralama diyagramı üzerinde inceleyeceğiz. Bu örnek sayesinde; iki diyagram arasında geçişi ve işbirliği diyagramlarını görmüş olacağız.

Şekil 1’de örneğe ilişkin sıralama diyagramı verilmekte, Şekil 2’de ise bu örneğin F5 tuşuna basılarak elde edilmiş işbirliği diyagramı gösterilmektedir.

Tasarım aracınızdaki sıralama diyagramı ekranında; aktör nesnesi oluşturmak için bir bileşen bulunmuyorsa, kullanım senaryosunda aktörü oluşturup sürükle-bırak ile sıralama diyagramına taşıyabilirsiniz.



Şekil 1 : ATM örneğine ilişkin sıralama diyagramı



Şekil 2: ATM örneğine ilişkin işbirliği diyagramı

Şekillerden de görüldüğü gibi, 2 diyagram da "nesneler" ve "mesajları" modellemekte, aynı bilgiyi farklı şekillerde göstermektedir. Temel elemanlar; nesneler, bağlantılar ve mesajlardır. Bu noktada; 2 diyagram arasındaki temel farkları incelememiz gerekmektedir.

İşbirliği diyagramları ile Sıralama diyagramları arasındaki farklar

1. Sıralama diyagramları, zamana bağımlı olarak nesneler arasındaki mesajlaşmayı göstermektedir. İş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östermeniz mümkündür. Sıralama diyagramları sadece dinamik yapıyı temsil etmektedir.

3. Sıralama diyagramları, müşterilerin daha kolay anlayabileceği diyagramlardır. Bu nedenle; ilk analiz safhasında sıralama diyagramları kullanılırken, işbirliği diyagramları daha çok tasarım aşamasında kullanılır.

4. Sıralama diyagramlarında; mesajlaşma sıraları, işbirliği diyagramlarında ilişkiler daha kolay gözlemlenir. Büyük diyagramlar için; mesaj sırası ile mesajlaşmayı takip etmek (işbirliği diyagramları), şekil üzerinden takip etmeye (sıralama diyagramları) göre daha zordur. Ancak; daha az alanda birçok bilgiyi göstermenizi sağlayabilir.

5. Belirli bir amacı yerine getiren nesneler arasındaki ilişkiler, işbirliği diyagramları ile daha net gösterilebilmektedir. Senaryoya ilişkin tüm resmi (nesneler ve arasındaki ilişkiler) işbirliği diyagramları ile daha net gösterebilirsiniz. Sıralama diyagramları, mesaj sırasına yoğunlaştığı için tüm resim net görünmeyebilir.

6. Sıralama diyagramlarında bir bağlantı, bir nesneden diğerine giden mesajı gösterirken; işbirliği diyagramlarında bir bağlantı, nesneler arasındaki 1 veya daha fazla mesajı gösterebilir.

7. Sıralama diyagramlarının bir avantajı; nesnelerin yaratılışı ve sonlandırılışını kolay şekilde gösterebilmenize imkan vermesidir. Zaman boyutunda "yeni ()" mesajı ile nesneyi yaratabilir, X işareti ile de nesnenin sonlandırıldığını gösterebilirsiniz. İşbirliği diyagramlarında bu kadar basit olarak aynı işlemi gerçekleştiremezsiniz. Bu durumu gerçekleştirmek için "oluştur( )" ve "sonlandır( )" mesajlarını modele katmanız gerekir.

8. İşbirliği diyagramlarınlarında zaman kavramı olmadığı için; bir nesnenin ne zaman aktif ne zaman pasif olduğunu mesaj tiplerini incelemeden anlayamazsınız ancak sıralama diyagramlarında bu durum çok kolay algılanmaktadır.

9. İşbirliği diyagramları; daha karmaşık dallanmalara (branch), eş zamanlı akış denetimine (concurrent flow of control) izin verirken sıralama diyagramları doğası gereği daha basit dallanmalara izin vermektedir. Bu açıdan; işbirliği diyagramları ile daha karmaşık sistemler modellenebilmektedir.

Nesne tipleri

Nesneler, diyagramlarda 2 türde yer alabilmektedir. Tedarikçi (supplier) ve istemci (client). Bu 2 kavram; işbirliği diyagramlarında parametreleri gösterirken karşınıza çıkabilir. Temel olarak tedarikçi nesneler; çağrılan metodu sunan nesnelerdir. A------->B şeklindeki bir örnek için; B nesnesi mesajı alan ve çağrılan metodu sunan "tedarikçi nesne" olarak ifade edilir. İstemci nesneler, tedarikçi nesneler üzerindeki metotları çağırır.

Bu durumda; A nesnesi istemci, B nesnesi de tedarikçi nesne olarak ifade edilir.

Özel semboller

İşbirliği diyagramları içinde kullanılan özel semboller bu bölümde açıklanacaktır. Bu kapsamda; Şekil 3’de sadece kavramları göstermek için bir örnek verilmektedir.



Şekil 3: İşbirliği diyagramındaki kavramları, sembolleri ve mesajlaşma çeşitlerini gösteren bir örnek

1. Nesne: Sıralama diyagramlarındaki nesne kavramının aynısıdır. a: A ile gösterilen nesne; A sınıfından yaratılan ve ismi a olan nesneyi temsil etmektedir.

2. Senkron mesaj: Senkron mesajlar, gönderildiği nesneden cevap bekleyen mesajlardır ve belirli bir süre sonra aynı bağlantı üzerinden cevap alınmaktadır. Şekil 3 ’de mesaj1( ) senkron bir mesajı temsil ederken,buna ilişkin dönüş cevabı mesaj2( ) ile gösterilmektedir.

3. Asenkron mesaj: Senkron mesajların aksine cevap beklemeyen mesajlardır. mesaj5( ), asenkron mesajlara örnek olarak verilebilir.

3. Prosedür çağırma: mesaj3( ) mesajı ile prosedür çağırma temsil edilmektedir. c nesnesi üzerinden, bu prosedür çağrılmaktadır.

4. Sıra numaraları: İşbirliği diyagramlarında zaman bilgisi bulunmadığı için sıra numarası kullanılır. Sıralama diyagramlarında, bu sıra bilgisi seçime bağlıdır ancak işbirliği diyagramlarında kullanılmak zorundadır. Her mesajın bir numarası örnekte görülmektedir.

5. Belirsiz nesne (anonymous object): Bir sınıfın herhangi bir nesnesinin aynı şekilde davranacağı düşünüldüğü zaman, ilgili nesne için isim kullanmayabilir. :D nesnesi, belirsiz bir nesnedir.

6. Kendi üzerine referans (self-reference): Kendi üzerinde bir metot çağıran nesne olarak düşünebiliriz. Çoğu durumda, nesne kontrol amaçlı sahip olduğu metotları kullanabilir. mesaj4( ) kendi üzerine referansa örnek olarak verilebilir.

7. Zaman aşımı olayı (timeout): Belirli bir zaman cevap gelmeyince çağrılan mesaj tipidir. mesaj6( ) bu mesaja örnek olarak verilebilir.

8. Çoklu nesne (multi-object): Bir nesne birden fazla nesne içeriyorsa; çoklu nesne olarak ifade edilir ve :G nesnesinde olduğu gibi gösterilebilir. Örneğin; modem nesnesi kendi içinde birden fazla nesne barındırabilir.

9. Yorum: Diyagramı kimin, ne zaman oluşturduğunu ve kapsamını gösteren bir yorum bileşeni diyagramın sağ üst köşesine konulabilir.

İşbirliği diyagramlarındaki önemli noktalar aşağıda açıklanmaktadır:

  • İşbirliği diyagramlarında; özyineleme (iteration) ve şartlı (condition) ifadeler sıralama diyagramlarındaki gibi gösterilebilir. Özyineleme için; * sembolü, [i==true] ifadesi de şart için kullanılabilmektedir. Örneğin; 4*[i=İlkbahar..Kis] ifadesi her mevsim için bir defa çalıştırılarak, toplamda 4 defa çalıştırılmış olacaktır.
  • İşbirliği diyagramlarında dönüş değerlerini de göstermeniz mümkündür. Örneğin; 5: sonuc := işle( ) ifadesi isle( ) metodu neticesinde oluşan sonuc ifadesini geri döndürmektedir.
  • Döngüleri ve geri dönüşleri aynı ifade de gösterebilirsiniz. Örneğin 8*[i=Ocak..Aralik]:sonuc := işle(i) ifadesi, 8 nolu mesajın; 12 defa işle( ) yöntemini çağırdığını göstermektedir.
  • Giriş ve çıkış argümanları da işbirliği diyagramları üzerinde temsil edilebilir. Örneğin; ModemBaslat(modelId:ModelTipi, out true:YeniModem) ifadesi ile modem oluşturulabiliyorsa doğru (true) bilgisi geri dönüş değeri olarak verilebilmektedir. ModelId parametresi de giriş parametresidir.
  • UML içinde özyineleme ifadeleri yazabilmek için, programlama dili sentaksından yararlanabilmeye izin verilmiştir. Ancak; modeli dilden bağımsız tasarlamak, daha etkin modelleme mantığıdır.
  • Çok parçacıklı (multi-threaded) sistemlerle çalışıyorsanız; eş zamanlı süreçlere aynı sıra numarası vererek gösterebilirsiniz. Ayırt edici nokta, mesajların ismi olacaktır. Örneğin; 1: thread1, 1: thread2, 1: thread3 seklinde bir gösterim mümkün olabilmektedir.
  • Diyagramınızdaki bir bağlantı üzerinde, bazen get() ve set() türünde birçok mesaj göstermeniz gerekebilir. Diyagramın okunurluğunu bozmamak için, bilgiyiAl() ve bilgiyiEkle() gibi mesajlarla birçok mesajı tek bir mesaj olarak ifade edebilirsiniz.
  • İşbirliği diyagramı oluştururken; en önemli nesneleri diyagramın ortasına koymanızda yarar vardır. Bu sayede; önemli noktaları daha net gözlemleyebilirsiniz.
  • İşbirliği diyagramını çizmeden önce, diyagramı ne amaçla çizdiğinizi saptamanız gerekmektedir. Sıralama diyagramlarında olduğu gibi bir işbirliği diyagramı, çoğu kez bir kullanım senaryosunu (use-case) modellemek için kullanılmaktadır.
  • Bir nesne, etkileşim sırasında durum değiştirebilir. Nesnenin yeni örneği oluşturularak; aralarında bir bağlantı çizilir ve <<become>> şeklinde gösterilir. Rational Rose içinde, bir nesnenin durumu gösterilemez. Bazı tasarım araçları bu duruma destek sunmaktadır.
UML 2 içinde yapılan değişiklikler

Bu bölüme kadar yapılan açıklamalar, özel semboller UML 1.x içinde yer aldığı şekilde verilmiştir. Birçok tasarım aracı, halen sadece UML 1.x ile diyagram çizebilmeyi desteklerken, bazıları UML 2’yi de desteklemeye başlamıştır.

Bu noktada; işbirliği diyagramları yönünden UML 2’deki değişimi inceleyebiliriz. UML 2 içinde işbirliği diyagramları; iletişim (communication) diyagramları adını almıştır. Bu diyagramlar; işbirliği diyagramlarına çok benzese de, daha az karmaşıktır ve işbirliği diyagramları kadar güçlü bir mekanizması yoktur. Bazı tasarımcılar; OMG içindeki UML grubuna, kaybolan bu özelliklerin eklenmesi için başvurmuşlar ve gerekli düzenlemelerin yapılmasını istemişlerdir. Yapılan bu değişikliklerin zamanla olgunlaşacağı ve tasarımcıların tercihine göre yön bulacağı beklenmektedir. Ancak; diyagramların temel felsefesinde çok fazla değişiklik bulunmamakta, daha çok gösterim açısından değişimler olmaktadır.

Bunun yanı sıra; UML 2, nesne etkileşimlerinin 4 farklı diyagramla modellenmesini önermektedir (UML 1.x içinde bu amaçla, sıralama ve işbirliği diyagramları kullanılmaktaydı). Bu diyagramlar; sıralama diyagramları, iletişim diyagramları (eski adıyla işbirliği diyagramları), etkileşim tanıtım diyagramları (interaction overview) ve zamanlama (timing) diyagramlarıdır.

İşbirliği diyagramları için daha fazla açıklama yapmak mümkündür. Ancak; UML 2 içindeki birçok özellik çoğu tasarım aracı tarafından şu anda desteklenmemektedir. Bu yazıda belirtilen temel kavramları kullanarak, kullandığınız tasarım aracının yeteneği ölçüsünde, projelerinizdeki nesneler arasındaki mesaj akışını kolaylıkla modellemeniz mümkün olacaktır.

Yazıyı tamamlamadan önce; Deborah Melewski’nin 09/01/2000 yılındaki bir makalesine kısaca değinmek istiyorum. Bu makalede; pazar araştırma şirketlerinden ACNielsen’in, tüm yeni yazılım projelerine UML ve Rational Rose tasarım aracı ile başladığı açıklanmaktadır. Aynı zamanda; aynı makalede ACNielsen Uzman Sistem Mimarı Joe Canon ile yapılan röportajda, işbirliği diyagramlarının zamandan bağımsız olmasının yararına değinilmiş ve farklı nesne etkileşimlerini göstermede kullanılabileceği ifade edilmiştir. Bu diyagramları; nesne modellerini normalize etmede ve hangi sınıfların bağımsız olması, hangilerinin aynı nesne olması gerektiğini belirlemede kullandıklarını açıklamıştır. Bu makale de gösteriyor ki, birçok uzman tasarımcı bu diyagramlardan gerektiği durumda yararlanmaktadır. Siz de, tasarladığınız sistemin karmaşıklığına göre bu diyagramlardan yararlanmaya çalışarak, gereksiz nesneleri saptayabilir ve nesneler arasındaki mesaj akışını kolaylıkla modelleyebilirsiniz.

Bir sonraki yazıda görüşmek üzere.

Çağatay Çatal

cagatay@csharpnedir.com

Kaynaklar

1-) UML Weekend Crash Course, Thomas A. Pender, Wiley Publishing Inc., 2002.

2-) UML Bible, Tom Pender, John Wiley, 2003.

3-) UML Distilled: A Brief Guide to the Standard Object Modeling Language, Martin Fowler, Kendall Scott, Addison Wesley, 1999.

4-) The Elements of UML Style, Scott W. Ambler, Cambridge University, 2003.

5-) Visual Modeling with Rational Rose 2000 and UML, Terry Quatrani, Addison Wesley,1999.

6-) The Object Primer 3rd Edition: Agile Model Driven Development with UML2, Scott W. Ambler, 2003.

7-) UML in a Nutshell , Sinan Si Alhir, O’Reilly, 1998.

8-) UML 2 for Dummies, Michael Jesse Chonoles and James A. Schardt, Hungry Minds, 2003.

9-) www.adtmag.com/article.asp?id=2656

10-) www.visualuml.com/whitepapers/UML%20collaboration%20diagrams.pdf

Makale:
UML ile İşbirliği (Collaboration) Diyagramları UML ve Sistem Analizi Çağatay Çatal
  • Yazılan Yorumlar
  • Yorum Yaz
NİS
9
2005
rational rose programını nereden temin edebiliriz_?
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