Yazılım mimarisi mi Sistem mimarisi mi Sınıf diyagramı mı?


11

Aşağıdaki terimler hakkında oldukça kafam karıştı:

Yazılım mimarisi

Yazılım uygulama mimarisi, performans, güvenlik ve yönetilebilirlik gibi ortak kalite özelliklerini optimize ederken, tüm teknik ve operasyonel gereksinimleri karşılayan yapısal bir çözüm tanımlama sürecidir. Çok çeşitli faktörlere dayanan bir dizi karar içerir ve bu kararların her biri uygulamanın kalitesi, performansı, sürdürülebilirliği ve genel başarısı üzerinde önemli bir etkiye sahip olabilir. ( microsoft )

Sistem mimarisi

Sistem mimarisi, bir sistemin yapısını, davranışını ve daha fazla görünümünü tanımlayan kavramsal bir modeldir. 1 Mimari tanım, sistemin yapıları ve davranışları hakkında muhakemeyi destekleyecek şekilde düzenlenmiş bir sistemin resmi bir tanımı ve temsilidir ( wiki )

Sınıf diyagramları

Yazılım mühendisliğinde, Birleşik Modelleme Dili (UML) içindeki bir sınıf diyagramı, sistemin sınıflarını, özelliklerini, işlemlerini (veya yöntemlerini) ve nesneler arasındaki ilişkileri göstererek bir sistemin yapısını tanımlayan bir tür statik yapı diyagramıdır. ( wiki )

Bu açıklamaları okursam, bunların hepsi uygulamanın farklı modülleri arasındaki etkileşimleri açıklar. Ancak bunlar arasındaki farklar nelerdir?
Ne düşünüyorum / bu terimleri karşılaştırmak çalıştı :

  • Sınıf şemaları bir sistem mimarisi biçimi değildir, çünkü yukarıdaki açıklama ( structure, behavior, and more views of a system) bir mimaride hiçbir uygulama detayının mevcut olmadığı anlamına gelirken, sınıf şemaları uygulamayı tarif eder ve muhtemelen mimariden ziyade tasarım yönündedir?
  • Sistem mimarisi, extern etkileşimlerini de (veritabanı gibi) içeren bir mimari iken yazılım mimarisi uygulamanın kendisine odaklanıyor mu?

1
Belki de Sınıf Diyagramları, bir binanın planlarının binanın mimarının bir çıktısı olduğu gibi , Yazılım Mimarisi etkinliğinin bir çıktısıdır
FrustratedWithFormsDesigner

Yanıtlar:


7

Sistem mimarisi , sistemin bileşenlerini açıklar. Örneğin, aşağıdakilerden oluşan bir sipariş giriş sisteminiz olabilir:

Web Ön Uç, İş Katmanı Hizmeti ve Veri Deposu.

Yani, bunu gösteren yüksek seviyeli bir diyagram olmalıdır.

Yazılım uygulama mimarisi , belirli bir bileşenin mimarisini tanımlar. Örneğin, sipariş giriş sisteminin bileşenlerinden biri web ön ucudur. Uygulama mimarisi bu bileşenin çeşitli katmanlarını ve etkileşimlerini gösterecektir. Duyarlı kullanıcı arayüzü, Model Görünümü Kontrolörü, web hizmeti çağrıları, günlüğe kaydetmenin nasıl gerçekleştirileceği, vb.

genellikle bu bileşenin nasıl oluşturulacağını gösteren daha ayrıntılı bir diyagram (lar) yaratılır.

Son olarak, Sınıf Diyagramları yazılım uygulama mimarisinin derinliklerine iner . Örneğin, günlük arabirimi için sözleşme neye benziyor? View, Kontrol Cihazı ile nasıl etkileşime girer ... vb. Bunlar, sistemin belirli bir bileşeni için yazılım uygulama mimarisini daha ayrıntılı olarak açıklayacaktır.

Belirli bir bileşen büyük ve karmaşıksa bunların çoğu olmalıdır.


2

Bazı ek noktalar:

  • Sistem en geniş terimdir ve tipik olarak en üst düzeydir, en az ayrıntılıdır.
  • Sistemin bir kısmı yazılım olarak sınıflandırılabilir.
  • Yazılımın bir kısmı sınıf diyagramları kullanılarak tanımlanabilir.

Son fakat en az değil: mimari, her şeyi yeniden inşa etmeden daha sonra geri dönmek zor veya imkansız olan tek seferlik seçimlerle ilgilidir. Mimariyi tasarımdan ayıran en iyi tanımı, "değiştirilmesi gerçekten pahalı olan her şey" dir. Yani mimaride tipik olarak, bir programlama çözümüne, işletim sistemine, ilişkisel veritabanının markasına, sizi bir çözüm türüne kilitleyen her şeyi bulacaksınız. Dolayısıyla mimari olarak sınıflandıran şey, sistemin kendisine ve bakış açısından ne kadar esnek olduğuna da bağlıdır.


0

Sınıf diyagramları iki terimin geri kalanından oldukça farklıdır - sınıfların diğer sınıflara neler sunduğunu ve birbirleriyle nasıl etkileştiklerini gösterirler. Ancak, 'sistem mimarisi' ve 'yazılım mimarisi' terimleri karışıklık yaratır ve daha fazla açıklama gerektirir.

Bir 'sistemin' sadece yazılım bileşenlerine değil, aynı zamanda donanım bileşenleri gibi diğer bileşenlere de atıfta bulunduğunu fark etmek önemlidir. Bir sistem yalnızca bir yazılım sistemi içeriyorsa, her iki terim arasında bir fark yoktur. Ancak, açıkçası, eğer bir sistem başka yazılım dışı bileşenler içeriyorsa, o zaman yazılım mimarisi sistemin sistem mimarisinden önemli ölçüde farklı olacaktır.


Sistem mimarisinde ayrıca GUI modülü gibi bir şey olmalı mı? @Tushar
KingBoomie

Evet, olabilir ve bir yazılım bileşeni olması gerekmez. @RickBeeloo
Tushar

Ancak, kullanıcı girişini kabul etmek ve kullanıcıya bir şeyler görüntülemek için yazılımda bir sınıfa ihtiyacınız var mı? Yani bir yazılım bileşeni de olmalı?
KingBoomie

Evet ve Hayır. Bir yazılım sisteminin tüm tüketicileri insan değildir :)
Tushar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.