Я совершенно запутался в следующих терминах:
Архитектура программного обеспечения
Архитектура прикладного программного обеспечения - это процесс определения структурированного решения, отвечающего всем техническим и эксплуатационным требованиям, при оптимизации общих атрибутов качества, таких как производительность, безопасность и управляемость. Он включает ряд решений, основанных на широком спектре факторов, и каждое из этих решений может оказать значительное влияние на качество, производительность, ремонтопригодность и общий успех приложения. ( Microsoft )
Архитектура системы
Архитектура системы - это концептуальная модель, которая определяет структуру, поведение и другие представления системы. 1 Описание архитектуры - это формальное описание и представление системы, организованное таким образом, чтобы поддерживать рассуждения о структурах и поведении системы ( вики ).
Диаграммы классов
В программной инженерии диаграмма классов на языке унифицированного моделирования (UML) - это тип статической структурной диаграммы, которая описывает структуру системы, показывая классы системы, их атрибуты, операции (или методы) и отношения между объектами. ( вики )
Если я читаю эти описания, все они описывают взаимодействие между различными модулями приложения. Однако каковы различия между ними?
Что я думаю / пытался сравнить эти термины :
- Диаграммы классов не являются формой архитектуры системы, потому что приведенное выше описание (
structure, behavior, and more views of a system
) подразумевает, что в архитектуре отсутствуют подробности реализации, тогда как диаграммы классов описывают реализацию и, вероятно, больше направлены на проектирование, чем на архитектуру? - Я думаю, что системная архитектура - это архитектура, которая также включает внешние взаимодействия (например, базы данных), тогда как архитектура программного обеспечения ориентирована на само приложение?
источник
Ответы:
Архитектура системы описывает компоненты системы. Например, у вас может быть система ввода заказов, которая состоит из:
Веб-интерфейс, служба бизнес-уровня и хранилище данных.
Итак, вам следует показать диаграмму высокого уровня.
Архитектура приложения программного обеспечения описывает архитектуру конкретного компонента. Например, одним из компонентов системы ввода заказов является веб-интерфейс. Архитектура приложения покажет различные уровни и взаимодействия этого компонента. Отзывчивый пользовательский интерфейс, контроллер представления модели, вызовы веб-служб, порядок ведения журналов и т. Д. Он дает представление о каждом компоненте и о том, как будут строиться слои в этом компоненте, который является частью большой системы.
обычно создается более подробная схема (ы), показывающая, как будет создан этот компонент.
Наконец, диаграммы классов углубляются в архитектуру программного приложения. Например, как выглядит контракт на интерфейс регистрации? Как View будет взаимодействовать с контроллером ... и так далее. Они будут дополнительно детализировать архитектуру прикладного программного обеспечения для конкретного компонента системы.
Их должно быть много, если конкретный компонент большой и сложный.
источник
Некоторые дополнительные пункты:
И последнее, но не менее важное: архитектура - это единовременный выбор, к которому трудно или невозможно вернуться позже, не перестраивая все. Лучшее определение архитектуры, которое отличает ее от дизайна, - это «все, что действительно дорого менять». Таким образом, в архитектуре вы обычно выбираете язык программирования, операционную систему, марку реляционной базы данных и все, что привязывает вас к какому-либо решению. То, что классифицируется как архитектура, также зависит от самой системы и от того, насколько (не) она гибкая в отношении аспекта.
источник
Диаграммы классов сильно отличаются от остальных двух терминов - они показывают, что классы предлагают другим классам и как они взаимодействуют друг с другом. Однако термины «архитектура системы» и «архитектура программного обеспечения» создают путаницу и требуют дальнейшего разъяснения.
Важно понимать, что «система» относится не только к программным компонентам, но и к другим компонентам, таким как аппаратные компоненты. Если система содержит только программную систему, то между этими терминами нет никакой разницы. Однако, очевидно, что если система содержит другие непрограммные компоненты, то архитектура программного обеспечения будет значительно отличаться от архитектуры системы системы.
источник