Mimari Tasarım
2026
Bu dersin sonunda:
İdeal olan
Gereksinim belirtimi hiçbir tasarım bilgisi içermez; önce ne, sonra nasıl konuşulur.
Gerçekte olan
Ana bileşenler gereksinim aşamasında belirlenir. İşlev grupları büyük bileşenlerle eşleştirilir ve paydaşlarla bu ayrıştırma üzerinden konuşulur.
Çok küçük sistemler dışında, mimariye gereksinimler tamamlanmadan başlanır.
Paydaş iletişimi
Mimari, sistemin üst düzey bir sunumudur; farklı paydaşlar arasındaki tartışmanın odağı olur.
Sistem analizi
Mimariyi erkenden açık hâle getirmek analiz gerektirir: Sistem performans, güvenilirlik, bakım kolaylığı gibi kritik gereksinimleri karşılayabilecek mi?
Büyük ölçekli yeniden kullanım
Benzer gereksinimli sistemlerin mimarisi çoğu zaman aynıdır. Ürün hattı mimarileri aynı mimariyi bir dizi ilişkili sistemde kullanır.
Bass, Clements ve Kazman (2012)
Tasarım üzerine tartışmak
Ayrıntıdan arınmış üst düzey bir görünüm. Paydaşlar sistemi bütün olarak tartışır; yöneticiler ana bileşenlere göre ekip ve plan kurar.
Tasarlanmış mimariyi belgelemek
Bileşenleri, arayüzlerini ve bağlantılarını gösteren eksiksiz bir model. Sistemi anlamayı ve evrimini kolaylaştırır.
Eleştiri
Gayriresmî blok diyagramlar ne bileşenler arasındaki ilişkinin türünü ne de bileşenlerin dışa açık özelliklerini gösterir (Bass ve ark.).
Pratik
Sezgiseldir; alan uzmanları ve mühendisler birlikte tartışabilir, yöneticiler planlamada kullanır. Birçok projede tek mimari belgedir.
Ayrıntılı belgeleme için mimari tanımlama dilleri geliştirildi. Daha az yanlış anlamaya yol açarlar, ama pahalıdırlar ve maliyetlerine değip değmeyeceği bilinemez; bu yüzden yaygın değildir.
Teknik olmayan bir yöneticiye, yeni proje için neden bir yazılım mimarına ihtiyaç olduğunu anlatan bir sunumun ana maddelerini yazın.
Bir adımlar listesi gibi düşünmek
Önce şunu yap, sonra şunu… Mimari tasarımda böyle sabit bir sıra yoktur.
Bir kararlar dizisi gibi düşünmek
Mimar, sistemi ve geliştirme sürecini derinden etkileyen yapısal kararlar verir.
Genel uygulama mimarisi
Aynı alandaki sistemler, alanın temel kavramlarını yansıtan benzer mimarilere sahiptir. Ürün hatları, bir çekirdek mimari etrafında müşteriye özel çeşitlerle kurulur.
Dağıtım
Gömülü sistemler ve kişisel uygulamalarda gerekmeyebilir. Büyük sistemlerin çoğu ise birçok bilgisayara dağılır; bu karar performansı ve güvenilirliği belirler.
Desen ya da stil
İkisi artık aynı anlamda kullanılır. Desen, farklı sistemlerde kullanılmış bir organizasyonun özüdür; mimar, ortak desenleri, nerede işe yaradıklarını, güçlü ve zayıf yanlarını bilmelidir.
Ne demek?
Sistemin, kullanıcı ya da veri miktarı arttığında performansını koruyarak büyüyebilmesi. Sommerville’in beş özelliğinin yanında bugün en sık anılan kalite özelliklerinden biridir.
Mimariye etkisi
Bileşenler kopyalanabilir olmalı: kullanıcı durumunu kendi içinde tutmayan (durumsuz) servisler kolayca çoğaltılır. Darboğaz olabilecek ortak kaynaklar (ör. tek veritabanı) erkenden belirlenmelidir.
AS-HYS’yi tek bir hastaneden bütün ildeki kliniklere açmak, bir ölçeklenebilirlik kararıdır.
| Gereksinim | AS-HYS’deki karşılığı | Mimari karar |
|---|---|---|
| Güvenlik | Hasta kayıtları gizlidir | Katmanlı yapı; hasta verisi en içte, her katmanda yetki denetimi |
| Erişilebilirlik | Klinik mesai boyunca randevu araması | Randevu servisinin yedekli kopyaları |
| Performans | Arama sonucu birkaç saniyede gelmeli | Arama ve önbellek aynı sunucuda |
| Bakım kolaylığı | Raporlama kuralları sık değişir | Rapor üreteci ayrı, küçük bir bileşen |
| Emniyet | Yanlış ilaç dozu uyarısı | Doz denetimi tek bir bileşende toplanır |
Asıl sınav kullanımda
Bir mimarinin gerçek testi, sistemin kullanıldığında işlevsel ve işlevsel olmayan gereksinimleri ne kadar karşıladığıdır.
Erken değerlendirme
Tasarım, referans mimarilerle ya da genel mimari desenlerle karşılaştırılabilir. Desenlerin işlevsel olmayan özelliklere etkisi bilinir (Bosch, 2000).
Performans ve güvenlik, bir sistemin mimarisinde birbiriyle çatışan gereksinimler olabilir. Bu iddiayı destekleyen bir gerekçe yazın.
Modüller
Sistem hangi modüllere ayrılıyor?
Çalışma zamanı
Süreçler çalışırken birbiriyle nasıl etkileşiyor?
Dağıtım
Bileşenler ağdaki makinelere nasıl yerleşiyor?
Hepsi farklı zamanlarda gereklidir; bu yüzden mimari çoğu zaman birden fazla görünümle anlatılır.
Hofmeister ve arkadaşları
Benzer görünümlere bir de kavramsal görünüm ekler: sistemin soyut bir görünümü. Üst düzey gereksinimleri ayrıntılı belirtimlere ayrıştırmanın temelidir; yeniden kullanılabilecek bileşenler hakkında karar vermeye yardım eder; tek bir sistem yerine bir ürün hattını temsil edebilir.
Pratikte
Kavramsal görünüm tasarım sırasında neredeyse her zaman çizilir. Bölümün başındaki paketleme robotu diyagramı bir kavramsal görünümdür. Diğer görünümler ilgili konu tartışılırken çizilir; hepsini eksiksiz çizmek nadiren gerekir.
UML yanlısı görüş
2006’da yapılan bir anket, mimaride UML’in çoğunlukla gayriresmî kullanıldığını gösterdi. Anketi yapanlara göre bu kötü bir şeydi: Gösterim kurallarına uyulmalıydı.
Sommerville’in görüşü
UML nesneye dayalı sistemler için tasarlandı; mimari aşamada daha yüksek soyutlama gerekir, sınıflar uygulamaya fazla yakındır. Tasarım sırasında tahtaya hızla çizilen gayriresmî gösterimler daha kullanışlıdır. UML, ayrıntılı belgelemede ve model güdümlü geliştirmede değerlidir.
Çevik bakış
Ayrıntılı tasarım belgelerinin çoğu hiç kullanılmaz; onları üretmek zaman ve para kaybıdır.
Sommerville’in önerisi
Kritik sistemler dışında dört görünümün hepsini ayrıntılı çizmeye değmez. İletişime yarayan görünümleri geliştirin; belgenin eksiksiz olup olmadığına takılmayın.
Bir tren istasyonundaki bilet makinesi için kavramsal görünümü ve süreç görünümünü gösteren diyagramlar çizin.
Bir mimari desen, farklı sistemlerde ve ortamlarda denenmiş ve sınanmış iyi tasarım pratiğinin stilize, soyut bir tanımıdır.
Desen yalnızca bir çizim değildir: ne zaman uygun olduğunu, ne zaman olmadığını, güçlü ve zayıf yanlarını da anlatır.
| Alan | İçerik |
|---|---|
| Ad | Desenin adı |
| Açıklama | Sistemin nasıl organize edildiği |
| Örnek | Desenin kullanıldığı bir sistem ve diyagramı |
| Ne zaman kullanılır? | Desenin uygun olduğu durumlar |
| Avantajlar | Desenin güçlü yanları |
| Dezavantajlar | Desenin zayıf yanları, bedeli |
| Alan | MVC (Model-View-Controller) |
|---|---|
| Açıklama | Sunum ve etkileşimi sistem verisinden ayırır; sistem Model, View ve Controller bileşenlerine bölünür. |
| Örnek | MVC ile organize edilmiş web uygulaması mimarisi. |
| Ne zaman kullanılır? | Veriyi görüntülemenin ve onunla etkileşmenin birden çok yolu varsa; sunum ve etkileşimle ilgili gelecekteki gereksinimler bilinmiyorsa. |
| Avantajlar | Veri, gösteriminden bağımsız değişebilir (ve tersi). Aynı veri farklı biçimlerde gösterilir; birindeki değişiklik hepsine yansır. |
| Dezavantajlar | Veri modeli ve etkileşim basitse ek kod ve karmaşıklık getirebilir. |
Paralel geliştirme
Ön yüz geliştiricileri View üzerinde, arka uç geliştiricileri Model ve Controller üzerinde aynı anda çalışabilir.
Test edilebilirlik
İş mantığı arayüzden bağımsız olduğu için Model için birim testi yazmak kolaydır.
Yaygınlık
Django, Ruby on Rails, ASP.NET MVC, Laravel gibi web çatılarının temelidir. Masaüstü ve mobilde MVP ve MVVM çeşitleri kullanılır.
| Alan | Katmanlı mimari |
|---|---|
| Açıklama | Sistem, ilgili işlevlerin bir arada olduğu katmanlara ayrılır; her katman üstündekine servis sağlar. Temel ilke: sorumlulukların ayrılması. |
| Örnek | Okullar için iLearn dijital öğrenme sistemi. |
| Ne zaman kullanılır? | Mevcut sistemlerin üzerine yeni olanaklar kurulurken; geliştirme her katmandan bir ekibin sorumlu olduğu birkaç ekibe dağılmışsa; çok düzeyli güvenlik gerekiyorsa. |
| Avantajlar | Arayüz korunduğu sürece katmanlar bütünüyle değiştirilebilir (ör. veritabanını değiştirmek yalnızca veri katmanını etkiler). Katmanlar farklı teknolojilerle, farklı ekiplerce geliştirilebilir. Güvenilirlik için olanaklar (ör. kimlik doğrulama) birden çok katmanda tekrarlanabilir. |
| Dezavantajlar | Temiz ayrım pratikte zordur; kural delinip alt katmanlara doğrudan erişilirse soyutlama sızar (leaky abstraction). İstek her katmanda yorumlandığı için performans düşebilir. Hiçbir iş yapmadan isteği aşağı aktaran gereksiz katmanlar bu maliyeti boşuna artırır. |
Aynı randevu verisini hem web sayfasında hem mobil uygulamada göstermek istiyoruz. MVC’nin hangi özelliği bunu kolaylaştırır?
| Alan | Depo (Repository) |
|---|---|
| Açıklama | Bütün veri, bütün bileşenlerin erişebildiği merkezi bir depoda yönetilir. Bileşenler doğrudan değil, yalnızca depo üzerinden etkileşir. |
| Örnek | Araçların tasarım bilgisini bir depoda paylaştığı IDE. |
| Ne zaman kullanılır? | Uzun süre saklanması gereken büyük hacimde bilgi üretiliyorsa; depoya veri girmesinin bir eylemi tetiklediği veri güdümlü sistemlerde. Komuta-kontrol, yönetim bilgi sistemleri, CAD ve IDE’ler. |
| Avantajlar | Bileşenler bağımsızdır, birbirinin varlığını bilmez; yeni bir araç mevcutları değiştirmeden eklenir. Bir bileşenin değişikliği hepsine yayılır. Bütün veri tek yerde olduğu için güvenlik, yedekleme ve tutarlılık merkezi yönetilir. |
| Dezavantajlar | Depo tek hata noktasıdır. Çok sayıda bileşen aynı anda okuyup yazarsa depo bir performans darboğazına dönüşür. Depoyu birden çok bilgisayara dağıtmak, kopyaları tutarlı tutmayı gerektirdiği için zordur. |
| Kitaptaki film kütüphanesi | Netflix (sadeleştirilmiş) | |
|---|---|---|
| İstemci | Tarayıcıdaki tümleşik arayüz | TV, telefon ve tarayıcı uygulamaları |
| Katalog ve iş mantığı | Tek katalog sunucusu | API ağ geçidi ve yüzlerce mikroservis |
| Video sunucusu | Tek video sunucusu | İnternet servis sağlayıcılarının içindeki binlerce önbellek sunucusu (Open Connect) |
| Sıkıştırma | Sunucuda, istek anında | Önceden, her video için onlarca sürüm (boru ve filtre hattı) |
| Ölçekleme | Sunucu eklemek | Bulut bölgeleri ve otomatik ölçekleme; içerik izleyicinin yakınına taşınır |
| Tek hata noktası | Her sunucu | Yedekli servisler; arızalar bilerek tetiklenip sınanır (kaos mühendisliği) |
Desen aynı: hizmetler ayrı sunucularda, istemciler istekle erişir. Değişen, ölçek ve bu ölçeğin getirdiği işlevsel olmayan gereksinimler.
| Alan | İstemci-sunucu (Client-server) |
|---|---|
| Açıklama | Sistem bir hizmetler kümesidir; her hizmeti ayrı bir sunucu sağlar. İstemciler bu hizmetlerin kullanıcılarıdır. |
| Örnek | İstemci-sunucu olarak organize edilmiş film ve video kütüphanesi. |
| Ne zaman kullanılır? | Ortak bir veritabanına farklı yerlerden erişilmesi gerekiyorsa. Sunucular çoğaltılabildiği için yükü değişken sistemlerde de. |
| Avantajlar | Merkezi yönetim: veri ve iş mantığı sunucuda; güncelleme ve güvenlik tek yerden yapılır. Erişim: ağa bağlı her yetkili istemci hizmeti kullanabilir. Ölçekleme: sunucu güçlendirilebilir (dikey) ya da çoğaltılabilir (yatay). Genel bir işlev (ör. yazdırma) bütün istemcilere açıktır. |
| Dezavantajlar | Her hizmet tek hata noktasıdır; hizmet engelleme (DoS) saldırılarına açıktır. Çok sayıda istekte sunucu darboğaza dönüşür. Performans ve güvenilirlik ağ bağlantısına bağlıdır. Sunucular farklı kuruluşlara aitse yönetim sorunları çıkar. |
Toplu sıralı (batch)
Dönüşümler sırayla, veri toplu işlenir. Faturalama gibi veri işleme sistemlerinin yaygın mimarisidir.
Süreç hattı
Gömülü sistemlerde her süreç eşzamanlı çalışan bir filtre olur; sensörden gelen veri hat boyunca işlenir.
Etkileşimli arayüzler
Grafik arayüzlerin girdi-çıktısı karmaşıktır ve kontrol, fare tıklaması gibi olaylara dayanır; bunu sıralı bir veri akışına çevirmek zordur.
| Alan | Boru ve filtre (Pipe and filter) |
|---|---|
| Açıklama | Her işlem bileşeni (filtre) ayrıdır ve tek bir veri dönüşümü yapar. Veri, bir borudaki gibi bir bileşenden diğerine akar. |
| Örnek | Faturaları işleyen boru ve filtre sistemi. |
| Ne zaman kullanılır? | Girdilerin ayrı aşamalarda işlenip ilgili çıktıların üretildiği veri işleme uygulamalarında (toplu ya da işlem tabanlı). |
| Avantajlar | Anlaşılması kolaydır; dönüşümlerin yeniden kullanımını destekler. İş akışı biçimi birçok iş sürecine uyar. Dönüşüm ekleyerek geliştirmek kolaydır. Sıralı ya da eşzamanlı kurulabilir. |
| Dezavantajlar | Veri aktarım biçimi üzerinde anlaşılmalıdır. Her dönüşüm girdisini ayrıştırıp çıktısını bu biçime çevirmek zorundadır; bu ek yük getirir ve uyumsuz veri yapılı bileşenleri yeniden kullanmayı imkânsız kılabilir. |
| Desen | Gösterdiği görünüm | Güçlü yanı | Zayıf yanı |
|---|---|---|---|
| MVC | Kavramsal | Veri ile sunum ayrı değişir | Basit sistemde fazla kod |
| Katmanlı | Kavramsal | Katmanlar değiştirilebilir | Temiz ayrım zor, performans |
| Depo | Statik yapı | Büyük veriyi verimli paylaşır | Tek hata noktası, ortak şema |
| İstemci-sunucu | Çalışma zamanı | Dağıtılabilir, ölçeklenir | Ağa bağımlı, tek hata noktası |
| Boru ve filtre | Çalışma zamanı | Basit, yeniden kullanılabilir | Ortak veri biçimi, etkileşime uymaz |
Gerçek sistemler desenleri birleştirir: bir web uygulaması istemci-sunucu, sunucu tarafı katmanlı, arayüzü MVC olabilir.
Çiftlikte sığırları otonom olarak güden, gerektiğinde insan operatörlerce uzaktan kumanda edilebilen dronlar için birden çok desen nasıl birlikte kullanılabilir?
Genel iş işlevleri
Personel, faturalama, muhasebe… Her işletmede benzerdir.
Sektöre özgü işlevler
Bütün telefon şirketleri aramaları bağlar ve ölçer, şebekeyi yönetir, fatura keser.
Uygulama mimarisi
Bir sistem sınıfının temel özelliklerini yakalayan, yeniden kullanılabilir yapı. Ayrıntıda farklı sistemler aynı iskeleti paylaşır.
1 · Başlangıç noktası
Uygulama türünü bilmiyorsanız ilk tasarımı genel mimariye dayandırıp özelleştirirsiniz; boş sayfadan başlamazsınız.
2 · Tasarım kontrol listesi
Tasarımınızı genel mimariyle karşılaştırırsınız: Kimlik doğrulama, kayıt tutma, ödeme gibi standart bileşenleri düşündük mü?
3 · Ekip organizasyonu
Kararlı bileşenler paralel geliştirilebilir; iş bileşenlere göre dağıtılır: arayüz ekibi, API ekibi, veritabanı ekibi.
4 · Yeniden kullanım değerlendirmesi
Elinizdeki bileşenleri (ör. bir ödeme modülü) genel yapıdaki karşılıklarıyla karşılaştırırsınız.
5 · Ortak sözcük dağarcığı
“Bu bir hareket işleme sistemi” demek, sistemin doğası, zorlukları ve gereksinimleri hakkında hemen ortak bir anlayış yaratır.
Hareket işleme uygulamaları
Veritabanı merkezli; kullanıcı isteklerini işler, veritabanını günceller. En yaygın etkileşimli iş sistemleri: bankacılık, e-ticaret, bilgi sistemleri, rezervasyon.
Dil işleme sistemleri
Kullanıcının niyeti biçimsel bir dille ifade edilir. Sistem bu dili iç biçime çevirir ve yorumlar: derleyiciler, sorgu dilleri, XML gibi işaretleme dilleri.
Kullanıcı işlemi
Bir amacı karşılayan tutarlı bir işlemler dizisi. Örneğin: “Dr. Yılmaz’ın yarınki boş randevu saatlerini bul.”
Veritabanı işlemi gerekir mi?
Bu istek veritabanını değiştirmez; teknik bir veritabanı işlemi olarak paketlenmesi gerekmeyebilir. Randevuyu kaydetmek ise veritabanını değiştirir ve atomik olmalıdır.
Veri işleme uygulamaları
Büyük veri kümelerini bir biçimden diğerine dönüştürür; çoğunlukla kullanıcı etkileşimi olmadan arka planda, toplu ya da akış olarak çalışır. Gün sonu raporları, veri ambarı (ETL) işlemleri, video sıkıştırma.
Olay işleme sistemleri
Dış dünyadan gelen olay akışlarına (sensör verisi, tıklamalar) anında tepki verir; eşzamansız ve tepkisel çalışır. Dolandırıcılık tespiti, nesnelerin interneti verisi, alarm sistemleri.
Kitabın web sitesinde toplu veri işleme, kaynak ayırma ve olay tabanlı düzenleme sistemlerinin mimarileri de yer alır.
Bilgi sistemlerinin genel modelini kullanarak, kullanıcıların etkinlikleri, boş biletleri ve fiyatları görüp bilet satın alabileceği bir bilet satış sisteminin bileşenlerini önerin.
Bir dili başka bir gösterime çevirir; programlama dilleri için ortaya çıkan kodu çalıştırabilir de.
Derleyiciler
Programlama dilini makine koduna çevirir.
XML ve sorgu dilleri
XML veri tanımını bir veritabanı sorgusuna ya da başka bir XML gösterimine çevirir.
Doğal dil işleme
Bir doğal dili başka birine, örneğin Fransızcayı Norveççeye çevirir; sözlük gibi ek bileşenler içerir.
| Bileşen | Görevi |
|---|---|
| Sözcüksel analizci | Girdi dilindeki sözcükleri (token) alır, iç biçime çevirir. |
| Sembol tablosu | Çevrilen metindeki varlıkların (değişken, sınıf, nesne adları) bilgisini tutar. |
| Sözdizimsel analizci | Dilin tanımlı dilbilgisine göre sözdizimini denetler, sözdizim ağacını kurar. |
| Sözdizim ağacı | Derlenen programı temsil eden iç yapı. |
| Anlamsal analizci | Ağaç ve sembol tablosundan yararlanarak anlamsal doğruluğu denetler. |
| Kod üreteci | Sözdizim ağacını “dolaşır” ve soyut makine kodu üretir. |
Ek olarak ağacı analiz edip dönüştüren bir en iyileyici (optimizer), üretilen kodu daha verimli hâle getirebilir.
Nedir?
Bir alandaki sistem mimarilerinin önemli özelliklerini yakalar. Bir uygulama mimarisinde olabilecek her şeyi içerir; gerçekte tek bir uygulamanın hepsini içermesi pek olası değildir.
Ne işe yarar?
Tasarım önerilerini değerlendirmek ve karşılaştırmak; insanlara o alandaki mimari özellikleri öğretmek. Mimari değerlendirmede karşılaştırma noktası olarak kullanılır.
Dil işleme sistemlerinin genel modelini kullanarak, doğal dildeki komutları SQL gibi bir dildeki veritabanı sorgularına çeviren bir sistemin mimarisini tasarlayın.
| Soru | Kavram | Akılda kalacak |
|---|---|---|
| Mimari neden önemli? | İşlevsel olmayan özellikler | Performans, güvenlik, bakım kolaylığını asıl mimari belirler |
| Hangi kararları veririz? | Sekiz temel soru | Stil ve yapı seçimi işlevsel olmayan gereksinimlere göre yapılır |
| Mimariyi nasıl anlatırız? | 4+1 ve kavramsal görünüm | Tek çizim yetmez; iletişime yarayan görünümleri çizin |
| Hazır çözüm var mı? | Mimari desenler | MVC, katmanlı, depo, istemci-sunucu, boru ve filtre |
| Benzer sistemler nasıl kurulur? | Uygulama mimarileri | Hareket işleme, bilgi sistemleri, dil işleme |
Yazılım Mühendisliği – OMÜ | 🏠