Адаптация программных систем на основе функционального подхода
Рассмотрение проблемы самоадаптации программных систем. Сравнительная классификация подходов к программной адаптации и основные способы реализации адаптивных механизмов. Особенности применения функциональных комбинаторов и аппарата комбинаторной логики.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 14.02.2022 |
Размер файла | 616,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
АДАПТАЦИЯ ПРОГРАММНЫХ СИСТЕМ НА ОСНОВЕ ФУНКЦИОНАЛЬНОГО ПОДХОДА
А.С. Бождай, И.С. Паршин
Аннотация
программный система адаптация комбинатор
Рассматривается проблема самоадаптации программных систем. Приводятся краткая сравнительная классификация подходов к программной адаптации и основные способы реализации адаптивных механизмов, выявляются их недостатки и трудности реализации. Предлагается новый метод аппликативной адаптации, основанный на применении функциональных комбинаторов, аппарата комбинаторной логики и парадигмы функционального программирования.
Ключевые слова: программная самоадаптация, программная инженерия, апликативная самоадаптация, функциональное программирование, комбинаторная логика.
Актуальность работы
Существует отдельный класс программно-аппаратных систем, к которым предъявляются повышенные требования с точки зрения продолжительности жизненного цикла, устойчивости к внешним воздействиям, надежности и функциональной полноты. К таким системам относятся автоматические и автоматизированные системы управления критически важными, сложными и потенциально опасными техногенными объектами, связанными с атомной энергетикой, автономными мобильными комплексами, автопилотируемыми устройствами и т.п. Как правило, управление такими системами происходит в режимах жесткого реального времени, когда нарушение временных ограничений может привести к отказу системы с катастрофическими последствиями. Кроме того, высокая динамика взаимодействия с окружающей средой предъявляет к таким системам требования быстрой адаптации к изменяющимся условиям. Для большинства программ адаптация подразумевает изменения внутренней структуры и функционала. Иными словами, программа должна быть остановлена для внесения необходимых изменений в программный код и структуры данных. Далее после компиляции, отладки и тестирования обновленная версия программы внедряется в эксплуатацию. Этот классический сценарий жизненного цикла оказывается неприменим для систем жесткого реального времени. Иногда такую систему просто невозможно остановить (например, атомную электростанцию или автономный космический модуль). В этом случае единственным выходом является самоадаптация программного обеспечения без перекомпиляции исходного программного кода. При этом программа изначально должна быть спроектирована с учетом необходимости мониторинга внешней среды, самообучения и самомодификации, без последующего вмешательства человека.
Другой сферой применения адаптивных алгоритмов (не столь жесткой в плане технических требований, но гораздо более массовой) является огромный рынок интеллектуальных устройств, «умных» вещей и гаджетов, способных самостоятельно выбирать наиболее оптимальные или экономные режимы функционирования в зависимости от индивидуальных потребностей и привычек своих владельцев. Сама идеология глобальной цифровизации социума подразумевает гибкий индивидуальный подход к каждому его участнику - таргетированная реклама, банковские системы, управление режимами энергоснабжения и потоками электроэнергии, настройка инфраструктуры «умных» домов и городов, автопилотируемый общественный транспорт и многое другое.
Актуальность теоретических и практических работ в этом направлении не вызывает сомнения. В настоящее время применяется несколько подходов, однако все они не лишены определенных недостатков. В данной работе предлагается новый подход, использующий концепцию функционального программирования и аппарат комбинаторной логики.
Краткий обзор адаптивных систем
Адаптация - это процесс структурного и/или параметрического изменения системы, направленный на поиск оптимального состояния или поведения системы в условиях неопределенности и постоянно меняющихся свойств внешней среды. Различают пассивную адаптацию (реакция системы на изменение внешней среды) и активную (изменение среды с целью улучшения критериев эффективности либо активный поиск такой среды, в которой достижимы целевые состояния).
Для анализа текущего состояния объектов управления и внешней среды в адаптивных системах всех типов используются контуры обратной связи. Изменение структуры и функционала самих систем управления также осуществляется через подобные контуры. Иными словами, адаптивная система должна обладать сложной многоконтурной структурой, с наличием обратных связей различного типа, охвата и динамики [1, 2].
В зависимости от способов реализации контролируемых изменений в процессе нормальной эксплуатации системы можно привести следующую классификацию адаптивных систем (рис. 1).
Рис. 1 Классификация адаптивных систем
Самонастраивающаяся система - система, в которой приспособление к изменяющимся условиям обеспечивается автоматическим изменением параметров настройки в заранее заданном диапазоне. При этом структура системы, как правило, остается неизменной. Параметры влияют на показатели устойчивости и качества процессов управления. Поисковые системы вносят пробные изменения в параметры управляющего устройства, контролируя при этом отклик системы на данное изменение. При улучшении управляющих параметров система продолжает изменение параметров управляющего устройства в том же направлении до достижения экстремума целевой функции, при ухудшении качества управления - меняет направление изменения параметров. Беспоисковые системы регулируют управляющие параметры на основе сравнения параметров заданной модели и фактических выходных параметров. Однако при качественном изменении характеристик внешней среды метод параметрической самонастройки оказывается малопригодным.
Самоорганизующаяся система - система, в которой приспособление к изменяющимся условиям или оптимизация процессов управления достигается автоматическим изменением структуры системы управления в заданном вариантном диапазоне. При этом могут включаться или выключаться отдельные ветви алгоритмов, программные модули, сервисы, контуры обратной связи, базы знаний экспертных подсистем, алгоритмы интеллектуального анализа данных. Однако весь диапазон возможных изменений должен быть предусмотрен на этапе проектирования такой системы. В этом скрыт серьезный недостаток. Разработчики и заказчики системы далеко не всегда могут предусмотреть все особенности поведения объектов управления или внешней среды. Кроме того, любые структурные излишества ухудшают показатели надежности системы и повышают сто имость ее разработки и эксплуатации.
Самообучающаяся система - система, алгоритм которой вырабатывается и совершенствуется в процессе самообучения. Система выполняет пробные изменения алгоритма и одновременно контролирует результаты этих изменений. Ключевое значение здесь приобретает предыстория процесса функционирования и взаимодействия с внешней средой. Качество управления зависит от накопленного опыта и его аналитической обработки. Очевидно, что слабым местом данного подхода является сам процесс машинного самообучения - требуется либо длительное время на приобретение такого опыта, либо дорогостоящие сторонние хранилища большого объема данных (построенные на основе опыта функционирования систем подобного класса в схожих условиях). Кроме того, автономные мобильные комплексы далеко не всегда обладают емкостными и вычислительными ресурсами, необходимыми для постоянного накопления и анализа больших объемов данных в реальном режиме времени.
Методы реализации системной адаптации
Для реализации собственного адаптивного поведения программная система должна получать и анализировать информацию из окружающей среды. Реализация такого процесса осложняется совокупностью различных условий, в их числе, например, постоянная изменчивость окружения и неполнота спецификаций на этапе проектирования программного обеспечения.
Агентно-ориентированный подход - один из наиболее популярных при разработке адаптивных стратегий [1, 3]. Под агентом понимается программный объект, обладающий определенными «ментальными» свойствами и автономно функционирующий в общей информационно-вычислительной среде с другими агентами. Агенты обладают определенными целевыми установками и знаниями об окружающей среде. Порождение агентов и управление ими может производиться как человеком, так и другими агентами. Сов окупная, скоординированная деятельность агентов позволяет решать задачи без постоянного человеческого контроля. Традиционными проблемами здесь считаются трудности изначальной спецификации агентов и их динамической адаптации к изменениям окружающей среды, а также необходимость перекомпиляции программного кода при изменении свойств агентов.
Другая группа методов связана с использованием и обучением нейронных сетей. Нейронная сеть представляет собой систему, состоящую из множества простых обрабатывающих элементов (нейронов), которые работают параллельно. Функция этих элементов определяется структурой сети и прочностью связей, а вычисления производятся в самих элементах или узлах. Основные трудности заключены здесь в определении нужной топологии и различных конфигурационных и структурных параметров сети (количество слоев и нейронов, шаблоны связей, выбор оптимальных весов). Отдельный перечень проблем связан с подбором обучающего алгоритма, процедурами обучения сети и обобщением результатов, проблемами размерности [2, 4].
Из других недостатков можно отметить необходимость процедуры обучения сети на больших объемах реальных данных. Из-за их недостоверности или нехватки система после обучения может выдавать неверные данные. Сложность нейросетевой структуры также усугубляет эту проблему (чем сложнее структура, тем больше данных требуется для получения достоверных результатов). Кроме того, встречается ложная корреляция (когда независящие друг от друга объекты ведут себя похоже, поэтому может показаться, что они как-то связаны), из-за чего система также может выдавать некорректные данные.
Аппликативная адаптация и функциональный подход
Ни один из ранее описанных подходов не предусматривает в полной мере возможностей автоматической реорганизации системы в ответ на изменения и создание новых функций поведения. Поэтому в работе предлагается использовать функциональные комбинаторы при разработке адаптивных программных систем. Основное назначение предлагаемого метода - разработка механизма, предоставляющего возможности автоматического добавления, замены и удаления модулей и подсистем без перекомпиляции.
В функциональном программировании есть возможность использования функций высшего порядка в качестве так называемых комбинаторов или объектов первого класса. Такие объекты характеризуются набором свойств, особенно полезных для самоадаптивных систем:
- один объект может быть передан другому объекту как целостная функциональная единица (например, функция может быть целиком передана в другую функцию в качестве аргумента);
- один объект может вернуть другой объект в качестве результата своего функционирования (например, одна функция может создать и вернуть другую функцию);
- программные объекты (функции) могут создаваться «на лету», без перекомпиляции исходного кода программы. Они могут быть переданы в качестве параметров, возвращены из функции или присвоены переменной.
В процессе эксплуатации структура, набор параметров и поведений (которые были заданы на этапе разработки) могут изменяться и дополняться за счёт использования функциональных комбинаторов (описанные функции высшего порядка).
Имея компактный, минимально необходимый набор базовых комбинаторов, программную самоадаптацию можно рассматривать как построение и самомодификацию неограниченно длинных аппликативных цепочек, реализующих функционал любой сложности. Классическая теория комбинаторной логики доказывает достаточность комбинаторного базиса, состоящего всего из двух комбинаторов, для построения аппликативных выражений любой сложности [5, 6]:
- 5 - коннектор или оператор подстановки. Первый и второй аргумент применяются к третьему: 5 х у z = х z (у х).
- К - канцелятор. Функция двух аргументов, отбрасывающая второй аргумент и возвращающая в качестве результата первый аргумент без изменений: К х у = х.
Для сокращения длины аппликативных последовательностей минимальный комбинаторный базис часто дополняют расширенным набором комбинаторов. Например, часто используется так называемый комбинатор тождества (I), представляющий собой простейшую функцию одного аргумента: I х = х.
Функциональная композиция (или процедура абстракции) - это процесс «объединения» комбинаторов (которые являются конструктивными блоками для функциональной программы), позволяющий порождать неограниченно сложные операции, путем последовательного применения одного выражения к другому. В любую программную функцию аргументы могут передаваться только явно, а вычислительный процесс защищен от побочных эффектов.
Предлагается трехуровневая структура адаптивной системы (рис. 2): уровень аппликативных компонентов (АК), уровень управляющего компонента (УК), уровень данных.
Уровень УК состоит из подсистем взаимодействия с внешней средой, включая интерфейсную часть взаимодействия с пользователями, поддержку каналов передачи данных (обмен данными с другими программно-аппаратными комплексами, организацию связи с резервными хранилищами данных, обработку входных и выходных потоков данных), мониторинг внешней среды (сбор и анализ ключевых параметров состояния внешней среды, сбор неструктурированных потоков данных).
Кроме того, уровень УК отвечает за организацию контуров обратной связи между аппликативными компонентами и внешней средой.
Уровень АК состоит из трех групп аппликативных программных компонентов, реализующих интерфейсные и поведенческие функции, а также функции управления структурами данных. Каждый из АК имеет собственный комбинаторный базис и блок реализации абстракций, с помощью которого комбинаторы выстраиваются в аппликативные цепочки для выполнения непосредственных программных функций. Именно блок реализации абстракций является основой самоадаптивного поведения программы, позволяя изменять функциональный арсенал системы, ее интерфейсное представление и, что немаловажно, внутренние структуры данных. Адаптация внутренних структур данных программы - важнейшее преимущество аппликативного подхода, поскольку именно структуры данных в конечном итоге определяют текущий функционально-поведенческий облик системы.
Рис. 2 Уровни аппликативной адаптивной системы
Для возможности полноценной структурной адаптации данных предусмотрен третий уровень системы - уровень данных, обеспечивающий возможность хранения неструктурированного массива данных. При этом отдельная группа АК отвечает за адаптацию структур данных, наполняя их контентом из неструктурированных массивов (для каждого текущего функционального набора системы).
Таким образом, основная цель на уровне АК - воспроизведение собственного программного кода с учетом новых свойств, обнаруженных при взаимодействии с внешней средой и/или с пользователем. Изменение аппликативных цепочек происходит в случае наступления такого внешнего события, задачи, которая не может быть решена текущим сочетанием комбинаторов. Для управления этими процессами на управляющем уровне предлагается использовать специальный императивный метаязык программирования, включающий набор команд для блоков реализации абстракций на аппликативном уровне (например, «воспроизвести аппликативный компонент с новыми свойствами», «воспроизвести группу аппликативных компонентов», «удалить аппликативный компонент», «изменить комбинаторный базис компонента» и др.). Важной особенностью является то, что воспроизведение аппликативных компонентов осуществляется не за счет изменения их состояния, а путем уничтожения и создания компонента с измененными свойствами.
Предлагаемая структура обеспечивает, с одной стороны, непрерывное (т.е. безостановочное) функционирование внешнего каркаса программной системы на уровне УК, а с другой стороны, неограниченное самоизменение внутренних компонентов на уровне АК и структур данных под воздействием внешней среды и потока поступающих задач. На рис. 3 показана диаграмма последовательности процесса отображения аппликативного компонента г в компонент 1 - 1.
Рис. 3 Диаграмма последовательности процесса самоадаптации аппликативного компонента
При поступлении очередной типовой задачи компонент АК; и АК ; - 1 возвращает код отказа по причине, например, некоторого смещения граничных условий задачи, произошедшего из-за изменения состояния внешней среды. С уровня УК компоненту поступает команда на самоизменение с указанием новых граничных условий задачи. Компонент отображает себя в новый компонент АК; - 1 (возвращает свой собственный программный код с некоторыми изменениями согласно поступившим спецификациям). После этого поступает команда на удаление устаревшего компонента AK;. Новый компонент АК; - 1 получает от управляющего контура задачу и возвращает результат ее решения.
Заключение
Основным результатом работы является предложенная концепция аппликативной самоадаптации программных систем на основе аппарата комбинаторной логики и парадигмы функционального программирования. Рассмотрены вариант трехуровневой структуры адаптивной системы и пример диаграммы последовательности процесса самоадаптации программных компонентов. Основным достоинством предложенного решения является возможность автоматической реорганизации системы в ответ на изменения внешней среды или пользовательской активности. В процессе эксплуатации набор программных функций, системных связей, внутренних структур данных могут изменяться за счёт комбинаторных свойств самоотображения «на лету» без необходимости перекомпиляции исходного программного кода, т.е. без общей остановки системы. Предлагаемое решение имеет несомненную актуальность и огромный потенциал применения в системах управления критически важными техногенными объектами, автономными мобильными комплексами, «умными» самонастраивающимися гаджетами и устройствами.
Библиографический список
1. Бождай, А. С. Метод рефлексивной самоадаптации программных систем / А. С. Бождай, Ю. И. Евсеева // Известия высших учебных заведений. Поволжский регион. Технические науки. 2018. № 2 (46). С. 74-86.
2. Бершадский, А. М. Разработка метода самоадаптации прикладной программной системы на основе технологии машинного обучения / А. М. Бершадский, А. С. Бождай, Ю. И. Евсеева, А. А. Гудков // Моделирование, оптимизация и информационные технологии. 2019. Т. 7, № 4. C. 1-10.
3. Shoham, Y. Agent Oriented Programming. Technical Report STAN-CS-90-1335 / Y. Shoham. Stanford: Computer Science Department, Stanford University, 1990.
4. DARPA Neural Network Study. AFCEA International Press, 1988. P. 60. URL: https://studyres.com
5. Вольфенгаген, В. Аппликативные вычисления на основе комбинаторов и лямбда-исчисления / В. Вольфенгаген, Л. Гольцева, Л. Исмаилова. Москва: Институт актуального образования, 2000. 55 с.
6. Turner, D. A. A new implementation technique for applicative languages / D. A. Turner // Software - Practice and Experience. 1979. № 9. P. 21-49.
Размещено на Allbest.ru
...Подобные документы
Объектный подход как метод реализации программных систем. Проектирование и программная реализация стратегической системы, реализующей процессы создания и взаимодействия группы объектов. Разработка объектной модели. Назначение элементов интерфейса.
курсовая работа [4,1 M], добавлен 11.05.2012Программная и техническая характеристика информационных систем предприятия. Требования к информационной и программной совместимости. Проектирование программного обеспечения с использованием специализированных программных пакетов. Разработка базы данных.
отчет по практике [1,3 M], добавлен 11.04.2019Особенности документирования программных средств, стадии разработки продуктов. Классификация обеспечивающего пакета документов. Сущность и основные недостатки Единой системы программной документации. Классификация стандартов, Гост 19.102-77 ЕСПД.
презентация [64,8 K], добавлен 22.03.2014Понятие CASE-средств как программных средств, которые поддерживают процессы создания и сопровождения информационных систем (ИС). Особенности IDEF-технологии разработки ИС. Описание нотации IDEF0. Разработка функциональных моделей бизнес-процесса.
презентация [399,8 K], добавлен 07.04.2013Жизненный цикл информационных систем. Процессы документирования и управления конфигурацией. Использование каскадного и спирального подходов к построению ИС. Их преимущества и недостатки. Процесс разработки программного обеспечения по каскадной схеме.
презентация [350,6 K], добавлен 09.11.2015Агентно-ориентированная программная архитектура систем обработки потоковых данных. Обеспечение гибкости и живучести программного обеспечения распределенных информационно-управляющих систем. Спецификации программных комплексов распределенной обработки.
реферат [1,1 M], добавлен 28.11.2015Основные направления в истории развития компьютерной индустрии. Специфика информационных программных систем. Основные задачи информационных систем. Классификация архитектур информационных приложений. Файл-серверные и клиент-серверные приложения.
презентация [110,8 K], добавлен 11.04.2013Анализ тенденций развития информационных технологий. Назначение и цели применения систем автоматизированного проектирования на основе системного подхода. Методы обеспечения автоматизации выполнения проектных работ на примере ЗАО "ПКП "Теплый дом".
курсовая работа [210,0 K], добавлен 11.09.2010Роль использования типовых программных компонентов в системах управления предприятиями. Классификация, состав и виды информационных бизнес-систем: интерактивные электронные технические руководства (ИЭТР) в управлении бизнесом, основные понятия ИЭТР.
дипломная работа [79,2 K], добавлен 16.06.2012Объектно-ориентированные языки моделирования. Разработка различных альтернативных подходов к анализу и проектированию. Взаимосвязь концептуальных и программных понятий. Проблемы масштабирования сложных систем. Диаграммы, описывающие поведение системы.
лабораторная работа [159,4 K], добавлен 26.05.2014Эффективность применения объектного подхода для программных систем. Детальное проектирование и реализация системы, реализующей процессы создания и взаимодействия объектов. Распознавание компьютером печатных букв с помощью многослойной нейронной сети.
курсовая работа [38,0 K], добавлен 09.03.2009Изучение методов разработки систем управления на основе аппарата нечеткой логики и нейронных сетей. Емкость с двумя клапанами с целью установки заданного уровня жидкости и построение нескольких типов регуляторов. Проведение сравнительного анализа.
курсовая работа [322,5 K], добавлен 14.03.2009Описание комплекса программных модулей, предназначенного для повышения эффективности аппаратных ресурсов компьютера. Характеристика компонентов сетевых и распределенных операционных систем. Модели сетевых служб. Способы разделения приложений на части.
презентация [1,4 M], добавлен 10.11.2013Теоретико-методологические основы моделирования интеграционных экспертных систем. Направления повышения эффективности адаптивных систем обнаружения сетевых аномалий. Математическая реализация модели адаптивных систем обнаружения сетевых аномалий.
дипломная работа [5,1 M], добавлен 03.01.2023Понятие и эволюция игр, анализ их различных жанров и существующих аналогов. Выбор программных средств для реализации игры, написание сюжета и выбор среды разработки игры. Алгоритмы для придания гибкости обучающей игре. Описание программных модулей.
дипломная работа [2,7 M], добавлен 27.10.2017Характеристика, классификация и варианты применения ложных информационных систем, служащих для реализации механизмов введения в заблуждение злоумышленника с целью затруднения и препятствовании атакам. Алгоритм эмуляции файловых ресурсов и узлов ИВС.
дипломная работа [2,7 M], добавлен 21.12.2012Разработка общей структуры проектируемого сайта. Выбор программных и аппаратных средств для реализации поставленной задачи. Описание дизайна будущего сайта. Рассмотрение основ регистрации, правил построения программной и эксплуатационной документации.
курсовая работа [5,3 M], добавлен 31.07.2014Структурные подразделения и отделы организации, ее технические программные средства. Разработка приложений обработки данных на ассемблере, языке программирования высокого уровня. Тестирование и оптимизация программных модулей. Разработка документации.
отчет по практике [175,0 K], добавлен 30.09.2022Инструментальные средства проектирования интеллектуальных систем. Анализ традиционных языков программирования и представления знаний. Использование интегрированной инструментальной среды G2 для создания интеллектуальных систем реального времени.
контрольная работа [548,3 K], добавлен 18.05.2019Проблемы и тенденции проектирования операционных систем, структура ОС. Руководящие принципы при разработке интерфейса. Парадигмы пользователя, исполнения и данных. Примеры применения ортогональности и связывания. Методы практической реализации систем.
реферат [60,9 K], добавлен 26.01.2011