UML Diyagramlarına Giriş

Daha önce modelleme dillerinden ve grafiksel modelleme dillerinin ne için kullanıldıklarından bahsettik. Bildiğiniz gibi modelleme dilleri çeşitli bilim dallarında modellemeye faydalı olması ve onu bir standart haline getirmesi açısından önemliydiler. Bunun yanında yazılımların da belli tasarım ve analiz gibi ön aşamaları bulunmaktaydı. İşte modelleme dilleri bu aşamalarda çeşitli tasarımları daha kolay bir şekilde gerçekleştirmek için bize yardımcı olmaktadır.

Programlama ile ilgili pek çok paradigma vardır. Fonksiyonel programlama, yapısal programlama ve nesne yönelimli programlama bunlardan bazıları ve oldukça da önemlileridir. Yapısal programlamada bildiğiniz algoritmalar koda dökülürken genellikle Akış Diyagramı (Flowchart) adı verilen diyagramlar kullanılmaktadır. Bu diyagramlar aslında bir fonksiyon veya bütün bir program için yazılan sözde kodu grafiksel olarak ifade etmek amacıyla kullanılmaktadırlar. Örneğin 0’dan 5’e kadar olan sayıları ekrana basan bir programın akış şeması şöyledir:

Figür 1: Yapısal Programlamada Akış Şeması Örneği

Bu akış şemaları fonksiyonel programlama gibi paradigmalarda da karşımıza çıksa da nesne yönelimli programlama yaklaşımını açıklamak için yetersiz kalmaktadırlar. Bu nedenle nesne yönelimli programlama yaklaşımında daha farklı bir grafiksel modelleme diline ihtiyaç duyulmuştur. İşte bu ihtiyaçlar sonucunda UML ortaya çıkmıştır. UML (Unified Modelling Language, Birleşik Modelleme Dili) aslında birçok kişi tarafından birçok nesne yönelimli modelleme standardının bir araya getirilmesi ile oluşan bir grafiksel modelleme dili ailesidir.

UML tanımı tek bir şeyi ifade etmez. UML içerisinde çok farklı amaçlarla kullanılabilen çeşitli diyagramlar bulunmaktadır. Böylelikle yazılım tasarımında nesne yönelimli programlama yaklaşımı kullanırken bu diyagramlar bize kolaylık sağlar. UML pek çok şirketin bir araya gelerek oluşturduğu Object Management Group (OMG) isimli bir konsorsiyum tarafından kontrol edilen açık bir standarttır. "www.uml.org" adresinden UML ile ilgili en son bilgileri öğrenebilir ve en son standartlar ile ilgili dokümantasyonlara ulaşabilirsiniz.

Figür 2: UML Logosu[1]

UML’in ortaya çıkışı ve tarihi biraz karmaşıktır. O yüzden burada detaylı olarak buna girmeyecek, kısaca bahsedeceğim. 1980’lerde yavaş yavaş Smaltalk gibi programlama dilleriyle nesne yönelimli programlama yaklaşımı benimsenmeye başlanmıştı. Nesne yönelimli programlama (object-oriented programming) yaklaşımı programlamadaki öğeler ile gerçek dünyadaki "nesne" kavramını ilişkilendirip programlamayı gerçek dünyadaki nesneler arasındaki ilişkileri baz alarak yapmayı belirtir. C++’ın ortaya çıkmasıyla bu yaklaşımı benimseyenlerin sayısı gün geçtikçe artmıştır.

Nesne yönelimli programlama yaklaşımı oldukça etkileyici olsa da bunu tasarım aşamasında modelleyecek bir modelleme diline ihtiyaç duyuluyordu. 1988 ve 1992 yılları arasında bu yaklaşımla ilgili pek çok modelleme dili ortaya çıkmıştır. Ada/Booch, OMT, OOSE, Fusion, OBA, OOA ve Booch ’93 gibi diller bunlara örnektir. Bu diller nesne yönelimli programlama yaklaşımının çeşitli aşamalarını tanımlamada oldukça başarılı olsalar da neredeyse her şirket başka bir modelleme dili kullandığından ortada bir karmaşa bulunuyordu.

İşte bu yıllarda standartlaştırma işi konuşulmaya başlandı. OMG konsorsiyumu bununla ilgili pek çok girişimde bulunsa da başarılı olamadı. Bu sırada bu modelleme dillerinden bazıları ile uğaşmış olan önemli isimlerden Grady Booch ve James E. Rumbaugh bir araya gelerek, nesne yönelimli yaklaşım ile ilgili bütün modelleme dillerini standartlaştırmak üzere çalışmalarına başlamışlardır. Bunun sonucunda 1995 yılında OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) konferansında Unified Method isimli bir modeli 0.8 versiyonu ile halka açıklamışlardır. Daha sonra aynı yıl yanlarına Object-Oriented Software Engineering (OOSE) metodunun yaratıcısı olan Ivar Jacobson‘ı da almışlardır.

1996 yılında artık Üç Amigo (Three Amigos) adı ile bilinen Rumbaugh, Jacobson and Booch üçlüsü UML Partners adı verilen bir konsorsiyum organize ederek UML’in 1.0 dokümantasyonunu yayınlayıp bunu OMG’ye standartlaştırması için göndermişlerdir. Ocak 1997 yılında da bu dokümantasyon OMG tarafından konsorsiyuma sunulmuştur. Aynı yıl pek çok öneri gelmiş ve UML’in 1.1 sürümü resmi standart olarak benimsenmiştir. Bundan sonra da 1.2, 1.3, 1.4 ve 1.5 gibi çeşitli küçük revizyonlar yapılmıştır.

Figür 3:UML’in Başındaki Üç Amigo[2]

2005 yılında 1.5 sürümü ile değiştirilecek olan UML 2.0 ortaya çıkmıştır. Bu sürüm ile dile yeni diyagramlar ve özellikler eklenmiştir. Daha sonra 2007 yılında 2.1.1 ve 2.1.2 sürümleri (2.1 sürümü asla resmi bir dokümantasyonla yayınlanmadı), 2009 yılında UML 2.2 ve 2010 yılında UML 2.3 sürümü yayınlanmıştır. En son Aralık 2017’de resmi olarak 2.5.1 sürümü yayınlanmıştır. Genellikle UML sürümlerinden bahsedilirken UML 1.x ve UML 2.x gibi yazımlar tercih edilir.

UML özellikle nesne yönelimli programlama tekniğini kullanan sistemlerin çeşitli diyagramlar ile modellenmesini sağlar. Bu diyagramlar bir sistemin modeline iki farklı açıdan yaklaşır:

  • Statik (Yapısal) Yaklaşım: Sistemdeki nesnelerin, özelliklerin, işlemlerin ve ilişkilerin statik yapısını vurgular. Yani bu diyagramlarda zamana bağlı olaylar gerçekleşmez.
  • Dinamik (Davranışsal) Yaklaşım: Sistemdeki nesnelerin arasıdaki ilişkiler ve bu nesnelerin durumları ile ilgili dinamik yapıyı vurgular. Nesnelerin zaman içinde belli etkilerle değişen durumlarını ve özelliklerini gösteren diyagramları içerir.

UML’in en son versiyonunda 14 adet resmi diyagram bulunmaktadır. Bu diyagramlar Yapı Diyagramları (Structure Diagrams) ve Davranış Diyagramları (Behaviour Diagrams) olmak üzere iki grupta incelenir. Bu gruplar arasındaki farklar aslında yukarıda anlattığımız statik ve dinamik yaklaşımlar ile aynıdır. Bu arada buradaki diyagramlar temel diyagramlar olsa da UML diyagramlarına sık sık ekleme ve çıkarmalar yapılmaktadır. Yani farklı UML sürümlerinde farklı diyagram türleri ile karşılaşabilirsiniz. Ayrıca bir UML diyagramında kullanılan bir sembolü başka bir UML diyagramında da görebilirsiniz. Şimdi temel UML diyagramlarını şu şekilde şematize edelim:

Figür 4: UML Diyagram Türleri[3]

UML’de çizdiğimiz görsel öğelerden ziyade, bu öğelerin ne anlama geldiği ayrı bir konudur. Bir şeyi kesin olarak tanımlamanın yolu onu matematiksel olarak ifade etmek olsa da grafiksel modelleme dilleri bu tür kesin araçlar değildirler. Onların böyle olması da bir dezavantaj değildir. Bu durum onları daha sade ve kullanıcısı tarafından daha rahat anlaşılan yapılar haline getirir. Bu nedenle kullandığımız grafiksel öğeleri matematiksel olarak tanımlamak yerine, UML’de Metamodelling (Üst Modelleme) olarak adlandırılan bir mimari yaklaşım kullanılır. Bu mimari yaklaşım yine OMG tarafından geliştirilmiştir. Bir Meta-Model (Üst Model) aslında modelin modeli olarak tanımlanabilir.

UML’i anlamlandıran Meta-Model’lerde yine UML diyagramlarında kullanılan sembollerden faydalanılır. Örneğin aşağıdaki figürde bir Meta-Model örneği verilmiştir. Bu modele göre UML diyagramlarında görünen her şey "Element" olarak tanımlanmış ve onun çeşitleri gösterilmiştir. Ayrıca "Association", "Class", "Relationship" gibi UML kavramlarına çeşitli anlamlar getirilmiş ve aralarındaki ilişkiler gösterilmeye çalışılmıştır. Bu UML’de bulunan pek çok Meta-Model’in sadece küçük bir örneğidir.

Figür 5: UML’de Basit Bir Meta Model Örneği[4]

Şimdi UML’de resmi olarak bulunan diyagramları bir tabloda inceleyelim. Bu tabloda diyagramın ismi, açıklaması ve hangi UML sürümünde ortaya çıktığı gibi bilgiler verilmiştir:

Diyagram AdıAçıklamaOrtaya Çıkış
ActivityÇeşitli eylemlerin ve davranışların iş akışını göstermek.UML 1.x
ClassSınıflar, onların özellikleri ve aralarındaki ilişkileri göstermek.UML 1.x
CommunicationBağlantıları vurgulayarak nesneler arası etkileşimlerin modellenmesi.UML 1.x (Collaboration)
ComponentBileşenlerin yapısı ve bağlantılarını göstermek.UML 1.x
Composite StructureBir sınıfın çalışma zamanında ayrışmasının (decomposition) modellenmesi.UML 2.x
DeploymentÇeşitli yazılım dağıtımları ve bunlar arasındaki ilişkilerin modellenmesi.UML 1.x
Interaction OverviewSequence ve Activity diyagramlarının bir birleşimidir.UML 2.x
ObjectNesnelere ve nesne gruplarına çeşitli değerler atayarak, onların özelliklerinin ve arasındaki bağlantıların modellenmesi.UML 1.x
PackageSınıfları içeren paketlerin arasındaki ilişkilerin ve bağımlılıkların modellenmesi.UML 1.x
ProfileGenellikle UML diyagramlarında Metamodelling yaparken kullanılır.UML 2.x
SequenceSıra faktörünü vurgulayarak nesneler arası etkileşimlerin modellenmesi.UML 1.x
State MachineBir nesnenin ömrü boyunca durumlarının nasıl değiştiğinin modellenmesi.UML 1.x
TimingZaman faktörünü vurgulayarak nesneler arası etkileşimlerin modellenmesi.UML 2.x
Use CaseKullanıcıların sistemler ile nasıl etkileştiklerinin modellenmesi.UML 1.x

UML diyagramlarının çizimleri için genellikle UML sembollerini içeren çeşitli çizim programlarından yararlanılır. Bu programları internet üzerineden Online olarak veya bilgisyarınıza indirerek Offline bir şekilde kullanabilirsiniz. Online kullanabileceğiniz bazı web siteleri şöyledir:

Offline olarak bilgisayarınıza indirip kurabileceğiniz bazı programlar ise şöyledir:

  • Microsoft Visio
  • Umbrello
  • UML Designer
  • Visual Paradigm
  • Enterprise Architect
  • Dia

Bu programların UML sembollerini ve çizim kolaylıklarını sağlamanın dışında pek çok farklı özellikleri bulunmaktadır. Örneğin çizilen UML diyagramlarını otomatik olarak, C, C++, Java, Python gibi programlama dillerine dönüştürmek (code generation) veya tam tersi kaynak koddan UML diyagramları çıkarmak, dokümantasyon desteği sağlamak, sonuçları çeşitli dosya formatlarında sunabilmek ve en yeni UML 2.x özelliklerini sağlamak bunlardan bazılarıdır. Elbette çizim yapacağınız işletim sistemi de kullanacağınız programı belirlemede önemlidir. Eğer birçok sistemde çalışan biriyseniz Online araçları kullanmak sizin için daha iyi olacaktır.

Bu yazıda UML’in ne olduğunu, kısa tarihini, UML’de Metamodelling kavramının ne olduğunu, UML diyagramlarının neler olduğunu ve ne amaçlar için kullanıldığını, UML çizimi yapabileceğiniz çeşitli Online ve Offline araçları açıklamaya çalıştım. Herhangi bir diyagramın detayına girmeden yalnızca UML kavramı üzerinde durmaya çalıştım. Sonraki yazılarda tek tek bu diyagramların ayrıntılarına gireceğim.

REFERANSLAR

  1. https://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/UML_logo.svg/1280px-UML_logo.svg.png
  2. https://adesta2008.files.wordpress.com/2008/11/1c1.jpg
  3. https://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/UML_diagrams_overview.svg/800px-UML_diagrams_overview.svg.png
  4. http://www.cs.sjsu.edu/faculty/pearce/modules/lectures/uml2/index.htm
5 2 votes
Article Rating
Subscribe
Bildir
guest

0 Yorum
Eskiler
En Yeniler Beğenilenler