Анализ применения конвейерной архитектуры для реструктуризации и валидации данных
Статья содержит анализ применения конвейерной архитектуры для проектирования современного программного обеспечения. Рассматриваются достоинства и недостатки применения каналов и фильтров. Приводятся рекомендации автора по применению такой архитектуры.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 23.01.2021 |
Размер файла | 125,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Анализ применения конвейерной архитектуры для реструктуризации и валидации данных
Волкова К.А., студент магистратуры 3 курс, факультет заочного обучения Поволжский государственный университет телекоммуникаций и информатики Россия, г. Самара
Научный руководитель: Захарова О.И.
Аннотации
Статья содержит анализ применения конвейерной архитектуры для проектирования современного ПО. Рассматриваются достоинства и недостатки применения каналов и фильтров. Приводятся рекомендации по применению такой архитектуры.
Ключевые слова: архитектура ПО, конвейерная архитектура, архитектура фильтров и каналов, интеграция, реструктуризация данных.
Annotation: The article contains an analysis of the use of the pipeline architecture for the design of modern software. The advantages and disadvantages of using channels and filters are considered. Recommendations on the use of such an architecture are given. фильтр программный архитектура
Key words: software architecture, pipeline architecture, filter and channel architecture, integration, data restructuring.
На сегодняшний день глобальная сеть интернет располагает таким количеством информации, которое практически невозможно охватить простому человеку. Десятки и сотни сервисов представляют информацию о товарах и услугах - их стоимость, характеристики, оценки пользователей и клиентов, мнение экспертов. Потенциальные пользователи в зависимости от своих приоритетов хотят получить товар или услугу максимально дешево, максимально качественно, максимально быстро. Они не хотят тратить время на самостоятельный поиск наиболее оптимального варианта. В силу этого наблюдается тенденция к росту количества сервисов-агрегаторов.
Интеграция сразу с несколькими источниками влечёт за собой ряд сложностей. Различные источники хранят и представляют информацию по- своему. Например, информация из одного источника поступает в формате xml, а из другого - в виде json. Одна и та же информация могла храниться в источниках в разном виде, например, дата может быть представлена цифровым способом или словесно-цифровым, могут быть использованы разные разделители или другой порядок следования числа, месяца и года. Одни и те же сведения могут быть представлены различными типами данных. При попытке обработать разнородные данные одним способом наверняка будут получены ошибки. Для того чтобы работать с данными из нескольких источников может потребоваться инициация целой серии этапов обработки.
Можно создать модуль обработки входящих сообщений, выполняющий все необходимые преобразования. Однако подобный подход не удовлетворяет требованию гибкости и усложняет тестирование. Реализация всех функций в одном компоненте снижает возможность его повторного использования. Напротив, создание небольших, узкоспециализированных компонентов существенно повышает гибкость решения [12].
Для разделения сложной вычислительной задачи на последовательность простых, независимых этапов удобно использовать архитектуру каналов и фильтров (англ. Pipes and Filters). Данные преобразуются из одной формы в другую с использованием различных типов операций. Конвейерная архитектура включает в себя 2 типа независимых объектов - фильтры, которые выполняют преобразования входных данных, и каналы, которые соединяют потоки преобразовываемых данных.
Для аналогии можно представить воду, протекающую через трубы и фильтры. Трубы доставляют воду из одного места в другое, а фильтры каким - то образом её преобразовывают. Например, вода может пройти через два фильтра, прежде чем попасть к пользователю: один фильтр очищает воду от любых загрязнений, а другой нагревает её. В итоге человек получает чистую и горячую воду.
Рассмотрим простую диаграмму, для демонстрирования функционирования архитектуры канала и фильтра (рис. 1).
Рисунок 1. Схема функционирования архитектуры каналов и фильтров
Как видно на диаграмме, данные передаются в одном направлении. Он начинается с источника данных, затем перемещается сквозь цепочку каналов и фильтров, а затем, в конце концов, попадает к получателю данных. Изменения в данных выполняются последовательно от фильтра к фильтру. Каждый канал передает выходные данные одного фильтра в качестве входных данных для следующего фильтра. Каждый фильтр выполняет свое локальное преобразование входных данных, полученных от предыдущего канала, а затем отправляет вывод на следующий канал.
Следует отметить, что порядок, в котором фильтры преобразуют данные, может повлиять на конечный результат. В предыдущем примере с водой порядок не имел значения. Вода всегда будет выходить горячей и чистой. Однако, например, в математике порядок операций сложения или умножения в математическом выражении изменяет конечный результат. Это похоже на то, как порядок может повлиять на результат в архитектуре канала и фильтра.
Конвейерная архитектура обладает следующими достоинствами:
1. Поддержка принципов "Низкая связанность" и "Высокое зацепление" (англ. Low Coupling & High Cohesion). Каждый фильтр работает независимо от других фильтров, концентрируясь только на своих входных и выходных данных, что позволяет легко добавлять новые фильтры или перемещать их в системе для достижения разных результатов. Кроме того, слабая связь позволяет легко вносить изменения в отдельные фильтры, не затрагивая другие фильтры в системе. Это очень важно для разработки быстро меняющихся систем [13].
2. Фильтры можно рассматривать как черные ящики. Пользователям системы не нужно знать внутреннюю работу каждого фильтра. Таким образом, они могут просто использовать фильтр для преобразования различных наборов данных и не беспокоиться о знании логики этого преобразования.
3. Возможность повторного использования. Каждый фильтр можно вызывать и использовать снова и снова с разными входными данными. Фильтры могут многократно использоваться в разных приложениях для разных целей.
4. Составляющие конвейер фильтры могут выполняться на разных компьютерах, что позволяет масштабировать их независимо друг от друга и использовать возможности эластичности, которые предоставляются в большинстве облачных сред. Ресурсоемкие фильтры могут выполняться на оборудовании с высоким уровнем производительности, а другие, менее ресурсоемкие, могут размещаться на более дешевом стандартном оборудовании. Фильтры не должны находиться в одном центре обработки данных или географическом расположении. Это позволит каждому элементу в конвейере работать в среде, близкой к необходимым ресурсам [14].
5. Возможность выполнения обработки для каждого фильтра в параллельном режиме, если входные и выходные данные фильтра структурированы в виде потока. Первый фильтр в конвейере может начать свою работу и вернуть результаты, которые непосредственно передаются следующему фильтру в последовательности, прежде чем первый фильтр завершит свою работу.
6. Устойчивость. Если произойдет сбой фильтра или компьютер, на котором он выполняется, станет недоступен, конвейер позволит перепланировать операции, выполняемые фильтром и передать их другому экземпляру компонента. Сбой одного фильтра не обязательно приводит к сбою всего конвейера.
Тем не менее, у такой архитектуры есть несколько недостатков:
1. Снижение производительности из-за чрезмерных издержек в фильтрах. Каждый фильтр получает входные данные, анализирует их, выполняет преобразования и затем передаёт данные. Следующий фильтр будет делать то же самое - анализировать входные данные, преобразовывать и отправлять результат в другой фильтр, который также будет делать то же самое. Подобный синтаксический анализ приводит к росту накладных расходов. По мере добавления всё большего количества фильтров производительность системы будет быстро снижаться. Кроме того, эта архитектура может привести к перегрузке фильтров огромными объемами данных для обработки. В то время как один фильтр усердно работает над обработкой большого количества данных, другие фильтры могут голодать в ожидании своих входных данных. [13]
2. Использование большого числа каналов. Следует помнить, что реализация канала предполагает расходование ресурсов памяти и процессора.
3. Не может использоваться для интерактивных приложений. Передача и преобразование данных займет время в зависимости от объема передаваемых данных. Таким образом, этот тип архитектуры не подходит для приложений, которые требуют быстрых ответов [14].
Взаимодействие между компонентами рекомендуется реализовать с помощью асинхронного обмена сообщениями. В этом случае компонент сможет отправить сообщение другому компоненту, не дожидаясь от него ответа. Использование асинхронного обмена сообщениями позволит организовать одновременную обработку нескольких сообщений, по одному на каждый компонент. По сравнению с последовательной обработкой сообщений конвейерная обработка существенно повышает пропускную способность системы. [12]
Несмотря на вышеперечисленные недостатки, многие преимущества использования архитектуры конвейеров и фильтров делают ее очень популярной во многих системах. Простота и эффективность каналов и фильтров завоевала этой архитектуре огромную популярность, а несложная семантика позволила описать ее формальными методами. Когда вам необходимо по-разному манипулировать различными наборами данных, вам следует рассмотреть возможность использования архитектуры. Разбиение системы на фильтры и каналы может обеспечить большее повторное использование, уменьшить связность и обеспечить большую гибкость в вашей системе.
Использованные источники
1. Хоп, Г. Шаблоны интеграции корпоративных приложений / Г. Хоп, Б. Вульф.-- М.: ООО "И.Д. Вильямс", 2007.-- 672 с.
2. Garlan, D. An Introduction to Software Architecture / D. Garlan, M. Shaw.-- School of Computer Science Carnegie Mellon University, 1994.-- 39 с.
3. Шаблон каналов и фильтров. [Электронный ресурс]. URL: https://docs.microsoft.com/ru-ru/azure/architecture/patterns/pipes-and-filters (дата обращения: 15.12.2018).
Размещено на Allbest.ru
...Подобные документы
Понятие архитектуры программного обеспечения (ПО). Характеристика этапов процесса проектирования и его окончательный продукт. Языки описания и виды архитектуры ПО, базовые фреймворки. Функции разработчика архитектуры ПО и необходимые ему навыки работы.
реферат [85,0 K], добавлен 15.02.2014Архитектура предприятия как инструмент управления изменениями. Проектирование архитектуры данных по TOGAF. Описание потоков и источников данных. Синхронизация данных по времени. Описание этапов и рекомендации по использованию инструментов проектирования.
дипломная работа [2,8 M], добавлен 09.09.2017Исследование технологии проектирования базы данных. Локальные и удаленные базы данных. Архитектуры и типы сетей. Программная разработка информационной структуры предметной области. Обоснование выбора архитектуры "клиент-сервер" и операционной системы.
дипломная работа [1,1 M], добавлен 15.02.2017Ознакомление с проблемами реализации сервис-ориентированной архитектуры предприятия. Анализ активных элементов бизнес-архитектуры. Рассмотрение инструментов реализации языка ArchiMate в программном средстве Archi. Исследование мотивационных концепций.
курсовая работа [2,0 M], добавлен 25.08.2017Выбор и обоснование аппаратного обеспечения. Типы архитектуры веб-приложений. Шаблоны проектирования архитектуры приложения. Разработка инфологической модели базы данных. Подготовка к разработке приложения. Рассмотрение причин возникновения паттернов.
дипломная работа [3,0 M], добавлен 27.11.2022Архитектуры вычислительных систем сосредоточенной обработки информации. Архитектуры многопроцессорных вычислительных систем. Классификация и разновидности компьютеров по сферам применения. Особенности функциональной организации персонального компьютера.
контрольная работа [910,2 K], добавлен 11.11.2010Описания программного продукта компании 1С, предназначенного для быстрой разработки прикладных решений. Исследование типов архитектур построения баз данных. Технология с сетью и файловым сервером. Анализ особенностей трехзвенной архитектуры клиент-сервер.
курсовая работа [401,4 K], добавлен 12.01.2015Предпроектный анализ объекта автоматизации. Описание потоков данных и бизнес процессов. Обзор и анализ существующих проектных решений, их достоинства и недостатки. Разработка концепции архитектуры построения. Основные рекомендации по рисованию программ.
курсовая работа [2,8 M], добавлен 13.03.2015Основные составляющие информационной технологии. Классические принципы построения архитектуры ЭВМ. Принцип последовательного выполнения операций. Перспективы применения экспертных систем в землеустроительных системах автоматизированного проектирования.
контрольная работа [13,8 K], добавлен 13.11.2012Способы применения нейронных сетей для решения различных математических и логических задач. Принципы архитектуры их построения и цели работы программных комплексов. Основные достоинства и недостатки каждой из них. Пример рекуррентной сети Элмана.
курсовая работа [377,4 K], добавлен 26.02.2015Области применения быстрых вычислений. Проблемы эффективности последовательных и параллельных программ. Отображение циклов с условными операторами на асинхронные архитектуры. Рассмотрение исследовательских университетских распараллеливающих систем.
презентация [833,3 K], добавлен 07.08.2015Элементы и классификация компьютеров. Представление информации, устройства ввода и вывода. Специфика программного обеспечения и организация файлов на дисках. Программно-методический комплекс для изучения архитектуры ЭВМ на базе учебной модели "Нейман".
курсовая работа [253,3 K], добавлен 23.04.2011Исследование эволюции, типов операционной системы и архитектуры компьютерных сетей. Теоретические основы применения информационных технологий в экономике. Описание и область применения автоматизированной информационной системы предприятия 1С: Бухгалтерия.
реферат [123,8 K], добавлен 25.12.2010Понятие базы данных, ее архитектура. Классификация баз данных. Основные модели данных. Примеры структурированных и неструктурированных данных. Достоинства и недостатки архитектуры файл-сервер. Иерархическая модель данных. Виды индексов, нормализация.
презентация [1,4 M], добавлен 06.08.2014Модель этапа пост-архитектуры. Предварительная оценка программного проекта на основе LOC-метрик. Расчет затрат на разработку ПО. Стоимость, длительность разработки проекта на основе модели этапа пост-архитектуры конструктивной модели стоимости СОСОМО II.
курсовая работа [89,9 K], добавлен 29.09.2009Проектирование информационной системы на основе архитектуры "файл-сервер", "клиент-сервер", многоуровневой архитектуры, Intranet-системы. Преимущества и недостатки файл-серверного подхода при обеспечении многопользовательского доступа к базе данных.
лабораторная работа [220,5 K], добавлен 02.02.2015Особенности проектирования информационной системы при моделировании работы справочной системы, содержащей следящие поля (наименования, характеристики, размеры). Проектирование UML-диаграммы, алгоритм разработки архитектуры программного обеспечения.
курсовая работа [449,8 K], добавлен 26.05.2016Обзор архитектуры СУБД SQL Server. Описание и анализ областей применения средств бизнес-аналитики, таких как многомерный анализ данных и интеллектуальный анализ данных. Обзор языковых средств, методов и экспериментальное применение полученных сведений.
дипломная работа [2,2 M], добавлен 09.07.2014Комплексные характеристики возможностей микропроцессора, базовая структура системы. Понятие архитектуры микропроцессора. Классификации микропроцессоров по типу архитектуры. Особенности программного и микропрограммного управления, режимы адресации.
реферат [100,7 K], добавлен 20.09.2009Понятие и внутренняя структура, стадии и объекты процесса проектирования баз данных. Требования, предъявляемые к данному процессу. Ограниченность реляционной модели. Группы CASE-средств. Анализ предметной области: функциональный и объектный подходы.
презентация [114,6 K], добавлен 19.08.2013