Динамические линейки программных продуктовВводная заметка приглашенных редакторов Майка Хинчи (Mike Hinchey), Суенга Парка (Sooyong Park) и Клауса Шмида (Klaus Schmid) называется «Построение динамических линеек программных продуктов» (“Building Dynamic Software Product Lines”). Адаптация к быстрым изменениям постоянно усложняющегося мира представляет проблему как для программного обеспечения, так и для его пользователей. Программные системы должны продолжать функционировать при возникновении неблагоприятных условий: в агрессивной внешней среде, при наличии частичных отказов подсистем, при смене потребностей пользователей и т. д., причем часто не допускаются даже временные прерывания в работе. Телекоммуникационные и космические системы — это крайние примеры такого положения дел, но и более прозаические приложения, такие как программные системы смартфонов, должны уметь адаптироваться к изменению условий энергопотребления или качества каналов связи.

Потребность в нахождении решений этих проблем приводит к появлению множества способов адаптации к изменению требований, включая самонастройку, применение агентов, поддержку автономности и т. д. Хотя все эти подходы настроены на обеспечение гибкой адаптации к изменению требований, они сильно различаются по уровням и гарантиям обеспечиваемой адаптивности. Более перспективным развитием этих подходов представляется технология динамических линеек программных продуктов (Dynamic Software Product Line, DSPL), расширяющая существующие методы разработки линеек программных продуктов. Поскольку DSPL опирается на использование традиционных методов, у нее имеются надежные и практически проверенные инженерные основы, опробованные в многочисленных приложениях. С инженерной точки зрения это очень важно, поскольку позволяет гарантировать, что получаемая адаптивность систем обеспечит их требуемые свойства. Сегодня DSPL уже применяется в различных областях, включая бытовую робототехнику, информационные системы, системы мониторинга и производственную автоматику.

Первая регулярная статья тематической подборки написана Яном Бошем (Jan Bosch) и Рафаэлем Капиллой (Rafael Capilla) и называется «Динамическая изменчивость в семействах встраиваемых преимущественно программных систем» (“Dynamic Variability in Software-Intensive Embedded System Families”). В эпоху автономных и самонастраиваемых систем, все в большей степени ориентированных на применение во встраиваемых конфигурациях, значительные конкурентные преимущества могут предоставить семейства продуктов, способных к адаптации к новым средам использования, реконфигурации и обеспечению новых функциональных возможностей. Для этого существующая технология линеек программных продуктов (Software Product Line, SPL) должна стать динамической — адаптивной и изменяемой. Заказчики хотят, чтобы приобретенные ими системы продолжали развиваться и приобретать новые возможности.

Крупные и средние компании нуждаются в использовании более динамичных подходов для производства программного обеспечения, которое можно было бы конфигурировать и расширять на стадии исполнения. Такие возможности обеспечивают, в частности, динамические линейки программных продуктов. Однако подобные системы должны удовлетворять строгим требованиям качества, включая надежность и производительность. Наличие возможностей динамического расширения и реконфигурирования порождает проблемы при верификации поведения членов семейства встраиваемых систем. Для обеспечения предсказуемости подобного поведения требуются модели динамической изменчивости, которые пока не поддерживаются должным образом в существующих технологиях DSPL. Описываемый в статье механизм дает возможность контроля над структурной изменчивостью встраиваемых систем на стадии их выполнения.

 

Рис. 1. Концептуальная модель DSPL. В модели комбинируются классическая модель SPL и модель MAPE-K (Monitor, Analyze, Plan, Execute, Knowledge) самоуправляемых вычислительных систем
Рис. 1. Концептуальная модель DSPL. В модели комбинируются классическая модель SPL и модель MAPE-K (Monitor, Analyze, Plan, Execute, Knowledge) самоуправляемых вычислительных систем

Статья «Ландшафт динамических линеек программных продуктов» (“A View of the Dynamic Software Product Line Landscape”) представлена Нелли Бенкомо (Nelly Bencomo), Свейном Халстейнсеном (Svein Hallsteinsen) и Эдуардо Сантаной де Алмеида (Eduardo Santana de Almeida). По мере того как изменяются запросы пользователей и среды выполнения систем, возрастает потребность в самоадаптации программ к изменению подобных условий. Для решения этой проблемы активно исследуются возможности DSPL, расширяющих понятие традиционной разработки за счет допущения генерации вариантов программного обеспечения на стадии его выполнения. Основанием такого расширения служит то, что типичные подходы программирования мало затрагивают динамические аспекты: адаптация программных продуктов возможна только на стадии разработки линейки продуктов. С учетом наличия многочисленных сценариев успешного использования традиционного программирования подходы DSPL предлагают перспективную стратегию управления изменениями программного обеспечения на стадии его выполнения.

Однако среди исследователей и практических пользователей DSPL отсутствует согласие относительно применяемой технологии, и поэтому нет общего концептуального каркаса. Кроме того, исследования в области DSPL пересекаются с исследованиями в родственных областях, в особенности в области самонастраивающихся систем, что приводит к еще большей неразберихе.

Для лучшего понимания ландшафта DSPL авторы статьи анализируют три взаимодополняющих исследования, использующих разные методы, что позволяет оценить зрелость области и выявить имеющиеся достижения и проблемы. На основе результатов этих исследований разработана предварительная концептуальная модель (рис. 1.).

Авторами статьи «Сервис-ориентированные динамические линейки программных продуктов» (“Service-Oriented Dynamic Software Product Lines”) являются Лучано Барези (Luciano Baresi), Сэм Гвинея (Sam Guinea) и Лилиана Паскуале (Liliana Pasquale). При постоянном повышении уровней сложности и динамичности программных систем конфигурационное управление должно поспевать за изменениями требований к системе. Однако стоимость выявления всех возможных конструктивных конфигураций может стать недопустимой, а разработчики систем не всегда могут точно указать нужные варианты конфигураций на ранней стадии проекта. Поэтому системы должны обладать возможностью реагирования на изменения и согласования своего поведения. Другими словами, адаптация во время выполнения быстро становится существенной для разработчиков программных систем.

Для выявления общих и вариантных характеристик линейки продуктов применяются модели характеристик, описывающие ограничения — например, требуется ли для наличия  данной характеристики наличие или отсутствие каких-либо других характеристик. Поскольку во многих современных системах реальные требования становятся известными только на стадии выполнения, тогда же реализуются и становятся доступными пользователям их функциональные возможности. Именно эта идея привела к появлению динамических цепочек программных продуктов, в которых, в отличие от традиционных линеек программных продуктов, поддерживается изменчивость на стадии выполнения.

Если потребность в некоторой характеристике системы может быть выявлена только на стадии ее выполнения, эта система может использовать DSPL для переключения с одного варианта на другой. Модель характеристик DSPL обеспечивает то, что все эти варианты будут являться согласованными конфигурациями, удовлетворяющими ограничениям характеристик. Однако недостаточно всего лишь переключаться с одного варианта на другой — в непредвиденных ситуациях может понадобиться изменение функциональных возможностей, а для обеспечения нового, непредусмотренного ранее варианта системы может потребоваться изменить саму модель характеристик. Тем самым эта модель должна стать объектом времени выполнения системы.

Сервисная архитектура демонстрирует свою экономическую эффективность при разработке гибких и динамичных программных систем. По мнению авторов статьи, существенные преимущества может принести совместное использование SOA и DSPL. Слабая связанность компонентов систем в SOA может обеспечить поддержку в DSPL гибкого управления характеристиками. Такой подход может опираться на исследования методов организации самонастраивающихся систем, основанных на SOA, а также методов мониторинга и адаптации. В свою очередь, методы DSPL могут обеспечить инфраструктуру моделирования, позволяющую лучше понимать поведение самонастраивающихся систем, основанных на SOA, за счет выделения связей между их компонентами. Архитекторы программных систем могут использовать такие модели для понимания влияний изменения конфигурации программной системы при ее выполнении.

С целью содействия совместному использованию двух подходов авторы выполняли эксперименты по обогащению композиций компонентов на основе использования языка BPEL (Business Process Execution Language) средствами управления динамической изменчивостью. Предлагаемым решением является язык CVL (Common Variability Language), обеспечивающий изменчивость процессам BPEL. Этот язык и поддерживающая его программная система позволяют генерировать DSPL, для управления которой используется динамическая версия BPEL (DyBPEL, рис. 2).

 

Рис. 2. Архитектура DyBPEL, расширяющего возможности ActiveBPEL (исполнителя спецификаций BPEL) таким образом, что композиция сервисов (процесс) может адаптироваться к изменениям при своем выполнении. Координатор получает от дизайнера изменчивости запрос на изменение с именем процесса и набором изменений. Этот запрос обрабатывается во время выполнения процесса, а спецификация этого процесса на BPEL модифицируется. В репозитории сохраняются эти изменения и данные, требуемые для корректного функционирования процессов
Рис. 2. Архитектура DyBPEL, расширяющего возможности ActiveBPEL (исполнителя спецификаций BPEL) таким образом, что композиция сервисов (процесс) может адаптироваться к изменениям при своем выполнении. Координатор получает от дизайнера изменчивости запрос на изменение с именем процесса и набором изменений. Этот запрос обрабатывается во время выполнения процесса, а спецификация этого процесса на BPEL модифицируется. В репозитории сохраняются эти изменения и данные, требуемые для корректного функционирования процессов

 

Статья «Инженерия динамических цепочек программных продуктов на основе сервисов» (“Engineering Service-Based Dynamic Software Product Lines”) написана Джейджуном Ли (Jaejoon Lee), Джеральдом Котонья (Gerald Kotonya) и Дэниэлем Робинсоном (Daniel Robinson). Инженерия линеек программных продуктов (Software Product Line Engineering, SPLE) — это парадигма повторного использования программного обеспечения, помогающая разрабатывать семейства продуктов с сокращением времени выхода на рынок и повышением качества. Внутри области SPLE динамические цепочки программных продуктов являются перспективным подходом к разработке повторно используемого и динамически реконфигурируемого базового программного кода.

Линейки продуктов на основе сервисов (Service-Oriented Product Line, SOPL) — это класс DSPL, базирующихся на сервисах и сервисных архитектурах. С точки зрения SPLE, эта модель разработки обеспечивает два основных преимущества перед традиционной моделью разработки ПО с фиксированной конфигурацией. Во-первых, из динамической природы SOA следует, что SOPL могут поддерживать потребности пользователей в постоянно изменяемой среде. Во-вторых, SOPL могут комбинировать сервисы в различных конфигурациях и контекстах, что упрощает внедрение вариантов одного и того же программного продукта, основанных, в основном, на одних и тех же базовых сервисах, но ориентированных на удовлетворение разных потребностей пользователей. Однако для достижения этих возможностей в направлении SOPL нужно решить ряд проблем программной инженерии. Прежде всего, требуется высокий уровень самонастраиваемости SOPL, то есть возможность динамически реконфигурировать поведение программы при изменении среды и координировать его с заново появившимися сервисами. У SOPL также должна быть возможность эволюции — организация должна быть в состоянии добавлять, удалять и изменять устройства и сервисы без нарушения эффективного функционирования системы. Кроме того, организация должна иметь возможность решать, следует ли самостоятельно разрабатывать новый сервис или же стоит получить его от сторонних разработчиков и встроить в существующий продукт во время его выполнения. Наконец, в SOPL должен систематически использоваться существующий базовый код для сокращения выхода новых продуктов на рынок.

Для решения этих проблем авторы статьи разработали новый подход SOPL, в котором анализ характеристик программных систем объединяется с самонастраиваемой инфраструктурой обеспечения качества обслуживания (Quality-of-Service, QoS). В предлагаемом решении модель характеристик структурируется в соответствии с тремя видами сервисов (сервисами потоков работ, молекулярными и динамическими сервисами), а инфраструктура QoS используется для управления динамическими сервисами. Потоки работ оркеструют линейки продуктов, а постоянно выполняемые мониторинг, согласования и проверки соответствия требованиям обеспечивают должное качество обслуживания и целостность композиции сервисов.

Последняя статья тематической подборки называется «Использование программирования в ограничениях для управления конфигурациями самонастраивающихся систем» (“Using Constraint Programming to Manage Configurations in Self-Adaptive Systems”) и представлена Питом Сойером (Pete Sawyer), Раулем Мазо (Raul Mazo), Даниэлем Диазом (Daniel Diaz), Камилем Салинеси (Camille Salinesi) и Дэнни Хагесом (Danny Hughes). Трудно добиться живучести программной системы, функционирующей в изменчивой среде, поэтому появились новые архитектуры программного обеспечения, в которых компоненты и сервисы могут динамически приобретать и терять связность в соответствии с потребностями контекста. Возможность системы динамически адаптировать свою структуру, поведение и качество обслуживания к изменениям контекста обеспечивает два потенциальных преимущества. По сравнению с традиционной адаптацией (например, на основе управления исключительными ситуациями) архитектурная адаптация должна упрощать развитие ПО, поскольку улучшается понимание среды систем и становится возможным использование новых компонентов и сервисов. Проще достигается и живучесть, так как система может гибко реагировать на изменения внешних контекстов.

Однако поскольку в этом случае решение о целесообразной реакции на смену контекста должно приниматься некоторым объектом времени выполнения, то требуется новый подход к спецификации программного обеспечения. Вместо непосредственного перечисления требований, определяющих поведение системы в каждом возможном контексте, разработчик программного обеспечения должен сосредоточиться на понимании соотношений, ограничивающих допустимые конфигурации системы.

Самонастраивающуюся систему, основанную на использовании архитектурной адаптации, можно представлять как динамическую линейку программных продуктов, в которой каждая конфигурация является одним из возможных вариантов SPL, и варианты могут связываться динамически. Существуют два вида изменчивости. Структурная изменчивость касается конфигурации компонентов (продукта в понимании SPL), а внешняя изменчивость относится к допустимым состояниям среды выполнения системы и соответствующим контекстам, которые могут встретиться системе при ее выполнении.

Авторы статьи утверждают, что проблему спецификации DSPL можно свести к проблеме удовлетворения ограничений. Комбинируя сильные стороны методов моделирования целей (например, возможность принимать решения по поводу качества обслуживания) с программированием в ограничениях (поддерживающим принятие решений по поводу изменчивости), можно обеспечить разработчиков программного обеспечения средствами, позволяющими выявить варианты, лучше всего соответствующие внешним контекстам, с которыми может столкнуться система при своем выполнении.

 

Рис. 3. Узел сети GridStix на реке Рибл в Англии
Рис. 3. Узел сети GridStix на реке Рибл в Англии

В описываемом решении используется инструментальное средство Varia-Mos, позволяющее эффективно работать с ограничениями, принятыми для моделирования DSPL. Подход иллюстрируется примером самонастраивающейся беспроводной сенсорной сети GridStix (рис. 3), в которой применяется архитектурная адаптация к изменениям внешней среды.

Вне тематической подборки опубликованы две большие статьи. Статью «Точное беспроводное позиционирование в спорте» (“Accurate Wireless Localization in Sports”) написали Марк Хедли (Mark Hedley) и Джиан Жанг (Jian Zhang). Беспроводным позиционированием называется определение географических координат статичных или движущихся узлов беспроводной системы. Система может быть существующей инфраструктурой (например, телефонной сотовой сетью, сенсорной сетью и т. д.) или специально разрабатываться для позиционирования (в пожаротушении, военных операциях или спортивном мониторинге).

Успешное использование GPS (первой технологии позиционирования, получившей широкое коммерческое распространение) привело к разработке новых, усовершенствованных продуктов и сервисов. В свою очередь, это вызвало рост интереса к разработке систем позиционирования, пригодных для использования там, где доступ к GPS невозможен (например, внутри зданий), и обеспечивающих повышенную точность. Сегодня наблюдается возрастающий интерес к позиционированию в области спорта, где его использование в реальном времени и обеспечение доступа к физиологической информации помогают улучшить подготовку спортсменов. Разработанная в CSIRO (Commonwealth Scientific and Industrial Research Organisation) беспроводная самоорганизующаяся система WASP является платформой позиционирования, пригодной для использования в различных приложениях, включая мониторинг тренировок спортсменов. WASP обеспечивает точное позиционирование и высокоскоростной обмен данными на основе применения дешевых аппаратных средств в различных средах распространения радиоволн с многолучевой интерференцией. Возможно быстрое развертывание системы в новых средах.

Последнюю статью номера — «Суперкомпьютер по запросу» (“Enabling High-Performance Computing as a Service”) — представили Мустафа Абделбаки (Moustafa AbdelBaky), Маниш Парашар (Manish Parashar), Хенджо Ким (Hyunjoo Kim), Кирк Джордан (Kirk Jordan), Випин Сачдева (Vipin Sachdeva), Джеймс Секстон (James Sexton), Хани Джамджум (Hani Jamjoom), Зун-Инь Ше (Zon-Yin Shae), Гергина Пенчева (Gergina Pencheva), Реза Тавакол (Reza Tavakol) и Мэри Вилер (Mary Wheeler). Высокопроизводительные вычисления (High-Performance Computing, HPC) приобретают все большее значение для понимания сложных процессов в различных прикладных областях, включая космонавтику, автомобилестроение, бизнес-аналитику, индустрию развлечений, финансы, добычу нефти и газа и т. д. По мере того как ученые и инженеры стараются все глубже понимать сложные естественные, технические и социальные системы, моделирование и симуляция этих систем становятся все более важным фактором снижения рисков и обеспечения качественного принятия решений.

Многие научные приложения разрабатываются в расчете на использование высокопроизводительных суперкомпьютерных систем, масштабность, вычислительная мощность и быстрота взаимосвязи которых позволяют выполнять эти приложения максимально эффективно. Однако сложность таких систем возрастает при росте их размеров, и для достижения нужной эффективности требуются экспертные знания. Кроме того, эти высокопроизводительные системы обычно не поддерживают адаптивное выделение ресурсов и динамическое масштабирование. При возникновении соответствующей потребности пользователи должны вручную остановить приложение, поменять распределение ресурсов и заново запустить приложение. Следовательно, хотя высокопроизводительные системы обладают возможностями, удовлетворяющими возрастающие потребности научных приложений, выполнение приложений на этих системах остается трудоемким занятием, что ограничивает широту использования систем.

Облака становятся сегодня доминирующей парадигмой, многие достоинства которой распространяются на HPC. Однако в текущих реализациях отсутствуют высокая производительность и масштабность, требуемые для многих научных приложений. Авторы описывают новый подход — «HPC как сервис» (HPCaaS), в котором абстракция «облака» используется для обеспечения простого интерфейса к высокопроизводительным ресурсам.

До новой встречи, с уважением, Сергей Кузнецов, kuzloc@ispras.ru.