UML Nedir?
UML, Unified Modeling Language’in (ya da dilimizdeki karşılığıyla Birleşik Modelleme Dili) kısaltmasıdır. UML, yazılım sistemlerinin tanımlanması ve tasarlanması amacıyla geliştirilmiş bir notasyon dilidir.
Aslında algoritmik ve süreçsel yapıları eskiden bu yana “akış diyagramları” (flow charts) ile ifade etmeye çalışıyoruz. Ben 1985 yılında İTÜ’de Fortran dersini alırken, akış diyagramları kullanarak algoritmik tasarımları nasıl yapabileceğimizi öğrenmiştik. Aslen “process chart” adıyla 1920’li yıllarda makina mühendislerinin kullanımı için ortaya çıkarılan bu diyagramın, haliyle yazılım elemanlarının her türlü durum ve davranışını ifade etmede başarılı olması düşünülemezdi. Nitekim 1987 yılında Harel, karmaşık durumlara sahip nesnelerin davranışlarını betimlemek amacıyla “durum diyagramı” (state diagram) isimli notasyonu geliştirdi. Aslında bu da 1940lı yıllarda geliştirilen ve sonlu durum makinalarını (finite-state machines) modellemeyi amaçlayan benzer durum diyagramı kavramı üzerine kurgulanmıştı.
1990lı yıllara geldiğimizde yukarıdaki diyagramdan da görebileceğimiz gibi nesne-merkezli dünyada farklı kişiler ve yaklaşımları öne çıkmıştı. Örneğin Grady Booch’un “Object-Oriented Analysis and Design with Applications” isimli kitabında anlattığı ve kendine has bulutsu şekillerle görsel olarak betimlediği yaklaşımı en bilinenlerdendi.
Benzer şekilde Rumbaugh ve arkadaşlarının “Object Modeling Technique” (OMT) isimli yaklaşımları, Avrupa’da Ivar Jacobsen’in “Object-Oriented Software Engineering” isimli kitabında “use-case” ve diyagramları merkezli OOSE yaklaşımı, Wirfs-Brock’un Responsibility-Driven Design ve Shlaer/Mellor’un “Object-Oriented System Analysis” (OOSA) metodu ile Coad/Yourdon’un yazdıkları kitap serileriyle ortaya koydukları “Object-Oriented Analysis” (OOA) metodu zamanında benim de yakından takip ettiklerimdendi.
1990lı yılların ortalarına geldiğimizde ABD Silikon Vadisi şirketlerinden olan Rational (Rational Software Corporation) Rumbaugh’la çalışmaya başladı ve hemen akabinde Jacobsen’in Objectory isimli şirketini de alarak Jacobsen’i de kadrosuna kattı. Rational zaten 1981’de kurulmuş ve o günden itibaren Booch önderliğinde önce Ada ve sonra da C++ için değişik geliştirme araçlarını piyasaya sürmekte olan bir “yazılım geliştirme” şirketiydi. Rational’ın ünlü Rose isimli modelleme ve geliştirme ortamı da bunlardan biriydi.
1995’e geldiğimizde bu üç arkadaş (three amigos) Rational çatısı altında çalışmaya ve metodoloji ve notasyonlarını birleştirmeye başladılar. Bu üç arkadaşın temelde yaptıkları şey, kendi tecrübeleri ve bilinen diğer yaklaşımlardan yola çıkarak, yazılım-yoğun bir sistemin ihtiyaçlarından tasarımına ve kurulumuna kadar farklı durumunu farklı açılardan betimleyecek bir notasyon dili ortaya koymaktı. UML, farklı konferanslarda görücüye çıktı ve nihayetinde 1.1 sürümü 1997 sonunda Object Management Group (OMG) tarafından standart olarak kabul edildi. Ben o zamanları iyi hatırlıyorum ve UML’den sonra OO dünyasının diğer liderleri de kendi kitapalrında artık UML’i kullanmaya başladılar. Özellikle o zamanki isimleriyle Rational Rose ve TogetherJ UML’i kullanarak modelleme ve raporlama yapmaya izin veren en popüler araçlardandı. Ben her ikisini de en başından bu yana kullanmıştım.
UML temelde notasyonal bir dildir. UML ile görsel modelleme yaparak, dilin kaypaklığını giderip, daha matematiksel ve kesin bir ifade imkanı kazanırız. Bu anlamda UML yazılımı “gorülebilir” hale getirir.
UML herhangi bir dilden bağımsızdır ama nihayetinde nesne-merkezli yaklaşımı benimsediğı için içinde class, object, interface, inheritance gibi kavramlar ve ilgili notasyonları mevcuttur. UML çalıştırılabilir bir dil değildir ama “Executable UML” ismi altında çalışmalar mevcuttur. UML araçları, UML ile geliştirdiğiniz modellerden size istediğiniz dilde kod üretirler. Dolayısıyla modellerinize uygun bir iskelet koddan programlamaya başlama imkanınız olur.
UML, bir yazılım geliştirme sürecinde yer alan farklı fazlara yönelik farklı açıları betimleyecek şekilde farklı diyagramlara sahiptir. 1.1 sürümünde UML 9 tane diyagrama sahipti. Bu diyagramlar genel olarak structural (yapısal) ve behavioral (davranışsal) olmak üzere iki ayrı kategoride ele alınabilir. Bunlar ve temel işlevleri şöyle sıralanabilir:
- Use-case diyagramları, sistemin davranışsal yapısını ifade etmek (behavioral),
- Activity diyagramları, use-case’lerin akışlarını modellemek (behavioral),
- Class diyagramları, statik tip ilişkilerini ifade etmek (structural),
- Object diyagramları, class diyagramlarının bir “t” anındaki durumunu betimlemek (structural),
- State diyagramları ile karmaşık durumlara sahip olan nesnelerin davranışlarını betimlemek (behavioral),
- Sequence ve colloboration diyagramları, use-caselerin tasarımlarını ve bu tasarımlar içinde nesnelerin dinamik davranışlarını betimlemek (behavioral),
- Component diyagramı ile modülleri, bileşenleri ve aralarındaki ilişkileri betimlemek (structural),
- Deployment diyagramı ile de yazılım sisteminin donanımsal unsurlarla birlikte test ya da gerçek ortam gibi, yazılımın kurulum yapılarını betimlemek (structural).
Aşağıda iki tane UML diyagramı örneği verilmiştir.
UML, 2005 yılında 2.0 sürümüyle birlikte ciddi bir şekilde gözden geçirilmiş ve zenginleştirilmiştir. Bu şekilde UML’deki diyagram sayısı 2.2 sürümünde 14’e çıkmıştır.
UML’i, onun etiket (streotype) sistemini kullanarak kendi teknolojinize ve iş alanınıza daha yakın hale getirebilirsiniz. Örneğin UML’i kullanarak entity, service, controller ya da Müşeri, Hesap vb. tipte sınıflar için notasyonlar oluşturabilirsiniz.
UML hakkındaki ilk yazımızı burada keselim. Bir sonraki yazıda UML’i nasıl kullanabiliriz, özellikle ülkemiz şartlarında en faydalı hale nasıl getirebiliriz konusunu ele alalım.
Bol UML’li günler diliyorum 🙂
Toplam görüntülenme sayısı: 16145
Fatih ÇÖREKÇİ
06 Mart 2014 @ 21:17
UML hakkında yazılmış Türkçe kaynak olarak Bora GÜNGÖREN’in “UML ile Nesne Tabanlı Çözümleme ve Tasarım” kitabını tavsiye ederim.
Akin
06 Mart 2014 @ 22:38
Kesinlikle guzel bir kitap. Tesekkurler Fatih hocam.