ScholarGate
Asistan

Yazılım Tasarımı ve Mimarisi

Yazılım tasarımı ve mimarisi, bir yazılım sisteminin bileşenlere ve bağlayıcılara nasıl yapılandırıldığını, sorumlulukların nasıl ayrıştırıldığını ve tasarım kararlarının işlevsel gereksinimleri ve kalite niteliklerini nasıl karşıladığını ele almaktadır.

PaperMind ile konu bulYakındaMakale ve konu bul
Tools & resources
Slaytları indir
Learn & explore
VideoYakında

Tanım

Yazılım tasarımı, bir sistemin mimarisini, bileşenlerini, arayüzlerini ve diğer özelliklerini tanımlama sürecidir; yazılım mimarisi ise sistemin öğelerini, bunların ilişkilerini ve her ikisinin özelliklerini içeren yapılar bütünüdür.

Kapsam

Bu alan; katmanlı, istemci-sunucu, mikroservisler, olay tabanlı, boru ve filtre gibi mimari stilleri ve desenleri; modülerlik, bilgi gizleme, uyum (cohesion), bağlılık (coupling) ve sorumlulukların ayrılması gibi tasarım ilkelerini; nesne yönelimli ve bileşen tabanlı tasarımı; tasarım desenlerini; mimari kalite niteliklerini ve bunların ödünleşimlerini; ve tasarımları ifade etmek için kullanılan UML gibi modelleme gösterimlerini kapsamaktadır.

Alt konular

Temel sorular

  • Bir sistem modüllere ve bileşenlere nasıl ayrıştırılmalıdır?
  • Hangi mimari stil, gerekli kalite niteliklerini en iyi şekilde desteklemektedir?
  • Bağlılık (coupling) ve uyum (cohesion) gibi tasarım ilkeleri iyi bir yapıyı nasıl yönlendirmektedir?
  • Tekrarlayan tasarım problemleri, yeniden kullanılabilir desenlerle nasıl çözülmektedir?

Temel kuramlar

Bilgi gizleme ve modülerlik
Parnas, modüllerin, değişmesi muhtemel tasarım kararlarını istikrarlı arayüzlerin arkasına gizleyecek şekilde tanımlanması gerektiğini savunmuştur, böylece değişiklik yerelleştirilir; bu ilke modülerliğin, kapsüllemenin ve düşük bağlılığın temelini oluşturmaktadır.
Mimari kalite nitelikleri ve ödünleşimler
Mimari, performans, değiştirilebilirlik, erişilebilirlik ve güvenlik gibi kalite nitelikleri tarafından yönlendirilmektedir; bunlar birbiriyle çeliştiği için mimari, taktikler ve desenler rehberliğinde ödünleşimler üzerine akıl yürütmekle ilgilidir.
Tasarım desenleri
Tekrarlayan tasarım problemlerinin iyi anlaşılmış, adlandırılmış çözümleri vardır — yaratımsal, yapısal ve davranışsal desenler — bunlar uzman uygulamasını yakalar ve nesne yönelimli tasarım için ortak bir kelime dağarcığı sağlar.

Klinik önem

Mimari kararlar, daha sonra değiştirilmesi en zor olanlardır ve bir sistemin kalite niteliklerini en güçlü şekilde belirlemektedir; bu nedenle sağlam tasarım ve mimari, uzun vadeli bakım maliyetini azaltmakta, ölçeklenebilirliği ve evrimi mümkün kılmakta ve ekip organizasyonunu şekillendirmektedir.

Kanıt ve kılavuzlar

ISO/IEC/IEEE 42010, mimari tanımını standartlaştırmaktadır; SWEBOK Yazılım Tasarımı bilgi alanı ise Software Architecture in Practice gibi referans metinlerle birlikte fikir birliğine dayalı rehberlik sağlamaktadır.

Tarihçe

Modüler tasarım ilkeleri, 1970'lerin başında Parnas tarafından dile getirilmiştir. Nesne yönelimli tasarım ve tasarım desenleri 1980'ler ve 1990'larda olgunlaşmış, yazılım mimarisi 1990'ların ortalarında Shaw ve Garlan'ın çalışmalarıyla ayrı bir disiplin olarak ortaya çıkmış, hizmet odaklı ve mikroservis stilleri ise 2000'ler ve 2010'larda bunları takip etmiştir.

Tartışmalar

Monolitik ve mikroservis mimarisi
Sistemlerin tek bir dağıtılabilir monolit olarak mı yoksa birçok bağımsız dağıtılabilir servis olarak mı inşa edilmesi gerektiği yaygın olarak tartışılmaktadır; mikroservisler, dağıtık sistem karmaşıklığı pahasına bağımsız ölçekleme ve dağıtım sunar, bu nedenle doğru seçim ölçeğe ve organizasyonel yapıya bağlıdır.

Öne çıkan isimler

  • David Parnas
  • Mary Shaw
  • Len Bass
  • Erich Gamma
  • Grady Booch

İlgili konular

Temel eserler

  • parnas1972
  • gamma1994
  • bass2012

Sıkça sorulan sorular

Tasarım ve mimari arasındaki fark nedir?
Mimari, en üst düzey yapıları ve değiştirilmesi en maliyetli kararları — ana bileşenleri, etkileşimlerini ve sistem genelindeki kalite niteliklerini — ilgilendirirken, tasarım bu bileşenlerin daha ayrıntılı iç yapısını kapsar; sınır, keskin bir çizgi olmaktan ziyade önem derecesine göre belirlenir.
Tasarım desenleri neden önemlidir?
Desenler, tekrarlayan tasarım problemlerine kanıtlanmış çözümleri yakalar ve mühendislere ortak bir kelime dağarcığı sunarak tasarımların iletişimini, üzerinde akıl yürütülmesini ve evrimini kolaylaştırır; bunlar zorunlu reçeteler değil, ihtiyatlı bir şekilde uygulanması gereken rehberlerdir.

Bu kavram için yöntemler

İlgili kavramlar