Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ПО на практике.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
62.71 Mб
Скачать

2.2. Другие взгляды на архитектуру

Программная архитектура как дисциплина стремительно развивается, но все же она еще молода; поэтому какого-то универсального, повсеместно принятого ее определения не существует. Но и недостатка в вариантах определений не наблю­дается. Большинство из них, как правило, сходятся в том, что любая архитектура состоит из структур, элементов и связей между ними; то, что они не взаимозаме­няемы, объясняется расхождениями в деталях.

Программная архитектура изучается путем фиксации применяемых проекти­ровщиками принципов конструирования и действий, которые они используют в процессе работы с реальными системами. Таким образом, предпринимается попытка выделить универсальные черты системного проектирования; в этом ка­честве программная архитектура имеет дело с самыми разными операциями, по­нятиями, методами, подходами и результатами. Именно поэтому в сообществе специалистов по программной инженерии распространены некоторые другие, отличные от приведенного выше, определения программной архитектуры; по­скольку какие-то из них вам наверняка встретятся, вы должны понимать, что они подразумевают, и знать, на основе каких аргументов в том или ином случае мож­но построить дискуссию. Отдельные, наиболее ходовые определения приводятся ниже.

  • Архитектура — это проект, поднятый на высокий уровень. Действительно, лошадь относится к млекопитающим, однако они не равнозначны. В про­цессе проектирования решаются разные задачи, в том числе и неархитек­турные — взять хоть вопрос об инкапсуляции значимых структур данных. Интерфейсы этих структур, без сомнения, относятся к архитектуре, но соб­ственно их отбор — нет.

  • Архитектура — это общая структура системы. Согласно распространен­ному (но неверному) мнению, у любой системы одна структура. Мы-то знаем, что это не так, а если кто-то вознамерится утверждать обратное, спросите его, какую конкретно структуру он имеет в виду. Эффект будет не только педагогическим. Как мы увидим впоследствии, наполнение систе­мы атрибутами качества, которые в конечном итоге определяют ее успех или провал, происходит именно через разнообразные структуры. Множе­ственность структур в рамках архитектуры составляет суть самого этого понятия.

  • Архитектура - это структура компонентов программы или системы, вза­имосвязи, а также принципы и нормы их проектирования и развития во времени. Это одно из ряда процессно-ориентированных определений, вклю­чающих дополнительные сведения о принципах и нормах. Многие счита­ют, что в состав архитектуры входят декларация потребностей заинтересо­ванных лиц и логическое обоснование, регламентирующее реализацию их требований. Действительно, сбор такой информации важен и необходим с точки зрения профессионализма. Однако мы не считаем, что эти доку­менты являются частью архитектуры, — никто ведь не берется утверждать, что руководство пользователя автомобиля входит в состав автомобиля. Архитектуру, к какой бы системе она ни относилась, можно исследовать и проанализировать, не располагая знаниями о процессах ее проектирова­ния и развития.

  • Архитектура — это компоненты и соединители. Под соединителями име­ется в виду механизм периода прогона, предназначенный для передачи в рам­ках системы сигналов управления и данных. Следовательно, данное опре­деление ориентировано на архитектурные структуры периода прогона. К примеру, соединителем является UNIX-канал. Согласно этой логике, все архитектурные структуры, которые не относятся к периоду прогона (на­пример, рассмотренное выше статическое разделение на ответственные блоки реализации), признаются второстепенными. В то же время в контексте ре­шения системных задач они не менее важны, чем структуры периода прого­на. Рассуждая об «отношениях» между элементами, мы имеем в виду все отношения - те, что реализуются в период прогона, и те, что к нему не относятся.

Все дискуссии по поводу программной архитектуры крутятся вокруг струк­турности систем. Иногда словом «архитектура» обозначают конкретный архи­тектурный образец (например, клиент-сервер), в других случаях — область ис­следований (например, книгу об архитектуре), однако в большинстве случаев под «архитектурой» имеют в виду структурные аспекты конкретной системы. Имен­но их мы пытались отразить в своем варианте определения.