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)
dili model konseptlerini (C++ gibi) doğrudan desteklediği durumlardaki kadar tatmin edici
değildir, fakat yine de bu şekilde kullanılabilir.
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...