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


11

Я совершенно запутался в следующих терминах:

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

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

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

Архитектура системы - это концептуальная модель, которая определяет структуру, поведение и другие представления системы. 1 Описание архитектуры - это формальное описание и представление системы, организованное таким образом, чтобы поддерживать рассуждения о структурах и поведении системы ( вики ).

Диаграммы классов

В программной инженерии диаграмма классов на языке унифицированного моделирования (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.