Как всегда, в январском номере журнала Computer (Computer, IEEE Computer Society, Vol. 40, No. 1, January 2007), публикуются статьи, посвященные новым и перспективным разработкам в области Computer Science.
Первую статью, озаглавленную «Архитектуры для кремниевой наноэлектроники и того, что за ней последует» (Architectures for Silicon Nanoelectronics and Beyond), представили Айрис Бахар, Дэн Хаммерстром, Джастин Харлоу, Уильям Джойнер-мл., Клиффорд Ло, Диана Маркулеску, Алекс Орайлоглы и Массуд Педрам.
В индустрии полупроводников имеются серьезные проблемы с плотностью рассеивания мощности, масштабированием межсоединений, дефектами и неустойчивостью, превышением требуемого уровня производительности и плотности, сложностью проектирования и ограничениями пропускной способности памяти. Дальнейшее повышение производительности должно обеспечиваться за счет параллелизма, а не наращивания тактовой частоты. Наноэлектроника, претендующая на то, чтобы прийти на смену технологии комплементарных металло-оксидных полупроводников (Complementary Metal-Oxide Semiconductor, CMOS), может помочь решить некоторые из этих проблем, но в то же время ставит новые. Вероятно, вычисления на молекулярном уровне позволят на порядки повысить уровень плотности и сложности устройств, но при этом возникают три важнейших вопроса. Как будет использоваться это громадное количество устройств? Каким образом следует усовершенствовать инструменты и методологии проектирования для их приспособления к радикально новым способам организации вычислений? Как производить надежные, предсказуемые системы из ненадежных компонентов с непредсказуемым поведением?
Для эффективного использования нанотехнологий потребуются не только решения по повышению уровня плотности, но и общесистемные решения. Нельзя разработать архитектуру без понимания приложений, которые будут на ней выполняться, а любое изменение парадигмы, лежащей в основе приложений и архитектуры, оказывает сильное влияние на требуемые процессы и инструменты проектирования. Исследователи должны уделять особое внимание дополнительным архитектурным и системным вопросам, возникающим при внедрении этих новых технологий, стремясь к сотрудничеству на всех уровнях — устройств, схем, архитектуры и систем.
Наноархитектура определяется авторами как организация базовых вычислительных структур, которые состоят из наномасштабных устройств и собираются в систему, способную вычислять нечто полезное. Наноархитектуры могут основываться на радикально различных вычислительных моделях и, благодаря потенциально большой производительности, способны обеспечивать улучшенные возможности.
В области полупроводниковой технологии будет сохраняться тенденция к миниатюризации. Но имеется расширяющийся разрыв между технологией устройств и ее возможностью обеспечивать производительность, пропорциональную плотности устройств. Показатели производительности, измеряемой в миллионах инструкций в секунду в расчете на мощность в один ватт, не сохраняются при увеличении числа миллионов устройств в одном чипе. Имеется также разрыв между плотностью устройств и возможностью проектировать новые чипы, в которых используются все устройства и гарантируется их корректная работа.
Дополнительные проблемы порождаются потреблением мощности и отводом тепла — при использовании эволюционного подхода в индустрии полупроводников затрачиваются громадные усилия на нахождение решений этих проблем, решать которые становится все труднее.
Осознавая завершение действия закона Мура в традиционной полупроводниковой технологии, многие исследователи склоняются к революционному подходу, что особенно важно в таких исследованиях, транзисторы и устройства памяти с углеродными нанотрубками, молекулярная электроника, спинтоника, квантовые вычислительные устройства, устройства магнитной памяти и оптоэлектроники. Этим технологиям посвящен раздел Emerging Research Devices документа 2005 International Technology Roadmap for Semiconductors (www.itrs.net/Links/2005ITRS/ERD2005.pdf). Увы, многие из этих устройств не будут использоваться до тех пор, пока не появится абсолютная потребность в смене технологии, а при использовании лабораторных образцов этих революционных наноэлектронных устройств для обеспечения гарантированно надежных вычислений требуется решить проблемы недостаточной надежности самих устройств и наличия высокого коэффициента помех.
Автором статьи Designing for Software?s Social Complexity («Проектирование с учетом социальной сложности программного обеспечения») является Хосу Луиз Фиадейро.
В короткой истории программной инженерии понятия «сложность» и «кризис» стали синонимами — индустрия программного обеспечения терпит поражение в сражении с возрастающей сложностью. В 2001 году в статье «Чудовище сложности» (www.economist.com/surveys/displayStory.cfm?story_id=568249) в журнале The Economist директор Института прогрессивных форм торговли корпорации IBM Стюарт Фельдман писал, что программированию свойственна постоянно возрастающая сложность. В той же статье он утверждал, что Internet изменяет природу программного обеспечения. Действительно, широко распространено мнение, что в ИТ-индустрии что-то меняется. В мае 2003 года в журнале The Economist говорилось, что вычисления становятся коммунальной услугой, а программное обеспечение — сервисом, и это серьезно изменяет экономику ИТ-индустрии (www.economist.com/printedition/displayStory.cfm?story_id=1747317). В 2005 году многие стали связывать эти изменения с сервис-ориентированной архитектурой (Service-Oriented Architecture, SOA), которую некоторые специалисты считают «промышленной революцией для программного обеспечения». По их мнению, идея SOA революционна, поскольку поддерживает метод построения ИТ-систем, основанных не на больших интегрированных программах, а на компактных модульных компонентах, что позволяет получать более надежные и гибкие компьютерные системы.
Но если все это верно, то революция в индустрии ожидается уже более десяти лет. В сентябре 1994 года в журнале Scientific American (www.cis.gsu.edu/~mmoore/CIS3300/handouts/SciAmSept1994.html) делались почти такие же замечания о потребности программной индустрии в промышленных методах: «Производители мушкетов не могли повысить продуктивность производства до тех пор, пока Эти Уитни не понял, как можно производить взаимозаменяемые детали, которые могли бы собираться любым квалифицированным рабочим. Подобно этому, должным образом стандартизованные программные «детали» могут повторно использоваться в разномасштабных системах». За месяц до появления этой публикации Национальный институт стандартов и технологий США (National Institute of Standards and Technology, NIST) объявил о намерении создать Программу развития передовых технологий для образования рынка компонентного программного обеспечения.
Но если выход кризиса программного обеспечения был заметен более десяти лет тому назад, то действительно ли индустрия программного обеспечения все еще находится в кризисном состоянии? Как может индустрия бороться со сложностью и афишировать компонентный подход и индустриализацию в качестве выхода из положения? Почему оказалось недостаточно наличия «компактных, модульных компонентов», обеспечиваемых компонентным программным обеспечением? Чем они отличаются от «небольших, модульных компонентов», подразумеваемых SOA?
Ответы на эти вопросы кроются в изменившемся определении понятия «сложность». Та «сложность», на которую жаловались проектировщики и разработчики программных систем в 1994 году, отличается от «сложности» в ее современном понимании. Сложность, с которой приходилось иметь дело десять лет назад, автор называет физиологической. Требовалось производить декомпозицию крупных и сложно организованных систем на мелкие, управляемые и повторно используемые части, которые мог бы собрать любой опытный программист.
SOA не имеет отношения к размеру системы: эта архитектура ориентирована на поддержку гибкости и возможности самосборки без вмешательства программиста. Сервисы в своей основе социальны, а потому у сложности теперь две стороны — физиологическая и социальная. Непонимание этого различия не дает возможности полностью избавиться от последствий прошедшего кризиса программного обеспечения. Для удовлетворения требований SOA, как и будущих программных архитектур, нужно сосредоточиться на принципах и методах проектирования и разработки, которые позволят справиться с социальной сложностью.
Следующую статью «Реинжиниринг Internet с целью улучшения безопасности» (Reengineering the Internet for Better Security) написали Манож Парамесваран, Ксиа Жао, Фанг Фанг и Эндрю Уинстон.
После десятилетнего периода стремительного развития Internet стала обладать возможностями изменения всех видов человеческой деятельности. Сокращая время и расстояния, Internet ускоряет процесс глобализации, связывая людей и компании по всему миру. Web становится основным интерфейсом для обмена информацией и обеспечения сервисов, а электронная почта — предпочтительным средством коммуникаций. Однако, в то же время, имеется возрастающее ощущение ненадежности среды Internet, что может ограничивать кажущийся безграничным потенциал Сети.
Возрастание объема и разнообразия вредоносных программ (malware), включая вирусы, черви, троянские кони, спам, схемы фишинга, DDoS-атаки (Distributed Denial-of-Service — «распределенный отказ в обслуживании»), шпионские и рекламные программы, приводит к тому, что Internet все больше раздражает индивидуальных пользователей и вызывает серьезную головную боль у организаций. По данным опроса, выполненного в 2005 году в проекте Pew Internet and American Life (www.pewinternet.org/pdfs/PIP_Spam_Ap05.pdf), 22% респондентов сообщают о сокращении использования электронной почты из-за спама, а 67% называют свое присутствие в Сети ?неприятным и раздражающим?». Некоторые руководители, столкнувшись с ростом стоимости управления рисками и сокращением производительности труда служащих при использовании Web, уже подумывают об отказе от Internet (www.technologyreview.com/read_article.aspx?id=16051&ch=infotech).
По иронии судьбы, именно то, что принесло успех Internet — открытая и децентрализованная структура, — поддерживает вредоносную деятельность. Исследователи в области безопасности пытаются не отставать от темпов развития угроз Internet, но чисто технические решения неизбежно ограниченны. Средства, реализуемые Internet-провайдерами, заинтересованных в защите собственной сети от внешних атак, преимущественно затрагивают входящий трафик. Однако отсутствуют аналогичные экономические стимулы для контроля исходящего трафика, наносящего потенциальный вред другим сетям. Это отсутствие границ ответственности проистекает как из децентрализованной природы маршрутизации датаграмм в Internet, так и из децентрализованной организационной структуры.
Для Internet требуется некоторая организационная структура, мотивирующая провайдеров, поставщиков сетевых услуг, поставщиков оборудования и самих пользователей к контролю атак в местах их зарождения, а также к поддержке безопасности на динамической основе. Одним из путей достижения этого может стать введение механизма сертификатов, побуждающего провайдеров к добровольному принятию некоторой ответственности без нарушения основных децентрализованных протоколов. Такой механизм мог бы распространять по сети побудительные стимулы, обеспечивая координацию усилий распределенных участников для повышения уровня безопасности без порождения в сети узких мест.
У статьи «AQUA: автономный робот-амфибия» (AQUA: An Amphibious Autonomous Robot) 16 авторов; первый в списке — Грегори Дудек.
Водная среда почти идеальна для разработки автономных роботов. Во-первых, в ней имеется ряд реальных задач для автономной системы: обследование разрушений и новообразований рифов, задачи нефтяной и газовой промышленности, а также аквакультуры. Во-вторых, для функционирования робота в воде требуются передовые решения в областях мобильности, восприятия, навигации и коммуникации. Описываемый в статье робот-амфибия AQUA может передвигаться по поверхности земли и под водой со скоростью до 1 метра в секунду, погружаться на глубину до 30 метров и ползать по дну.
Внутри робота используются два модуля PC/104 для поддержки локального управления, коммуникаций и восприятия внешней среды. В одном модуле используется операционная система реального времени QNX; он отвечает за управление в реальном времени исполнительными механизмами транспортного средства. Второй модуль управляется ОС Linux и обеспечивает коммуникации и восприятие внешней среды.
Важной частью многих индустриальных водных задач является освоение объекта и повторный осмотр обстановки (Site Acquisition and Scene Reinspection, SASR). При выполнении типичной задачи SASR робот AQUA спускается в воду под управлением оператора и направляется в заданное место. Находясь вблизи от объекта изучения, робот занимает подходящую позицию и производит считывание сенсорных данных. После произведения измерений робот в автономном режиме возвращается на базу. Впоследствии робот уже самостоятельно может достигнуть того же объекта для сбора дополнительных данных.
Для выполнения задачи SASR требуется решение нескольких научных и инженерных проблем, в число которых входят расчет позиции в неструктурированной среде, распознавание подводных ориентиров, роботехническая навигация, управление движением, планирование маршрута, разработка транспортного средства, моделирование среды и реконструкция обстановки, исследование трехмерной среды, автономное и дистанционное управление транспортным средством робота.
Тим Мензис, Дэвид Оуэн и Джулиан Ричардсон представили статью «Самая странная особенность программного обеспечения» (The Strangest Thing About Software).
Физик Джон Арчибальд Уиллер советовал найти в какой-либо области наиболее странную особенность и исследовать ее. Следуя этому совету, авторы статьи исследуют наиболее странную особенность программного обеспечения — то, что оно вообще работает. Современные программы настолько сложны, что не должны работать никогда. К примеру, один из авторов как-то написал поисковую систему, которая пыталась находить в модели все недостижимые цели (menzies.us/pdf/95thesis.pdf). Первая реализация оказалась неудовлетворительно медленной, и этому нашлось простое математическое объяснение. Поиск производился в модели с 300 булевскими переменными. В модели имелось до 2300 = 2х1090 различных состояний. Для сравнения, по оценкам астрономов, во Вселенной имеется 1024 звезд. Тем самым, в небольшой модели имелось состояний больше, чем звезд на небе. Для таких сложных моделей невозможно обеспечить строгий поиск на основе программных реализаций: сложность системы возрастает экспоненциально от числа состояний. В любом процессе верификации и валидации программного обеспечения эту сложность необходимо преодолевать путем покрытия только части возможных внутренних конфигураций программного обеспечения.
Так почему же программы работают? Почему применяемые методы неполного тестирования не пропускают слишком много критических ошибок? Один из способов ответа на эти вопросы может состоять в отрицании самого факта работоспособности программ и в утверждении того, что они редко работают так, как замышлялось. Конечно, иногда у программ случаются аварийные отказы — как правило, в самое неподходящее время. Однако аварийные отказы случаются не так уж часто, что очень странно при наличии настолько большой внутренней сложности программного обеспечения.
Авторы предполагают, что программное обеспечение работает по той причине, что внутри оно устроено поразительно просто. Это предположение основывается на результатах современных исследований в области искусственного интеллекта. В ходе этих исследований были обнаружены ранее неизвестные закономерности, которые могут использоваться разработчиками для быстрого нахождения решений. Внимательное чтение литературы из области программной инженерии показывает, что эти закономерности действительно прослеживаются в традиционном программном обеспечении.
При использовании этих закономерностей многие из проблем, для решения которых применяются сложные и дорогостоящие методы, могут также решаться и путем случайного поиска. Это важный результат, поскольку неполные алгоритмы рандомизации могут быть наиболее простыми и быстрыми.
Статья «Системы запросов процессов» (Process Query Systems) представлена Джорджем Цыбенко и Винцентом Берком.
Сегодня существенно возросли возможности оснащения различных сред инструментальными средствами. Компьютерные системы и сети теперь обычно включают различные мониторы производительности, сетевые экраны, системы выявления атак и агенты регистрации приложений. Исследователи могут развертывать в физических средах сенсорные сети для сбора акустических, сейсмических, инфракрасных, видео, электромагнитных и других видов данных. Эти сети могут также осуществлять мониторинг и архивировать коммуникации финансовые и социальные транзакции между большими сообществами людей и организациями.
Людям теперь доступны огромные объемы данных. Вопрос состоит в том, что с ними делать? Вообще говоря, основное назначение сред, оборудованных инструментальными средствами, состоит в том, чтобы обеспечить лучшее понимание «того, что происходит» или, говоря более формально, ситуативную осведомленность (situational awareness). В контексте компьютерной безопасности ситуативная осведомленность обычно означает знание того, какие отслеживаемые системы подвергаются атакам, и в чем состоит природа этих атак. Для сети сенсоров, построенной внутри здания или растянутой по географическому региону, это могло бы означать информированность о некоторых объектах и активностях, например, о людях, животных, средствах передвижения и их местоположении. В промышленных и производственных системах ситуативная осведомленность означает обнаружение инфраструктурных неисправностей и установление причин их возникновения.
Хотя технология оснащения таких сред инструментальными средствами обрела значительную зрелость, возможность получения ситуативной осведомленности на основе результирующих потоков данных, по существу, отсутствует. Данные о событиях часто отображаются в сравнительно «сырых» форматах, и их анализ и интерпретация оставляются операторам. Конечно, такой подход не является масштабируемым. Данная ситуация определенно существует в связи с инструментарием информационной безопасности. Коммерческое программное обеспечение, подобное тому, которое предлагается компанией ArcSight, может отображать и архивировать большие объемы данных о событиях, имеющих отношение к безопасности, но автоматически выполняется только поверхностный анализ этих данных, а основная работа возлагается на системных администраторов.
Ни традиционные технологии баз данных, ни основанные на правилах экспертные системы не способны решить задачу ликвидации разрыва между низкоуровневыми сенсорными событиями и высокоуровневой ситуативной осведомленностью. Технологии баз данных, включая расширения для обработки потоков данных, позволяют эффективно сохранять, индексировать и извлекать данные, но они не обеспечивают анализ, кроме зачаточной генерации отчетов. С другой стороны, технологии деревьев решений и обработки на основе правил наследуют от экспертных систем проблемы уязвимости и масштабируемости. Следовательно, для получения ситуативной осведомленности требуется новый подход.
В течение трех последних лет авторы статьи изучали проблемы ситуативной осведомленности, возникающие в нескольких прикладных областях, включающих компьютерную безопасность, автономные вычисления, сенсорные сети, видеонаблюдение и анализ социальных сетей. Анализ этих прикладных областей показывает, что для решения проблем требуется общая аналитическая база. В результате была разработана инфраструктура общего назначения для моделирования ситуативной осведомленности при наличии различных типов сенсоров и сред. С использованием этой инфраструктуры, основанной на выявлении процессов, была реализована система запросов процессов и проверена на нескольких приложениях.
Январский номер завершается статьей «Шаги навстречу науки систем сервисов» (Steps Toward a Science of Service Systems), написанной Джимом Спорером, Полом Маглио, Джоном Бейли и Дэниэлом Грахлом.
За последние три десятилетия сервисы стали крупнейшей частью экономики большинства развитых стран. Но до сих пор отсутствует общепринятое определение сервиса, и трудно оценить его эффективность, качество, соответствие требованиям и инновационность. Сервисы изучаются немногими исследователями, и обучению студентов в этой области уделяется незначительное внимание.
Термин «экономика сервисов» относится к сектору сервисов, одной из трех основных экономических категорий, дополняющей сервисную деятельность в добывающем и производящем секторах. Рост сектора сервисов частично связан со специализацией и аутсорсингом сервисной деятельности, выполняемой внутри компаний-производителей (например, проектирование, поддержка, управление персоналом, взаимодействие с клиентами). В соответствии с отчетом Национальной инженерной академии США, сектор сервисов приносит 80% валового внутреннего продукта, привлекая крупную и возрастающую долю научной и инженерной рабочей силы и являясь основным потребителем ИТ. В этом отчете говорится, что академические исследователи должны сосредоточиться на потребностях бизнеса сервисов. Требуется адаптация и применение систем и инженерных понятий, методологий и процессов оценки качества в области сервисов. Необходима интеграция исследований в области технологии с исследованиями в областях общественных наук, управления и политики, нужна специальная подготовка студентов.
Подход, предлагаемый авторами статьи, состоит в разработке общей теории сервисов, охватывающей инструментальные средства, методы и практические следствия для общества. Некоторые специалисты полагают, что в качестве стартовой точки такой теории можно использовать экономику, исследование операций, промышленную инженерию, управление информационными системами, мультиагентные системы и науку о сложных системах. Другая точка зрения состоит в том, что по причине повсеместной распространенности сервисов (в правительственной деятельности, образовании, здравоохранении, банковской и страховой сферах, в ИТ, в бизнесе) требуется привлечение к рзработке теории сервисов ряда инженерных, управленческих и прикладных дисциплин.
Авторы полагают, что решение должно частично опираться на оба эти подхода. Они развивают междисциплинарное направление, называемое «наука о сервисах, управление и инженерия» (Service Science, Management, and Engineering, SSME), в котором научные, управленческие и инженерные дисциплины применяются к задачам, которые одна организация (поставщик услуг) выполняет для других организаций (потребителей услуг). SSME помогает понять, каким образом организации могут эффективно производить инвестиции в создание новых сервисов с обеспечением предсказуемых результатов.
Всего вам доброго, Сергей Кузнецов, kuzloc@ispras.ru.