Yazılım
teknolojisi
geliştikçe yazılan programların karmaşıklığı ve zorluğu giderek
artmaktadır. Donanım
ve yazlımın iç içe girdiği, büyük ağ sistemlerinin giderek arttığı bir
dönemde doğaldır ki biz programcıların yazacağı programlarda
büyüyecektir.Yazacağımız programlar çok karmaşık olacağı için kod
organizasyonu yapmamız zor olacaktır.
Hele birçok programcının çalışacağı projelerde bu nerdeyse imkansız
hale
gelmiştir. Bu yüzden standart bir modelleme ve analiz diline ihtiyaç
duyarız.
Programımızın analiz ve dizayn aşamasında modellemeyi güzel yaparsak
ileride doğabilecek
birçok problemin çıkmasına engel olmuş oluruz. UML daha çok nesneye
dayalı programlama
dilleri için uygundur. Problemlerimizi parçalara ayırabiliyorsak, ve
parçalar
arasında belirli ilişkiler sağlayabiliyorsak UML bizim için biçilmiş
kaftan
gibidir. Mesela bir ATM siteminde müşteriyi, banka memurunu ve ATM
makinasını
ayrı parçalar halinde düşünebiliriz. 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. Bu
diyagramlar hakkında geniş ve detaylı bilgiyi daha sonraki
yazılarımızda ele
alacağız.
Bu
kısa girişten sonra UML 'in tarihine bakalım.UML 'in doğuşu son
yıllarda yazılım
endüstrisindeki en büyük gelişmelerden biri olarak kabul edilebilir.
UML 1997
yılında yazılımın, diyagram şeklinde ifade edilmesi için bir
standartlar komitesi
tarafından oluşturuldu. Daha önce hemen hemen her daldaki
mühendislerin standart
bir diyagram çizme aracı vardı. Ve şimdi de programcıların UML 'si
var.
UML ile hazırlanmış bir yazılım hem daha az maliyetli hem daha etkili
ve
daha uzun ömürlü olur. UML ile dokümantasyonu yapılmış bir programın
sonradan
düzenlenmesi daha kolay olur. Bütün bunlar UML kullanmamız için
yeterli sebeplerdir
diye düşünüyorum.Kısaca ,UML 'nin faydalarını maddeler halinde
sıralarsak;
1-) Öncelikle
programımız kodlanmaya başlamadan önce geniş bir analizi ve tasarımı
yapılmış
olacğından kodlama işlemi daha kolay olur. Çünkü programdan ne
beklediğimizi
ve programlama ile neler yapacağımızı profesyonel bir şekilde
belirleriz UML
ile.
2-) Programımızda beklenmedik bir takım
mantıksal hataları (bug) minimuma indirgemiş oluruz.
3-) Tasarım aşaması düzgün yapıldıysa
tekrar kullanılabilen kodların sayısı artacaktır. Buda program
geliştirme maliyetini
büyük ölçüde düşürecektir.
4-) UML diagramları programımızın tamamını
kapsayacağı için bellek kullanımını daha etkili hale getirebiliriz.
5-) Programımızın kararlılığı artacaktır.
UML ile dokümanlandırılmış kodları düzenlemek daha az zaman alacaktır.
6-) Ortak çalışılan projelerde programcıların
iletişimi daha kolay hale gelir.Çünkü UML ile programımızı parçalara
ayırdık
ve parçalar arasında bir ilişki kurduk.
Bir sistemin geliştirilmesi kabaca aşağıdaki aşamalardan geçmektedir.
İlk iki
aşamada UML büyük ölçüde rol oynar.
Unutmayın: UML bir programlama dili değildir. Bir diyagram
çizme ve ilişkisel
modelleme dilidir. Bu makalemizde UML 'de kullanılan başlıca
UML diagramlarını
ve kısa tanımlarını işleyeceğiz. Diyagram şekilleri ve kod oluşturma
işlemlerini
bundan sonraki makalelerimizde bulabilirsiniz.
Şimdi kısa ve öz bir şekilde UML komponentlerinden(diagramlar)
bahsedelim: Nesneler
arasında ilişki kurmak için UML bir takım grafiksel elemanlara
sahiptir.Bu elemanları
kullanarak diyagramlar oluşturacağız. Bu makalede sadece bu
diagramların ne işe
yaradığını göreceğiz. UML temel olarak 9 diyagram türünden oluşur.
CLASS DIAGRAM
Gerçek dünyada eşyaları nasıl araba, masa, bilgisayar
şeklinde sınıflandırıyorsak yazılımda da birtakım benzer özelliklere
ve fiillere sahip gruplar oluştururuz.
Bunlara "Class"(sınıf) denir. Geliştirici açısından önemli olan "Class
Diagramları" hakkında daha sonra detaylı bir makalemiz olacak.
OBJECT DIAGRAM
Bir nesne(object) sınıfın (class) bir örneğidir. Bu tür diyagramlarda
sınıfın
yerine gerçek nesneler kullanılır.
STATE DIAGRAM
Gerçek nesnelerin herhangi bir zaman içindeki durumunu gösteren
diyagramlardır.Mesela,
Ali nesnesi insan sınıfının gerçek bir örneği olsun. Ali 'nin doğması,
büyümesi,
gençliği ve ölmesi State Diagram 'larıyla gösterilir.
SEQUENCE DIAGRAM
Class
ve Object diyagramları statik bilgiyi modeller.Halbuki gerçek zamanlı
sistemlerde
zaman içinde değişen interaktiviteler bu diyagramlarla gösterilemez.
Bu tür zamanla
değişen durumları belirtmek için sequence diyagramları kullanılır.
ACTIVITY DIAGRAM
Bir
nesnesinin durumu zamanla kullanıcı tarafından ya da nesnenin kendi
içsel
işlevleri tarafından değişebilir.Bu değişim sırasını activity
diyagramlarıyla
gösteririz.
USE
CASE DIAGRAM
Programımızın davranışının bir kullanıcı gözüyle incelenmesi Use Case
diyagramlarıyla
yapılır. Gerçek dünyada insanların kullanacağı bir sistemde bu
diyagramlar büyük
önem taşırlar.
COLLABORATION
DIAGRAM
Bir sistemin
amacının yerine gelmesi için sistemin bütün parçaları işlerini yerine
getirmesi
gerekir. Bu işler genellikle birkaç parçanın beraber çalışmasıyla
mümkün olabilir. Bu
tür ilişkileri göstermek için Collaboration Diyagramları gösterilir.
COMPONENT
DIAGRAM
Özellikle birden
çok geliştiricinin yürüttüğü projelerde sistemi component dediğimiz
parçalara ayırmak,
geliştirmeyi kolaylaştırır.Sistemi öyle modellememiz gerekir ki her
geliştirici
ötekinden bağımsız olarak çalışabilsin.Bu tür modellemeler Component
Diyagramlarıyla
yapılır.
DEPLOYMENT
DIAGRAM
Bu
tür diyagramlarla sistemin fiziksel incelenmesi yapılır. Mesela
bilgisayarlar
arasındaki baglantılar, programın kurulacağı makinalar ve
sistemimizdeki bütün
aletler Deployment Diyagramında gösterilir.
Evet,UML ile ilgili geniş bir giriş
bilgisine sahip olduk sanırım. Bundan sonraki makalelerimizde,
yukarıdaki
Diyagramları detayları ile açıklayacağım.