Yazılım Mühendisliği

Sistem Modelleme

Dr. Öğr. Üyesi Oğuz Emre Kural

2026

Sistem Modellemeye Giriş

Model, seçilmiş bir görünümdür

Soyutlama ve temsil

Soyutlama

Önemli olanı seçer, gerisini bilerek dışarıda bırakır.

Bir maçın beş dakikalık özeti.

Temsil

Bilginin tamamını korur, yalnızca biçimi değiştirir.

Maçın baştan sona kaydı.

Sistem modeli bir soyutlamadır; sistemin eksiksiz bir kopyası değildir.

Modeller ne zaman kullanılır?

Dört bakış açısı

Dış bakış · Bağlam

Sistem hangi ortamda, hangi sistemlerle birlikte çalışıyor?

Etkileşim

Kullanıcılar, sistemler ve bileşenler birbiriyle nasıl haberleşiyor?

Yapı

Sistem nasıl örgütlenmiş, hangi verileri işliyor?

Davranış

Sistem çalışırken olaylara ve verilere nasıl tepki veriyor?

Model ne kadar kesin olmalı?

Tartışmayı odaklamak

Eksik olabilir; gösterim serbestçe kullanılabilir. Tartışmanın ana noktalarını kapsaması yeterli.

Belgelemek

Eksik olabilir; ama gösterdiği kısım doğru olmalı ve gösterim doğru kullanılmalı.

Kod üretmek

Hem eksiksiz hem doğru olmalı. Benzer iki sembolü karıştırmak bile sonucu değiştirir.

daha serbestdaha katı

UML nedir?

  • UML (Unified Modeling Language, Birleşik Modelleme Dili), yazılım sistemlerini görselleştirmek, belirtmek, oluşturmak ve belgelemek için kullanılan standart bir grafik modelleme dilidir.
  • Bir programlama dili ya da yöntem değildir; modellerin ortak gösterimidir. Hangi süreçte, hangi sırayla kullanılacağını söylemez.
  • Standardı, kâr amacı gütmeyen OMG (Object Management Group) yönetir; araçlar arasında model alışverişi bu sayede mümkündür.
  • Grafik modellerin yanında, sistemi matematiksel olarak tanımlayan biçimsel modeller de vardır; güvenilirliği kritik sistemlerin ayrıntılı belirtiminde kullanılır.

UML’in tarihçesi

UML diyagramlarının sınıflandırması

Bu bölümde kullanacağımız beş diyagram

  • Etkinlik diyagramları: bir süreçteki ya da veri işleme görevindeki etkinlikleri gösterir.
  • Kullanım durumu diyagramları: sistem ile çevresi arasındaki etkileşimi gösterir.
  • Sıra diyagramları: aktörler ile sistem ve sistem bileşenleri arasındaki etkileşimleri zaman sırasıyla gösterir.
  • Sınıf diyagramları: nesne sınıflarını ve aralarındaki ilişkileri gösterir.
  • Durum diyagramları: sistemin iç ve dış olaylara nasıl tepki verdiğini gösterir.

UML dışında da yaygın gösterimler var: bağlam ve mimari için C4, iş süreçleri için BPMN. Gösterim değişse de ilke aynı kalır.

Örnek sistemimiz: AS-HYS

Özet: Sistem Modellemeye Giriş

  • Model, sistemin seçilmiş bir görünümüdür: bir soyutlama.
  • Sisteme bağlam, etkileşim, yapı ve davranış açılarından bakarız.
  • Modelin kesinliği, onu ne için kullandığımıza bağlıdır.
  • UML’in on dört diyagram türünden beşi çoğu ihtiyaç için yeterlidir.

Bağlam Modelleri

Önce sınırı çizmek gerekir

Mevcut sistemlerle işlev çakışması

Sınır her zaman tartışmalı değildir

Eski bir sistemin yerine geçiliyorsa

Yeni sistemin çevresi çoğunlukla eskisinin çevresiyle aynıdır. Sınır büyük ölçüde hazırdır.

Yeni bir iş destekleniyorsa

Hangi işin yazılıma gireceği, gereksinim mühendisliği sırasında paydaşlarla tartışılarak belirlenir.

Bir sınır kararı: hasta bilgileri nerede?

Hasta kayıt sisteminden alınır

+ Aynı veri iki yerde tutulmaz.

- Her erişim o sisteme bağlıdır; yavaşlayabilir.

- O sistem çalışmazsa AS-HYS de iş göremez.

AS-HYS kendi kopyasını tutar

+ Dış sisteme bağımlılık azalır.

- İki kopyanın tutarlı kalması gerekir.

- Saklama ve bakım sorumluluğu projeye girer.

Tek bir doğru yok; önemli olan kararın bilinçli verilmesi ve kayda geçmesi.

Sınırı yalnızca teknik nedenler belirlemez

Maliyet ve iş bölümü

Sınırın yeri, işin hangi ekipte yürüyeceğini ve projenin bütçesini değiştirir.

Kurum içi ilişkiler

Sınır bazen analizin tek bir birimde bitebilmesi ya da belirli bir onay sürecine girilmemesi için kaydırılır.

Farklı kullanıcı grupları

Gruplar çok farklıysa sınır sabitlenmez; kurulumda ayarlanabilen, yapılandırılabilir bir sistem tasarlanır.

Bağlam diyagramı

Süreç perspektifi

  • Bağlam modelleri, ortamdaki diğer sistemleri gösterir; geliştirilen sistemin o ortamda nasıl kullanıldığını göstermez.
  • Süreç modelleri, sistemin daha geniş iş süreçlerinin içinde nasıl kullanıldığını ortaya çıkarır.
  • İş süreçlerini tanımlamak için UML etkinlik diyagramları kullanılır: etkinlikler, kararlar, eşzamanlı işler ve bunları destekleyen sistemler.

Süreç modeli: insanlar ve sistemler birlikte

Daha kapsamlı bir süreç: istemsiz gözaltı

Özet: Bağlam Modelleri

  • Bağlam modeli, sistemin sınırını ve çevresindeki diğer sistemleri gösterir.
  • Sınır kararı erken verilir; maliyeti, bağımlılıkları ve sorumlulukları belirler.
  • Teknik olmayan etkenler de sınırı etkiler; gerekirse sınır yapılandırılabilir bırakılır.
  • Bağlam diyagramının göstermediği iş akışını süreç modeli tamamlar.

Düşünün

Proje ilerledikçe kapsam durmadan genişliyor. İyi çizilmiş bir bağlam modeli bunu önlemeye nasıl yardım eder?

Alıştırma: Sınır ve maliyet

Sistem sınırının nasıl çizildiği ve bağlam modelinin nasıl kurulduğu, projenin karmaşıklığını ve maliyetini ciddi biçimde etkileyebilir. Bunun geçerli olduğu iki durum örneği verin.

Alıştırma: Etkinlik planlama süreci

Düğün, mezuniyet ve doğum günü gibi etkinliklerin planlanmasına yardım eden bir sistem geliştireceksiniz. Mekân ayırma, davetiye gönderme gibi etkinlikleri ve her aşamada kullanılabilecek sistem öğelerini gösteren bir etkinlik diyagramı çizin.

Etkileşim Modelleri

Etkileşimin üç düzeyi

Etkileşim modelleme yaklaşımları

Etkileşimi modellemenin birbiriyle ilişkili iki yaklaşımı var:

Kullanım durumu modelleme

Çoğunlukla sistem ile dış aktörler (insanlar ya da diğer sistemler) arasındaki etkileşimi modeller.

Sıra diyagramları

Çoğunlukla sistem bileşenleri arasındaki etkileşimi modeller; dış aktörler de diyagrama katılabilir.

İkisi etkileşimi farklı ayrıntı düzeylerinde gösterir; bu yüzden birlikte kullanılır: Üst düzey bir kullanım durumunun ayrıntısı bir sıra diyagramıyla belgelenebilir.

Kullanım durumu modelleme

  • Kullanım durumları, gereksinimlerin ortaya çıkarılmasını desteklemek için 1990’larda Ivar Jacobson tarafından geliştirildi; daha sonra UML’e dahil edildi.
  • Her kullanım durumu, sistemle dış etkileşim içeren ayrı bir görevi temsil eder.
  • Kullanım durumundaki aktörler insanlar ya da diğer sistemler olabilir.
  • Diyagram genel bir bakış verir; ayrıntı için metin açıklamasına temel oluşturur.

Kullanım durumu diyagramı

Örnek: Veri aktarımı kullanım durumu

Bileşik kullanım durumu diyagramları

Diyagram yetmez: metin açıklaması

Kullanım durumu Randevu ara
Aktörler Klinik görevlisi, Randevu sistemi
Açıklama Görevli, seçtiği klinik ve gün için randevuları listeler.
Veri Klinik, gün, görevlinin yetkili olduğu birimler, randevu kayıtları
Uyaran Görevli klinik ve günü seçip aramayı başlatır.
Tepki Eşleşen randevular saat sırasıyla listelenir.
Notlar Yetki yoksa liste açılmaz; eşleşme yoksa boş sonuç gösterilir.

Sıra diyagramları

  • Sıra diyagramları, bir sistemdeki aktörler ve nesneler arasındaki etkileşimleri modellemek için kullanılan UML diyagramlarıdır.
  • Belirli bir kullanım durumu sırasında gerçekleşen etkileşimlerin sırasını gösterir.
  • İlgili nesneler ve aktörler diyagramın üstünde listelenir; her birinden aşağı doğru kesikli bir yaşam çizgisi iner.
  • Nesneler arasındaki etkileşimler etiketli oklarla gösterilir; diyagram yukarıdan aşağıya okunur.

Sıra diyagramı

Sıra diyagramında ayrıntı

Aktörler arası iletişim ve nesne oluşturma

İletişim diyagramı: aynı etkileşim, başka gösterim

Ne kadar ayrıntı?

Gereksinim aşamasında

Her mesajı ve parametreyi çizmeyiz. Önemli etkileşimleri gösteririz.

Tasarım ilerledikçe

Mesajlar gerçek işlem adlarına ve parametrelere dönüşür; model koda yaklaşır.

Kullanım durumu hangi işin yapıldığını, sıra diyagramı bu işin adım adım nasıl yürüdüğünü anlatır.

Özet: Etkileşim Modelleri

  • Kullanım durumları, sistemle dış aktörler arasındaki etkileşimi gösterir.
  • Metin açıklaması, diyagramda görünmeyen kuralları ve istisnaları yakalar.
  • Sıra diyagramları, aynı etkileşimin zaman içindeki akışını gösterir.

Bir öğrencinin derse kaydı için sıra diyagramı çizin. Kontenjan dolu olabilir; kayıttan önce yer kontrolü yapılmalı.

Alıştırma: Hekimin kullanım durumları

AS-HYS’de hastaları muayene eden, ilaç ve tedavi öneren hekim ile sistem arasındaki etkileşimleri gösteren bir kullanım durumları kümesi önerin.

Yapısal Modeller

Statik ve dinamik yapı

Statik yapı

Tasarımın örgütlenmesi: sınıflar ve aralarındaki ilişkiler.

Bu bölümün konusu.

Dinamik yapı

Sistemin çalışırken nasıl örgütlendiği: süreçler, iş parçacıkları.

Mimari tasarımda ele alınır.

Sınıf diyagramları

  • Sınıf diyagramları, nesneye dayalı bir sistem modeli geliştirilirken sistemdeki sınıfları ve aralarındaki ilişkileri göstermek için kullanılır.
  • Bir nesne sınıfı, bir tür sistem nesnesinin genel tanımıdır.
  • Bir ilişki (association), iki sınıf arasında bir bağ olduğunu gösteren bağlantıdır.
  • Yazılım sürecinin ilk aşamalarında nesneler gerçek dünyadaki şeyleri temsil eder: hasta, reçete, hekim, randevu gibi.

En basit sınıf diyagramı

Çoka çok ilişki

AS-HYS’deki sınıflar ve bağlantıları

Özellikler ve işlemler

Özellik türleri ve parametreler

Sınıf diyagramı ve veri modeli

Genelleştirme nedir?

  • Genelleştirme, karmaşıklığı yönetmek için her gün kullandığımız bir tekniktir.
  • Her varlığın ayrıntılarını tek tek öğrenmek yerine onları genel sınıflara (hayvanlar, arabalar, evler) yerleştirir, bu sınıfların özelliklerini öğreniriz.
  • Böylece farklı üyelerin ortak özellikleri olduğu sonucuna varırız: Sincap ve sıçan birer kemirgendir; bütün kemirgenlerin kemirmeye uygun dişleri vardır.
  • Modellemede de sınıfları inceleyip genelleştirme fırsatı ararız: Ortak bilgi tek yerde tutulur, değişiklik en genel düzeyde yapılır.

Genelleştirme

Bir genelleştirme hiyerarşisi

Ek ayrıntı içeren bir genelleştirme hiyerarşisi

Bütünleme: parça ve bütün

Sınıf diyagramı neyi göstermez?

  • Zaman ve sıra: Hangi işlem önce çalışır?
  • Durum: Bu randevu şu an onaylı mı, iptal mi?
  • Bunlar için sıra diyagramlarına ve davranışsal modellere bakarız.

Özet: Yapısal Modeller

  • Sınıf diyagramları sınıfları, ilişkileri ve çoklukları gösterir.
  • Genelleştirme ortak bilgiyi üst sınıfta toplar.
  • Bütünleme parça–bütün ilişkisini gösterir.

Kullandığınız e-posta uygulamasında posta kutusu ve e-posta mesajını temsil edecek sınıfları modelleyin.

Davranışsal Modeller

İki tür uyaran

Veri

Yeni veri gelir ve işlenmesi gerekir; verinin gelmesi işlemi tetikler.

Ay sonunda reçete kayıtlarından maliyet raporu.

Olay

Bir olay olur ve sistem tepki verir. Olayla birlikte veri gelebilir de, gelmeyebilir de.

Hasta randevusunu iptal eder.

İş sistemlerinin çoğu veri güdümlüdür; gerçek zamanlı sistemler çoğunlukla olay güdümlüdür.

Veri güdümlü model: etkinlik diyagramı

Aynı işlem, sıra diyagramıyla

Olay güdümlü modelleme

  • Gerçek zamanlı sistemler çoğunlukla olay güdümlüdür ve az veri işler. Örneğin bir telefon santrali, “ahize kaldırıldı” olayına çevir sesi üreterek tepki verir.
  • Olay güdümlü modelleme, bir sistemin iç ve dış olaylara nasıl tepki verdiğini gösterir.
  • Sistemin sınırlı sayıda durumu olduğu ve olayların (uyaranların) bir durumdan diğerine geçişe yol açtığı varsayımına dayanır.
  • Durum makinesi modelleri, durumları düğümler, olayları da bu düğümler arasındaki oklar olarak gösterir.

Olay güdümlü model: durum diyagramı

Süper durum: ayrıntıyı içeri almak

Durum–olay tablosu

Mevcut durum Olay Sonraki durum
Talep Görevli onaylar Onaylı
Talep Görevli iptal eder İptal
Onaylı Görüşme biter Tamamlandı
Onaylı Hasta gelmez Gelinmedi
Onaylı Görevli iptal eder İptal

Eksik bir olay var: Hasta randevusunu başka bir güne almak isterse?

Durum diyagramları ve Statecharts

  • UML durum diyagramları, Harel’in Statecharts gösterimine (1987) dayanır.
  • Sistemin durumlarını ve geçişi tetikleyen olayları gösterir; sistem içindeki veri akışını göstermez, ama her durumda yapılan işi (do) belirtebilir.
  • Statecharts’ın getirdiği en önemli kolaylık süper durumlardır: Ayrıntı iç içe durumlara alınır, ana diyagram sade kalır.
  • Durum diyagramı genel bir bakış verir; ayrıntı için durumları ve uyaranları açıklayan tablolarla tamamlanır.

Kahve makinesinin çalışma sırası (varsayım)

  1. Kullanıcı bir içecek seçer.
  2. Ödemeyi yapar.
  3. Makine suyu ısıtır, kahveyi demler ve bardağa doldurur.
  4. Kullanıcı bardağı alır; makine yeniden bekler.

Hazırlık sürerken kapak açılırsa makine güvenlik için durur; kapak kapanınca beklemeye döner.

Gerçek zamanlı örnek: kahve makinesi

Kahve makinesi: durumlar

Durum Açıklama
Bekliyor Ekranda “İçecek seçin” yazar; ısıtıcı kapalıdır.
Seçim yapıldı Seçilen içecek ve fiyatı gösterilir; ödeme beklenir.
Hazırlanıyor Su ısıtılır, kahve demlenir, bardağa doldurulur; kapak kilitlidir.
Devre dışı Isıtıcı ve pompa durur; ekranda “Kapağı kapatın” yazar.
Hazır Ekranda “İçeceğiniz hazır” yazar; sesli uyarı verilir.

Kahve makinesi: uyaranlar

Uyaran Açıklama
İçecek seçildi Kullanıcı bir içecek düğmesine bastı.
Ödeme alındı Ödeme birimi tutarın alındığını bildirdi.
Sıcaklık hazır Sıcaklık algılayıcısı hedef değere ulaşıldığını bildirdi.
Süre doldu Demleme zamanlayıcısı sona erdi.
Kapak açıldı / kapandı Kapak anahtarı konum değiştirdi.
Bitti Doldurma tamamlandı.
Bardak alındı Bardak algılayıcısı bardağın alındığını bildirdi.

Özet: Davranışsal Modeller

  • Davranışsal modeller, sistemin çalışırken nasıl tepki verdiğini gösterir.
  • Veri güdümlü davranış: etkinlik (ya da sıra) diyagramı.
  • Olay güdümlü davranış: durum diyagramı; karmaşıklık için süper durumlar.

Farklı yıkama programları olan bir çamaşır makinesinin kontrol yazılımı için durum diyagramı çizin.

Alıştırma: ATM’den para çekme

Bir ATM’den para çekerken gerçekleşen veri işleme adımlarını gösteren bir etkinlik diyagramı, ardından aynı iş için bir sıra diyagramı çizin. Bir sistemin davranışını modellerken neden ikisine birden ihtiyaç duyabileceğinizi açıklayın.

Örnek çözüm: ATM etkinlik diyagramı

Örnek çözüm: ATM sıra diyagramı

Model Güdümlü Mühendislik

Modelin rolü değişir

MDA ve MDE

MDA · Model güdümlü mimari

OMG’nin önerdiği, UML tabanlı yaklaşım. Tasarım ve uygulamaya odaklanır. Model güdümlü mühendisliğin öncüsüdür.

MDE · Model güdümlü mühendislik

Daha geniş yaklaşım: Modeller tasarımın yanında doğrulama ve test gibi diğer süreç etkinliklerinde de merkezdedir.

MDA’nın üç model düzeyi

Bir PIM, iki platform

Neden ana akım olmadı?

1 · Yerel çeviriciler

Şirkete özgü kütüphaneler ve dış hizmetler için özel çeviriciler gerekir; geliştirmesi ve bakımı pahalıdır.

2 · Soyutlama uyumsuzluğu

Tartışmaya yarayan soyutlamalar, uygulama için her zaman doğru soyutlamalar değildir.

3 · Asıl zorluk başka yerde

Karmaşık sistemlerde asıl güçlük kod yazmak değil; gereksinimler, güvenlik, bütünleştirme ve testtir.

4 · Platform bağımsızlığının bedeli

Kazanç uzun ömürlü büyük sistemlerde görülür; standart platformlarda araç maliyeti kazancı aşabilir.

Nerede işe yaradı?

  • Donanım ve yazılımın birlikte geliştirildiği ürünler: otomotiv, hava trafik kontrolü.
  • Yazılımın ömrü uzun, alan iyi biliniyor; kavramsal model çıkarmak kolay.
  • Endüstride kullanıcıların çoğu verimlilik artışı ve bakım maliyetinde düşüş bildirdi; en büyük kazanç yeniden kullanımda görüldü (Hutchinson ve ark., 2012).

Çalıştırılabilir UML (xUML)

Çevik çalışmayla ilişkisi

Gerilim

Model güdümlü geliştirme baştan ayrıntılı ve dönüştürülebilir modeller ister; çevik yaklaşım fazla ön tasarımdan kaçınır.

Uzlaşma

Bazı çevik yazarlara göre MDA’nın bazı yönleri çevik süreçlerde kullanılabilir. Motorola, çevik geliştirmeyi otomatik kod üretimiyle birlikte kullandığını bildirdi.

Bugün aynı fikir nerede?

Güncel not · kitabın yayımından sonraki gelişmeler

Düşük kodlu platformlar

Formlar, iş akışları ve veri modelleri görsel olarak tanımlanır; uygulama bunlardan üretilir.

API tanımından kod

OpenAPI gibi sözleşmelerden istemci ve sunucu iskeleti otomatik üretilir.

Veri modelinden kod

Şema ve ORM araçları, veri modelinden tabloları ve erişim kodunu üretir.

Özet: Model Güdümlü Mühendislik

  • Model güdümlü mühendislikte model, programın kaynağıdır; kod araçlarla üretilir.
  • MDA üç düzey önerir: CIM, PIM ve PSM.
  • Tam otomatik dönüşüm yaygınlaşmadı; fikir bugün yeni araçlarda yaşıyor.

Yüksek düzeyli bir modelden, elle müdahale etmeden çalışan program üretmenin önündeki engeller nelerdir?

Bölüm Özeti

Hangi soru, hangi model?

Bakış açısı Cevapladığı soru Başlıca UML diyagramı
Bağlam Sistemin sınırı nerede, çevresinde hangi sistemler var? Bağlam diyagramı, etkinlik (süreç) diyagramı
Etkileşim Kim, kiminle, hangi sırayla konuşuyor? Kullanım durumu, sıra diyagramı
Yapısal Sistem hangi sınıflardan ve ilişkilerden oluşuyor? Sınıf diyagramı (genelleştirme, bütünleme)
Davranışsal Sistem verilere ve olaylara nasıl tepki veriyor? Etkinlik diyagramı, durum diyagramı
Model güdümlü Model, kodun kaynağı olabilir mi? Sınıf ve durum modelleri (xUML), CIM → PIM → PSM

Akılda kalacaklar

  • Model, sistemin bilinçli olarak sadeleştirilmiş bir görünümüdür; ne kadar kesin olacağı kullanım amacına bağlıdır.
  • Sınır kararı erken verilir ve maliyeti, bağımlılıkları, sorumlulukları belirler.
  • Diyagramlar tek başına yetmez: metin açıklamaları ve tablolar ayrıntıyı ve istisnaları yakalar.
  • Modeller birbirini tamamlar; bir modeldeki karar (ör. çokluk, durum geçişi) diğerlerine ve gereksinimlere yansır.
  • Model güdümlü mühendislik tam otomatik dönüşümde yaygınlaşmadı; ama modelden kod üretme fikri bugün yeni araçlarda yaşıyor.