Основной темой августовского номера журнала в этом году являются высоконадежные Web-сервисы (High-Assurance Web-Services). В тематической подборке пять из шести больших статей номера.
Приглашенными редакторами тематической части номера являются Джинг Донг, Реймонд Пауль и Лианг-Джай Жанг (Jing Dong, University of Texas at Dallas, Raymond A. Paul, US Department of Defense, Liang-Jie Zhang, IBM T.J. Watson Research Center). Их вводная заметка называется «Сервис-ориентированные архитектуры с гарантией качества» («High-Assurance Service-Oriented Architectures»).
Новые достижения в области сервис-ориентированных технологий обеспечивают возможности регистрации, обнаружения, запросов и предоставления программных сервисов. Такие слабо связанные и независимые программные сервисы, поддерживаемые сетевыми ресурсами, образуют сервис-ориентированную архитектуру (SOA). Пользователи могут обращаться к сервисам без потребности в знании их реализационной платформы. Сервис-ориентированный подход пронизывает многие аспекты современного общества – от планирования, принятия решений и модернизации индустрии услуг до мультимедийных интерактивных интерфейсов. Во многих критически важных системах, таких как системы здравоохранения, управления движением и т.д., также применяются сервис-ориентированные технологии.
Несмотря на этот переход от традиционных систем к сервис-ориентированной парадигме, требования гарантирования качества сервис-ориентированных систем остаются теми же. Эти системы должны быть гарантированно надежными, безопасными, доступными, реактивными, отказоустойчивыми и заслуживающими доверия. К сожалению, добиться выполнения этих требований гарантии качества для сервис-ориентированных систем даже труднее, чем для традиционных систем, основанных на непосредственном использовании компьютеров, поскольку сервисы могут разрабатываться собственными силами или поставляться сторонними разработчиками.
Кроме того, сервисы в сетевой инфраструктуре допускают территориально-распределенные взаимодействия и дистанционное управление, что повышает важность безопасных коммуникаций и оперативного доступа к удаленным системам. Эти проблемы обеспечения многочисленных характеристик высокого качества (надежности, доступности, производительности, безопасности, реактивности и т.д.) для разнообразных критических приложений приводят к потребности разработки практических методов реализации систем с гарантированным качеством.
В прошлом практические методы разработки систем с гарантированным качеством в основном ориентировались на системы, основанные на непосредственном использовании компьютеров. Однако существующие методы могут не совсем подходить для разработки в сервис-ориентированной среде.
В настоящее время отсутствует какой-либо стандартный способ определения свойств гарантированного качества. В интерфейсах сервисов обычно специфицируются функциональные аспекты: вводные и выводные параметры, предусловия и эффекты выполнения (input, output, preconditions, effects – IOPE). Свойства гарантированного качества сервиса остаются в интерфейсе сервиса вообще неопределенными или определяются некоторым случайным образом. Это создает новые трудности при поиска сервиса с требуемыми гарантируемыми характеристиками качества.
Кроме того, новые проблемы возникают при композиции сервисов, в особенности, при динамической композиции. Нужно не только, чтобы взаимно соответствовали IOPE-параметры компонуемых сервисов, но также, чтобы удовлетворялись системные требования в целом. При композиции сервисов могут возникать сложные потоки работ, что сильно затрудняет анализ требований к гарантированному качеству. Поэтому для успешного перехода к сервис-ориентированным системам с гарантированным качеством требуется адаптация существующих методов при одновременной разработке новых подходов.
Первая статья тематической подборки написана Пол Тауненд, Джай Ксу, Ник Лукер, Даченг Жанг, Джинпенг Хуэй, Джинксин Ли и Лианг Жонг (Paul Townend, Jie Xu, Nik Looker, Dacheng Zhang, University of Leeds, Leeds, UK, Jinpeng Huai, Jianxin Li, Liang Zhong, Beihang University, Beijing, China) и называется «CROWN-C: система промежуточного программного обеспечения для Grid с гарантией качества» («CROWN-C: A High-Assurance Service-Oriented Grid Middleware System»).
Сервис-ориентированную архитектуру (SOA) можно определить как архитектуру приложений, где все функции выполняются в независимых службах, вызываемых в указываемых последовательностях, которые образуют бизнес-процессы. SOA облегчает разработку сложных межорганизационных программных систем, а также интеграцию существующих унаследованных систем.
Слабая связанность сервисов со строго определенными интерфейсами позволяет конструировать приложения, которые в соответствии с текущими потребностями пользователей во время выполнения обнаруживают автономные системные компоненты и связываются с ними. Разработчики могут использовать процесс чрезвычайно отложенного связывания (ultralate binding) для быстрого создания систем с динамическими условиями выполнения и запросами ресурсов. Конкретные функциональные возможности приложений можно частично изменять простым изменением композиции используемых в них сервисов.
Слабо связанная природа SOA означает также то, что разработчики часто могут повторно использовать сервисы в разных приложениях или легко реплицировать их для получения выигрыша в гарантоспособности. Доступность нескольких функционально эквивалентных сервисов может сокращать время и стоимость разработки и способствовать созданию отказоустойчивых систем.
В сообществе grid-вычислений сервис-ориентированная парадигма используется для создания сервис-ориентированных grid-систем (service-oriented grid, SOG). Этот подход помогает координировать совместное использование ресурсов и решать задачи в виртуальных организациях (virtual organizations, VO). VO образуется всякий раз, когда разработчик создает приложение или поток работ, где используются автономные сервисы, принадлежащие нескольким организациям, каждая из которых делится некоторыми проприетарными сервисами или частью своего знания.
Однако подход SOG порождает много новых проблем, которые не стоят перед разработчиками традиционных распределенных систем. Эти проблемы, главным образом, связаны с гарантоспобностью и безопасностью систем с гарантированным качеством, поскольку требования к этим системам существенно выше тех, которые ставятся перед обычными системами. Такие проблемы относятся как к композиции потоков работ, так и к базовым сетевым средам, являющимся неоднородными и охватывающими много административных доменов.
Гарантоспособность можно определить, как свойство компьютерной системы, позволяющее пользователям доверять сервисам, которые она им предоставляет. Традиционно гарантоспособность охватывает такие качества системы, как доступность (availability), защищенность (safety), целостность (integrity), удобство эксплуатации (maintainability), конфиденциальность (confidentiality) и надежность (reliability).
Многие проблемы гарантоспособности проистекают из автономности отдельных сервисов, участвующих в потоках работ VO. Например, у участника VO отсутствует контроль над доступностью сервисов, предоставляемых другими участниками. Участник VO также может очень мало знать (или не знать ничего) о надежности таких сервисов, процедурах доступа, сохраняющих конфиденциальность данных, совместно используемых вместе с этими сервисами, процедурах, защищающих их целостность.
Кроме того, хотя на гарантоспособность сервис-ориентированных систем сильно влияет используемое промежуточное программное обеспечение, практически отсутствует информация об устойчивости самого этого программного обеспечения. При конструировании таких систем организации неявным образом не доверяют сервисом сторонних производителей, предпочитая создавать собственные сервисы, для которых у них имеется статистика качества обслуживания (quality-of-service, QoS). В обоих случаях отсутствуют методы оценки гарантоспособности.
Динамическая природа сервис-ориентированных приложений часто приводит к непредсказуемым потокам работ и бизнес-процессам. Поскольку в каждой организации, входящей в состав VO, имеются собственные механизмы безопасности и политики защиты своих локальных ресурсов, композиционное приложение должно функционировать в нескольких разнородных областях безопасности (security realm). Область безопасности – это группа принципалов (людей, компьютеров, сервисов и т.д.), зарегистрированных с применением соответствующей системы аутентификации и управляемых на основе согласованного набора безопасных процессов и политик.
Поскольку организации и сервисы могут взаимодействовать очень динамическим и гибким образом, не для каждой пары взаимодействующих областей безопасности могут иметься соглашения по поводу аутентификации. Возможное решение этой проблемы состоит в образовании некоторых вспомогательных областей, обеспечивающих путь аутентификации между двумя раздельными областями, которые должны взаимодействовать. Однако создание такого пути аутентификации чревато существенными накладными расходами. Этот процесс может включать многочисленные дополнительные операции для преобразования удостоверяющей информации, и в нем требуется длинная цепочка промежуточных вызовов. Кроме того, во многих случаях такие пути аутентификации между областями безопасности просто не могут существовать.
Еще одна проблема, относящаяся к безопасности, состоит в том, что традиционные методы контроля доступа, основанные на идентификации каждого пользователя VO, не масштабируются при возрастании числа пользователей и сервисов, особенно, если состав пользователей и сервисов часто изменяется в динамике. Проблематично в динамике обеспечить взаимное доверие между инициаторами запросов сервисов и поставщиками этих сервисов, находящимися в разных областях безопасности, при сохранении их конфиденциальности в открытых средах Grid.
Эти проблемы по отдельности решаются и в сообществе Web-сервисов, и в сообществе Grid-вычислений, но ни в одной из развитых систем промежуточного программного обеспечения SOG не решается задача интеграции конкретных технологий обеспечения гарантоспособности и безопасности с целью обеспечения полностью интегрированной среды оценки и внедрения безопасных и гарантоспособных приложений и систем. Исследователи из университетов Лидс в Великобритании и Беньхань в КНР совместно разрабатывают систему промежуточного программного обеспечения для Grid, в которой обеспечиваются интегрированные инструментальные средства для оценки гарантоспособности и внедрения систем с гарантией качества. В проекте COLAB (Collaboration between Leeds and Beihang) в систему промежуточного программного обеспечения для Grid CROWN (China Research and Development Environment over Wide-area Networks) встраиваются средства обеспечения гарантоспособности и безопасности, разработанные в университете Лидс.
Вей-Тек Цай, Ксинью Жоу, Йинонг Чен и Ксиайинг Бай (Wei-Tek Tsai, Xinyu Zhou, Yinong Chen, Arizona State University, Xiaoying Bai, Tsinghua University, China) представили статью «О тестировании и оценке сервис-ориентированного программного обеспечения» («On Testing and Evaluating Service-Oriented Software»).
Сервис-ориентированная архитектура (SOA) поддерживает совместное использование Web-сервисов и коммуникации с ними. Многочисленные стандарты и поддерживающие их методы, направленные на решение проблем безопасности Web-сервисов (WSSecurity, WS-Trust, Extensible Access Control Markup Language (XACML), Security Assertion Markup Language (SAML) и т.д.), обеспечивают уровень безопасности, которому могут доверять пользователи. Например, в среде Internet люди могут безопасно пользоваться услугами банков, платить по счетам и совершать покупки.
Несмотря на наличие такого прогресса в SOA, методы обеспечения надежности сервисов, их тестирования и верификации являются недостаточно зрелыми, чтобы обеспечивать гарантоспособную и заслуживающую доверия обработку данных. Исследования в областях Web-сервисов и SOA в настоящее время концентрируются на протоколах, функциональности, транзакциях, онтологии, композиции, семантическом Web и интероперабельности, а гарантоспособности и доверительности сервисов уделяется недостаточное внимание.
SOA позволяет разработчикам приложений производить поиск сервисов и использовать сервисы, обеспечиваемые различными поставщиками. Поскольку брокеры сервисов не несут ответственность за качество сервисов, их достоверность не гарантируется. Традиционные методы обеспечения гарантоспособности – доказательство корректности, отказоустойчивость, формальная верификация на основе моделей (model checking), тестирование, оценка и т.д. – могут повысить уровень доверительности отдельных сервисов. Однако разработчикам необходимо переработать эти методы для обеспечения возможности их применения к динамическим приложениям, компонуемым из сервисов во время выполнения.
В приложениях SOA можно использовать традиционные подходы независимой верификации и валидации на каждой фазе жизненного цикла разработки (моделирование, сборка, внедрение, управление и т.д.). Однако в этом случае должен быть доступен весь код, и независимая группа должна тестировать каждый сервис и все возможные комбинации сервисов. Для реализации такого подхода требуются очень большие расходы, поскольку число доступных сервисов и их комбинаций может быть огромным. Кроме того, поставщики сервисов могут не захотеть предоставлять свой код, который часто выполняется на их собственных серверах.
Для решения проблем гарантоспособности и доверительности SOA авторы предлагают открытую среду, в которой для повышения эффективности тестирования применяется групповое тестирование. В этой среде распознаются и устраняются тестовые случаи, не обеспечивающие дополнительного покрытия. Кроме того, при добавлении новых тестовых случаев заново оценивается покрытие получаемого тестового набора. Эксперименты показывают, что среда позволяет сократить расходы на тестирование при сохранении его эффективности.
Авторами статьи « QoS-реконфигурируемые Web-сервисы и композиции для систем с гарантией качества» («QoS-Reconfigurable Web Services and Compositions for High-Assurance Systems») являются И-Линг Йен, Фарох Бастани, Хуэй Ма и Хонг Мей (I-Ling Yen, Farokh B. Bastani, University of Texas at Dallas, Hui Ma, Cisco Systems, Hong Mei, Peking University, China).
Реконфигурируемость – это важное свойство многих современных адаптивных прикладных систем, в особенности, систем с гарантией качества. Например, динамическая адаптивность часто требуется в интеллектуальных системах управления транспортными средствами, системах авионики, космических системах и интеллектуальных видеосетях при отказах компонентов системы, падении уровня мощности, непредвиденных условиях эксплуатации и т.д. Кроме того, некоторые системы являются многоцелевыми, т.е. предназначенными для решения класса задач. В каждом случае системные требования являются схожими, но для достижения каждой конкретной цели требуется адаптация.
Сервис-ориентированная архитектура (SOA) – это идеальное средство для получения реконфигурируемых систем, которые могут статически или динамически выбирать и компоновать сервисы для удовлетворения изменяющихся системных требований.
Во многих исследовательских работах задача выбора сервиса решается на основе критериев качества обслуживания (quality-of-service, QoS), таких как надежность, выполнение ограничений реального времени и точность. Однако в большинстве процессов разработки системы требования QoS специфицируются только на общесистемном уровне, и остается непонятным, как вывести из них цели QoS для отдельных сервисов. Хотя проводились исследования методов эффективной компоновки группы сервисов, удовлетворяющий общесистемным требованиям QoS, во многих реальных приложениях имеется ограниченный выбор сервисов. Это особенно верно для специализированных прикладных областей.
Реконфигурируемые сервисы обеспечивают альтернативный подход, который может служить дополнением к методам выбора сервисов с целью удовлетворения изменяющихся системных требований QoS. Например, сервис кодирования изображений может обрабатывать изображение с разным разрешением и различными коэффициентами сжатия для достижения компромисса между расходами времени и памяти, с одной стороны, и качеством, с другой стороны. Сервис поддержки принятия решений может производить поиск наилучшего решения в большом пространстве поиска, достигая требуемого компромисса между временем вычислений и точностью решения. Реконфигурируемые сервисы могут расширять пространство решений и существенно способствовать гарантированию требуемого качества обслуживания.
Авторы разработали основанный на правилах метод параметризации для преобразования компонентов в реконфигурируемые сервисы. Кроме того, разработаны методы анализа QoS и принятия решений для выбора реконфигурируемых и обычных сервисов для компоновки системы.
Статью «Обеспечение своевременности в сервис-ориентированной архитектуре электронной науки» («Assuring Timeliness in an e-Science Service-Oriented Architecture») написали Джон Слоан, Тафи Хошгофтаар и Венкат Рафав (jJohn C. Sloan, Taghi M. Khoshgoftaar, Florida Atlantic University, Venkat Raghav, Motorola).
Для организации вычисления на основе общедоступных ресурсов (public-resource computing), называемых также супервычислениями на безвозмездной основе (volunteer supercomputing), требуются услуги громадного числа поставщиков, каждый из которых обеспечивает одну и то же услугу (предоставление вычислительной мощности) относительно небольшому количеству инициаторов запросов (обычно исследователей, выполняющих некоторый проект). В центре этой сервис-ориентированной архитектуры (SOA) находится некоторый портал, связывающий поставщиков и инициаторов запросов. Основной задачей портала является координация взаимодействия с многочисленными поставщиками, зарегистрированными на портале, даже в тех случаях, когда большая часть этих провайдеров располагается в ненадежных периферийных областях Internet. Для обеспечения надежного взаимодействия в такой SOA должны решаться проблемы, внутренне присущие структуре супервычислений на безвозмездной основе.
В этой архитектуре «поставщик» в действительности является специальной программой, которую собственники персональных компьютеров загружают с портала и инсталлируют на своем компьютере. Когда PC становится свободной, например, когда активизируется режим сохранения экрана, провайдер предлагает порталу свой вычислительный сервис. По сути дела, именно провайдер является душей SOA супервычислений на безвозмездной основе.
В этой ситуации разработчики SOA должны обращать тщательное внимание на аспекты координации и использования, разрешая проблемы провайдеров, сложных потоков работ, процессов с ограничениями ввода-вывода. К числу проблем относится все, начиная от ненадежных или утрачиваемых сетевых соединений и заканчивая новыми пользователями, ошибки в программах которых могут привести к зависаниям PC провайдеров. Для большей части этих проблем характерен один и тот же симптом: провайдер затрачивает на выполнение своей работы существенно большее время, чем ожидает портал.
Портал безвозмездных супервычислений должен справляться с разнообразными повседневными сбоями, возникающими из-за недоступности PC, не только теми, которые вызываются из-за отмеченных ранее проблем, но и такими, которые проявляются, например, при неожиданном выключении PC ее владельцем. Для обработки таких сбоев портал должен знать, когда следует переназначить часть работы другому провайдеру, используя данные о точности и своевременности предыдущих услуг этого провайдера. В совокупности на портале требуется поддерживать сложный процесс принятия решений.
Это процесс принятия решения моделировался для упрощенной версии Berkeley Open Infrastructure for Network Computing (Boinc), и модель была оттранслирована в язык Time Automata среды Uppaal, предназначенной для верификации систем реального времени. Модель была расширена с целью охвата дополнительных сценариев использования, таких как приложения электронной науки с ограничениями ввода-вывода.
При моделировании Boinc использовались три дополнительных средства верификации на основе моделей (model checker), обеспечивших авторам понимание требований к системам вычислений на основе общедоступных ресурсов: Simple Promela Interpreter (Spin), Labeled Transition System Analyzer (LTSA) и Colored Petri Net Tools (CPN Tools). Поскольку инфраструктура Boinc ориентирована на координацию вычислительно ограниченных частей работ, авторы в большей степени стремились к исследованию возможности применения SOA типа Boinc для выполнения частей работ с ограничениями ввода-вывода, а не корректности результатов.
Авторами последней статьи тематической подборки – «Спецификация сервисов, гарантирующих качество » («Specifying High-Assurance Services») – являются Колин Аткинсон, Даниэль Бреннер, Джованни Фальконе и Моника Юхаш (Colin Atkinson, Daniel Brenner, Giovanni Falcone, Monika Juhasz, University of Mannheim).
Сервис-ориентированный подход становится доминирующей парадигмой при построении архитектуры корпоративных систем, поскольку он в значительной степени содействует их гибкости и способности к развитию. Однако эти достоинства сервис-ориентированных архитектур одновременно усложняют верификацию систем. Разработчики программного обеспечения могут интегрировать компоненты традиционных систем в контролируемых условиях среды разработки и совместно их тестировать до развертывания системы Однако у них отсутствует возможность свести вместе компоненты (сервисы) SOA, пока они не образуют систему в среде времени выполнения, и во время работы этой системы взаимосвязи между компонентами могут изменяться динамически.
Тем самым, отсутствуют гарантии того, что показатели контроля качества, полученные во время разработки и развертывания системы, останутся действительными при изменениях ее конфигурации. Риск отказов по причине неправильного толкования контрактов в SOA оказывается гораздо выше, чем в традиционных системах, где все контракты можно протестировать во время разработки. Это, в свою очередь, затрудняет и удораживает использование систем с гарантией качества, которые должны обеспечивать высокий уровень гарантоспособности с известной степенью достоверности.
Наилучшим способом решения этой проблемы большинство поставщиков технологии SOA и исследователей считает семантическую композицию сервисов. Основой этого подхода является описание сервисов настолько точным образом, что корректность композиций сервисов может быть гарантироваться динамически, за счет автоматических методов логического вывода, а не традиционной верификации.
Для этого лучше всего подходят языки, обладающие не только строго определенной семантикой, основанной на логике предикатов, но также и хорошо известными вычислительными свойствами, поддерживающими эффективный автоматический вывод. Поэтому в подходах к семантическому описанию сервисов, таких как Ontology Web Language for Services (OWL-S) или Web Service Modeling Ontology (WSMO), используются языки, основанные на дескриптивной логике (description logic) и тщательно разработанные для повышения эффективности логического вывода.
Семантическая композиция сервисов будет играть важную роль в сервис-ориентированных разработках. Однако до тех пор, пока в процессе композиции сервисов принимают участие люди, у его направленности на обеспечение гарантий качества на основе логического вывода будет иметься оборотная сторона. Семантическая композиция сервисов основывается на языках, оптимизированных для обеспечения эффективного логического вывода, а не для удобочитаемости. Кроме того, для получаемых спецификаций отсутствует поддержка методов динамической верификации, являющихся основой деятельности контролирующей деятельности людей.
Таким образом, хотя этот подход хорошо работает для относительно небольших систем, поддающихся автоматическому выводу, для больших и сложных систем, для которых требуется участие людей, работа с семантическими описаниями сервисов затруднительна. Однако именно для этих крупных и сложных систем более всего требуется гарантированное обеспечение качества и участие людей.
Группа инженерии программного обеспечения Мангеймского университета исследует вспомогательный подход к спецификации сервисов, направленный на достижение баланса между возможностью машинной обработки и удобочитаемостью, а также на поддержку методов как логического вывода, так и тестирования. Авторы полагают, что в течение долгого времени люди будут продолжать участвовать в процессах композиции и верификации сложных сервис-ориентированных систем, и что использование методов вывода должно уравновешиваться поддержкой человеческой деятельности по разработке и верификации.
В связи с этим авторы основывают свой подход на языках Unified Modeling Language (UML) и Object Constraint Language (OCL), разработанных в расчете на простое использование людьми, а новом методе описания тестов. Хотя эти языки не оптимизированы для логического вывода, к анализу UML/OCL применим ряд методов верификации на основе моделей и доказательства теорем. Кроме того, они являются основой множества технологий преобразования моделей и специализации языков, поддерживаемых индустрией разработки на основе моделей (model-driven development).
Вне тематической подборки в августовском номере журнала опубликована статья Лоуренса Кэрина, Джорджа Цыбенко и Джеффа Хафса (Lawrence Carin, Duke University, George Cybenko, Dartmouth College, Jeff Hughes, Air Force Research Laboratory) «Стратегии компьютерной безопасности: методология QuERIES» («Cybersecurity Strategies: The QuERIES Methodology»).
Организации как частного, так и государственного секторов пытаются определить объемы затрат, требуемых для защиты их интеллектуальной собственности. В результате они обычно реализуют стратегии компьютерной безопасности без использования количественной методологии оценки и снижения рисков. В настоящее время оказывается трудно ответить даже на простые вопросы: каков должен быть объем инвестиций, какие меры безопасности будут оказывать наибольшее влияние, и как измерить уровень повышения безопасности? Подход Quantitative Evaluation of Risk for Investment Efficient Strategies (QuERIES) разработан для обеспечения ответов на подобные вопросы и позволяет получить количественную оценку рисков компьютерной безопасности. Подход основывается на строгих количественных методах компьютерных наук, теории игр, теории управления и экономики. Предварительные эксперименты с методологией QuERIES показали, что она является достойной альтернативой использованию «красных команд» (red teaming; в «красной команде» участвуют взломщики системы безопасности, не знакомые с ее внутренним устройством), хакерского (black-hat) анализа (в котором участвуют взломщики, имеющие доступ к деталям организации защиты) и других методологий поддержки принятия решений, ранее использовавшихся для оценки рисков компьютерной безопасности.
До настоящего времени методология QuERIES фокусировалась на проблеме защиты критической интеллектуальной собственности министерства обороны США, где катастрофические последствия вызывает потеря любой единицы интеллектуальной собственности, в отличие от интеллектуальной собственности потребителей, которые могут допустить утрату нескольких единиц интеллектуальной собственности, если это позволит сохранить достаточный уровень дохода. К первой категории также относятся разработка систем вооружения, разработка микропроцессоров, сложное программное обеспечение и базы данных, содержащие персональную и финансовую информацию. Примерами второй категории являются цифровая музыка, видео, программное обеспечение, ориентированное на индивидуальных потребителей, и электронные книги. Специалисты в области компьютерной безопасности могут применять QuERIES для анализа других сценариев атак или защиты путем соответствующего изменения используемой экономической модели.