Обзор декабрьского (IEEE Computer Society, Vol. 38, б№. 12, December 2005) и январского (IEEE Computer Society, Vol. 39, б№. 1, January 2006) номеров журнала Computer.

Суть электронного правительства состоит в использовании ИТ для поддержки правительственных операций, привлечения граждан к управлению государством и обеспечения работы государственных учреждений. Проекты в области электронного правительства вовлекают широкий спектр компьютерных технологий. С другой стороны, для анализа информационных потребностей правительства, управления правительством и правительственной политики, а также информационных характеристик демократического общества здесь применяются методы компьютерных наук, информатики и социологии. Это означает либо адаптацию имеющихся исследовательских результатов к проблематике электронного правительства, либо проведение новых исследований для решения проблем, не столь важных для других областей. Исследования в области электронного правительства отличаются от исследований базовых дисциплин компьютерных наук и социологии тем, что исследователи должны активно сотрудничать с правительственными организациями. Более того, они часто сотрудничают с учеными из других областей для изучения взаимодействия технических и социальных процессов в контексте правительственных организаций. Таким образом, исследования в области электронного правительства всегда являются междисциплинарными.

Авторы первой статьи номера, которая называется «Академические исследования в области электронного правительства» (Digital Government Research in Academia), – Луи Делкамбр (Lois Delcambre) и Женевьева Джулиано (Genevieve Giuliano). В 1998 году Национальный научный фонд США обюявил междисциплинарную исследовательскую программу в области электронного правительства (Digital Government Program, www.digitalgovernment.org). Цель программы – финансирование исследований в областях, в которых интересы исследователей, специализирующихся в компьютерных науках и информатике, пересекаются с промежуточными и долговременными потребностями работников федеральных информационных служб. Исследования должны были ориентироваться на совершенствование внутри- и межведомственных, а также межправительственных операций, взаимодействий правительства с гражданами. Ожидалось, что такие исследования обеспечат непрерывный поток технологий и их внедрение в федеральные информационные системы. В то же время проекты в рамках программы очень разнородны – в одних идет поиск новых технологий, применимых для решения проблем правительства, в других анализируются взаимозависимости между технологиями и контекстами их разработки и применения. Каждому проекту свойственны особые требования к исследователям и их правительственным партнерам. Например, для успешного выполнения проектов по разработке программных средств требуются фиксированный правительственный партнер, полное понимание прикладной области и четкое определение проблемы. Авторы пытаются найти ответы на два вопроса. Становится ли данная область самостоятельным междисциплинарным направлением исследований или же это общая исследовательская область, поддерживающая широкий спектр научных дисциплин? Получает ли это направление признание как истинная исследовательская область? Классифицируя ряд исследовательских проектов, авторы приходят к следующим выводам. В настоящее время исследования носят междисциплинарный характер, причем во многих исследованиях выполняется схожая работа. Типичное исследование представляет собой набор из различных работ, относящихся ко многим дисциплинам, которые обюединяются общей целью выработки решений правительственных проблем, связанных с ИТ. Пока неясно, появляется ли новая междисциплинарная область, возникает ли новая концентрация сил в существующих областях или имеет место комбинация этих явлений.

Статья, написанная Патриком Пантелом (Patrick Pantel), Эндрю Филпотом (Andrew Philpot) и Эдвардом Хови (Eduard Hovy), называется «Выверка и интеграция данных» (Data Alignment and Integration). Во многих учреждениях срочно требуются какие-либо способы выверки и слияния данных. Например, в агентствах по охране окружающей среды для отслеживания общих характеристик состояния атмосферы и поддержки законов об ее охране согласовываются данные о выбросах в атмосферу, получаемые из регионов. Аналитики устанавливают и отслеживают группы угроз с использованием раздельно собираемых и хранимых индивидуальных сведений: телефонных звонков, сообщений электронной почты, финансовых транзакций и путевых заметок. Для решения этих проблем требуется научиться определять сходство обюектов внутри одного источника данных или набора разнородных источников. В настоящее время в большинстве подходов по интеграции коллекций данных и даже для создания отображений между сопоставимыми наборами данных требуется ручная работа. Несмотря на наличие некоторых обнадеживающих результатов, технология автоматического создания таких отображений все еще находится в зачаточном состоянии: сходство и различия проявляются на всех уровнях, от индивидуальных значений данных до метаданных и текста, поясняющего смысл коллекции данных в целом. Некоторые источники данных содержат дополнительную информацию (реляционная структура или метаданные), помогающую при взаимосвязывании обюектов. Однако такие вспомогательные данные могут быть устаревшими, несоответствующими действительности, слишком сильно привязанными к прикладной области, или могут просто отсутствовать. Поэтому на них не может основываться какое-либо общее решение. Можно полагаться только на сами данные, соответствующие результатам наблюдений над реальными обюектами. Основываясь на этой парадигме, авторы построили две системы: Guspin для автоматического определения классов эквивалентности и Sift для автоматической выверки данных в нескольких базах данных. Основная идея состоит в определении наиболее информативных наблюдений и сопоставлении с ними обюектов, содержащих близкие по смыслу данные. Системы использовались в нескольких правительственных организациях, отвечающих за охрану окружающей среды. Замечу, что, хотя по смыслу данная работа явно близка к традиционным направлениям data mining и ETL, авторы вообще не используют какие-либо методы из этих областей и не ссылаются на какие-либо публикации, а основываются только на теории информации Клода Шеннона. Это кажется странным: управление данными остается управлением данными даже в электронном правительстве, и было бы неразумно ожидать, что в этой прикладной области можно быстро получить результаты, которых не удалось добиться в результате многолетней работы в других областях.

Статью «Организация доступа к правительственной статистической информации» (Accessing Government Statistical Information) представили Гари Марчионини (Gary Marchionini), Стефани Хаас (Stephanie Haas), Джун Лиан Жанг (Junliang Zhang) и Джонатан Елсас (Jonathan Elsas). По мере того как правительственные организации обеспечивают через свои Web-сайты доступ к информации, все большее число людей пытается осмыслить эту информацию. В результате растет число запросов по электронной почте, многие из которых сводятся к следующим: «Где можно найти X» и «Что точно означает X». Наличие таких запросов показывает, что камнем преткновения на пути к обеспечению широкого доступа к правительственной информации является проблема предоставления систематизированных статистических данных разнообразным группам населения с разным уровнем математической грамотности. Ответственность за решение этой задачи лежит на правительственных статистических службах, которые должны каким-то образом оформить данные огромного обюема обо всем на свете, чтобы сделать их доступными и удобными в использовании для разнообразных потенциальных пользователей. В университете Северной Каролины выполняется проект GovStat (www.ils.unc.edu/govstat), участники которого работают с федеральными статистическими организациями. Целью проекта является оказание помощи людям при нахождении и понимании правительственной статистической информации. Концепция проекта – сеть статистических знаний (Statistical Knowledge Network, SKN), которая обюединяет заинтересованных лиц, обеспечивающих или ищущих статистическую информацию. Сеть скрепляется человеко-машинными интерфейсами, облегчающими поиск, понимание и использование информации. Основа SKN – четыре категории исследований и разработок.

  • Потребности пользователей. В какой статистической информации действительно нуждаются пользователи? Каким уровнем статистической грамотности должны обладать пользователи для понимания информации? Как наилучшим образом организовать взаимодействие пользователей с информацией и инструментальными средствами?
  • Модели данных. Какие существуют унаследованные файлы данных? Какие имеются общепринятые в правительственных организациях статистические понятия и словари? Какие метаданные доступны и где?
  • Разработка технологии. Как будут работать интерфейсы динамических запросов и механизмы быстрых представлений? Как лучше всего организовать доступ через Internet?
  • Организационное поведение. Как можно улучшить сотрудничество между ведомствами и как стимулировать взаимодействия между людьми и системами на разных правительственных уровнях?

В октябре 2005 года проектная группа определила архитектуру репозитория SKN, которая служит общей моделью связывания граждан с правительственной статистикой. Также разработана схема XML DTD на основе стандартов статистических данных ISO 11179 и Data Documentation Initiative. В проекте разрабатываются и тестируются пользовательские интерфейсы, включая слуховой интерфейс для людей с ослабленным зрением, а также прототип статистического интерактивного глоссария с возможностью его пополнения статистическими организациями. Разрабатываются средства автоматической генерации метаданных на основе методов машинного обучения и набор инструментальных средств анализа текста, которые могут использоваться правительственными статистическими организациями, а также вертикальная модель для интеграции статистических данных федеральных и региональных сельскохозяйственных ведомств.

Тереза Харрисон (Teresa Harrison), Джеймс Заппен (James Zappen) и Сайбел Адали (Sibel Adali) представили статью «Построение общественных информационных систем: история Connected Kids» (Building Community Information Systems: The Connected Kids Case). Новые технологии делают возможной и во многих случаях практичной для отдельных людей, групп и организаций совместную разработку общих информационных систем. Компьютеризованные общественные информационные системы (Computerized Community Information System), также называемые иногда общественными досками обюявлений (community bulletin board), гражданскими сетями (civic network), общественными сетями (community network), общественными информационными сетями (community information network), телегородками (televillage), интеллектуальными сообществами (smart community) и свободными сетями (Free-Net), могут иметь разные формы.

В 1999 году в Rensselaer Polytechnic Institute (Троя, штат Нью-Йорк) был начат проект общественной информационной системы Connected Kids (www.connectedkids.info). Мэр города планировал усилить работу управления по делам молодежи и предложил использовать Web для распространения информации о городских ресурсах и программах, предназначенных для молодежи. До этого подобная информация распространялась в бумажной форме при поддержке некоммерческих организаций, но часто этот процесс финансировался городскими властями. От городских властей были получены предварительные гарантии того, что после разработки и развертывания информационной системы ее окончательная реализация и администрирование будут вестись за счет города. В настоящее время во всех 49 организациях, поставляющих информацию в систему, имеются доступ к компьютерному оборудованию и подключение к сети. Все больше пользователей подключается к сети. Это не значит, что жители Трои обладают теперь навыками и опытом, требуемым для эффективного участия в сетевом сообществе, но, по крайней мере, этому больше не мешает отсутствие компьютерного оборудования. Это наводит на мысль, что долговременная эффективность и устойчивость проекта Connected Kids в большей степени зависит не от наличия доступа жителей к технологии, а от того, насколько они готовы признать систему полезной и интегрировать ее в свою жизнь.

Наконец, последняя статья подборки озаглавлена «Анализирование правительственных постановлений с использованием структурной и прикладной информации» (Analyzing Government Regulations Using Structural and Domain Information). Ее написали Глория Ло (Gloria Lau), Кинчо Ло (Kincho Law) и Джио Вайдерхолд (Gio Wiederhold).

Американские компании должны подчиняться перекрывающимся федеральным, региональным и местным постановлениями; кроме того, некоторые некоммерческие организации публикуют свои собственные правила поведения. Эта проблема еще более обостряется в Евросоюзе, где постановления сочетаться с законодательством разных стран с разными языками и традициями. Соответствие постановлениям представляет значительную проблему для предприятий, участвующих в глобальной коммерческой деятельности. Например, в обзоре за 2003 год законов разных стран о защите данных (www.whitecase.com/publications/pubs_detail.aspx?pubid=2358&type=Articles) говорится, что сильно различающиеся правовые ограничения представляют возрастающую преграду на пути международных компаний. Осторожные руководители таких компаний хотели бы эффективно и согласованно соблюдать законы о защите данных. Но для них не очевидно, как это делать. Законы разнятся в зависимости от юрисдикции, они непрерывно меняются, и иногда их трудно понять. Сайт Business.gov, созданный в рамках президентской инициативы электронного правительства, помогает пробраться сквозь лабиринт правительственных предписаний и постановлений и обеспечивает услуги и ресурсы для образования и развития бизнеса. Кроме того, на сайте Regulations.gov поддерживается форум пользователей для обсуждения существующих и ожидающих принятия федеральных постановлений. Однако частным лицам и небольшим компаниям с ограниченными ресурсами требуется среда, позволяющая выбирать родственные постановления из разных правительственных источников и проводить их сравнительный анализ. В проекте Regnet Стэнфордского университета (eig.stanford.edu/regnet) предпринимается попытка разработать такую среду с ориентацией на национальные и региональные кодексы США в областях защиты нетрудоспособных и защиты окружающей среды. Разрабатываемая среда включает репозиторий XML, экстрактор ссылок, каркас онтологии понятий, основанную на логике систему проверки соответствий систему анализа связности.

Взгляд из Зазеркалья

Первая статья январского номера журнала Computer написана знаменитым Никлаусом Виртом (Niklaus Wirth) и называется «Хорошие идеи в Зазеркалье» (Good Ideas, through the Looking Glass). Компьютерная история развивалась под влиянием многих хороших и оригинальных идей, но некоторые из них оказались не такими блестящими, как выглядели изначально: часто на идею влияют коммерческие факторы, а некоторые идеи оказываются менее яркими при их тщательном анализе. Все это подсказало Вирту идею создания коллекции подобных идей. В области технологий аппаратуры обосновывается неудача памяти на цилиндрических магнитных доменах, криогеники и туннельных диодов. В области компьютерных архитектур отмечается ряд не слишком удачных идей, связанных с представлением чисел, например представление отрицательных целых чисел в прямом коде с отдельным знаковым разрядом; использование восьмеричного или шестнадцатеричного представления порядка в вещественных числах. Следующей плохой идеей, по мнению Вирта, является сохранение адреса возврата из вызываемой подпрограммы в теле кода: при вызове процедуры по адресу d по этому адресу сохранялся адрес возврата, а управление реально передавалось по адресу d+1. Это решение мешало реализации рекурсивных вызовов и противоречило идее мультипрограммирования. Как считает автор, в настоящее время сомнительной стала идея классической виртуальной памяти с динамическим замещением страниц. Основная память может иметь теперь очень большие размеры, в результате чего сложные схемы поддержки косвенной адресации через таблицы страниц становятся избыточными. Выступает автор и как противник архитектур компьютеров со сложной системой команд; по его мнению, это идею развенчало появление в 90-х годах RISC-архитектур.

Естественно, значительное внимание уделено идеям в области языков программирования. Автор подчеркивает, что язык программирования – это не только средство кодирования, но и модель вычислений, а программы – это формальные тексты, к которым применимы математические доказательства. Несколько плохих идей отмечается по отношению к синтаксису и нотации языков программирования, начиная с появившегося в языке Fortran и распространившегося во многие другие языки использования равенства для обозначения операции присваивания. Ряд неприятностей породила идея двух видов условного выражения (с ELSE и без), введенных в Algol 60. Отдельно отмечается постоянно возвращающаяся плохая идея использования go to. Другим примером возвращающейся плохой идеи служит переключатель switch в Algol 60, хотя еще в 1965 году Энтони Хоар предложил замену– оператор case. Однако в современных языках программирования используется причудливая смесь этих конструкций. Еще одной казавшейся замечательной, но не оправдавшей ожиданий идеей автор считает обобщенную конструкцию цикла for в Algol 60. Чрезмерная общность оператора for в Algol 60 должна служить предостережением для всех разработчиков языков программирования: нужно помнить об исходном назначении конструкции и избегать излишних сложности и общности. Наконец, наихудшей идеей автор считает «лазейки» (loophole) – средства обойти строгие требования языка. Одна из лазеек состоит в возможности явного преобразования типа. Подобные средства позволяют писать программы с труднонаходимыми ошибками.

Также автор критикует сложные аналитические анализаторы. Когда программисты научились писать такие программы, у разработчиков языков исчез стимул к тщательной проработке грамматики; в результате языки стали недоступными для человеческого понимания. Автор считает, что язык должен соответствовать грамматике предшествования, чтобы синтаксические анализаторы могли опираться на метод рекурсивного спуска. Дополнительные усилия, затрачиваемые на разработку синтаксиса и грамматики языка, окупаются простотой использования языка и его компилятора. Неудачной признана и идея расширяемых языков, в которых программа сопровождалась набором дополнительных грамматических правил, позволяющих привести ее к принятой синтаксической форме: это оказалось неоправданно сложным. Заключает раздел критика использования подручных инструментов для разработки программ. Описывается отрицательный опыт автора реализации компилятора языка Pascal на языке Fortran.

В области парадигм программирования легкой критике Вирта подвергается функциональное программирование. Базовая идея функционального подхода – функции, не сохраняющие состояния, – создала разрыв между моделью вычислений и компьютерами, преодолевать который оказалось слишком накладно. В результате в функциональных языках появились и состояния, и переменные. Функциональный подход принес в программирование много полезных вещей, но не обеспечил наилучшей реализации ни одной из них. Обюектно-ориентированный подход во многом характеризуется исключительно сменой терминологии: обюекты – это записи, классы – это типы, методы – это процедуры, посылка методу сообщения – это вызов процедуры и т.д. Действительно ли смена терминологии является появлением новой парадигмы, вопрос открытый.

Авторы следующей статьи, «Десять заповедей формальных методов. Десять лет спустя» – Джонатан Боуэн (Jonathan Bowen) и Майкл Хинчи (Michael Hinchey). В своей первой статье «Десять заповедей формальных методов» (Computer, April 1995), опубликованной более десяти лет назад, авторы приводили практическое руководство по применению формальных методов в программных проектах. Однако, несмотря на очевидный энтузиазм, формальные методы не стали интенсивно использоваться – продолжают звучать те же доводы, что и десять лет назад, о невозможности их применения. В 1995 году в ходе дискуссии, организованной журналом Computer, Бертран Мейер заявил, что для совершенствования программного обеспечения требуются формальные методы – введение большей строгости усовершенствует процесс разработки, улучшит структуру программ, расширит возможности сопровождения и уменьшит число ошибок. Однако сообщество программной инженерии в целом остается не убежденным в полезности формальных методов. Одним из недоразумений является базовое обоснование необходимости формальных методов – они позволяют избегать проектных ошибок, поскольку программное обеспечение является ошибочным, уникальным и прерывистым, а тестирование – недостаточным.

Некоторые формальные приемы, в частности утверждения о программах (program assertion) достаточно популярны, но это лишь крошечный кусочек громадного пирога формальных методов. Очевидно, в программной инженерии не собираются отказываться от формальных методов, но и не собираются полностью взять их на вооружение. Авторы надеются, что их пересмотренные заповеди смогут разрулить эту патовую ситуацию, хотя не все согласны с приведенным набором заповедей, утверждая, что некоторые из них не выдержат проверку временем. Обновленный набор включает следующие заповеди: выбирай надлежащую нотацию; формализуй, но не чрезмерно; оценивай затраты; имей возможность обратиться к гуру по формальным методам; не отказывайся от своих традиционных методов разработки; документируй в достаточной мере; не подвергай риску свои стандарты качества; не будь догматиком; тестируй, тестируй и снова тестируй; используй повторно.

Подобно любому подходу, формальные методы работают лучше при их благоразумном использовании. Наиболее осмысленно применять их по отношению к программному обеспечению, выполняющему критические операции, но и любое приложение должно опираться на здравые инженерные суждения, в которых учитывается техническая и экономическая целесообразность. Для подобной работы требуется персонал с высшей квалификации, хотя формальные методы не являются панацеей – при том, что люди должны применять формальные методы, эти методы никогда не станут полностью надежными. Логические модели должны привязываться к реальному миру с помощью неформальной «силы веры» как на верхнем уровне требований или спецификаций, так и на нижнем уровне электронной аппаратуры (где требуется вера, например, в уравнения Максвелла). По мнению авторов, при обсуждении заповедей они затронули ряд недостаточно исследованных проблем, но сейчас очень важно продемонстрировать эффективность формальных методов – сторонники этих методов должны иметь терпение.

Статью «Хроники Pentium: введение» (The Pentium Chronicles: Introduction) написал Роберт Колвелл (Robert Colwell), создатель архитектуры IA-32. В июне 1990 года автор поступил на работу в компанию Intel в новое подразделение, которому было поручено проектирование микропроцессоров в новом проекте P6. На второй день работы в офис Колвелла заглянул его босс и сказал, что задача Колвелла состоит в том, чтобы вдвое повысить производительность P5 при той же технологии. P5 стал первым процессором Pentium в 1993 году, но в июне 1990-го это было не более чем буква и цифра. Проект P6 должен был следовать за P5 с интервалом в два года. Колвелл руководил разработками архитектуры IA-32 с лета 1992-го по 2000 год. P6 стал переломным событием в истории компьютерной индустрии; он смог не отстать от самых быстрых RISC-процессоров и обладал достаточной гибкостью, чтобы служить основой для будущих разработок. В проект P6 оказалось вовлечено более 400 инженеров. Для доведения процессора до производственного уровня потребовалось четыре с половиной года. P6 стал микропроцессором Pentium Pro, затем на его основе были созданы Pentium II и Pentium III, а еще позже – линия Centrino. От основной разработки отпочковались многочисленные варианты Xeon и Celeron. P6 стал наиболее удачным процессором общего назначения из всех, которые когда-либо производились.

Джозеф Роттман (Joseph Rottman) представил статью «Успешный аутсорсинг разработки встроенного программного обеспечения» (Successfully Outsourcing Embedded Software Development). Некая большая американская компания (автор статьи условно называет ее UIC – Universal Industrial Consortium), не обескураженная провалом первой попытки воспользоваться аутсорсингом, извлекла из нее опыт построения модели глобальных разработок, ориентированной на повышение качества, сокращения производственного цикла и сокращение стоимости. Провал привел к исчерпанию проектных бюджетов, понижению качества программного обеспечения и незавершенным проектам. Однако во второй попытке стоимость офшорной разработки сократилась на 10-15% по сравнению с аналогичными расходами внутри страны, контролируемые на государственном уровне проекты стали выполняться за меньшее время, а боевой дух собственного ИТ-персонала возрос. В исследовании офшорного аутсорсинга участвовали около 30 крупнейших компаний из США, Канады и Индии. Несмотря на то что все американские компании демонстрируют стратегическую заинтересованность в офшорном аутсорсинге, UIC все еще ощущает последствия своей первой неудачи. Деятельность по аутсорсингу в компании управляется специальным центром Software Center of Excellence (SCE). Штат центра составляет около 150 человек, а ежегодный бюджет на ИТ-разработки – 32 млн долл. SCE начал офшорную деятельность в конце 2000 года, надеясь воспользоваться дешевой рабочей силой индийских разработчиков. Для первых экспериментов были выбраны небольшие проекты. Одна из первых попыток – пилотный проект с участием двух офшорных разработчиков состоял в интеграции основанной на GPS системы рулевого управления с одной из крупнейших линеек продуктов компании. От офшорной компании требовалось спроектировать и создать встроенное программное обеспечение для контролирования системы и интерфейса рулевого управления с использованием GPS. Для выполнения проекта были нужны новые инструменты разработки, интерфейсные системы и процессы как для SCE, так и для офшорной компании. В итоге офшорный проект провалился и в конце концов был завершен силами SCE с нарушением установленных сроков и выходом за пределы бюджета. Этот проект оказался типичным среди многих других офшорных провалов UIC, связанных с привлечением индусов. Несмотря на неудачные попытки, компания усмотрела в них некоторые положительные аспекты. Так, офшорные работники получили опыт работы со встроенным программным обеспечением и в том, как взаимодействуют подразделения компании; повысилось качество кода, сократилось цикла разработки. В январе 2004 года SCE возобновил офшорные проекты. Вторая попытка оказалась более тщательно просчитанной и продуманной. Центр отобрал проекты с точно определенными ожидаемыми результатами, основанные на использовании известных инструментальных средств и навыков и включающие задачи, в решении которых у офшорной компании уже имелся опыт. Осознавая важность процесса передачи знаний, SCE обеспечил обучение офшорных разработчиков до начала выполнения проектов аутсорсинга.

Авторами статьи «Программа исследований NASA и инженерия возможностей» (NASA's Exploration Agenda and Capability Engineering) являются Дэниел Кук (Daniel Cook), Мэтт Бэрри (Matt Barry), Майкл Лоури (Michael Lowry) и Корделл Грин (Cordell Green). В NASA разработка многих систем управления полетами начинается с определения аппаратных средств, под которые потом подгоняются программное обеспечение и процедуры. В течение этого процесса производится тщательное распределение выполняемых функций между бортовыми системами и наземной аппаратурой управления полетом. Для предыдущих полетов составлялись сценарии, наличие которых делало разработчиков аппаратуры и программного обеспечения ответственными главным образом за правильное поведение системы в штатных ситуациях и давало им меньше возможностей для решения непредвиденных проблем или использования благоприятных обстоятельств. Основная ответственность за управление непредвиденными ситуациями возлагалась на людей, находящихся на борту корабля или в наземном центре управления полетом. Вся программная поддержка борта и центра управления должна быть высоконадежной. Министерство обороны США недавно опубликовало данные, показывающие, что доля функций самолета, поддерживаемых программами, возросла с 8% в F-4 в 60-е годы до 80% в F-22 в 2000 году. Хотя технологии разработки бортового программного обеспечения существенно усовершенствовались, остается сомнение, что скорость развития технологии отвечает возрастающим потребностям. Сегодня для внесения изменений в программное обеспечение бортовой системы требуются месяцы или даже годы интенсивной дорогостоящей работы.

В аэрокосмических приложениях интенсивно используется прототипирование на основе моделей. В частности, разработчики часто прототипируют управляющие приложения в коммерческих средах, таких как Matlab/Simulink, а затем оценивают их в средах имитационного моделирования. Эти среды прототипирования на основе моделей широко распространены, в частности, потому, что они обеспечивают для аэрокосмических инженеров интуитивный языковой интерфейс. Такой интерфейс часто обеспечивает формат ввода на основе блоков и стрелок, похожий на традиционную нотацию блочных диаграмм. Краеугольным камнем полного жизненного цикла программирования на основе моделей является синтез программ производственного качества. Без этой возможности программирование на основе моделей может служить только для прототипирования, полезность которого исчерпывается после детального проектирования, когда вручную разрабатывается производственный код. Кроме того, любая последующая модификация должна делаться вручную прямо на уровне кода. По опыту авторов, разработчики редко затрачивают дополнительные усилия на поддержку прототипа. При модификации программного обеспечения они неохотно оставляют более одного артефакта; даже синхронизация документации с модификацией программного обеспечения требует дополнительного времени. Для некоторых аэрокосмических софтверных систем применяется синтез программ (автокодирование), однако программисты отмечают, что опыт использования текущего поколения коммерческой технологии автокодирования оставил у них смешанные чувства. Так, для поддержки функций управления положением корабля в пространстве и обеспечением функциональности фермы, инженеры разработали код на языке Ада и обеспечили его поддержку. В этом случае автокодирование казалось идеальным решением, потенциально позволяя сократить число разработчиков и время разработки. К сожалению, ограничения технологии не позволили автокодированию оправдать эти ожидания. Для разработки интерфейсной части программного обеспечения выбранный коммерческий автокодер предоставлял возможности, аналогичные возможностям Matlab, в том числе интуитивную нотацию для ввода. Однако генерируемый код обладал рядом недостатков, которые вызывали трудности на этапе сопровождения: инженерам оказалось нелегко осуществлять навигацию в сгенерированном коде с одного иерархического уровня на другой для нахождения требуемой функции; сопровождение оказалось особенно затруднительным – время модификации кода через автокодер оказалось в пять раз большим, чем обновление функций, написанных на Ada вручную; автокодер производил обюемный неоптимизированный код, втрое длиннее кода, написанного вручную. Остается противоречие между желанием использовать новые технологии при создании программного обеспечения самолета или космического аппарата и требованиями к встроенным системам. После того как бортовая система внедряется и завоевывает доверие, внести в нее масштабные изменения часто оказывается невозможно. Разработка осторожно решительного подхода к использованию разработки бортового программного обеспечения на основе моделей остается важной задачей.

Последняя статья называется «Слоистая архитектура программного обеспечения для инструментов разработки квантовых компьютеров» (A Layered Software Architecture for Quantum Computing Design Tools). Ее авторы – Криста Сво (Krysta Svore), Альфред Ахо (Alfred Aho), Эндрю Кросс (Andrew Cross), Айзек Чуанг (Isaac Chuang) и Игорь Марков. Квантовые компьютеры потенциально могут решать некоторые вычислительные проблемы (например, разложение чисел на сомножители или сравнение заданного образа с содержимым большой базы данных) эффективнее, чем современные компьютеры. Квантовые компьютеры полезны также в управляющих квантово-механических системах в приложениях нанотехнологии, таких как безопасные оптические коммуникации, в которых современные компьютеры не могут работать с квантовыми данными естественным образом. Несмотря на наличие убедительных лабораторных демонстраций квантовой обработки информации, ее трудно масштабировать, поскольку она исходно основывается на зашумленных компонентах. Адекватное использование исправления квантовых ошибок и отказоустойчивость теоретически могли бы обеспечить гораздо лучшее масштабирование, но сложность требуемых методов не позволяет добиться этого сегодня. В крупных квантовых вычислениях также может потребоваться высокий уровень параллелизма, чтобы вычисление могло завершиться до того, как квантовые состояния декогерируют. По мере достижения зрелости квантовых технологий осуществимость квантовых вычислений все больше будет зависеть от наличия инструментальных средств, в особенности, компиляторов, транслирующих квантовые алгоритмы в низкоуровневые, характерные для заданной технологии инструкции и схемы с добавлением отказоустойчивости и достаточного параллелизма. В статье предлагается слоистая архитектура программного обеспечения, которое производит отображение на квантовое устройство исходной программы на языке высокого уровня, представляющей квантовый алгоритм.

Всего вам доброго, до следующей встречи, Сергей Кузнецов, kuzloc@ispras.ru.

Поделитесь материалом с коллегами и друзьями