Традиционно в январском номере журнала Computer публикуются отобранные редакцией статьи, посвященные новым и перспективным разработкам в области Computer Science. Статьи не объединены какой-либо общей темой, и я буду приводить их обзоры в том же порядке, в котором они размещены в журнале.
Первая статья называется «Архитектуры для кремниевой наноэлектроники и того, что за ней последует» («Architectures for Silicon Nanoelectronics and Beyond»). Статью представили Айрис Бахар, Дэн Хаммерстром, Джастин Харлоу, Уильям Джойнер мл., Клиффорд Ло, Диана Маркулеску, Алекс Орайлоглы и Массуд Педрам (R. Iris Bahar, Brown University, Dan Hammerstrom, Justin Harlow, University of South Florida, William H. Joyner Jr., Semiconductor Research Corp., Clifford Lau, Institute for Defense Analyses, Diana Marculescu, Carnegie Mellon University, Alex Orailoglu, University of California, San Diego, Massoud Pedram, University of Southern California).
В индустрии полупроводников имеются серьезные проблемы с плотностью рассеивания мощности, масштабированием межсоединений, дефектами и неустойчивостью, превышением требуемого уровня производительности и плотности, сложностью проектирования и ограничениями пропускной способности основной памяти. Дальнейшее повышение производительности должно обеспечиваться за счет параллелизма, а не наращивания тактовой частоты, хотя пока существует недостаточное число убедительных параллельных приложений.
Наноэлектроника, являясь кандидатом на замену технологии комплементарных металло-оксидных полупроводников (Complementary Metal-Oxide Semiconductor, CMOS), может помочь решить некоторые из этих проблем, но в то же время она ставит новые проблемы. Вероятно, компьютинг на молекулярном уровне позволит на порядки повысить уровень плотности и сложности устройств, но при этом возникают три важнейших вопроса. Как будет использоваться это громадное количество устройств? Каким образом следует изменить и усовершенствовать инструменты и методологии проектирования для их приспособления к радикально новым способам компьютинга? Как можно производить надежные, предсказуемые системы из ненадежных компонентов с непредсказуемым поведением?
Для эффективного использования нанотехнологии потребуются не только решения для повышения уровня плотности, но и общесистемные решения. Невозможно разработать архитектуру без понимания приложений, которые будут на ней выполняться, а любое изменение парадигмы, лежащей в основе приложений и архитектуры, оказывает сильное влияние на требуемые процессы и инструментальные средства проектирования.
Исследователи должны уделять особое внимание дополнительным архитектурным и системным вопросам, возникающим при внедрении этих новых технологий, и стремиться к сотрудничеству на всех уровнях: устройств, схем, архитектуры и систем.
Наноархитектура определяется авторами, как организация базовых вычислительных структур, которые состоят из наномасштабных устройств и собираются в систему, способную вычислять нечто полезное. Наноархитектуры могут основываться на радикально различных вычислительных моделях и, благодаря потенциально большой производительности, способны обеспечивать улучшенные возможности в некоторых областях. Поскольку архитектура редко создаются в вакууме, эти вопросы существенно влияют на разработку наноархитектур. Здесь можно применять два подхода: эволюционный и революционный.
В области полупроводниковой технологии будет сохраняться тенденция к миниатюризации. Но имеется расширяющийся разрыв между технологией устройств и ее возможностью обеспечивать производительность, пропорциональную плотности устройств. Показатели производительности, измеряемой в миллионах инструкций в секунду в расчете на мощность в один ватт, не сохраняются при увеличении числа миллионов устройств в одном чипе. Имеется также разрыв между плотностью устройства и возможностью проектировать новые чипы, в которых используются все устройства и гарантируется их корректная работа.
Дополнительные проблемы порождаются потреблением мощности и рассеянием тепла. При использовании эволюционного подхода в индустрии полупроводников затрачиваются громадные усилия на нахождение решений этих и других проблем, и это становится все труднее.
Осознавая завершение действия закона Мура в традиционной полупроводниковой технологии, многие исследователи приступают к использованию революционного подхода. Они выполняют исследования в областях транзисторов с углеродными нанотрубками, устройств памяти с углеродными нанотрубками, молекулярной электроники, спинтоники, квантовых вычислительных устройств, устройств магнитной памяти и оптоэлектроники. Этим технологиям посвящен раздел «Emerging Research Devices» в документе 2005 International Technology Roadmap for Semiconductors.
К сожалению, многие из этих устройств не будут использоваться до тех пор, пока не появится абсолютная потребность в смене технологии. Но при опытном использовании этих революционных наноэлектронных устройств для обеспечения гарантированно надежных вычислений требуется решить проблемы недостаточной надежности самих устройств и высокого значения коэффициента помех.
Автором статьи «Designing for Software's Social Complexity» («Проектирование с учетом социальной сложности программного обеспечения») является Хосу Луиз Фиадейро (Josй Luiz Fiadeiro, University of Leicester).
В короткой истории инженерии программного обеспечения понятия сложность и кризис стали почти синонимами. В последние пять лет их связь отчетливо прослеживается в специализированных изданиях, в которых говорится о том, что индустрия программного обеспечения терпит поражение в сражении с возрастающей сложностью. В 2001 г. в статье «Чудовище сложности» в журнале The Economist директор Института прогрессивных форм торговли компании IBM Стюарт Фельдман писал, что программированию свойственна постоянно возрастающая сложность. В той же статье он утверждал, что Internet изменяет природу программного обеспечения.
И действительно, широко распространено мнение, что в IT-индустрии что-то меняется. В мае 2003 г. в журнале The Economist говорилось, что компьютинг становится коммунальной услугой, а программное обеспечение - сервисом, и это серьезно изменяет экономику IT-индустрии. В 2005 г. многие стали связывать эти изменения с сервис-ориентированной архитектурой (Service-Oriented Architectures, SOA), которую некоторые специалисты считают «промышленной революцией для программного обеспечения». По их мнению, SOA революционна, поскольку поддерживает метод построения IT-систем, основанных не на больших интегрированных программах, а на компактных модульных компонентах, что позволяет получать более надежные, более гибкие компьютерные системы.
Но если это верно, то революция в индустрии ожидается уже более десяти лет. В сентябре 1994 г. в журнале Scientific American делались почти такие же замечания о потребности программного обеспечения в промышленных методах. «Производители мушкетов не могли повысить продуктивность производства до тех пор, пока Эти Уитни не понял, как можно производить взаимозаменяемые детали, которые могли бы собираться любым квалифицированным рабочим. Подобно этому, должным образом стандартизованные программные «детали» могут повторно использоваться в разномасштабных системах.» За месяц до появления этой публикации Национальный институт стандартов и технологий (National Institute of Standards and Technology, NIST) объявил о намерении создать Программу развития передовых технологий (Advanced Technology Program) для способствования образованию рынка компонентного программного обеспечения.
Но если конец кризиса программного обеспечения был заметен более десяти лет тому назад, то действительно ли индустрия программного обеспечения все еще находится в кризисном состоянии? Как может индустрия бороться со сложностью и афишировать компонентный подход и индустриализацию как выход из положения? Почему оказалось недостаточно наличия «компактных, модульных компонентов», обеспечиваемых компонентным программным обеспечением? Чем они отличаются от «небольших, модульных компонентов», подразумеваемых SOA?
Ответ на эти вопросы кроется в изменившемся определении понятия «сложность». Та «сложность», на которую жаловались проектировщики и разработчики программного обеспечения и систем в 1994 г., отличается от «сложности» в ее современном понимании. Природа «сложности» фундаментально изменилась. Сложность, с которой приходилось иметь дело десять лет назад, автор называет физиологической сложностью. Требовалось производить декомпозицию крупных и сложно организованных систем на мелкие, управляемые и повторно используемые части, которые мог бы собрать любой опытный программист.
SOA не имеет отношения к размеру системы. Эта архитектура ориентирована на поддержку гибкости и возможности самосборки без вмешательства программиста. Сервисы, в своей основе, являются социальными, т.е. у сложности теперь имеются две стороны: физиологическая и социальная. Непонимание этого различия или недоучет второй составляющей сложности не дают возможности полностью избавиться от последствий прошедшего кризиса программного обеспечения. Для удовлетворения требований SOA (и будущих программных систем) нужно сосредоточиться на принципах и методах проектирования и разработки, которые позволят справиться с социальной сложностью.
Следующую статью написали Манож Парамесваран, Ксиа Жао, Фанг Фанг и Эндрью Уинстон (Manoj Parameswaran, Santa Clara University, Xia Zhao, University of Texas at Austin, Fang Fang, California State University, San Marcos, Andrew B. Whinston, University of Texas at Austin). Статья называется «Реинжениринг Internet с целью улучшения безопасности» («Reengineering the Internet for Better Security»).
После десятилетнего периода стремительного развития Всемирная сеть Internet обладает возможностями изменения всех видов человеческой деятельности, открывая новые горизонты в коммерции, управлении государством, науке, медицине, образовании и индустрии развлечений. Сокращая время и расстояния, Internet ускоряет процесс глобализации, связывая людей и компании по всему миру. Web становится основным интерфейсом для обмена информацией и обеспечения сервисов, а электронная почта - предпочтительным средством коммуникаций. Однако, в то же время, имеется возрастающее ощущение ненадежности среды Internet, что может ограничивать кажущийся безграничным потенциал Сети.
Возрастание объема и числа разновидностей вредоносного программного обеспечения (malware), включая вирусы, черви, троянские кони, спам, схемы фишинга, атаки вида распределенного отказа в обслуживании (Distributed Denial-of-Service, DDoS), шпионские (spyware) и рекламные (adware) программы, приводит к тому, что Internet все больше раздражает индивидуальных пользователей и вызывает серьезную головную боль у организаций. По данным опроса за 2005 г., выполненного в проекте Pew Internet and American Life, 22% респондентов сообщают о сокращении использования электронной почты из-за спама, а 67% называют свое присутствие в Сети 'неприятным и разражающим'». Лидеры бизнеса, сталкивающиеся с возрастающей стоимостью управления рисками и сокращением производительности труда служащих при использовании Web, подумывают об отказе от Internet.
По иронии судьбы, именно то, что принесло успех Internet, открытая и децентрализованная структура Сети поддерживает вредоносную деятельность. Быстро распространяется информация о вновь обнаруженных уязвимостях, а средства, предназначенные для борьбы со все более хитроумными атаками, легко оказываются в руках злоумышленников. Возрастающая доступность недорогих персональных компьютеров с широкополосной связью с Internet и слабая защищенность операционных систем средних пользователей еще больше облегчают крупномасштабные вторжения, включая взлом таких систем для организации последующих зомби-атак.
Исследователи в области безопасности пытаются не отставать от темпов развития угроз Internet, но чисто технические решения являются неизбежно ограниченными. Хотя имеется возможность активно предотвращать некоторые атаки, большинство решений появляется в результате нахождения брешей в системах безопасности, и в современных средах поддержки безопасности не обеспечиваются ни динамическая оценка рисков безопасности, ни оптимальное размещение средств предотвращения атак и реакции на них.
Средства защиты, реализуемые поставщиками услуг Internet (Internet Service Providers, ISP), заинтересованных в защите собственной сети от внешних атак, преимущественно затрагивают входящий трафик. Однако отсутствуют аналогичные экономические стимулы для контроля исходящего трафика, наносящего потенциальный вред другим сетям. Это отсутствие границ ответственности проистекает как из децентрализованной природы маршрутизации дейтаграмм в Internet, так и из децентрализованной организационной структуры.
Для Internet требуется некоторая организационная структура, мотивирующая ISP, поставщиков сетевых услуг, поставщиков оборудования и самих пользователей к контролю атак в местах их зарождения, а также к поддержке безопасности на динамической основе. Одним из путей достижения этого может быть введение механизма сертификатов, побуждающего поставщиков услуг к добровольному принятию некоторой ответственности без нарушения основных децентрализованных протоколов. Такой механизм мог бы распространять по сети побудительные стимулы, обеспечивая координацию усилий распределенных участников для повышения уровня безопасности без порождения в сети узких мест.
У статьи «AQUA: автономный робот-амфибия» («AQUA: An Amphibious Autonomous Robot») 16 авторов. Первым в списке авторов является Грегори Дудек (Gregory Dudek, McGill University).
Водная среда является почти идеальной для разработки автономных роботов. Во-первых, в ней обеспечивается ряд реальных задач для выполнения автономной системой, включающих обследование разрушений и новообразований рифов, задачи нефтяной и газовой промышленности, а также аквакультуры. Во-вторых, для функционирования робота в воде требуются надежные решения в областях мобильности, восприятия, навигации и коммуникации.
Описываемый в статье робот-амфибия AQUA основан на шестиногом наземном роботе RHex, разработанном в период между 1999 и 2003 гг. в университете McGill при сотрудничестве с Мичиганским университетом, Калифорнийским университетом в г. Беркли и университетом Карнеги-Меллон. AQUA может передвигаться по поверхности земли и под водой со скоростью до 1 м/сек, погружаться на глубину до 30 метров и ползать по дну.
Внутри робота используются два модуля PC/104 для поддержки локального управления, коммуникаций и восприятия внешней среды. В одном модуле используется операционная система реального времени QNX, и он отвечает за управление в реальном времени исполнительными механизмами транспортного средства. Второй модуль управляется ОС Linux и обеспечивает коммуникации и восприятие внешней среды.
Важной частью многих индустриальных водных задач является освоение объекта и повторный осмотр обстановки (site acquisition and scene reinspection, SASR). При выполнении типичной задачи SASR робот AQUA спускается в воду под управлением оператора и направляется в заданное местоположение, в котором будут производиться сенсорные измерения. Находясь вблизи от заданного объекта, робот занимает подходящую позицию, из которой производится интенсивное считывание сенсорных данных. После произведения измерений робот в автономном режиме возвращается на базу. Впоследствии робот автономно достигает тот же объект для сбора дополнительных данных.
Для выполнения задачи SASR требуется решение нескольких научных и инженерных проблем, в число которых входят расчет позиции в неструктурированной среде, распознавание подводных ориентиров, роботехническая навигация, управление движением, планирование маршрута, разработка транспортного средства, моделирование среды и реконструкция обстановки, исследование трехмерной среды, автономное и дистанционное управление транспортным средством робота.
Выполнение задачи SASR является огромной проблемой для наземных роботехнических транспортных средств, но она еще более сложна в водной среде. В дополнение к возрастающему числу степеней свободы, возникающих при выполнении задачи под водой, при глубоководной работе появляются дополнительные сложности при позиционировании и ориентировании аппарата.
Тим Мензис, Дэвид Овен и Джулиан Ричардсон (Tim Menzies, David Owen, West Virginia University, Julian Richardson, NASA Ames Research Center) представили статью «Самая странная особенность программного обеспечения» («The Strangest Thing About Software»).
Физик Джон Арчибальд Уиллер советовал в какой-либо области найти наиболее странную особенность и исследовать ее. Следуя этому совету, авторы статьи исследуют наиболее странную особенность программного обеспечения - то, что оно вообще работает.
Современное программное обеспечение является настолько сложным, что оно не должно работать никогда. Например, один из авторов как-то написал поисковую систему, которая пыталась находить в модели все недостижимые цели. Первая реализация оказалась неудовлетворительно медленной, и этому нашлось простое математическое объяснение. Поиск производился в модели с 300 булевскими переменными. В модели имелось до 2300 = 2х1090 различных состояний. Для сравнения, по оценкам астрономов во Вселенной имеется 1024 звезд. Тем самым, в небольшой модели имелось состояний больше, чем звезд на небе.
Для таких сложных моделей невозможно обеспечить строгий поиск на основе программных реализаций: сложность системы возрастает экспоненциально от числа состояний. В любом процессе оценки или верификации и валидации программного обеспечения эту сложность необходимо преодолевать путем покрытия только части возможных внутренних конфигураций программного обеспечения.
Так почему же программы работают? Почему применяемые методы неполного тестирования не пропускают слишком много критических ошибок? Один из способов ответа на эти вопросы может состоять в отрицании самого факта работоспособности программ и в утверждении того, что программное обеспечение редко работает так, как замышлялось. Конечно, иногда у программ случаются аварийные отказы - как правило, в самое неподходящее время. Однако аварийные отказы случаются не так уж часто, что очень странно при наличии настолько большой внутренней сложности программного обеспечения.
Авторы предполагают, что программное обеспечение работает по той причине, что внутри оно устроено поразительно просто. Это предположение основывается на результатах современных исследований в области искусственного интеллекта. В ходе этих исследований были обнаружены ранее неизвестные закономерности, которые могут использоваться разработчиками для быстрого нахождения решений. Внимательное чтение литературы из области инженерии программного обеспечения показывает, что эти закономерности действительно прослеживаются в традиционном программном обеспечении.
При использовании этих закономерностей многие из проблем, для решения которых применяются сложные и дорогостоящие методы, могут также решаться и путем случайного поиска. Это важный результат, поскольку неполные алгоритмы рандомизации могут быть наиболее простыми и быстрыми.
Статья «Системы запросов процессов» («Process Query Systems») представлена Джорджем Цыбенко и Винцентом Берком (George Cybenko, Vincent H. Berk, Dartmouth College).
В последние годы существенно возросли возможности оснащения различных сред инструментальными средствами. Компьютерные системы и сети теперь обычно включают различные мониторы производительности, брандмауэры, системы выявления атак и агенты регистрации приложений. Исследователи могут развертывать в физических средах сенсорные сети для сбора акустических, сейсмических, инфракрасных, видео, электромагнитных и других видов данных. Эти сети могут также осуществлять мониторинг и архивировать коммуникации и финансовые и социальные транзакции между большими сообщества людей и организациями.
Людям теперь доступны огромные объемы данных. Вопрос состоит в том, что с ними делать? Вообще говоря, основное назначение сред, оборудованных инструментальными средствами, состоит в том, чтобы обеспечить лучшее понимание «того, что происходит», более формально, ситуативную осведомленность (situational awareness). В контексте компьютерной безопасности ситуативная осведомленность обычно означает знание того, какие отслеживаемые системы подвергаются атакам, и в чем состоит природа этих атак. Для физической сенсорной сети, построенной внутри здания или растянутой по географическому региону, это могло бы означать информированность о некоторых объектах и активностях, например, о людях, животных, средствах передвижения и их местоположении. В промышленных и производственных системах ситуативная осведомленность означает обнаружение инфраструктурных неисправностей и установление причин их возникновения.
Хотя технология оснащения таких сред инструментальными средствами обрела значительную зрелость, возможность получения ситуативной осведомленности на основе результирующих потоков данных, по существу, отсутствует. Данные о событиях часто отображаются в сравнительно «сырых» форматах, и их анализ и интерпретация оставляются операторам. Конечно, такой подход не является масштабируемым.
Такая ситуация определенно существует в связи с инструментарием компьютерной безопасности. Коммерческое программное обеспечение, подобное тому, которое предлагается компанией ArcSight, может отображать и архивировать большие объемы данных о событиях, имеющих отношение к безопасности, но автоматически выполняется только поверхностный анализ этих данных, а основная работа возлагается на системных администраторов.
Ни традиционные технологии баз данных, ни основанные на правилах экспертные системы не способны решить задачу ликвидации разрыва между низкоуровневыми сенсорными событиями и высокоуровневой ситуативной осведомленностью. Технологии баз данных, включая расширения для обработки потоков данных, позволяют эффективно сохранять, индексировать и извлекать данные, но они не обеспечивают анализ, кроме зачаточной генерации отчетов. С другой стороны, технологии деревьев решений и обработки на основе правил наследуют от экспертных систем проблемы уязвимости и масштабируемости. Следовательно, для получения ситуативной осведомленности требуется новый подход.
В течение трех последних лет авторы статьи изучали проблемы ситуативной осведомленности, возникающие в нескольких прикладных областях, включающих компьютерную безопасность, автономный компьютинг, сенсорные сети, видеотрекинг и анализ социальных сетей. Анализ этих прикладных областей показывает, что для решения проблем требуется общая аналитическая основа. В результате была разработана инфраструктура общего назначения для моделирования ситуативной осведомленности при наличии различных типов сенсоров и сред. С использованием этой инфраструктуры, основанной на выявлении процессов, была реализована система запросов процессов и проверена в нескольких приложениях.
Январский номер завершается статьей «Шаги навстречу науки систем сервисов» («Steps Toward a Science of Service Systems»), написанной Джимом Спорером, Полом Маглио, Джоном Бейли и Дениэлом Грахлом (Jim Spohrer, Paul P. Maglio, John Bailey, Daniel Gruhl, IBM Almaden Research Center).
За последние три десятка лет сервисы стали крупнейшей частью экономики большинства индустриальных стран. Но до сих пор отсутствует общепринятое определение сервиса, и трудно оценить его эффективность, качество, соответствие требованиям и инновационность. Сервисы изучаются немногими исследователями, и обучению студентов в этой области уделяется незначительное внимание.
Термин экономика сервисов относится к сектору сервисов, одной из трех основных экономических категорий, дополняющей сервисную деятельность в добывающем и производящем секторах. Рост сектора сервисов частично связан со специализацией и аутсорсингом сервисной деятельности, выполняемой внутри производящих фирм (например, проектирование, поддержка, управление кадрами, взаимодействие с клиентами). В соответствии с последним отчетом Национальной инженерной академии (National Academy of Engineering), сектор сервисов приносит 80% валового внутреннего продукта, привлекая крупную и возрастающую долю научной и инженерной рабочей силы и являясь основным потребителем IT. В этом отчете говорится, что академические исследователи должны сосредоточиться на потребностях бизнеса сервисов. Требуется адаптация и применение систем и промышленных инженерных понятий, методологий и процессов оценки качества в области сервисов. Необходима интеграция исследований в области технологии с исследованиями в областях общественных наук, управления и политики. Нужна специальная подготовка студентов.
Подход, предлагаемый авторами, состоит в разработке общей теории сервисов, охватывающей инструментальные средства, методы и практические следствия для общества. Некоторые специалисты полагают, что в качестве стартовой точки такой теории можно использовать экономику, исследование операций, промышленный инжениринг, управление информационными системами, мультиагентные системы и науку о сложных системах. Другая точка зрения состоит в том, что по причине повсеместной распространенности сервисов (в правительственной деятельности, образовании, здравоохранении, банковской и страховой сферах, в области IT, в бизнесе) требуется привлечение многих инженерных, управленческих и прикладных дисциплин.
Авторы полагают, что решение должно частично опираться на оба эти подхода. Они развивают междисциплинарное направление, называемое «наука о сервисах, управление и инженерия» (Service Science, Management, and Engineering, SSME), в котором научные, управленческие и инженерные дисциплины применяются к задачам, которые одна организация (поставщик услуг) выполняет для других организаций (потребителей услуг). SSME помогает понять, каким образом организации могут эффективно производить инвестиции в создание новых сервисов с обеспечением предсказуемых результатов.