Yazılım teknolojisi geliştikçe, donanım ve yazılım iç içe girmekte, büyük ağ sistemleri giderek artmakta ve orantılı olarak programcıların yazdığı programlar da büyümektedir. Yazılan programlar karmaşıklaştıkça da kod düzenlemesi yapmak zor olmakta, hatta bazı büyük çaplı projeler için nerdeyse imkansız hale gelmektedir. Bu yüzden standart bir modelleme ve analiz diline ihtiyaç duyulur.
Bu nedenle, UML, 1997 yılında yazılımın, diyagram şeklinde ifade edilmesi için bir standartlar komitesi tarafından oluşturuldu. UML terimi Unified Modeling Language (Birleşik Modelleme Dili) 'in kısaltması olarak kullanılmaktadır. UML, bir programlama dili değil yazılım geliştirme için kullanılan standart bir diyagram çizme ve ilişkisel modelleme dilidir. Yazılım sistemlerinin nasıl modellenebileceğini belirleyen ve açıklayan yöntemlerin bir araya toplanmış halidir. UML 'in doğuşu son yıllarda yazılım endüstrisindeki en büyük gelişmelerden biri olarak kabul edilebilir.
Bir sistemin geliştirilmesi kabaca aşağıdaki aşamalardan geçmektedir:
Programın analiz ve dizayn aşamasında UML'e büyük ölçüde ihtiyaç duyulmaktadır. Düzgün bir modellemeyle birçok problemin çıkmasına engel olunabilir. Daha çok nesneye dayalı programlama dilleri için uygun olan UML, problemleri parçalara ayırıp parçalar arasında belirli ilişkiler sağlayabilmeye dayanır. Eğer problem parçalara ayrılabiliyorsa ve parçalar arasında belirli ilişkiler sağlanabiliyorsa UML kullanılması büyük fayda sağlayacaktır. Örneğin; bir ATM (Eşzamansız Aktarım Modu) sisteminde müşteri, banka memuru ve ATM makinası ayrı parçalar halinde düşünülebilir. Müşteri ATM makinasından para çeker, banka memuru ATM makinasına para yükler.Ama banka memuru ile müşteri arasında doğrudan bir ilişki yoktur.Bu tür ilişkiler UML 'de çeşitli diyagramlarla gösterilir.
UML'nin Faydaları
- Analizi ve tasarımı geniş bir şekilde yapıldığından kodlama işlemi daha kolay olur. Çünkü programdan beklenilenler ve programlama ile yapılacaklar belirlenmiştir.
- Beklenmedik bir takım mantıksal hatalar (bug) en aza indirgenir.
- Düzgün yapılan tasarım aşamasından sonra, tekrar kullanılabilen kodların sayısı artacak ve program geliştirme maliyeti büyük ölçüde düşecektir.
- UML diyagramları programın tamamını kapsayacağı için bellek kullanımını daha etkili hale getirilebilir.
- Programın kararlılığı artacağı gibi döküman halindeki programı koda çevirmek zamandan da tasarruf etmeyi sağlar.
- Ortak çalışılan projelerde programcıların iletişimi daha kolay hale gelir. Çünkü UML ile program parçalara ayrılmıştır ve parçalar arasında bir ilişki kurulmuştur.
UML Diyagramları
UML, nesneler arasında ilişki kurmak için bir takım grafiksel elemanlara sahiptir. Bu elemanları kullanarak diyagramlar oluşturulur. UML temel olarak aşağıdaki diyagram türlerini kapsar:
- Sınıf (Class) Diyagramları: Sınıf, aynı işlevlere, aynı ilişkilere ve aynı anlama sahip nesneler topluluğunun ortak tanımıdır. Sınıflar yazılımın durağan yapısının tanımlanmasında kullanılırlar.
- Nesne (Object) Diyagramları: Nesne, sınıfın bir örneğidir. Bu tür diyagramlarda sınıfın yerine her bir sınıftan oluşturulmuş nesneler yer alır.
- Durum (State) Diyagramları: Gerçek nesnelerin herhangi bir zaman içindeki durumunu ve durumunun zaman içinde nasıl bir değişim gösterdiğini modelleyen diyagramlardır. Genel olarak durum diyagramları tüm nesneler için değil yalnızca karmaşık olan, davranışı, kendine gönderilen iletilerin yanısıra o an içinde bulunduğu duruma göre de farklılık gösteren nesneler için oluşturulur.
- Ardıl Etkileşim (Sequence) Diyagramları: Sınıf ve nesne diyagramları durağan bilgiyi modeller. Ancak gerçek zamanlı sistemlerde zaman içinde değişen durumlar bu diyagramlarla gösterilemez. Bu tür zamanla değişen durumları belirtmek için nesnelerin birbirleriyle zamana bağlı olarak haberleşmelerini ele alan ardıl etkileşim diyagramları kullanılır.
- Etkinlik (Activity) Diyagramları: Bir nesnenin durumu zamanla kullanıcı tarafından ya da nesnenin kendi içsel işlevleri tarafından değiştirilebilir.Bu değişim sırası etkinlik diyagramlarıyla gösterilir.
- Kullanıcı Senaryosu (Use Case) Diyagramları: Programın davranışının bir kullanıcı gözüyle incelenmesi kullanıcı senaryosu diyagramlarıyla yapılır. Gerçek dünyada insanların kullanacağı bir sistemde bu diyagramlar büyük önem taşırlar.
- İş Birliği (Collaboration)Diyagramları: Bir çok parçadan oluşan projelerde bir işin amacına uygun şekilde çalışabilmesi için bütün parçaların işlevlerini eksiksiz yerine getirmesi gerekir. Bu parçalar arasındaki ilişki iş birliği diyagramlarıyla gösterilir.
- Bileşen (Component) Diyagramları: Özellikle çok sayıda kişinin çalıştığı büyük çaplı projelerde, projeyi bileşenlerine ayırmak gerekmektedir. Sistemin doğru modellenmesiyle bileşenlerin ayrı ayrı çalışması sağlanmalıdır. Bu tür modellemeler bileşen diyagramlarıyla yapılmaktadır.
- Dağıtım (Deployment) Diyagramları: Dağıtım diyagramları yazılımın nasıl dağıtılacağının planlandığı aşamada kullanılırlar. Sistemin fiziksel incelemesini yapmaktadırlar. Bilgisayarlar arasındaki baglantılar, programın kurulacağı makinalar, sistemdeki ağ ve yazıcı bağlantıları gibi her türlü detay dağıtım diyagramlarında gösterilir.
- Paket (Package) Diyagramları: Paket diyagramları, büyük yazılımlarda sistemi oluşturan alt yazılımlar veya etkileşimde bulunulan yan sistemler olduğu durumlarda sistemler arası etkileşimi gösteren kısaca sistem mimarisinin paket yönünü özetleyen bir diyagramdır.