Model, gerçeğin basitleştirilmiş halidir. Yani, karmaşık bir sistemi modelleyerek onu basit bir şekilde ifade edebiliriz; böylece geliştirmekte olduğumuz sistemi daha iyi anlayabilir ve olası hatalarımızı uygulamaya başlamadan görebiliriz. Aynı gerçekler yazılım için de geçerlidir, özellikle büyük ve karmaşık yazılımlar için modelleme, büyük bir bina için mimari planın gerekliliği kadar vazgeçilmez bir olgudur.
UML (Unified Modelling Language)
Türkçe olarak "Birleşik Modelleme Dili" şeklinde adlandırılabilir. UML bir dil olmaktan ziyade iş sistemlerinin nasıl modellenebileceğini belirleyen ve açıklayan yöntemlerin bir araya toplanmış halidir. Daha çok yazılım geliştiriciler tarafından kullanılıyor olsa da UML ile yapılan modellemeler sadece yazılım projelerinde kullanılmak zorunda değildir. Resmi UML dokumantasyonlarında UML 'in yazılımın yanısıra "İş Sistemleri Modellenmesi" nde de kullanılabilir.
UML ve Diyagramlar

UML 2.0
UML, yapısal diyagramlar, davranışsal diyagramlar ve etkileşim diyagramları olmak üzere üç ana bölüme ayırabiliriz. Yapısal diyagramlar modellenen sistemde nelerin var olması gerektiğini, davranış diyagramları modellenen sistemde nelerin meydana gelmesi gerektiğini, etkileşim diyagramları ise modellenen sistemdeki elemanlar arasındaki veri ve komut akışını gösterir.
Yapısal Diyagramlar
- Sınıf (Class) diyagramı, Sistemde var olan sınıfları, sınıfların özelliklerini ve sınıflar arası ilişkileri kullanır.
- Nesne (Object) diyagramı, modellenen sistemin yapısının belirli bir andaki bütün ya da kısmi görünüşünü tarif eder.
- Bileşen (Component) diyagramı, bir yazılım sisteminin hangi tür bileşenlere ayrıldığını ve bu bileşenlerin nasıl birbiriyle ilişkili olduğunu gösterir.
- Paket (Package) diyagramı, bir sistemin hangi mantıksal gruplara bölündüğünü ve bu gruplar arasındaki bağımlılıkları betimler.
- Dağılım (Deployment) diyagramı, sistemde kullanılan donanımları, bu donanımların içinde yer alan bileşenleri ve bu bileşenlerin arasındaki bağlantıları gösterir.
- Birleşik Yapı (Composite Structure) diyagramı, bir sınıfın iç yapısını ve bu yapının mümkün kıldığı iletişimleri tarif eder.

Sınıf Diyagramı
Davranış Diyagramları
- Kullanım Senaryosu (Use-Case) diyagramı, modellenen sistemin ne yaptığını ve sistemi kimin kullandığını gösterir.
- Durum (Statechart) diyagramı, bilgisayar programlarından iş süreçlerine kadar birçok sistemi tarif eden standartlaşmış bir gösterimdir. Durumlar, geçişler, olaylar ve faaliyetler gösterilir.
- Faaliyet (Activity) diyagramı, modellenen sistemdeki sınıfların, kullanım senaryoların ve fonksiyonların davranışını gösterir.
Etkileşim Diyagramları
- Sıralama (Sequence) diyagramı, nesnelerin birbiriyle zaman içerisinde nasıl iletişim kurduklarını gösterir.
- İletişim (Communication) diyagramı, nesneler ve parçalar arasındaki etkileşimi sıralı iletiler olarak gösterir.
- Etkileşime Bakış (Interaction Overview) diyagramı, farklı etkileşim diyagramları kullanarak, bunlar arasındaki komut akışını gösterir.
- Zaman Akış (Timing) diyagramı, odağın zaman kısıtlamarı olduğu etkileşim diyagramıdır.
UML Kullanmanın Faydaları
- Kodlamayı kolaylaştırır, UML ile uygulamanızın tasarımı analiz aşamasında yapıldığı için, modellemeniz bittikten hemen sonra kod yazmaya başlayabilirsiniz.
- UML iç ve dış paydaşlar için resmi dil sağlayarak iletişimi geliştirir.
- Hataları en aza indirir, UML ile bütün sistem tasarlandığı için sistemde hata çıkma olasılığı azdır. Çıkan hataları düzeltmek ise çok daha kolaydır.
- Program kararlılığı artar, UML ile ayrıntılı gereksinim analizleri yapıldıktan sonra senaryolar belirlenir. Senaryoların baştan belirli olması programınızı daha kararlı hale getirmenizde size yardımcı olur.
- Sistem tasarımı ön planda olduğundan, UML kolayca tespit ve yüksek verimliliği ile kodlanmış olmasından dolayı yazılım geliştirme maliyetlerini azaltarak tekrar kullanılabilir kod sağlar.
Doğru iş için doğru modelleme aracı
IBM Rational Rhapsody Developer, gerçek zamanlı ve gömülü sistemler için UML/SysML tabanlı, modele dayalı geliştirme ortamıdır.
IBM Rational Rhapsody Developer ortamı, gereksinimlere uygun ürünler sağlanmasına yardımcı olmak amacıyla yaşam çevriminin erken aşamasında gereksinimleri, mimariyi, tasarımı ve davranışları doğrulamak için hızlı prototip oluşturma ve model yürütme olanaklarından yararlanır. Tüm bunların yanında;
- Benzetim, tasarım seviyesinde hata ayıklama ve erken aşamada doğrulama için şemaları canlandırır;
- Gerçek zamanlı işletim sistemlerine ve MISRA-C ve Raven gibi kodlama standartlarına yönelik olarak C, C++, Java ve Ada için tam davranış kodu oluşturur;
- Sektör standardı tabanlı UML ve SysML modelleme ortamı, farklı görünümler arasında tutarlılığı korurken aynı zamanda ekip iletişimini iyileştirir;
- Etki alanına özgü diller oluşturun veya kendi etki alanınızdaki terimleri kullanarak geliştirmek için UPDM, DoDAF, MODAF, AUTOSAR ve MARTE dillerini kullanmanıza olanak sağlar;
- Gerçek zamanlı çerçeve, kaynakları kısıtlı 8, 16 ve 32 bitlik uygulamalar söz konusu olduğunda bile, donanım kullanılabilir durumda değilken geliştirmeyi başlatmak için sürücü platformu bağımsız modellemesine yardımcı olur;
- Bütünleştirilmiş ortamda tasarım, kodlama ve test için gereksinim izlenebilirliği sağlar;
- Gerçek zamanlı ekip işbirliği için, Jazz tabanlı IBM Rational Team Concert ile bütünleştirme de dahil olmak üzere model tabanlı ayrıştırma ve birleştirme ile ekip işbirliği sağlar;
- Rational Rhapsody Developer 7.5, değişikliklere daha iyi yanıt vermek amacıyla çevik iş akışını desteklemek üzere yeni kod mühendisliği iş akışı eşitleme kodu ve model geliştirmesi ekler;
- XMI and IBM® Rational® Rose® import eski sistemleri kullanmak için uygundur;
- Windows ve Linux gibi bilinen işletim sistemleri tarafından desteklenir.
Sonuç
Yazılım modellenmesi sayesinde sistem gereksinimlerini ve sistem davranışlarını daha iyi anlarız ve hata riskimiz azalır. Yazılım yaşam döngüsü içinde hatalar ne kadar erken saptanırsa düzeltme maliyeti de o kadar az olur. Çok karmaşık sistemler için bitmiş bir kodda bir satırlık bir değişiklik yapmanın maliyeti zaman ve risk açısından çok yüksektir. Bu sebeple sistemi doğru anladığımızdan emin olmamız gerekir, bunu da ancak modelleme sayesinde yapabiliriz.