UML ile Gerçek Zamanı Sistem Tasarımı

Transkript

UML ile Gerçek Zamanı Sistem Tasarımı
UML ile Gerçek Zamanı Sistem Tasarımı
Yazar kbedir
Cuma, 29 Ekim 2010 02:00
Birleşik Modelleme Dili (Unified Modeling Language)’nin kısaltması olan UML, 3. Jenerasyon
nesne tabanlı (object oriented-OO) model dilidir. Nesne Modelleme Tekniği (Object Modeling
Technique-OMT)’ni andırır, şöyle ki dikdörtgenler
nesneleri,
çizgiler ilişkileri, eşkenar dörtgenler
kümelemeyi işaret ederler. Fakat burada görsel aspect ve notasyonlar pek önemli değildirler.
UML konusunda metamodele temel teşkil edecek nesne ve sınıfların anlamlarını tespit etmek
için Grady Booch, Jim Rumbaugh ve Ivar Jacobson, David Harel’in liderliğinde bir ekip
statechart’lar üzerinde çalıştılar. Fakat UML düzinelerce metedolojistin efor sarfettiği bir
kooperatiftir ve sadece 3 veya 4 kişinin koalisyonu olduğu düşünülmemeli. Son 10 yılda yapılan
başarılı deneyimler sonucu UML, en iyi ve kullanışlı nesne anlamlarını sunar.
UML dili komplex sistemleri tarif etmek içindir tasarlamıştır. Fakat bir development sürecini
kapsamaz. Süreçler UML’in farklı özelliklerini nasıl kullandığınızla ve sistem geliştirme akışı
boyunca onunla nasıl ve ne zaman bağlantı kurduğunuzla ilgilenir.
UML, aslında Object Management Group’un (OMG) nesne modelleme dilinin (object modeling
language) standartlaştırılması talebine cevap vermek için geliştirilmiştir. Burada farklı aktörler de
vardır fakat UML’in sağlamlığı ve kesinliği dikkate alındığında ve geniş endüstri desteği göz
önüne alındığında diğer alternatifler pek öne çıkamıyorlar. UML’in hedeflerini aşağıdaki gibi
sıralayabiliriz;
· Nesne model semantiğini yakalamak için genel ve etkileyici bir görsel model dili (visual
modeling language)sağlamak
· Kullanıcılar tarafından gereksiz formaliteler gerektirmeyen formal ve sıkı semantik kaynaklı bir
model sağlamak
· Kullanıcılarca uyarlanmış ve genişletilmiş metamodel sağlamak
1/9
UML ile Gerçek Zamanı Sistem Tasarımı
Yazar kbedir
Cuma, 29 Ekim 2010 02:00
· Herhangi bir programlama dili ve development sürecinden bağımsız olmak
· Object oriented araçların gelişmesini ve olgunlaşmasını desteklemek
· Birlikte çalışılabilirlik, tasarım kalıpları, büyük ölçekli sistem developmentları ve
componentlerini içeren son tasarım metodolojik developmentlar için destek sağlamak
· Son 10 yıl içindeki aktif OO development ve araştırmaları seçerek(ayırarak) en iyi
uygulamaları(yöntemleri) entegre etmek.
Sonuçta, nasıl ki yapısal(structural) metodlar büyük sistemleri daha az zamanda daha az defect
ile geliştirme imkanına sahip olduklarından 70’lerin metodoloji savaşını kazandılar, bunun gibi
OO ile yapısal metotlar arasındaki savaş ta sona erdi. Bu galibiyet object metotları sayesinde ve
neredeyse tereyağından kıl çekercesine oldu. Yazılım gün geçtikçe genişliyor ve
kompleksleşiyor. Gün geçtikçe doğruluğu zaruri olan güvenlik altyapılı kritik uygulamalar için
kullanılıyor. Nesneler çok net olarak denilebilir ki kompleks sistemleri çözümlemek için üstün bir
metottur. Bu demek değildir ki yapısal metotlar kötü tercih iken OO metotlar daha iyidir. İkisi de
daha iyi soyutlamayı (abstraction) ve enkapsulasyon kabiliyetini sağlar, tekrar kullanılabilme
kolaylıkları vardır, reaktif davranışları ve görevleri içeren davranışsal semantikleri daha iyi ifade
ederler, sistem gereksinimlerini elde edebilmekiçin ve yazılımı fiziksel mimariye map etmek için
iyi araçlardır.
Better Correct than Fast
2/9
UML ile Gerçek Zamanı Sistem Tasarımı
Yazar kbedir
Cuma, 29 Ekim 2010 02:00
Yazılım endüstrisi bu argümanı, 70’lerde high-level yazılım dilleri ve assembly dilini kullanan
programcılar arasında kullanmıştır. Bahsettiğim nedenlerden dolayı yapısal dil kullananlar
açıkça ve kesin olarak kazanmıştır. Bu demek değildir ki assembly hiç kullanılmamalı ya da bazı
küçük uygulamalar tamamıyla assembly ile yazıldığından dolayı avantaj sağlamamışlardır fakat
büyük çoğunluğu için assembly kodu yazarak harcanan zaman yanlış soyutlama dizisiyle
çalışıldığı anlamına gelir. Bununla birlikte gerçek zamanlı sistemlerde performans ve size
önemli konulardır. Gerçek zamanlı sistemlerde zamanlama(dakiklik) doğruluğun göstergesidir.
Bir sistem tanımlanan deadline’a uymuyorsa, bu sistem yanlıştır. Fakat diğer tüm etmenler
aynıysa, inanıyorum ki deneyimli yazılımcıların yapısal metotlar yerine OO metotlarını
kullanarak daha az zamanda daha az hatayla daha büyük sistemler kodlamaları mümkündür.
Nesneler herhangi bir dille implemente edilebilirler
Nesne yönelimi aslında sistemleri modellemek demektir. Nesne modelleri assembly dahil
herhangi bir dilde implemente edilebilirler. Hatta yapısal olarak tümüyle nesne yönelimli
assembly ile implemente edilmiş 8 bitlik işlemci temelli(processor-based) bir sistemin
tasarlandığını ve implemente edildiğini biliyorum. Bu tür çözümler her zaman implementasyon
dili model konseptlerini (C++ gibi) doğrudan desteklediği durumlardaki kadar tatmin edici
değildir, fakat yine de bu şekilde kullanılabilir.
UML’e Kısa Bir Bakış
UML’in bütün özelliklerini derinlemesine incelememiz için yeterli yer ve zaman yok fakat belli
başlı noktalara kısa bir bakış atabiliriz. UML’in temel özellikleri şunları içerir:
· Usecase’ler ve senaryolar
· Nesne ve sınıf modelleri
· Durum diyagramları (statechart)
3/9
UML ile Gerçek Zamanı Sistem Tasarımı
Yazar kbedir
Cuma, 29 Ekim 2010 02:00
· Büyük ölçekli yapılanma(structuring)
· Model tasarımları (design patterns)
· Esnek mekanizmalar
Usecase ve Senaryolar
Usecase bir sistemin fonksiyonalitesinin geniş bölgesidir. Usecase aktör denilen harici
nesnelerin etkileşimde olduğu bir kullanım türüdür. Usecase analizinde sistem kara kutu gibi
işlem görür, bu sebeple tüm usecase’ler görünür olmalı. Bir usecase’in, usecase’e katılımcı olan
aktörler için belirli bir amacı vardır. Her bir usecase sistemin amacına nasıl ulaştığının jenerik
tanımıdır. Çoğu gerçek sistemde usecase’lerin küçük bir seti vardır. Örneğin bir ECG monitörü
şu usecase’leri içerir:
· Hastanın kalp fonksiyonlarını monitörize etmek.
· Monitörü konfigüre etmek
· Monitörün yazılımını güncellemek
· Monitörize edilmiş veriyi hastanenin dahili network’üne yüklemek.
· Hastane dahili network’ünden laboratuar sonucu ve hasta demografisini indirmek.
4/9
UML ile Gerçek Zamanı Sistem Tasarımı
Yazar kbedir
Cuma, 29 Ekim 2010 02:00
Usecase’ler harici aktörlerle birlikte sistemin haberleşmesini görüntüler. Usecase’ler harici
aktörlerle ilişkilendirilebilir ve diğer usecase’leri kullanabilir ya da farklı usecase’lerle
genişletilebilirler. Aktörlerin bir usecase’le haberleşmesi, aktörün sisteme mesaj alıp/vermesi
anlamına gelir. Bir usecase’in diğerini kullanması, birincisinin, ikincinin belirtilmiş özelliklerine
ihtiyaç duyması anlamına gelir. Bir usecase’in diğerini extend etmesi spesifik birkaç yolla yapılır.
Aşağıdaki resim tipik bir usecase’in nasıl olduğunu gösterir.
Senaryolar usecase’lerin aşamasıdır(instance). Bir senaryo aktörlerle sistem arasındaki
mesajlaşmanın
spesifik, adım adım
dizilişidir. Çoğunlukla tek bir usecase’in yerini tutan sonsuz sayıda senaryo vardır. Usecase’deki
farklı mesajların alınıp verildiği her bir adım farklı bir senaryoyu oluşturur. Usecase’in etki alanını
ölçen bir senaryo setini modellemek önemlidir. Genellikle her usecase için birkaç düzine ana
senaryo modellenir ki bunların çoğu da kuraldışı durum işleme(exception handling) ve hatadan
kurtulma(error recovery) gibi atipik, değişik case’lerdir.
UML, senaryoları göstermek için 2 notasyon sağlar; sekans diyagramı ve işbirlik(collaboration)
diyagramı. Sekans diyagramı nesneleri tasvir eder(işaretlenmiş dikey çizgilerle gösterilir) ve
mesaj gönderir(yatay veya çapraz oklarla gösterilir). Uml notasyon kılavuzu belirtir ki çizgiler ve
lineer zaman istendiğinde eklenebilsin. Aşağıdaki resim bir asansörn kullanımını içeren ufak bir
5/9
UML ile Gerçek Zamanı Sistem Tasarımı
Yazar kbedir
Cuma, 29 Ekim 2010 02:00
senaryo gösterir
İşbirliği diyagramları nesneleri, ilişkileri ve mesajları gösterir. İşbirliği diyagramları senaryoların
daha yapısal görünümleridir fakat aslında aynı bilgiyi sağlar. Aşağıdaki resimde bir önceki
resimde gösterilen diyagram işbirliği diyagramı kullanılarak gösterilmiştir.
Nesne Modelleri
Nesne modeli bir Nesne Yönelimli sistemin anahtarıdır diyebiliriz. Bunlar sistemin yapısını
nesneleri ve sınıflarını ve sınıflar arasındaki ilişkileri tanımlayarak tanımlarlar. Nesne id’si olan
ve unique olan bir varlıktır. Bir sınıf kabaca deyişle, bir nesnenin çeşididir ve nesnenin
özelliklerini tanımlar. Örneğin sensör1 ve sensör2 eş aletler olsun. Bunlar aslında farklı
nesnelerdir ama aynı sınıftandırlar ve aynı özelliklere sahiptirler. Örneğin sensör sınıfı
CalibrationConstant ve CurrentValue gibi nitelikleri ve Calibrate() ve getValue() gibi hareketleri
6/9
UML ile Gerçek Zamanı Sistem Tasarımı
Yazar kbedir
Cuma, 29 Ekim 2010 02:00
tanımlar. Her ne kadar farklı nesneler kendi niteliklerinde farklı özellikler içerseler de Sensör
sınıfının bütün nesneleri bu niteliklere ve hareketlere sahip olacaktır.
Sınıf diyagramları esas olarak sınıfları, nesneleri ve bunlar arasındaki ilişkileri içerir. Nesneler
bu diyagramlarda içinde sınıfının ismi yazılan bir dikdörtgen şeklinde tarif edilmiştir. Bu
dikdörtgen ilk bölümde sınıf isimleri, ikinci bölümde nitelikler, üçüncüde operasyonlar,
dördüncüde kural dışılar (exceptions) gibi devam eden bölümlere ayrılmış olabilir. Nesne isimleri
altı çizili haldedir ve sonrasında iki nokta üst üste gelir.
UML aşağıda gösterildiği gibi farklı ilişkiler tarif etmiştir;
İlişkilerin (kümeleme ve kompozisyonla birlikte) etiket, rol ismi ve rol çeşitliliği gibi ilave
anotasyonları(dipnot) olabilir. Rol isimlerinin ilişkinin sonundaki objenin ilişkiye nasıl katıldığını
tanımlaması(belirlemesi) gibi etiketler de ilişkinin amacını belirler. UML aşağıdaki notasyonları
kullanır;
· 1 Bir obje katılmalıdır
· 1,0 En fazla bir obje katılmalıdır
· x..y Çok sayıda nesne x’ten y’ye olan ilişkiye katılabilir
7/9
UML ile Gerçek Zamanı Sistem Tasarımı
Yazar kbedir
Cuma, 29 Ekim 2010 02:00
· x Tam olarak x sayıda nesne katılmalıdır
* Sıfır veya çok sayıca nesne katılabilir
Aşağıdaki resim sınıf diyagramlarının çoğu özelliklerini göstermektedir.
Büyük Ölçekli Yapılandırmalar
Booch’un da ifade ettiği gibi sınıflar gereklidir ama büyük sistemleri ayrıştırmak için yeterli
değildirler. Daha büyük sistemleri desteklemek için UML, 3 mekanizma sunmaktadır. Paketler,
8/9
UML ile Gerçek Zamanı Sistem Tasarımı
Yazar kbedir
Cuma, 29 Ekim 2010 02:00
modül diyagramları ve deployment diyagramları. Tab’lı folder’lar şeklinde gösterilen paketler
birbiriyle ilişkili sınıfları daha bir high-level yapıda gruplarlar. UML’in kendisi sınıfların aynı paket
içinde nasıl ilişkilendirilmesi gerektiğini anlatmaz ama sınıflama hiyerarşisinin tek pakette
akması gerektiğini belirtir. Ben paketleri domain’leri anlatması açısından çok faydalı buluyorum,
ki bir sistem device I/O, kullanıcı arayüzü, OS arayüzü, alarm, error handling gibi domainleri
içerebilir.
Modül diyagramları bir sistemin modül yapısını gösterir, böylece sınıfların ve nesnelerin
modüldeki (ya da dosyadaki) dağıtımı görünür.
Deployment diyagramları (Booch metodunda süreç diyagramı olarak ifade edilirdi) donanım
komponentlerinin yazılımla bağını ve bunlar arasındaki organizasyonel ilişkiyi gösterir. Yazılım
komponentleri deployment diyagramında düğümlere ayrılabilirler. Bu multi işlemcili gömülü
(embedded) sistemlerin fiziksel mimarisini gösterme açısından ziyadesiyle kullanışlıdır.
Aşağıdaki resim bir çoklu işlemcili sistemin deployment diyagramını göstermektedir
9/9

Benzer belgeler

UML (UNIFIED MODELING LANGUAGE)

UML (UNIFIED MODELING LANGUAGE) dili model konseptlerini (C++ gibi) doğrudan desteklediği durumlardaki kadar tatmin edici değildir, fakat yine de bu şekilde kullanılabilir.

Detaylı

Bir Örnek ile UML - İş Analizi Nedir

Bir Örnek ile UML - İş Analizi Nedir 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, ko...

Detaylı