Архітектура програмного забезпечення проти архітектури системи проти діаграм класу?


11

Я дуже розгублений щодо таких термінів:

Архітектура програмного забезпечення

Архітектура програмного забезпечення - це процес визначення структурованого рішення, яке відповідає всім технічним та експлуатаційним вимогам, оптимізуючи загальні атрибути якості, такі як продуктивність, безпека та керованість. Він передбачає низку рішень на основі широкого спектру факторів, і кожне з цих рішень може мати значний вплив на якість, продуктивність, ремонтопридатність та загальний успіх програми. ( мікрософт )

Архітектура системи

Архітектура системи - це концептуальна модель, яка визначає структуру, поведінку та більше поглядів на систему. 1 Опис архітектури - це формальний опис та подання системи, організованої таким чином, що підтримує міркування про структури та поведінку системи ( wiki )

Діаграми класів

В інженерії програмного забезпечення діаграма класів в уніфікованій мові моделювання (UML) - це тип статичної структурної діаграми, що описує структуру системи, показуючи класи системи, їх атрибути, операції (або методи) та зв’язки між об'єктами. ( вікі )

Якщо я читаю ці описи, все це описує взаємодію між різними модулями програми. Однак які відмінності між ними?
Що я думаю / намагався порівняти ці терміни :

  • Діаграми класів не є формою архітектури системи, оскільки наведений вище опис ( structure, behavior, and more views of a system) означає, що в архітектурі немає деталей реалізації, тоді як діаграми класів описують реалізацію і, ймовірно, більше спрямовані на дизайн, а не архітектуру?
  • Я думаю, що архітектура системи - це архітектура, яка також включає взаємодію із зовнішнім середовищем (наприклад, база даних), тоді як архітектура програмного забезпечення орієнтована на саме додаток?

1
Можливо, діаграми класів є результатом діяльності з архітектури програмного забезпечення, подібно до того, що креслення будівлі є результатом архітектора будівлі ...
FrustratedWithFormsDesigner

Відповіді:


7

Архітектура системи описує компоненти системи. Наприклад, у вас може бути система введення замовлення, яка складається з:

Веб-фронтальний сервіс, служба бізнес-шару та магазин даних.

Отже, ви повинні мати діаграму високого рівня, що показує це.

Архітектура програмного забезпечення описує архітектуру певного компонента. Наприклад, однією із складових системи введення замовлення є передній край веб-сторінки. Архітектура додатків покаже різні шари та взаємодії цього компонента. Чуйний користувальницький інтерфейс, контролер перегляду моделей, виклики веб-служб, спосіб ведення журналу і т. Д. Він дає уявлення про кожен компонент і будуватиметься шари в тому компоненті, який є частиною більшої системи.

зазвичай створюється більш детальна схема (и), що показують, як буде побудований цей компонент.

Нарешті, діаграми класів заглиблюються в архітектуру програмних додатків. Наприклад, як виглядає договір на інтерфейс журналу? Як View буде взаємодіяти з контролером ... тощо. Вони додатково деталізують архітектуру програмного забезпечення для певного компонента системи.

Їх повинно бути багато, якщо конкретний компонент великий і складний.


2

Деякі додаткові моменти:

  • Система - це найширший термін і, як правило, найвищий рівень, найменш деталізований.
  • Частина системи може бути віднесена до програмного забезпечення.
  • Частина програмного забезпечення може бути описана за допомогою діаграм класів.

І останнє, але не менш важливе: архітектура - це одноразовий вибір, який важко або неможливо отримати згодом, не будуючи все. Найкраще визначення архітектури, яке виділяє її від дизайну, - це "все, що насправді дорого змінити". Так що в архітектурі ти зазвичай знаходиш вибір для мови програмування, операційної системи, марки реляційної бази даних, що б не замикало тебе на типі рішення. Тож, що класифікується як архітектура, також залежить від самої системи та наскільки (не) гнучкої вона щодо аспекту.


0

Діаграми класів сильно відрізняються від решти двох термінів - вони показують, що пропонують класи для інших класів та як вони взаємодіють між собою. Однак терміни "архітектура системи" та "архітектура програмного забезпечення" створюють плутанину і потребують подальшого уточнення.

Важливо усвідомити, що "система" стосується не лише компонентів програмного забезпечення, але й інших компонентів, таких як апаратні компоненти. Якщо система містить лише програмну систему, то різниці між обома термінами немає. Однак, очевидно, якщо система містить інші непрограмні компоненти, архітектура програмного забезпечення буде суттєво відрізнятися від архітектури системи.


Чи повинна архітектура системи також містити щось на зразок модуля GUI? @Tushar
KingBoomie

Так, це може бути і не обов'язково бути програмним компонентом. @RickBeeloo
Tushar

Але вам потрібен клас програмного забезпечення, щоб прийняти введення користувача та щось відобразити користувачеві? Так це також має бути компонент програмного забезпечення?
KingBoomie

Так і ні. Не всі споживачі програмної системи - це люди :)
Tushar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.