2015 г.
Динамические линейки программных продуктов
Сергей Кузнецов
Обзор октябрьского, 2012 г. номера журнала Computer (IEEE Computer Society, V. 45, No 10, октябрь 2012).
Авторская редакция.
Также обзор опубликован в журнале «Открытые системы»
Тематическая подборка этого номера журнала посвящена исследованиям в направлении построения динамических линеек программных продуктов. Вводная заметка приглашенных редакторов Майка Хинчи, Суенга Парка и Клауса Шмида (Mike Hinchey, Lero—the Irish Software Engineering Research Centre, University of Limerick, Ireland, Sooyong Park, Sogang University, South Korea, Klaus Schmid, University of Hildesheim, Germany) так и называется – «Building Dynamic Software Product Lines».
Адаптация к быстрым изменениям постоянно усложняющегося мира представляет проблему как для программного обеспечения, так и для его пользователей. Программные системы должны продолжать функционировать при возникновении неблагоприятных условий: в агрессивной внешней среде, при наличии частичных отказов подсистем, при смене потребностей пользователей и т.д. Часто не допускаются даже временные прерывания в работе систем. Телекоммуникационные и космические системы – это лишь крайние примеры такого положения дел. Более прозаические приложения, такие как программные системы смартфонов, должны адаптироваться к изменению условий энергопотребления или качества связи.
Потребность в нахождении решений этих проблем приводит к появлению множества подходов к адаптации к изменению требований, включая самонастройку, применение агентов, поддержку автономности и т.д. Хотя все эти подходы настроены на обеспечение гибкой адаптации к изменению требований, они сильно различаются уровнями и гарантиями обеспечиваемой адаптивности.
Более современное развитие этих подходов представляет технология динамических линеек программных продуктов (dynamic software product line, DSPL). DSPL расширяет существующие методы разработки линеек программных продуктов за счет переноса возможностей этих методов на время исполнения программ. Поскольку DSPL опирается на использование традиционных методов, у него имеются надежные и практически проверенные инженерные основы, опробованные в многочисленных приложениях. С инженерной точки зрения это очень важно, поскольку позволяет гарантировать, что получаемая адаптивность систем обеспечит их требуемые свойства.
К настоящему времени DSPL уже применяется в многочисленных областях, включая бытовую робототехнику, информационные системы, системы мониторинга и производственную автоматику.
Первая регулярная статья тематической подборки написана Яном Бошем и Рафаэлем Капиллой (Jan Bosch, Chalmers University Technology, Sweden, Rafael Capilla, Rey Juan Carlos University, Spain) и называется «Динамическая изменчивость в семействах встраиваемых преимущественно программных систем» («Dynamic Variability in Software-Intensive Embedded System Families»).
В эпоху автономных, самонастраиваемых, все в большей степени ориентированных на использование программных средств встраиваемых систем значительные конкурентные преимущества могут обеспечиваться семействами систем, которые могут адаптироваться к новым средам использования, реконфигурироваться и обеспечивать новые функциональные возможности. Для этого существующая технология линеек программных продуктов (software product lines, SPL) должна стать более адаптивной и изменяемой, т.е. динамической. И заказчики тоже хотят, чтобы приобретенные ими системы продолжали развиваться и приобретать новые возможности.
Крупные и средние компании нуждаются в использовании более динамичных подходов для производства программного обеспечения, которое можно было бы конфигурировать и расширять на стадии исполнения. Такие возможности обеспечивают, в частности, динамические линейки программных продуктов.
Однако подобные системы должны удовлетворять строгим требованиям качества, включая надежность и производительность. Наличие возможностей динамического расширения и реконфигурирования порождает проблемы при верификации поведения членов семейства встраиваемых систем. Для обеспечения предсказуемости подобного поведения требуются модели динамической изменчивости. Такие модели очень нужны и не поддерживаются должным образом в существующих технологиях SPL. Описываемый в статье механизм изменчивости систем во время их выполнения обеспечивает возможности контроля над структурной изменчивостью встраиваемых систем на стадии их выполнения.
Статья «Ландшафт динамических линеек программных продуктов» («A View of the Dynamic Software Product Line Landscape») представлена Нелли Бенкомо, Свейном Халстейнсеном и Эдуардо Сантаной де Алмеида (Nelly Bencomo, Inria, France, Svein Hallsteinsen, SINTEF ICT, Norway, Eduardo Santana de Almeida, Federal University of Bahia, Brazil).
По мере того, как все чаще изменяются требования пользователей и среды выполнения систем, возрастает потребность в самоадаптации систем к изменению подобных условий. Для решения этой проблемы активно исследуются возможности подхода динамических линеек программных продуктов.
В DSPL расширяется понятие традиционных SPL за счет того, что допускается генерация вариантов программного обеспечения на стадии его выполнения. Основанием такого расширения служит то, что типичные подходы SPL мало затрагивают динамические аспекты: адаптация программных продуктов возможна только на стадии разработки линейки продуктов. С учетом наличия многочисленных сценариев успешного использования SPL подходы DSPL предлагают перспективную стратегию управления изменениями программного обеспечения на стадии его выполнения.
Однако среди исследователей и практических пользователей DSPL все еще отсутствует согласие относительно применяемой технологии, и поэтому нет общего концептуального каркаса. Кроме того, исследования в области DSPL пересекаются с исследованиями в родственных областях, в особенности, в области самонастаивающихся систем, что приводит к еще большей неразберихе.
Для обеспечения лучшего понимания ландшафта DSPL авторы статьи анализируют три взаимодополняющих исследования, в которых используются разные методы. Это позволяет оценить зрелость области и выявить имеющиеся достижения и проблемы. На основе результатов этих исследований разработана предварительная концептуальная модель.
Концептуальная модель DSPL. В модели комбинируются классическая модель SPL и модель MAPE-K (Monitor, Analyze, Plan, Execute, Knowledge) самоуправляемых вычислительных систем.
Авторами статьи «Сервис-ориентированные динамические линейки программных продуктов» («Service-Oriented Dynamic Software Product Lines») являются Лучано Барези, Сэм Гвинея и Лилиана Паскуале (Luciano Baresi, Sam Guinea, Politecnico di Milano, Italy, Liliana Pasquale, Lero—the Irish Software Engineering Research Centre).
При постоянном повышении уровней сложности и динамичности программных систем конфигурационное управление должно поспевать за изменениями требований к системе. Стоимость явного выявления всех возможных конструктивных конфигураций может стать недопустимой, а разработчики систем не всегда могут точно указать нужные варианты конфигураций на ранней стадии проекта. Поэтому системы должны обладать возможностью реагировать на изменения и согласовывать с ними свое поведение. Другими словами, адаптация во время выполнения быстро становится существенной для разработчиков программных систем.
Линейки программных продуктов задумывались как средство разделения различных характеристик семейства систем и организации соответствующих возможностей в осмысленные конфигурации. Для выявления общих и вариантных характеристик линейки продуктов применяются модели характеристик. В подобных моделях описываются ограничения характеристик, например, требуется ли для наличия данной характеристики наличие или отсутствие каких-либо других характеристик. Поскольку во многих современных системах реальные требования становятся известными только на стадии их выполнения, тогда же реализуются и становятся доступными пользователям их функциональные возможности. Именно эта идея привела к появлению динамических цепочек программных продуктов, в которых, в отличие от традиционных линеек программных продуктов, поддерживается изменчивость на стадии выполнения программных систем.
Если потребность в некоторой характеристике системы может быть выявлена только на стадии ее выполнения, эта система может использовать DSPL для переключения с одного варианта на другой. Модель характеристик DSPL обеспечивает то, что все эти варианты будут являться согласованными конфигурациями, удовлетворяющими ограничениям характеристик. Однако недостаточно всего лишь переключаться с одного варианта на другой. В непредвиденных ситуациях может понадобиться изменение функциональных возможностей, для обеспечения нового, непредусмотренного ранее варианта системы может потребоваться изменить саму модель характеристик. Тем самым, эта модель должна стать объектом времени выполнения системы.
Сервис-ориентированная архитектура (Service-Oriented Architecture, SOA) демонстрирует свою экономическую эффективность при разработке гибких и динамичных программных систем. По мнению авторов статьи, существенные преимущества может принести совместное использование SOA и DSPL. Слабая связанность компонентов систем в SOA может обеспечить поддержку в DSPL гибкого управления характеристиками. Такой подход может опираться на исследования методов организации самонастраивающихся систем, основанных на SOA, а также методов мониторинга и адаптации. В свою очередь, методы DSPL могут обеспечить инфраструктуру моделирования, позволяющую лучше понимать поведение самонастраивающихся систем, основанных на SOA, за счет выделения связей между их компонентами. Архитекторы программных систем могут использовать такие модели для понимания влияний изменения конфигурации программной системы при ее выполнении.
С целью содействия такому совместному использованию двух подходов авторы выполняли эксперименты по обогащению композиций компонентов на основе использования языка BPEL (Business Process Execution Language) средствами управления динамической изменчивостью. Предлагаемым решением является язык CVL (Common Variability Language), обеспечивающий изменчивость процессам BPEL. Этот язык и поддерживающая его программная система позволяет генерировать DSPL, для управления которой используется динамическая версия BPEL (DyBPEL).
Архитектура DyBPEL, расширяющего возможности ActiveBPEL (исполнителя спецификаций BPEL), так что композиция сервисов (процесс) может адаптироваться к изменениям при своем выполнении. Координатор получает от дизайнера изменчивости запрос на изменение с именем процесса и набором изменений. Этот запрос обрабатывается во время выполнения процесса, и спецификация этого процессса на BPEL модифицируется. В репозитории сохраняются эти изменения и данные, требуемые для корректного функционирования процессов.
Статья «Инженерия динамических цепочек программных продуктов на основе сервисов» («Engineering Service-Based Dynamic Software Product Lines») написана Джейджуном Ли, Джеральдом Котонья и Дэниэлем Робинсоном (Jaejoon Lee, Gerald Kotonya, Daniel Robinson, Lancaster University, UK).
Инженерия линеек программных продуктов (software product line engineering, SPLE) – это парадигма повторного использования программного обеспечения, помогающая разрабатывать семейства продуктов с сокращением времени выхода на рынок и повышением качества. Внутри области SPLE динамические цепочки программных продуктов являются перспективным подходом к разработке повторно используемого и динамически реконфигурируемого базового программного кода.
Линейки продуктов на основе сервисов (service-oriented product lines, 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, Lancaster University, UK, and Inria Rocquencourt, France, Raúl Mazo, Daniel Diaz, Camille Salinesi, Université Paris 1, France, Danny Hughes, KU Leuven, Belgium).
Трудно добиться живучести программной системы, среда функционирования которой изменчива. В последние годы появились новые архитектуры программного обеспечения, в которых компоненты и сервисы могут динамически приобретать и терять связность в соответствии с потребностями контекста.
Возможность системы динамически адаптировать свои структуру, поведение и качество обслуживания к изменениям контекста обеспечивает два потенциальных преимущества. По сравнению с традиционной адаптацией (например, на основе управления исключительными ситуациями) архитектурная адаптация должна упрощать развитие программного обеспечения, поскольку улучшается понимание среды систем и становится возможным использование новых компонентов и сервисов. Проще достигается и живучесть, поскольку система может гибко реагировать на изменения внешних контекстов.
Однако поскольку в этом случае решение о целесообразной реакции на смену контекста должно приниматься некоторым объектом времени выполнения, требуется новый подход к спецификации программного обеспечения. Вместо непосредственного перечисления требований, определяющих поведение системы в каждом возможном контексте разработчик программного обеспечения должен сосредоточиться на понимании соотношений, ограничивающих допустимые конфигурации системы.
Самонастраивающуюся систему, основанную на использовании архитектурной адаптации, можно представлять как динамическую линейку программных продуктов, в которой каждая конфигурация является одним из возможных вариантов SPL, и варианты могут связываться динамически. Существуют два вида изменчивости. Структурная изменчивость касается конфигурации компонентов (продукта в понимании SPL), а внешняя изменчивость относится к допустимым состояниям среды выполнения системы и соответствующим контекстам, которые могут встретиться системе при ее выполнении.
Авторы статьи утверждают, что проблему спецификации DSPL можно свести к проблеме удовлетворения ограничений. Комбинируя сильные стороны методов моделирования целей (например, возможность принимать решения по поводу качества обслуживания) с программированием в ограничениях (поддерживающим принятие решений по поводу изменчивости), можно обеспечить разработчиков программного обеспечения средствами, позволяющими выявить варианты, лучше всего соответствующие внешним контекстам, с которыми может столкнуться система при своем выполнении.
В описываемом решении используется инструментальное средство Varia-Mos, позволяющее эффективно работать с ограничениями, используемыми для моделирования DSPL. Подход иллюстрируется примером самонастраивающейся беспроводной сенсорной сети GridStix, в которой используется архитектурная адаптация к изменениям внешней среды.
Узел сети GridStix на реке Рибл в Англии.
Вне тематической подборки опубликованы две большие статьи. Статью «Точное беспроводное позиционирование в спорте» («Accurate Wireless Localization in Sports») написали Марк Хедли и Джиан (Эндрю) Жанг (Mark Hedley, Jian (Andrew) Zhang, Commonwealth Scientific and Industrial Research Organisation, Australia).
Беспроводным позиционированием называется определение географических координат статичных или движущихся узлов беспроводной системы. Система может являться существующей инфраструктурой (например, телефонной сотовой сетью, сенсорной сетью и т.д.) или специально разрабатываться для позиционирования (в пожаротушении, военных операциях или спортивном мониторинге).
Успешное использование GPS (первой технологии позиционирования, получившей широкое коммерческое распространение) привело к разработке новых, усовершенствованных продуктов и сервисов. В свою очередь, это привело к росту интереса к разработке систем позиционирования, пригодных для использования там, где доступ к GPS невозможен (например, внутри зданий), и обеспечивающих повышенную точность.
В настоящее время наблюдается возрастающий интерес к позиционированию в области спорта, где использование позиционирования в реальном времени и обеспечение доступа к физиологической информации помогает улучшить подготовку спортсменов. Разработанная в CSIRO (Commonwealth Scientific and Industrial Research Organisation) беспроводная самоорганизующаяся система позиционирования WASP (wireless ad hoc system for positioning) является платформой позиционирования, пригодной для использования в различных приложениях, включая мониторинг тренировок спортсменов. WASP обеспечивает точное позиционирование и высокоскоростной обмен данными на основе использования дешевых аппаратных средств в различных средах распространения радиоволн с многолучевой интерференцией. Возможно быстрое развертывание системы в новых средах.
Последнюю статью номера – «Возможность выполнения высокопроизводительных вычислений как сервис» («Enabling High-Performance Computing as a Service») – представили Мусафа Абдельбаки, Маниш Парашар, Июньджо Ким, Кирк Джордан, Випин Сачдева, Джеймс Секстон, Хани Джемджум, Зон-Йин Шей, Гергина Пенчева, Реза Таваколи и Мэри Вилер (Moustafa AbdelBaky, Manish Parashar, Rutgers University, Hyunjoo Kim, Xerox Research Center Webster, Kirk E. Jordan, Vipin Sachdeva, James Sexton, Hani Jamjoom, Zon-Yin Shae, IBM T.J. Watson, Research Center, Gergina Pencheva, Reza Tavakoli, Mary F. Wheeler, University of Texas at Austin).
Высокопроизводительные вычисления (high-performance computing, HPC) приобретают все более важное значение для обеспечения понимания сложных процессов в различных прикладных областях, включая космонавтику, автомобилестроение, бизнес-аналитику, индустрию развлечений, финансы, добычу нефти и газа и т.д. По мере того, как ученые и инженеры стараются все глубже понимать сложные естественные, технические и социальные системы, моделирование и симуляция этих систем становится все более важным фактором снижения рисков и обеспечения качественного принятия решений.
Многие научные приложения разрабатываются в расчете на использование высокопроизводительных суперкомпьютерных систем, масштабность, вычислительная мощность и быстрота взаимосвязи которых позволяет выполнять эти приложения максимально эффективно. Однако сложность таких систем возрастает при росте их размеров, и для достижения нужной эффективности требуются экспертные знания. Кроме того, эти высокопроизводительные системы обычно не поддерживают адаптивное выделение ресурсов и динамическое масштабирование. При возникновении соответствующей потребности пользователи должны вручную остановить приложение, поменять распределение ресурсов и заново запустить приложение. Следовательно, хотя высокопроизводительные системы обладают возможностями, удовлетворяющими возрастающие потребности научных приложений, выполнение приложений на этих системах остается трудоемким занятием, что ограничивает широту использования систем.
Облачные вычисления становятся доминирующей парадигмой компьютинга, и многие достоинства этой парадигмы распространяются на HPC. Однако в текущих реализациях облачных вычислений отсутствуют высокая производительность и масштабность, требуемые для многих научных приложений. Авторы статьи предлагают новый подход – HPC как сервис (HPCaaS), в котором абстракция «облака» используется для обеспечения простого интерфейса к высокопроизводительным ресурсам.