Обзор октябрьского и ноябрьского 2003 года номеров журнала Computer (IEEE Computer Society, Vol. 36, No. 10, October, No. 11, November, 2003)
У октябрьского номера простая и уже привычная тема — Web-сервисы; этой теме посвящены четыре статьи и предшествующая им заметка приглашенных редакторов.
Приглашенными редакторами тематической подборки на этот раз стали Джен-Яо Чунг (Jen-Yao Chung), Квей-Джей Лин (Kwei-Jay Kin) и Ричард Мэтью (Richard Mathieu). Редакторы назвали свою заметку «Использование компьютеров на основе Web-сервисов: развитие интероперабельности программного обеспечения» (Web Services Computing: Advancing Software Interoperability). С технической точки зрения Web-сервисы являются стандартизованным способом интеграции Web-приложений на основе открытых стандартов, в число которых входят XML, SOAP, WSDL и UDDI. Основными конкурентами на рынке средств разработки Web-сервисов являются технологии .Net компании Microsoft и J2EE от Sun Microsystems. В течение многих лет цель достижения интероперабельности программного обеспечения в условиях сетевой среды оставалась иллюзорной. Стандарты, подобные CORBA и DCOM, не позволили добиться значительных успехов. По мнению редакторов тематической подборки, гибкость и универсальность подхода Web-сервисов дают новые шансы на достижение реальной интероперабельности. Открытым вопросом, несмотря на появление таких языков, как BPML (Business Process Modeling Language) и XPDL (XML Process Definition Language), продолжает оставаться координация совместной работы набора Web-сервисов в одном бизнес-процессе.
Первая регулярная статья тематической подборки написана Марком Тернером (Mark Turner), Дэвидом Будгеном (David Budgen) и Перлом Бриретоном (Pearl Brereton) из университета Киля (Великобритания). Статья называется «Превращение программы в сервис» (Turning Software into a Service). В 1999 году университеты Киля и Манчестера образовали исследовательскую группу Pennine. Эта группа выдвинула и развивает концепцию SaaS (Software as a Service), которая предусматривает создание «ведомого требованиями» рынка программного обеспечения, обеспечивающего предоставление услуг при возникновении соответствующего требования. Авторы статьи отмечают, что парадигма Web-сервисов находится в соответствии с SaaS, но трех базовых протоколов (SOAP, WSDL и UDDI) оказывается достаточно только в простых случаях, для которых достаточен стиль вызова удаленных процедур. Предлагается расширенный стек протоколов, основанный на разработках различных компаний и консорциумов.
Стек разделяется на три вертикальных раздела. Первый раздел содержит протоколы, в которых используется или расширяется WSDL. Во второй раздел включены протоколы, происходящие из Semantic Web — RDF (Resource Description Language) и DAML-S (DAPRA Agent Markup Language for Services). Третий вертикальный раздел стека включает спецификации ebXML (www.ebxml.org), которые, хотя и определены вне контекста Web-сервисов, но обеспечивают во многом схожую функциональность.
Статья «Оркестровка и хореография Web-сервисов» (Web Services Orchestration and Choreography) написана Крисом Пелцем (Chris Peltz) из компании Hewlett-Packard. Термины «оркестровка» и «хореография» описывают два аспекта создания бизнес-процессов на основе составных Web-сервисов. Оркестровка относится к определению бизнес-процесса, который может взаимодействовать с внешними и внутренними Web-сервисами. Происходящие на основе обмена сообщениями взаимодействия включают бизнес-логику и порядок выполнения задач; они могут выходить за границы приложений и организаций, определяя долговременную, транзакционную, многошаговую бизнес-модель. Оркестровка всегда представляет управление с позиций одного участника процесса. Хореография позволяет каждому участнику описать свою часть взаимодействия. При использовании хореографии отслеживаются последовательности сообщений между несколькими участниками и источниками. Предлагаемые стандарты оркестровки и хореографии должны удовлетворять нескольким требованиям, относящимся к языку описания потока работ бизнес-процесса и инфраструктуре выполнения процесса. К числу этих требований относятся асинхронный вызов службы; управление исключительными ситуациями и обеспечение транзакционной целостности на основе компенсационного подхода; динамичность, гибкость и адаптируемость оркестровки к изменению потребностей бизнеса; возможность композиции сервисов более высокого уровня из существующих оркестрованных процессов.
К ранним языкам определения бизнес-процессов путем комбинирования Web-сервисов относятся XLANG компании Microsoft (www.gotdotnet.com/team/ xml_wsspecs/xlang_c/default.htm) и Web Services Flow Language (WSFL) компании IBM (www-3.ibm.com/software/solutions/ webservices/pdf/WSFL.pdf). XLANG основан на языке WSDL; его основное назначение состоит в определении бизнес-процессов и организации обмена сообщениями между Web-сервисами. WSFL позволяет описывать как публичные, так и частные процессы. Определяется обмен данными, последовательность выполнения и отображение каждого шага процесса на конкретные операции. Поддерживается интерфейс WSDL и рекурсивная композиция. В мае 2003 года компании Microsoft, IBM, Siebel, BEA Systems и SAP выпустили спецификацию языка BPEL4WS (Business Process Execution Language for Web Services — www.106.ibm.com/ developerworks/webservices/library/ws-bplel). Язык построен над WSDL и позволяет описывать логику управления для координации Web-сервисов, участвующих в потоке бизнес-процесса. Компании Sun Microsystems, BEA и Intalio разработали спецификацию языка Web Services Choreography Interface (WSCI — www.sun.com/software/xml/ developers/wsci/wsci-spec-10.pdf). Это расширение WSDL позволяет определить общую хореографию Web-сервисов. К перечисленным языкам примыкает и BPML (Business Process Management Language), разработанный консорциумом BPMI (www.bpmi.org). К тематике оркестровки Web-сервисов относятся также следующие вопросы: одноранговая модель взаимодействий; безопасность; инфрастуктура управления Web-сервисами. В отношении последнего вопроса компания Hewlett-Packard разработала соответствующее предложение (http://devresource.hp.com/drc/ specifications/wsmf/WSMF-WSM.isp) и представила его на рассмотрение в консорциум OASIS (www.oasis-open.org).
Тимоти Томпсон (Timothy Thompson), Рик Уэйл (Rick Weil) и Марк Вуд (Mark Wood) из компании Kodak опубликовали статью «CPXe: Web-сервисы для воспроизведения изображений в Internet» (CPXe: Web Services for Internet Imaging). С целью поддержки развития рынка услуг в области цифровой фотографии в Kodak совместно с другими ведущими производителями цифровой фототехники создали инфраструктуру Common Picture eXchange environment (CPXe — www.i3a.org/I-cpxe.html), которая представляет собой характеризующуюся высокой степенью интероперабельностью основу обеспечения услуг. Парадигма Web-сервиса используется для обеспечения пользователей к растущему рынку услуг и позволяет предлагать потребителям широкий набор услуг в области цифрового воспроизведения изображений. Описывается общая архитектура и особенности реализации стандартов. Приводятся некоторые практические соображения относительно потребности развития и совершенствования стандартов.
Последняя статья тематической подборки написана группой исследователей из Тайваня. Она озаглавлена «Интеграция Web-сервисов в Intranet при посредничестве онтологий» (Ontology-Mediated Integration of Intranet Web Services). Первого по списку автора зовут Це-Минг Цай (Tse-Ming Tsai). Платформа SOTA (Smart Office Task Automation) основывается на совместном использовании технологий Web-служб и Semantic Web. Язык WSDL используется для определения интерфейсов к реализации сервиса, доступной через SOAP. Централизованный реестр сервисов, предлагаемых на глобальном рынке, поддерживается на основе UDDI. Для автоматизации доступа пользователей к требуемым Web-сервисам используется подход «вспомогательных онтологий» (в контексте данной работы под термином «онтология» понимается явная спецификация терминов предметной области и связей между ними). На основе онтологий SOTA обучается семантике использования API и затем интегрирует требуемые службы для автоматизации задач. Практическая цель проекта SOTA состояла в интеграции корпоративных intranet-приложений с обеспечением унифицированного использования унаследованных систем.
Вне тематической подборки в журнале опубликованы еще три большие статьи. Марк Халперн (Mark Halpern) из компании Berkeley Technology Group опубликовал статью «VIM: примирение программного обеспечения с аппаратурой» (VIM: Taming Software with Hardware). Более половины общего размера кода в современных программах прямо или косвенно связано с управлением памятью. Программисты (и компиляторы) должны обеспечить присутствие в основной памяти тех частей кода и данных, которые требуются в каждый момент выполнения программы. Наблюдая постоянную тенденцию к удешевлению основной памяти и росту ее объема, автор статьи делает предположение о возможности обеспечения на аппаратном уровне практически бесконечной памяти (virtual infinitive memory, VIM). Собственно, почти вся статья состоит из рассуждений о том, насколько хорошо будет жить программистам в условиях VIM и насколько станут дешевле программы. Конечно, говорит автор, всегда будут существовать программы, которым не хватит и будущей громадной основной памяти. Но этих программ будет не слишком много, и особенностями их организации можно пренебречь. Самым удивительным является то, что Халперн, хотя и является директором «группы технологий», имеет степень магистра по английскому языку и литературе. Непонятно, почему он отважился на столь радикальные прогнозы и рекомендации.
Статья «Решение Awari с использованием параллельного регрессионного анализа» (Solving Awari with Parallel Retrograde Analysis) представлена Джоном Ромейном (John Romein) и Генри Балом (Henri Bal). Игра «авари» существует уже 3500 лет, но до последнего времени было неизвестно, выигрывает или проигрывает игрок, делающий первый ход, если совершает только правильные ходы.
Наконец, статью «Использование методов машинного обучения для моделирования музыкальных стилей» (Using Machine-Learning Methods for Musical Style Modeling) написали Шломо Дубнов (Shlomo Dubnov), Герард Ассаяг (Gerard Assayag), Оливер Лартилло (Oliver Lartillot) и Гилл Беджерано (Gill Bejerano). Примененный авторами метод машинного обучения состоит в выводе математической модели в виде набора стохастических правил из набора музыкальных образцов одного композитора. При разработке основного компонента системы — предсказателя использовались два подхода: инкрементальный разбор (Incremental Parsing) и предсказательные суффиксные деревья (Prediction Suffix Trees). Реализация прототипа OpenMusic, разработанная в IRCAM, свободно доступна на сайте www.ircam.fr/OpenMusic.
Скрытые контракты .NET
Обозначенной темой ноябрьского номера являются «системы, для которых надежность является критичной» (Safety-Critical Systems). Но, по сути дела, тематическая подборка статей отсутствует: в нее собраны всего две статьи, и только первая непосредственно относится к теме.
Эта статья так и называется: «Проектирование компьютерных систем, для которых надежность критична» (Designing Safety-Critical Computer Systems). Автор статьи — Уильям Дан (William Dunn). Компьютеры все чаще применяются в приложениях данной категории, используемых в повседневной жизни людей. Однако как показывают исследования, предлагаемые разработчиками концепции и архитектуры подобных систем, часто оказываются неудовлетворительными на практике. По мнению автора, это связано с тремя причинами: (1) недостаточным пониманием того, что делает систему «надежной»; (2) отсутствием анализа последствий встраивания «надежного» компонента в более крупную систему; (3) игнорированием точек сбоя, которые могут превратить систему в ненадежную при практическом использовании. В действительности, не бывает абсолютно надежных систем, и на практике всегда приходится иметь дело с риском аварии (mishap risk). При разработке необходимо учитывать допустимый уровень риска аварии, обращая внимание на каждый из пяти основных компонентов компьютерной системы: приложение (физическая сущность, для которой осуществляется мониторинг и управление); сенсор; эффектор (исполнительный элемент); оператор и собственно компьютер, включая аппаратуру и программное обеспечение. Демонстрируется, каким образом можно добиться приемлемого уровня риска аварии системы с включением в нее дополнительных элементов. Обсуждаются также существующие подходы к оценке надежности систем.
Вторая статья, включенная в подборку, написана Карин Арну (Karine Arnout) и Бертраном Мейером (Bertrand Meyer). Название статьи: «Раскрытие скрытых контрактов: пример .NET» (Uncovering Hidden Contracts: The .NET Example). Насколько я понимаю, никто не пытался ввести короткий русский эквивалент для термина design by contract, поэтому будем использовать «почти» транслитерацию с пояснением смысла. Контракты программного обеспечения состоят из предусловий и постусловий подпрограмм и инвариантов классов, включаемых в текст программы. Наличие контрактов способствует корректности программ, документированию, отладке и тестированию, управлению наследованием и т.д. Авторы статьи тесно связаны с компанией Eiffel Software (Мейер — ее основатель). Проектирование на основе контрактов является ключевым подходом в среде разработки на языке Eiffel (в частности, этот подход активно используется при разработке библиотек классов). Авторы были удивлены тем, что контракты не присутствуют явно в библиотеках сред Java и .NET. Они решили разобраться в том, действительно ли не требовались спецификации при разработке этих библиотек, или же эти спецификации на самом деле присутствуют, но явно не выделены. Была проделана большая ручная работа по анализу исходного текста библиотеки Collections .NET; оказалось, что большую часть спецификаций, требуемых для контракта, в этой библиотеке найти можно. Написан прототип мастера Eiffel Contract, помогающего составлять контракты для .NET. Планируется оформить эту программу как Web-сервис, чтобы любой программист мог содействовать облагораживанию контрактами программного обеспечения .NET.
Перейдем к «нетематическим» статьям ноябрьского номера. Статью «Добыча данных для очень занятых людей» (Data Mining for Very Busy People) написали Тим Мензис (Tim Menzies) и Йинг Ху (Ying Hu). Термин data mining используется в русской компьютерной литературе уже достаточно долго, однако согласия относительно его русскоязычного эквивалента так и нет. Думаю, основная причина состоит в «сленговом» происхождении термина. Во многих предложениях русских вариантов термина видно желание улучшить оригинал, что приводит к его подмене. Поэтому, поясняя, что речь идет о добывании из имеющихся данных некоторых закономерностей (если угодно, знаний), я и здесь продолжу использовать «кальку». Авторы статьи разработали систему добычи данных TAR2, которая отличается от других подобных систем склонностью к минимализму. Как уверяют авторы, «большинство добытчиков данных являются неутомимыми охотниками за детализированными сводками, производя обширные описания». Очень занятым людям некогда анализировать такие описания при потребности срочного принятия решения. TAR2 обеспечивает минимальный набор ключевых различий между обрабатываемыми фактами, который облегчает понимание существующей ситуации. В статье приводится много примеров использования TAR2.
Авторами статьи «Носимые сети следующего поколения» (Next-Generation Wearable Networks) являются Рой Эшок (Roy Ashok) и Дхарма Агравал (Dharma Agrawal). Носимая сеть (wearable network), т.е. компьютерная сеть, пригодная для встраивания в обычную одежду, поддерживает совместное функционирование различных компьютерных устройств, монтируемых на одежде. Такого рода сети применяются в медицине, в управлении сложными техническими устройствами, и область применения носимых сетей постоянно расширяется. Носимая сеть должна включать два компонента: один связывает «одежную» компьютерную систему с внешним миром (off-body network), а другой — объединяет устройства, располагаемые непосредственно на одежде (on-body network). Внешняя сеть может базироваться на различных имеющихся беспроводных технологиях, а для выбора оптимальной технологии внутренней сети требуются дополнительные исследования. В статье приводится краткий обзор исследовательских проектов в области носимых компьютерных систем, а также обсуждаются сетевые стандарты, потенциально пригодные для использования в данной области, и некоторые реализации этих стандартов.
У статьи «SCTP: стандарт устойчивого транспорта данных в Internet» (SCTP: A Proposed Standard for Robust Internet Data Transport) шесть авторов; первый в их списке — Армандо Каро (Armando Caro). Транспортный протокол общего назначения SCTP (Stream Control Transmission Protocol) расширяет возможности протоколов TCP и UDP, являясь производным протоколом от протокола передачи телефонных сигналов в IP-сетях. На сегодняшний день SCTP имеет статус стандарта IETF (RFC 2960, www.ietf.org/rfc/rfc2960.txt). Подобно TCP он обеспечивает надежное, полнодуплексное соединение и механизмы контроля перегрузки сети. В отличие от TCP и UDP, в SCTP имеются новые варианты доставки, которые особенно желательны в телефонных и мультимедийных приложениях. Статья содержит краткое описание стандарта.
Название еще одной большой статьи ноябрьского номера — «Масштабирование Web-сервисов с использованием емкостных сетей» (Scaling Web Services with Capacity Provision Networks). Ее авторы: Ксианджун Генг (Xianjun Geng), Рэм Гопал (Ram D. Gopal), Р. Рамеш (R. Ramesh), Эндрю Винстнон (Andrew Whinston). Емкостная сеть (capacity provision network, CPN) — это сеть кэширующих серверов, принадлежащих разным Internet-провайдерам, которые оперируют этими серверами и координируют их работу на основе торговли емкостями кэшей. Авторы приводят многоуровневое представление компонентов Web-сервисов, где вертикальные уровни соответствуют механизмам, поддерживающим конкретную отрасль, а горизонтальные — конкретным компонентам, применимым в разных прикладных областях. Отмечается важность инфраструктурного уровня Web-сервисов, на котором должно обеспечиваться совместное использование инфрастуктуры Web-сервисами более высоких уровней. CPN обеспечивает построение части такой инфрастуктуры, в которой основной совместно используемый ресурс — это кэш прокси-серверов.
Хочу напомнить, что наступило время определиться со своим участием в IEEE Computer Society. Поверьте мне, компьютерным профессионалам это полезно. Желаю всем читателям счастья и успехов в Новом году, Сергей Кузнецов (kuzloc@ispras.ru).