В последнее время наша жизнь становится всё более насыщенной различными технологиями. Рост программного обеспечения оказывает огромное влияние на жизнь и развитие общества. Программные продукты стали уже сейчас неотъемлемой частью нашей жизни [1-3]. В связи с этим проблемы, возникающие в процессе создания программного обеспечения, связанные с усложнением их структуры, не могут остаться без нашего внимания. В связи с этим возникла острая необходимость в упрощении и правильном распределении нагрузки на информационные системы [4]. Решение проблемы учёные неожиданно обнаружили, заметив, что структуры программного обеспечения и естественных экосистем во многом схожи. Данную аналогию в своих работах проводит Мануэль Кастельса. Вследствие этого появился термин «экологический подход». Под ним подразумевают методологию исследований программного обеспечения, как целой (системной) части окружающей среды, рассматриваемой в форме экосистемы, с учетом устойчивого развития [6]. Существует несколько направлений применения экологического подхода в исследованиях программного обеспечения. Одно из них рассматривает программное обеспечение как часть цифровой экосистемы. Другие связаны с реализацией ресурсосберегающих и безотходных производств программного обеспечения. Третьи связаны с применением общих принципов и требований экологичности производства к программному обеспечению [9].
Под понятием цифровой экосистемы понимают распределенную, адаптивную, открытую социально-техническую систему со свойствами самоорганизации и устойчивости, основанной на природных экосистемах. Цифровые экосистемные модели основаны на естественных экосистемах, особенно они схожи в отношении аспектов, связанных с конкуренцией и сотрудничеством между различными субъектами [8]. С термином цифровые экосистемы знакома не только программная инженерия, но и другие отрасли человеческой деятельности. Широкое применение цифровые экосистемы нашли в бизнесе и экономике. В каждом из них цифровые экосистемы активно помогают и упрощают решение проблем, возникающих по ходу работы людей. Например, в бизнесе экосистема вводит четкие принципы технического и рыночного поведения. Так же экосистемы решают вопросы безопасности и предлагают комплексные решения возникающих проблем. Они вносят четкость, релевантность в отношения между автоматизированными системами и экономическими субъектами.
Среди сложноорганизованных моделей цифровые экосистемы имеют преимущества, так как обладают потенциалом для динамической адаптивной самоорганизации. Но чтобы цифровые экосистемы были наиболее полезны, они должны решать задачи с конкретно поставленной целью. Цифровая экосистема описывает ситуацию в мире компьютерных программ, где на базе компьютерной сетевой инфраструктуры происходит взаимодействие и взаимное использование программных агентов [5]. Агенты - это такие программы-посредники между другими программами или пользователями. Они способны принимать сообщения, интерпретировать их содержание и формировать новые, которые отправляются либо другим агентам, либо в общую базу. Смысл применения агентов заключается в их самостоятельности. Кроме этого они обладают следующими свойствами:
- живучесть (самостоятельность кода, которая позволяет ему решать проблемы без вмешательства кого-либо)
- автономность (способность агента самостоятельно выбирать приоритетные задачи, а также принимать решения без участия человека)
- социальное поведение (агенты могут координировать с другими компонентами и решать задачи сообща)
- реактивность (агенты могут своевременно реагировать на изменившиеся условия в среде, где они работают)
- наличие информации о себе, других агентах и окружающей среде
В естественной среде между особями идёт постоянная внутривидовая и межвидовая борьба, которая является движущей силой отбора наиболее приспособленных особей. Подобный процесс происходит и между программными агентами. Благодаря этому отбору происходит эволюция компьютерных программ. Агенты в цифровой экосистеме подобны биологическим существам, так как они изменяются, размножаются, взаимодействуют с другими агентами и программным обеспечением и умирают. Эти свойства благотворно влияют на динамику экосистемы.
При классификации агентных программ пользуются двумя основными признаками: уровень развития представления о внешнем мире и способ принятия решения. На основе данных признаков выделяют следующие виды агентов:
- простой рефлексный агент (выбор действия основывается на текущем восприятии состояния среды)
- агент, учитывающий внутреннее состояние (отслеживает текущее состояние среды и сопоставляет его с прежним внутренним состоянием, на основе этого совершает действие)
- агент, действующий на основе целей (отслеживает состояние среды и множество целей, после чего выбирает действие, направленное на их достижение)
- агент, основанный на полезности (выбор действия агента зависит от степени полезности)
- обучающийся агент (изменение действий агента для его более успешной работы)
Чаще всего при моделировании сложных цифровых экосистем используют многоагентные системы. Многоагентной системой или мультиагентной системой называют систему, состоящую из нескольких агентов, взаимодействующих между собой [8]. Взаимодействие агентов между собой является отличительной чертой многоагентных систем. Существует несколько базовых видов взаимодействия между агентами, к ним относятся: кооперация (сотрудничество), конформизм (отказ от своих интересов в пользу других), конкуренция (конфликт), компромисс (учёт интересов других агентов). Важнейшими характеристиками взаимодействия агентов между собой являются:
- избирательность (взаимодействуют только те агенты, которые соответствуют друг другу и поставленной задаче)
- направленность (отрицательная или положительная)
- динамичность (направленность и интенсивность взаимодействий меняется с течением времени)
- интенсивность (взаимодействие между агентами характеризуется определенной силой)
Использование мультиагентных технологий обеспечивает автономность отдельных частей программы, которые функционируют совместно в распределенной системе, где одновременно протекает большое количество взаимосвязанных процессов. Примерами задач, которые решаются при помощи многоагентных систем являются: управление информационными потоками и сетями, поиск информации в интернете, управление воздушным движением и другое.
Экосистемы программного обеспечения можно представить в виде двух моделей: холистической и мерологической. Обе эти модели позволяют выделить ряд свойств характерных для программного обеспечения. Важной задачей при построении моделей является выбор сущностей для обмена между элементами системы. Особенностью холистической модели является то, что она представляет собой обобщенную схему экосистемы, в которой отсутствуют подробности. Можно сказать, что она характеризует экосистему программного обеспечения в целом. Благодаря виду на экосистему снаружи, а не изнутри, можно понять, где располагаются её границы. Зная это, можно определить размер экосистемы и взаимосвязи цифровой экосистемы со средой. Мерологическая модель показывает элементы экосистемы программного обеспечения и взаимодействие между ними. В отличие от холистической модели она характеризует экосистему изнутри, подробно рассматривая её структуру. Данная модель весьма полезна при изучении экосистем, так как обладает свойствами, которые могут описывать состав и количество элементов, интенсивность взаимодействия между элементами [7].
Существует много примеров цифровых экосистем программной инженерии. Одним из них является цифровая экосистема, реализующая идею электронного правительства - eGaaS (Electronic Government as a Service). EGaaS является единой, цельной, многокомпонентной экосистемой. В её состав входят различные сферы деятельностей государства. Поэтому в сумме она даёт полную картину о ситуации внутри государства. Этими сферами являются 4 института: власти, социальной сферы, экономики и финансов. В основе экосистемы eGaaS заложена технология блокчейн.
В наши дни блокчейн - весьма популярная система построения информации. Благодаря блокчейну можно избавиться от посредников при отправлении различных важных данных друг другу. Несомненно, это один из важных факторов, из - за которых данная система стала столь популярна. Технология блокчейн повсеместно используется во многих областях человеческой деятельности, таких как различные операции с финансами и недвижимостью, все виды страхований, регистрация браков и многих других.
В цифровой экосистеме eGaaS блокчейн используется из-за его плюсов, таких как высокий уровень защиты хранения данных, а также существующей истории всех проводимых пользователями операций с сохранением субъектов, производящих эти операции. Также во время работы цифровая экосистема eGaaS может работать без перебоев, так как на каждом узле одноранговой сести eGaaS содержится полная копия блокчейна, а следовательно сеть может продолжать свою работу до тех пор, пока жизнеспособен хотя бы один узел сети. Кроме этих плюсов блокчейн стал столь популярен благодаря другим своим особенностям:
- Он позволяет в большей степени пренебречь затратами, которые возникают по причине заключения контрактов.
- Стало возможным значительно сэкономить время на проведение сделок. Раньше на это отводилось более чем несколько дней, так как на различные проверки документов требовалось некоторое время, теперь это стало возможным реализовать всего за несколько часов.
- Благодаря блокчейну у организаций и учреждений появилась возможность сократить свои расходы. По крайней мере, избавиться от части из них, что весьма выгодно для них.
Итак, цифровые экосистемы играют на сегодняшний день важную роль не только в разработке программного обеспечения, но и в других сферах деятельности. Данная структура позволяет правильно организовать и значительно облегчить решение возникающих проблем. Задача создания новых креативных методов решения проблем информационного характера на сегодняшний день стала одной из актуальных в современном обществе. Цифровые экосистемы играют важную роль не только в разработке программного обеспечения, но и в других сферах деятельности. Данная структура позволяет правильно организовать и значительно облегчить решение возникающих проблем.