В.В. Кулямин - Технологии программирования. Компонентный подход (1134162), страница 30
Текст из файла (страница 30)
Различныеархитектурные стили подходят для решения различных задач в плане обеспечениянефункциональных требований — различных уровней производительности, удобстваиспользования, переносимости и удобства сопровождения. Одну и ту же функциональностьможно реализовать, используя разные стили.Работа по выделению и классификации архитектурных стилей была проведена в середине1990-х годов. Ее результаты представлены в работах [5,6]. Ниже приведена таблица некоторыхархитектурных стилей, выделенных в этих работах.Виды стилей иконкретныестилиКонтекст использования и основные решенияКонвейеробработкиданных (dataflow)Система выдает четко определенные выходныеданные в результате обработки четкоопределенных входных данных, при этом процессобработки не зависит от времени, применяетсямногократно, одинаково к любым данным навходе.
Обработка организуется в виде набора (необязательно последовательности) отдельныхкомпонентов-обработчиков, передающих своирезультаты на вход другим обработчикам или навыход всей системы.Важными свойствами являются четкоопределенная структура данных и возможностьинтеграции с другими системами.ПримерыПакетнаяобработка(batchsequential)Один-единственный вывод производится наоснове чтения некоторого одного набора данныхна входе, промежуточные преобразованияорганизуются в виде последовательности.Сборка программнойсистемы: компиляция,сборка системы, сборкадокументации,выполнение тестов.Каналы ифильтры(pipe-andfilter)Нужно обеспечить преобразование непрерывныхпотоков данных.
При этом преобразованияинкрементальны и следующее может быть начатодо окончания предыдущего. Имеется, возможно,несколько входов и несколько выходов.В дальнейшем возможно добавлениедополнительных преобразований.Утилиты UNIX96Замкнутыйциклуправления(closed-loopcontrol)Вызов-возврат(call-return)Нужно обеспечить обработку постояннопоступающих событий в плохо предсказуемомокружении.Используется общий диспетчер событий, которыйклассифицирует событие и отдает его наасинхронную обработку обработчику событийтакого типа, после чего диспетчер снова готоввоспринимать события.Встроенные системыуправления вавтомобилях, авиации,спутниках.Обработка запросов насильно загруженныхWeb-серверах.Обработка действийпользователя в GUI.Порядок выполнения действий четко определен,отдельные компоненты не могут выполнятьполезную работу, не получая обращения отдругих.ПроцедурнаядекомпозицияДанные неизменны, процедуры работы с нимимогут немного меняться, могут возникать новые.Выделяется набор процедур, схема передачиуправления между которыми представляет собойдерево с основной процедурой в его корне.Основная схемапостроения программдля языков C, Pascal,AdaАбстрактныетипы данных(abstract datatypes)В системе много данных, структура которыхможет меняться.
Важны возможности внесенияизменений и интеграции с другими системами.Выделяется набор абстрактных типов данных,каждый из которых предоставляет наборопераций для работы с данными такого типа.Внутреннее представление данных скрывается.Библиотеки классов икомпонентовМногоуровневая система(layers)Имеется естественное расслоение задач системына наборы задач, которые можно было бы решатьпоследовательно — сначала задачи первогоуровня, затем, используя полученные решения, —второго, и т.д. Важны переносимость ивозможность многократного использованияотдельных компонентов.Компоненты разделяются на несколько уровнейтаким образом, что компоненты данного уровнямогут использовать для своей работы толькососедей или компоненты предыдущего уровня.Могут быть более слабые ограничения, например,компонентам верхних уровней разрешеноиспользовать компоненты всех нижележащихуровней.Телекоммуникационные протоколы в моделиOSI (7 уровней),реальные протоколысетей передачи данных(обычно 5 уровней илименьше).Системыавтоматизациипредприятий (уровниинтерфейсапользователяобработки запросовхранения данных).Клиент-серверРешаемые задачи естественно распределяютсямежду инициаторами и обработчиками запросов,возможно изменение внешнего представленияданных и способов их обработки.Основная модельбизнес-приложений:клиентскиеприложения,воспринимающиезапросы пользователейи сервера,выполняющие этизапросы.97ИнтерактивныесистемыНеобходимость достаточно быстро реагироватьна действия пользователя, изменчивостьпользовательского интерфейса.Данные–представление–обработка(model-viewcontroller,MVC)Изменения во внешнем представлениидостаточно вероятны, одна и та же информацияпредставляется по-разному в нескольких местах,система должна быстро реагировать на измененияданных.Выделяется набор компонентов, ответственных захранение данных, компоненты, ответственные заих представления для пользователей, икомпоненты, воспринимающие команды,преобразующие данные и обновляющие ихпредставления.Представление–абстракция–управление(presentationabstractioncontrol)Интерактивная система на основе агентов,имеющих собственные состояния ипользовательский интерфейс, возможнодобавление новых агентов.Отличие от предыдущей схемы в том, что длякаждого отдельного набора данных его модель,представление и управляющий компонентобъединяются в агента, ответственного за всюработу именно с этим набором данных.
Агентывзаимодействуют друг с другом только черезчетко определенную часть интерфейсауправляющих компонентов.Системы наосновехранилищаданныхРепозиторий(repository)Наиболее частоиспользуется припостроенииприложений с GUI.Document-View в MFC(Microsoft FoundationClasses) — документ вэтой схеме объединяетроли данных иобработчика.Основные функции системы связаны схранением, обработкой и представлениембольших количеств данных.Порядок работы определяется только потокомвнешних событий.Выделяется общее хранилище данных —репозиторий.
Каждый обработчик запускается вответ на соответствующее ему событие и как-топреобразует часть данных в репозитории.Среды разработки иCASE-системыСистемы распознаванияКлассная доска Способ решения задачи в целом неизвестен илитекста(blackboard)слишком трудоемок, но известны методы,частично решающие задачу, композиция которыхспособна выдавать приемлемые результаты,возможно добавление новых потребителейданных или обработчиков.Отдельные обработчики запускаются, только еслиданные репозитория для их работы подготовлены.Подготовленность данных определяется спомощью некоторой системы шаблонов. Еслиможно запустить несколько обработчиков,используется система их приоритетов.Таблица 7. Некоторые архитектурные стили.98Многие из представленных стилей носят достаточно общий характер и часто встречаются вразных системах.
Кроме того, часто можно обнаружить, что в одной системе используютсянесколько архитектурных стилей — в одной части преобладает один, в другой — другой, или жеодин стиль используется для выделения крупных подсистем, а другой — для организации болеемелких компонентов в подсистемах.Более подробного рассмотрения заслуживают стили «Каналы и фильтры», «Многоуровневаясистема». Далее следуют их описания согласно [7].Каналы и фильтрыНазвание. Каналы и фильтры (pipes and filters).Назначение. Организация обработки потоков данных в том случае, когда процессобработки распадается на несколько шагов. Эти шаги могут выполняться отдельнымиобработчиками, возможно, реализуемыми разными разработчиками или дажеорганизациями.
При этом нужно принимать во внимание следующие факторы.Действующие силы.• Должны быть возможны изменения в системе за счет добавления новых способовобработки и перекомбинации имеющихся обработчиков, иногда самими конечнымипользователями.• Небольшие шаги обработки проще переиспользовать в различных задачах.• Не являющиеся соседними обработчики не имеют общих данных.• Имеются различные источники входных данных — сетевые соединения, текстовыефайлы, сообщения аппаратных датчиков, базы данных.• Выходные данные могут быть востребованы в различных представлениях.• Явное хранение промежуточных результатов может быть неэффективным, создастмножество временных файлов, может привести к ошибкам, если в его организациюсможет вмешаться пользователь.• Возможно использование параллелизма для более эффективной обработки данных.Решение.
Каждая отдельная задача по обработке данных разбивается на несколько мелкихшагов. Выходные данные одного шага являются входными для других. Каждый шагреализуется специальным компонентом — фильтром (filter). Фильтр потребляет и выдаетданные инкрементально, небольшими порциями. Передача данных между фильтрамиосуществляется по каналам (pipes).Структура. Основными ролями компонентов в рамках данного стиля являются фильтр иканал.
Иногда выделяют специальные виды фильтров — источник данных (data source) ипотребитель данных (data sink), которые, соответственно, только выдают данные илитолько их потребляют. Каждый поток обработки данных состоит из чередующихсяфильтров и каналов, начинается источником данных и заканчивается их потребителем.Фильтр получает на свой вход данные и обрабатывает их, дополняя их результатамиобработки, удаляя какие-то части и трансформируя их в некоторое другое представление.Иногда фильтр сам требует входные данные и выдает выходные по их получении, иногдаон, наоборот, может реагировать на события прихода данных на вход и требования данныхна выходе.