Professional Documents
Culture Documents
Uml Ornek
Uml Ornek
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
UML’deki(Tümleşik Modelleme Dili) dil olarak kullanılan ‘L’, Merriam-Webster Dictionary’e göre
“iletişimin anlamı” manasına gelir. Uml gereksinimlerin, mimarinin, implemantasyonun,
deployment’ın ve sistemin tamamının birbirleriyle konuşabilmesi için kapsamlı notasyonlar içerir.
Uml bu adımları her şeyin nesnelerle ifade edildiği “Nesne Yönelimli” dünyanın perspektifinden
konuşturur. Bu dünya nesneler arasındaki ilişkileri, nesnelerin deployment’ını ve nesnelerdeki
değişimlerin etkileşim halinde oldukları diğer objeleri nasıl etkilediklerini kapsar.
İlk bölümde Nesne Yönelimli Analiz ve Tasarım’a genel bir bakış atacağız. Özellikle 3 ana
öğeye odaklanacağız-nesne, analiz ve tasarım-. Çünkü UML’i anlamak için öncelikle bu 3
önemli öğeyi anlamak gerekir.
İkinci olarak Nesne Yönelimli Analiz ve Tasarım sürecinin sonuçlarını ele alacağız. Modellerin
ne olduğunu, nasıl kullanacağımızı ve niçin önemli olduklarını tartışacağız.
Nesneler
Çoğu modern programlama dili, özellikle ve çoğunlukla nesne kavramlarına dayanır. C++, C#,
Java, .NET, Perl gibi nesne yönelimli dillerde yazılımcılar benzer nesnelerin davranışlarını ve
yapısını tanımladıkları sınıflar oluşturulur. Sonra bu sınıfların instance’ı olan nesneleri oluşturup
çalıştıran kodları yazarlar.
Nesnelerin güçlü bir programlama tekniği olmasının sebebi, programda kullanılan nesnelerin
gerçek hayattaki nesnelere karşılık gelmesidir. Farz edelim ki şirketiniz sipariş üzerinde dağıtım
yapıyor. Bu siparişlerin büyük ihtimalle bir ID’leri vardır ve ürünün üzerindeki bilgi içerirler. Bu
durumda gerçek hayattaki nesneye denk gelen ve ‘Id’ ve ‘Ürün’ Listesi bilgilerini içeren bir
‘Sipariş’ nesnesi oluşturursunuz. Büyük ihtimalle de sipariş sonucu bir ürün eklemek ve siparişi
1 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
Nesne ve sınıfların daha önemli bir faydası da iyi tasarlanmış kodun bazı klasik yönlerini
yapabilmek için güzel bir sözdizimsel (syntactic) mekanizma sağlar.
Zayıf Bağlılık (Loose Coupling). Bağlılık, sistemin bir parçasının, diğer bir parçasının detayına
nasıl dayanacağından bahseder. Sıkı bağlılıkta, sistemin bir parçasındaki değişiklikler sistem
üzerinden dalgalanır. Zayıf bağlılıkla altsistemler arasındaki interface’ler iyi tanımlanmış ve
sınırları bellidir. Nesne yönelimli programlama, sizin bir sınıfın
metotlarının nasıl uygulanacağını publish etmeden bu metotları tanımlamanıza ve
yayınlamanıza olanak vererek zayıf bağlılığı destekler.
Sınıflar: Sınıf, sisteminizdeki bir veya daha fazla nesnenin özelliklerinin tanımıdır.
Nitelik: Bir nesneyi tanımlayan durum ya da veridir. Öyle görünüyor ki her yeni nesne yönelimli
dili yazan kişi yazdığı dilin yeni terminolojilerle yaygınlaşarak fark edilmesi ihtiyacını hisseder.
Bazı nesne yönelimli dillerde bu veriler özelik (property) olarak tanımlanır fakat UML’de bunlara
nitelik (attribute) diyoruz.
2 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
Nesneler: Nesne, bir sınıfın spesifik bir örneği ya da aşamasıdır (instance). Köpek bir sınıf ise
gofret, karabaş bir nesnedir.
Kalıtım: Bu kavram şunu belirtir ki, bir sınıf (süper sınıf) bir veya daha fazla spesifik sınıfın (alt
sınıf) bazı genel özelliklerini taşır. Bu alt sınıf ta süper sınıf tarafından tanımlananların dışında
daha fazla veya farklı özellikler bulundurur.
Komponentler: Komponent, ilişkili sınıflar topluluğunun bir araya gelerek daha geniş bir servis
kümesi oluşturmasıdır. Sisteminizdeki komponentler uygulama, kütüphane, Java bean’leri ve
servisleri içerebilir.
Analiz
Yazılım geliştirme ortamında analiz, araştırmak ve problemi tespit ederek çözmek demektir. (Bu
demek değildir ki biz hep önce çözmek yerine problemlerin tümünü tespit etmeye çalışırız.)
3 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
Nesne Yönelimli Analiz, şu iki tür nesnelerin problemlerini tespit etme sürecidir: sistemin
etkileşmek zorunda olduğu gerçek nesneler ve çeşitli çözüm alternatiflerinin araştırılacağı
yazılım nesneleri. Burada yazılım nesneleri, gerçek nesnelere göre daha yeterlidir çünkü gerçek
nesneleri onların sınıfları, attribute’ları ve operasyonlarıyla rahatlıkla tanımlayabilirsiniz.
Tasarım
Analiz problemi tespit etmek demekse, tasarım da çözümleri tespit etmek demektir. Tasarım,
sistemin analiz boyunca tanımlanan her bir gereksinimi hangi yollarla karşılayacağını
tanımlamayı içerir.
Modeller
Nesne Yönelimli Analiz ve Tasarımda UML’in asıl kullanım amacı, sistemin modeli aracılığı ile
sistemi anlamanıza ve çalışmanıza olanak sağlamasıdır. Aoredinamik mühendisleri, yapı
mimarları ve diğerlerinde olduğu gibi, siz de sistemi inşa edene kadar sadece varolan sistemin
modellerini değil, tasarladığınız sistemin modellerini inşa edeceksiniz. Bu modeller size tasarım
alternatiflerini ve sistemi ne kadar anladığınızı test etmenizi anlamanızı sağlar.
Fakat burada bir nokta var; gerçek hayattaki bir nesnenin modeline baktığımızda o nesneye ait
net fikirler edinebilirken bir yazılım modeline, arayüzü olmadan bakamıyoruz. Yani yazılım
modeli kullanıcı arayüzüne mi benziyor? UI dediğimiz sadece bir prototip değil midir? Tam bu
4 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
Uml ile nesne yönelimli analiz ve tasarımda modeller öncelikle diyagramlardan meydana gelir.
Sistemin yapısını betimleyen statik diyagramlarla sistemin davranışını betimleyen dinamik
diyagramlar. Dinamik diyagramlarda sistemin davranışını izleyip çeşitli senaryoların nasıl
gerçekleştiği analiz edilebilir. Statik diyagramlarda her komponent ya da sınıfın interface’lere
ulaştığından ve yapmak zorunda olduğu şeyleri uygulamak için ihtiyaç duyduğu bilgiye sahip
olduğundan emin olursunuz. Bu modellerde değişiklik yapmak ta oldukça kolaydır. Bir çizgi
eklemek, silmek veya değiştirmek ya da diyagramdaki bir değişikliği incelemek bir dakikanızı
alır. Bunu, kodun oluşturulurken bir değişikliği implemente etmek için saatler harcandığını ve
bunu test etmek için de yine bir bu kadar daha zaman ayrıldığını düşünerek karşılaştırın lütfen.
Fakat şu Model Kuralını unutmayın: UML’i efektif kullanmak için göze hoş gelen resimler çizmek
yerine temel bir model hazırlamalı, sevimli resimleri arayüzünüz olarak kullanmalısınız.
Ana nesne yönelimli analiz ve tasarım süreci modeldir. Gerçekte kullanılan farklı farklı modeller
vardır:
· Mimari Model: Analiz modelinde tespit edilen gereksinimlere sunulan çözümü için
kullanılan modelin gelişmiş bir şeklidir.
· Komponent (Tasarım) Modeli: Mimari modelin parçalarının internal yapısını gösteren
modeller topluluğudur. Her component modeli kendi komponentinin sınıf yapısı üzerine
odaklanır ve tasarım ekibinin, sınıfların attribute’leri, operasyonları, bağımlılıkları ve
davranışlarını tam olarak belirtmesini sağlar.
5 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
Geliştirme sürecinize dayanarak, iş modeli, alan (domain) modeli gibi daha fazla model de
kullanabilirsiniz. Modelin asıl faydası, yazılım geliştirme döngüsünde kodda değişiklik yapmadan
çok önce modelde değişiklik yaparsınız ve bu çok daha kolay olur. Değişiklikleri önceden
yaptığınız için hataları da erkenden yaparsınız. Bu iyi bir şeydir çünkü erken tespit etme ve
düzeltmenin maliyeti düşüktür. Modelleme sayesinde yüksek maliyetli bug’larınızı önceden
yakalarsınız ve erken tespit ve düzeltme size maliyette ve bug fix zamanlamasında 50 ile 200
kat arasında tasarruf sağlar.
Modellemenin Outline Effect denilen farklı bir yararı da vardır. Dinleyerek, konuşarak, okuyarak
ve sonra modelden ne anladığınızı yorumlayarak modeli baştan aşağı anlayabilirsiniz. Hatta bu
şekilde bir davranış, sistem tasarımında bir text’ten çalışmaktan çok daha önemlidir. Text’lerden
çalışırken bir tutarsızlık gördüğünüzde bunun sizin bir noktayı yanlış anlamanızdan
kaynaklandığını düşünürsünüz fakat gereksinim toplamada tutarsızlık ve çelişkiler sürecin
kaçınılmaz parçalarıdır. Gereksinimleri modelleyerek –özellikle bir sistemin farklı birçok
parçasındaki detayları inceleyerek- tutarsızlıklara dikkati çekersiniz ve bunları aynı diyagramda
birleştirirsiniz.
Modellemenin bir faydası da iletişimdir. Modelleyerek iletişim sağlamak, bir kod parçası veya
textten çok daha kolaydır. Modelleme sayesinde diğer ifade şekillerine göre daha geniş kitleleri
birbirleriyle iletişime geçirebilirsiniz. Sizin kendi ifadelerinizle bir diyagram oluşturduğunuzda
nesneleri, diyagramınızla benim anladığım şeyi kıyaslayarak nasıl kavradığınızı, ben kolaylıkla
kavrayabilirim.
UML
UML-Tümleşik Modelleme Dili (Unified Modeling Language), bir OOAD sürecinin yapısını
6 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
Bu soruya cevap verebilmek için bir zaman makinesine binip 1995’lere gitmemiz gerekir. Bu
tarihte Nesne Yönelimli Programlama adını, uygulama ve sistem geliştirme yolu olarak
ispatlamıştı ve Nesne Yönelimli dünyada yeni popüler konular Nesne Yönelimli Analiz ve Nesne
Yönelimli Tasarım’dı. Bu konuların temel programlamaya göre daha geniş bir etki alanı
yaratmasından itibaren, uygulayıcılar basit bir grafik arayüzü ile daha geniş ve kompleks
kavramları görüntüleyebilme ihtiyacı hissettiler. Bunun neticesinde Grady Booch’un tasarladığı
Booch Notation ile James Rumbaugh ‘un tasarladığı Object Modeling Technique (OMT) ‘in
başını çektikleri Nesne Yönelim notasyonlarının savaşı başladı. Oluşan bu karmaşa sonrası
Booch ve Rumbaugh kendi notasyonları arasındaki farkların aslında minor olduğunu fark ettiler.
Daha da kötüsü bu karmaşa ortamı onları bakmaları gereken yeni odak noktasından
uzaklaştırdı: Nesne Yönelimli Analiz ve Tasarım’ın kendi süreci. Ivar Jacobson’un Sequence
diyagramları ile kendi Objectory metodolojisi herkesi etkilemiş durumdayken kimse süreçten
bahsetmiyordu. Sonrasında Booch, Rumbaugh ve Jacobson (üç amigo) köşelerine çekilip,
birbirlerinin notasyonları arasındaki farkları tartışarak çözüm bulma yoluna girdiler. Bu
çalışmaların sonucunda da Object Management Group’un standart bir nesne modelleme
notasyonu için çağrısına cevap olarak UML 0.8 ortaya çıkmış oldu. Rumbaugh ve Jacobson’un
da çalıştığı ve Booch’un sahibi olduğu Rational şirketi, UML’i kendi OOAD araçları olan Rational
Rose ürünüyle birleştirdiler. Sonrasında OO komitesi tarafından birkaç revizyon geçirerek UML
1.1 olarak 1997’de standartlaştırıldı. Zamanla gelişimler geçirerek te son olarak 2.0 standardı
olarak son haline geldi.
Süreç
7 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
modülleri ayrıştırma adımlarını içerirler. Tüm bunlar için tanımlı bir süreç olmadığında UML ile
çalışmak, bir rehber olmadan kavramlar denizine sürüklenmeye benzer.
Rational XDE
Çoğu UML kullanıcıları – özellikle UML aracı satan şirketler UML ile tool arasındaki çizgiyi
bulandırma eğilimindedirler. Ben şahsen Rational XDE ile tüm UML işlerimi yapıyor olduğumdan
beri ‘XDE ne yapabilir’ ile ‘UML ne yapabilir’i aynı kefeye koyuyorum. Herhangi bir tool’un -ki bu
UML’i bize veren ekip tarafından geliştirilen Pazar lideri UML tool’uysa- özelliklerinin ve
yeteneklerinin UML’in kendisinin özelliklerinden ve yeteneklerinden farklı olabileceğinin farkına
varmak önemlidir. UML bir dil ise bütün diller bu dilin aynı aksanını konuşur.
UML Diyagramları
UML, her biri sistemi analiz etmek ve tanımlamak için farklı yollara odaklanmış 9 farklı diyagram
tipinden meydana gelmiştir.
· İşbirliği Diyagramı nesneler arasındaki ilişkileri vurgulayarak nesne etkileşimlerini gösterir.
8 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
· Durum çizelgesi diyagramı olaylara verilen response’lar için durum değişikliklerini gösterir.
İyi bir UML diyagramı oluşturmak bazı yetenekler ve pratik gerektirir fakat iyi çizilmiş
diyagramları okuyabilmek çok farklı bir konudur. Eminim şimdiden UML diyagramının nasıl
okunduğunu biliyorsunuz ve siz bunun farkında değilsiniz.
Şimdi UML diyagramlarını bir örnekle irdelemeye çalışalım. Örnekte Kennel Yönetim Sistemini
kullanacağız.
· Rezervasyon ve kullanım süresi: otellerde olduğu gibi KYS’de de haycan sahipleriyer
rezerve edip hayvanlarını buraya getirirler ve çıkarırlar. Otellerden farklı olarak maliklerin önemli
kısmı kennelde tamamen ya da uzun süre kalırlar.
· Egzersiz ve tımar zamanlaması: terapi kliniklerinde olduğu gibi KYS her bir kennel
sakini için egzersiz ve tımar zamanlaması konusunda destek-bakım faaliyetlerini yerine
getirmeli. Kliniğin aksine bu zamanlar terapist yerine hayvan sahipleri tarafından belirlenir.
9 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
· Besleme ve diyet: Sağlık merkezlerinde olduğu gibi her bir kennel sakini için standart ve
kastimize edilmiş diyetler desteklenmeli. Farklı olarak bazı hayvanlar sadece canlı yiyecek
yiyebilir.
· Stok ve sipariş: Restoranlarda olduğu gibi, KYS farklı müşterin ihtiyaçlarını karşılamak
için yiyecek tutmalı. Farklı olarak bazı yiyecekler canlı depo edilmeli.
· Denetleme ve kayıt izleme: kreşlerde olduğu gibi KYS, kennel sakinlerinin güvende
olduğunu garanti etmeli ve hayvan sahiplerinin hayvanlarının web cam ile izleyebilmelerine
olanak tanımalı. Farklı olarak her hayvanda, sensörlerin her hayvanın durumunu ve yerini
göstermesine olanak sağlayacak bilgisayarlı tasmalar bulunmalı.
· Sağlık hizmetleri ve tedavi: Hastane yönetim sistemlerinde olduğu gibi KYS, düzenli ve
acil medikal ziyaretleri zamanlayabilmeli, medikal geçmişi desteklemeli ve ilaç dağıtımını
yönetebilmeli. Farklı olarak sakinler çok farklı cinslerden olabilir ve bu farklılık çeşitli ilaç ve
tedavi programlarını gerektirir.
· Müşteri ilişkileri: KYS sakinlerin geçmişi, bugünü ve olası geleceğine ait bilgileri
izleyebilmeli. Ayrıca hayvanın hem atasına hem de ileriki soyuna ait bilgileri izleyebilmeli.
Ek olarak KYS, temel insan kaynakları, hesap işlemleri ve admin fonksiyonlarını da içermeli.
10 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
· Bakıcının hangi aktiviteleri KMS’nin görev güncelleme işlemi yapmasına sebep olur?
11 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
Aktivite Diyagramı
Aktivite diyagramları bir fonksiyonel gereksinimin bir ana senaryo ve birkaç alternatif senaryoyu
içeren detaylı davranışını resmeder. Bu, verilen bir fonksiyonaliteyi tam anlamıyla anlamanıza
yardımcı olur. Aşağıda KYS’nin bir fonksiyonel gereksinimi için oluşturulmuş bir aktivite
diyagramı görüntülenmektedir.
· Sistemde kayıtlı bir köpeğe barınak bulmak için sistemin izleyeceği adımlar nelerdir?
o Köpeğin adını gir, uygun barınağı bul ve barınağı köpeğe assign et.
· Yeni bir köpek için sistemde ek olarak yapılması gerekenler nelerdir?
12 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
Komponent Diyagramı
· Hayvan bakım merkezi, bakıcının hayvanın bilgilerini girdiği bir web sayfasıdır. Peki
KMS’ye veri sağlamak için hangi arayüz kullanılır?
13 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
Sequence Diyagramları
Sequence diyagramları bir fonksiyonel gereksinimin bir senaryosu veya path’i boyunca, zaman
içerisinde gerçekleştirdiği detaylı davranışları gösterir.
14 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
· Kayıt sayfası yeni bir kayıt için hangi arayüzü kullanır?
o Telefonla
Sınıf Diyagramları
15 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
16 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
Statechart Diyagramları
Dahili veya harici olayların tepkisine göre sistemin durum değişikliğini gösteren diyagramlardır.
· Hangi durumdan gelen hangi işlemle bir barınak uygun hale gelir?
17 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
· Barınak uygun durumdayken ‘tasfiye edildi’ olayı gerçekleştiğinde hangi duruma geçilir?
o Çözümlendi
o Çıkış yapıldı olayı ve bunu takip eden ‘tasfiye edildi’ olayıyla.
Deployment Diyagramları
Sistemin deploy edilebilir parçalarının bağlandıkları düğümler ile bu düğümlerin birbirleri ve farklı
cihazlarla nasıl iletişimde bulunduklarını resmeder.
18 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
Paket Diyagramları
Paket diyagramları, tasarımınızdaki ilişkili elementlerin nasıl bir araya gelip gruplandığını ve bu
grupların birbirine nasıl depend ettiklerini gösterir. Kompleks tasarımları parçalara ayırarak,
yönetilebilir küçük parçalar haline getirilmesi açısından faydalıdır.
19 / 20
Bir Örnek ile UML
Yazar kbedir
Pazartesi, 29 Kasım 2010 20:55
·
o
Umarım
umarım
makaledeki
Başlangıçta
kapılar
öğrenmek,
mükemmel
sonucu
için
“kodla
mantığını
Bakıcı,
Kms
veKMS
Hangi
ve
sürecinizin
vardır,
yeterince
UML’in
ana
bu
çöz”
bırakıp
muhasebe,
uygulamak,
olmayabilir,
egzersiz,
arayüzleri
altı
mükemmel
sınıfları
paketler
sadece
mantığı
çizilen
nesnelerin
“tasarla
iyi
yönetimini
olacaktır.
ve
UML
KMS
sınıfı
hataların
rezervasyon
nokta
ile
uygularken
fakat
veritabanı
birçalışan
vekonusunda
iletişiminde
arayüzleri
tasarım
hangi
tahmin
çöz”
yapabilmek
ekibinizin
Sistemi
çalışmanızı
ekip
mantığında
sınıfların
sınıfları
de
beklemeyin
ve
ettiğiniz
sınıfının
inşa
kadar
sürecin
kms
kafanızdaki
nasıl
olarak
için
etmek
ana
verisini ‘UML
durdurmasına is
kullanılabileceğini
üzere:
yanlış
yeterince
devam
onu
verilerini
bir
kendinizden.
sınıfları
parçası
için,
incelemesi about
belirsizlikleri
kullanır?
düşüncededir.
etmeliyiz.
testlere
iyi
kullanır?
olarak
olacaktır.
izin
Daha
ve communication’
vermeyin.
örneklendirebilmiştir.
rehberlik
gidermiştir
uygulamaktır.
sizin
Unutmayın,
iyiye
Mükemmeli
deiçin,
ulaşmak
Anahtar
iyileştirmeleriniz
vedokümantasyon
daha
“kodla
Tasarımlarınız
bekleyen
için
nokta,
da
Bu
ve
her
önemlisi
çöz
UML’i
zaman
takım,
”
20 / 20