Скрытые контракты .NET
Сергей Кузнецов
Открытые системы, #12/2003
Обзор ноябрьского 2003 года номера журнала Computer (IEEE Computer Society, Vol. 36, No. 11, November 2003)
Обозначенной темой ноябрьского номера являются "системы, для которых надежность является критичной" (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 обеспечивает построение части такой инфрастуктуры, в которой основной совместно используемый ресурс - это кэш прокси-серверов.