Цифровая экосреда – бесшовная цифровая среда, в которой представлены собственные и партнерские сервисы. Как правило она представляет из себя открытую, адаптивную, распределенную социально-техническую систему, обладающую свойствами самоорганизации, масштабируемости и устойчивости, заимствованными из природных экосред. Модели цифровых экосред основаны на знаниях о природе, особенно в отношении аспектов, связанных с конкуренцией и сотрудничеством между различными организациями.
В 2018 году в Российской Федерации началась реализация национального проекта «Цифровая экономика». В рамках выполнения этапов проекта значительное развитие получил портал «ГосУслуги», включивший в себя дополнительные сервисы. Следующим серьезным шагом к цифровизации стало поручение Президента Российской Федерации, требующее внедрения стратегии цифровой трансформации ряда отраслей экономики, госуправления и социальной сферы, импортозамещения программного обеспечения и программно-аппаратных комплексов. На основе требований поручения, субъектами РФ разработаны региональные планы цифрового развития, в которые вошли следующие ключевые направления:
- образование;
- развитие городской среды;
- здравоохранение;
- транспорт;
- социальная сфера;
- государственное управление.
Примером региональной цифровой экосреды является приложение «Моя Москва». Более 3 миллионов активных пользователей обращаются к услугам сервисов около 10 миллионов раз. Пользователям доступны сервисы для облегчения повседневной жизни:
- информация об успеваемости, домашнем задании, питании, расписании занятий и посещаемости школьника;
- запись на вакцинацию или к профильному медицинскому специалисту;
- оплата коммунальных услуг, штрафов, парковок, детских кружков;
- консультация с оператором по сложным вопросам;
- передача показаний счетчиков;
- новости района и всего города;
- голосовой помощник;
- благотворительные программы;
- проверка истории автомобиля;
Все это говорит о направлении вектора развития в сторону создания цифровой экосреды государственного сектора, на что направлены значительные средства (рисунок 1).
Рис. Цифровая трансформация в Российской Федерации
В частном секторе экономики можно выделить цифровые экосреды: Сбер, МТС, VK и Яндекс, развитие которых приближается к мировому уровню. Это уже не просто цифровые платформы или набор микросервисов, а бесшовная цифровая среда, в которой представлены различные сервисы компаний. Экосреды работают в следующих сегментах: цифровой контент, телекоммуникации, финансы, E-commerce, здоровье, образование, технологии, еда, мобильность, физическая розница (таблица).
Таблица
Сегменты цифровой экосреды
| ||||
Контент |
Оkkо, CберЗвук, Рaмблер Медиа |
Kion, МТC Music, Библиотека, WАSD.tv |
ЯндекcПоиск, Кинопоиcк |
Mail.ru, MyGаmes, Вконтакте, Одноклассники, МойMup@Mаil.ru |
Образование |
СберКлacc Просвещение Рабoтa.ру |
YоuDо |
Яндекc.Учебник, Академия Яндекса, Яндекc.Прaктикум |
SkillBox, GeekBrains, SkillFaсtory, Mentorama, «Учи.ру», «Сферум» |
E-commerce |
CберМaркет, ДoмКлик, Рамблер Каccа |
МТC Live |
Яндекc.Мaркет |
AliExprеss Russiа, VK Mаrkеt, Юлa |
Телеком |
Сотовая связь CберМoбайл, кабельное ТВ |
Сотовая и фиксированная связь, кабельное и спутниковое ТВ |
Яндекc.Пoчта |
Почта Mail.ru |
Мобильность |
Доля в Cитимoбил CитиДрaйв |
|
Яндекс Go Яндекс.Драйв |
Доля в Cитимoбил CитиДрaйв |
Еда |
Доля в Delivery Club, Самокат, Кухня на районе |
|
Яндекс Go, Яндекc.Еда, Яндекc.Лавка |
Доля в Delivery Club, Самокат, Кухня на районе |
Финансы |
ЮМoney Сбербанк |
МТC Банк, МТC Cashback, MTC Каccа, NUUM |
Яндекc.Банк |
VK Pay |
Технологии |
Cognitive Pilot, CберАвтoTeх, Sbеr Devices |
MTC Digital, VisiоnLаbs |
Yаndex.Clоud, Yаndеx Self-Driving Group |
Облако Mail.ru |
Здоровье |
Сбер3доровье, СберЕаптека |
SmartMed |
Яндекс.Здоровье |
«Все аптеки» |
Офлайн |
Около 13 тыс. офисов |
Около 5 тыс. салонов связи |
Около 2 тыс. брендированных пунктов выдачи заказов |
Около 2 тыс. пунктов выдачи заказов |
Как в государственном, так и в частном секторе интеграция различных сервисов в одной цифровой экосреде позволяет управлять пользовательским поведением, добиваться максимальной скорости и прозрачности процессов, обнаруживать проблемы и точки улучшения в разных направлениях деятельности, тем самым повышая эффективность функционирования организации [1-9].
Для создания отдельного сервиса и его последующей интеграции в единую цифровую экосреду требуется слаженная работа команды разработчиков. Очень важно уже на начальном этапе определить подход к созданию программного продукта.
В настоящее время наиболее популярны следующие парадигмы программирования:
- императивное программирование;
- функциональное программирование;
- объектно-ориентированное программирование (ООП).
Императивная парадигма – подход к программированию, появившийся еще в 1950-х годах, является одним из самых ранних подходов. В императивных языках программирования принято использование:
- именованных переменных;
- оператора присваивания;
- составных выражений;
- подпрограмм.
Императивная парадигма сильно зависит от использования при разработке команд, переменных и процедур. Указанный подход использует команды для проверки и обновления переменных, сохраняя состояние в программе. На основе комбинации команд создаются процедуры. Слабая связь компенсируется абстракция данных, играющей решающую роль в их представлении. Самым популярным языком, поддерживающим только функциональные процедуры и использующим императивную парадигму, является C.
Ключевые понятия функциональной парадигмы:
- выражения;
- функции;
- параметрический полиморфизм;
- абстракция данных.
Выражения являются фундаментальными компонентами функций, используемых языками функционального программирования. Параметрический полиморфизм является одним из трех типов полиморфизма. Этот тип упрощает универсальное программирование с помощью функций и типов. Самый популярный язык функционального программирования – JavaScript.
Зародившаяся в 1990-х годах парадигма ООП является потомком императивной. Однако ООП хранит состояние в объектах, а не в переменных. Языки программирования, основанные на ООП, часто лучше справляются со сложными приложениями.
Ключевые принципы ООП:
- абстракция. Возможность определения важных и второстепенных свойств объекта в виде классов для создания абстрактного представления;
- инкапсуляция. Предполагает скрытие внутренней реализации отдельных частей системы и предоставление доступа только через открытый набор функций;
- наследование. Возможность создания новых классов, на основе существующих с возможностью добавления новых свойств;
- полиморфизм. Предполагает использование наследуемых свойств или методов в контексте, который был предназначен для существующих абстракций.
Основными функциями ООП:
- объекты;
- классы;
- инкапсуляция данных;
- наследование;
- полиморфизм.
Объекты – это сущности, у которых есть определенные свойства и поведение. Как правило объекты являются экземплярами какого-нибудь класса.
Класс – основной компонент объектно-ориентированной программы. После определения класса его можно использовать для создания объектов. Содержащиеся в классах инструменты могут быть использованы для защиты и скрытия конфиденциальных данных за счет инкапсуляции.
В ООП под инкапсуляцией подразумевается заключение данных и функционала в оболочку. В качестве такой оболочки могут выступать классы, которые концентрируют данные в одном месте и закрывают их от внешних воздействий.
Полиморфизм – способность объекта использовать методы производного класса, который не существует на момент создания базового.
Тремя наиболее популярными языками программирования, использующими объектно-ориентированную парадигму, являются Java, C++ и Python [10-16].
При разработке цифровых экосред известны примеры использования функциональной парадигмы. Основными различиями функционального подхода от ООП являются: сложность поддержки и плохая масштабируемость разработанной системы. Первый пункт обусловлен трудностью поиска функции и определение ее взаимосвязей с остальными функциями системы. В связи с тем, что возникает проблема определения взаимосвязей, становится трудно предсказать последствия изменений функционала для остальных частей системы. Второй пункт исходит из того, что в функциональном подходе код должен быть разделен на данные и на функции, использующие эти данные. При увеличении размеров проекта количество обоих компонентов растет, что усложняет написание такого кода, который не только бы не повторял уже существующий, но и который не переходил в ООП.
ООП дает возможность перенести метафоры и следующие из них абстракции в код, поскольку в процессе проектирования уже формируются базовые, общие подсистемы, которые легко преобразуются в классы.
Преимущества использования ООП при разработке цифровых экосред:
- удобство тестирования. Модульность системы, полученная с помощью классов, и ограниченность методов, полученная с помощью инкапсуляции, упрощает написание тестов;
- предсказуемость поведения. Поскольку программа поделена на модули, каждый из которых выполняет конкретную задачу, либо ограниченный блок задач, то в случае возникновения ошибки есть возможность локализовать проблему по косвенным признакам;
- удобство документирования. Правильно написанный код с использованием ООП является самодокументируемым;
- возможность использования готовых архитектурных решений. За все время существования ООП было множество проблем и задач проектирования архитектуры, решения которых впоследствии стали типовыми и получили название «Паттерны проектирования». Они позволяют использовать накопленный другими разработчиками опыт;
- единство разработки. Разработанные классы можно сделать настолько низкоуровневыми, что их можно будет использовать в любой части этой и других программ. Примером переиспользуемых классов являются классы моделей данных, используемых в базах данных.
Недостаток использования ООП при разработке цифровых экосред:
- сложность проектирования. Декомпозиция желаемой функциональности на составляющие, некоторые части которых предполагают дальнейшее использование в остальных проектах, крайне трудозатратна.
Использование объектно-ориентированного подхода в некоторых случаях приводят к снижению производительности программ:
- динамическое связывание методов. Объективно динамическое связывание требуется в 20 % случаев, однако некоторые языки программирования используют его для обеспечения полиморфизма в процессе исполнения программы, на что тратится дополнительное время;
- значительная глубина абстракции. В процессе объектно-ориентрованного программирования часто создаются многоуровневые приложения, когда для выполнения необходимого действия осуществляется многократное обращение к объектам более низкого уровня. Повторяющиеся вызовы методов и возвраты из них сказываются на производительности;
- инкапсуляция снижает скорость доступа. Ограничение на прямой доступ к данным извне приводит к созданию и использованию дополнительных методов доступа;
- динамическое создание и уничтожение объектов. Динамически создаваемые объекты, размещаются не на стеке, что является менее эффективным.
Описанные недостатки не снижают выгоды от использования ООП в задачах созданий цифровой экосреды. Лучшая организация кода, в некоторых случаях позволяет повысить производительность и снизить расходы на обеспечение функционирования программы. Качественно организованный современными компиляторами код сглаживает или полностью устраняет снижение производительности. Например, описанное ранее снижение скорости доступа к полям класса из-за использования методов доступа устраняется, если компилятор вместо вызова метода доступа использует инлайн-подстановку.
Рецензент – Кучумов И.