Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Архитектура и проектирование программных систем

Архитектурные структуры и представления

Современные программные системы настолько сложны, что разбирать их в комплексе крайне сложно. Приходится концентрировать внимание на одной или нескольких структурах программной системы. Для рассуждения об архитектуре программной системы нужно определиться с тем, какая структура в данный момент является предметом обсуждения, о каком представлении архитектуры идет речь.

Рассматривая представления архитектуры, часто употребляют связанные между собой понятия структуры (structure) и представления (view) [9]. Представление - это отображение ряда связанных архитектурных элементов в том виде, в котором им оперируют заинтересованные в системе лица. В нем фиксируется отображение совокупности элементов и установленных между ними связей. Структура же - это собственно ряд элементов, существующих в раках программного или аппаратного обеспечения. В частности, модульная структура представляет собой набор модулей системы с указанием их организации. Модульное представление есть отображение этой структуры, документируемое и применяемое теми или иными заинтересованными лицами. Нужно сказать, что эти термины («структура» и «представление») часто используются как синонимы.

По классификации, предложенной в [9], архитектурные структуры подразделяются на три общие группы, в каждую из которых включаются элементы определенного характера.

  • 1. Модульные структуры. Элементами таких структур являются модули - блоки реализации. Модули предполагают рассмотрение системы с точки зрения программного кода. Модульные структуры позволяют отвечать на такие вопросы, как: «Какие функциональные требования выполняет данный модуль?», «К каким программным элементам он может обращаться?», «Какое программное обеспечение он фактически использует?», «Между какими модулями установлены отношения обобщения или специализации (например, наследования)?»
  • 2. Структуры «компонент и соединитель». В данном случае элементами являются компоненты (основные единицы вычислений) и соединители (инструменты взаимодействия между компонентами) периода прогона (выполнения). Среди вопросов, на которые отвечают структуры «компонент и соединитель», такие, например, как: «Каковы основные исполнительные компоненты и как происходит их взаимодействие?», «Каковы основные совместно используемые хранилища данных?», «Какие части системы воспроизводятся?», «Каким образом по системе проходят данные?», «Какие элементы системы способны выполняться одновременно?», «Какие структурные изменения происходят в системе во время ее исполнения?»
  • 3. Структуры распределения. Структуры распределения демонстрируют связь между программными элементами, с одной стороны, и элементами одной или нескольких внешних сред, в которых данное программное обеспечение создается и исполняется, - с другой. Они отвечают на вопросы: «На каком процессоре исполняется данный программный элемент?», «В каких файлах каждый элемент хранится в ходе разработки, тестирования и конструирования системы?», «Каким образом программные элементы распределяются между группами разработчиков?»

Перечисленные три структуры соответствуют трем универсальным типам решений, применяемым в ходе архитектурного проектирования.

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

Наиболее распространенные и полезные программные структуры можно разделить на три гуппы: модульные, компонент и соединитель и распределение [9].

Модульные структуры делятся на следующие разновидности.

  • 1. Декомпозиция. В качестве блоков выступают модули, между которыми установлены отношения «является подмодулем...». Таким образом, крупные модули в рекурсивном порядке разлагаются на меньшие, и этот процесс завершается только тогда, когда меньшие модули становятся вполне понятными. Модули в рамках этой структуры часто используются в качестве отправной точки для последующего проектирования: архитектор перечисляет блоки, с которыми ему предстоит работать, и в расчете на более подробное проектирование, а также реализацию распределяет их между модулями. Структура декомпозиции в значительной степени обеспечивает модифицируемость системы, при этом складывается ситуация, когда наиболее вероятные изменения приходятся на долю нескольких небольших модулей.
  • 2. Варианты использования. Блоками этой важной, но не слишком распространенной структуры могут быть либо модули, либо (когда требуется более мелкая структура) процедуры или ресурсы интерфейсов модулей. Между такими блоками устанавливаются отношения использования. Структура использования полезна при конструировании систем, которые легко расширяются дополнительными функциями либо предлагают возможность быстрого извлечения полезных функциональных подмножеств. Способность без труда разбить рабочую систему на ряд подмножеств подразумевает возможность инкрементной разработки - многофункционального конструкторского приема.
  • 3. Многослойные. Если отношения использования в рамках этой структуры находятся под строгим, особым образом осуществляемым контролем, возникает система слоев - внутренне связанных наборов родственных функций. В рамках строгой многослойной структуры уровень N может обращаться к услугам только в том случае, если они представлены слоем N-1. На практике это правило существует в виде многочисленных вариантов, которые частично снимают приведенное структурное ограничение. Слои во многих случаях проектируются в виде абстракций (виртуальных машин), которые, стараясь обеспечить переносимость, скрывают детали своей реализации нижележащих слоев от вышележащих.
  • 4. Класс или обобщение. Блоки модулей в рамках этой структуры называются классами. Отношения между ними строятся по образцам «наследуют от...» и «являются экземпляром...». Данное представление способствует анализу коллекций сходного поведения или сходных возможностей (например, классов, которые наследуют от других классов) и параметрических различий, фиксация которых производится путем определения подклассов. Структура классов позволяет анализировать вопросы повторного использования и инкрементного введения функциональности.

Структуры «компонент и соединитель». Среди структур данного вида выделяются следующие структуры.

  • 1 .Процесс или сообщающиеся процессы. Подобно другим структурам «компонент и соединитель», эта является ортогональной по отношению к модульным структурам, поскольку она связана с динамическими аспектами исполняемой системы. В качестве блоков в данном случае выступают процессы или потоки, связь между которыми устанавливается путем передачи данных, синхронизации и/или операций исключения. Здесь, как и во всех остальных структурах «компонент и соединитель», действует отношение прикрепления, демонстрирующее связь компонентов друг с другом. Структура процессов существенно облегчает конструирование рабочей производительности и готовности системы.
  • 2. Параллелизм. Данная структура позволяет архитекторам выявлять перспективы параллелизма и локализовать возможности состязаний за ресурсы. В качестве блоков выступают компоненты, а соединители играют роль логических потоков. Логическим потоком называется такая последовательность вычислений, которую впоследствии, в ходе процесса проектирования, можно связать с отдельным физическим потоком. Структура параллелизма задействуется на ранних этапах проектирования и способствует выявлению требований к организации параллельного исполнения.
  • 3. Совместно используемые данные или репозиторий. В состав данной структуры входят компоненты и соединители, обеспечивающие создание, хранение и обращение к данным постоянного хранения. Она наилучшим образом приспособлена к таким ситуациям, когда система структурирована на основе одного или нескольких репозиториев совместно используемых данных.
  • 4. Клиент - сервер. Эта структура предназначена для систем, сконструированных в виде группы взаимодействующих клиентов и серверов. В качестве компонентов в данном случае выступают клиенты и серверы, а соединителями являются протоколы и сообщения, которыми они обмениваются в процессе обеспечения работоспособности системы. Такая структура требуется для разделения задач, физического распределения и выравнивания нагрузок.

Структуры распределения. Среди этих структур можно выделить следующие структуры.

  • 1. Размещение. Структура размещения отражает распределение программной системы между элементами аппаратной обработки (компьютерами) и передачи данных. Отношения устанавливаются по распределению и демонстрируют физические устройства, на которых размещаются программные элементы. Возможны также отношения миграции в случае динамического распределения, например, в системах виртуальных машин. Настоящее представление позволяет инженерам анализировать производительность, целостность данных, готовность и безопасность. Все эти характеристики чрезвычайно важны в условиях распределенных и параллельных систем.
  • 2. Реализация. Данная структура демонстрирует отображение программных элементов (обычно модулей) на файловую структуру (структуры) в условиях разработки системы, интеграции и управления конфигурациями. Это крайне важно в контексте разработки и процессов конструирования.
  • 3. Распределение функций. Данная структура обеспечивает распределение обязанностей по реализации и интеграции модулей между соответствующими группами разработчиков. Наличие в составе архитектуры структуры распределения функций делает очевидным, что при принятии соответствующих решений учитывались как архитектурные, так и организационные факторы. Архитектору должно быть известно, какие именно навыки требуются от разных групп разработчиков.
 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Пред   СОДЕРЖАНИЕ   След >
 

Популярные страницы