На обложку этого номера журнала вынесен вопрос: «Software Engineering: A Maturing Profession?» («Программная инженерия: набирающая зрелость профессия?»). (Замечу, что я буду использовать в этом обзоре термин «программная инженерия» не потому, что он мне очень нравится, а по причине отсутствия более подходящего русского эквивалента для «software engineering».) Надпись на обложке может навести на мысль, что весь номер посвящен тематике программной инженерии, но это не так. Три из шести больших статей номера затрагивают эту тему, но очень по-разному. Да и странно было бы делать специализированный выпуск журнала Computer по тематике программной инженерии при наличии специализированного журнала Software Engineering, также издаваемого IEEE Computer Society.
Первая из трех статей, касающихся программной инженерии, «Успехи интеллектуального контроля за разработкой программного обеспечения» (Gaining Intellectual Control of Software Development), написанная Барри Боэмом (Barry Boehm) и Виктором Р. Базили (Victor R. Basili), представляет собой отчет о результатах двух симпозиумов, проходивших в США в прошлом году по инициативе Национального научного фонда (National Science Foundation — NSF). Как отмечают авторы, оба симпозиума были организованы как реакция на рекомендации Президентского консультативного комитета по информационной технологии (President?s Information Technology Advisory Committee - PITAC). Судя по весьма скупой оценке авторов, первый симпозиум (NFS Workshop on a Software Research Program for the 21st Century) имел чересчур обобщенный и отдаленный от практики характер: необходимо поставить исследования в области программного обеспечения на такой уровень чтобы в XXI веке обеспечить производство программных систем «без сюрпризов». Ко второму (NSF Software Engineering Research Strategies Workshop) отношение авторов явно более благожелательно, что не удивительно, поскольку оба они являются специалистами в области программной инженерии. Трудно пересказывать и без того краткий отчет, однако следует отметить по крайней мере два аспекта, обсуждавшихся на симпозиуме. Во-первых, в связи с широким распространением компонентного стиля разработки программных систем не следует недооценивать роль программной инженерии. И наоборот, самые развитые методы программной инженерии не помогут создать хорошую систему без тщательного подбора компонентов. Во-вторых, участники симпозиума попытались очертить основные области программной инженерии, в которых требуются интенсивные исследования.
Вторая статья называется «Как сделать программную инженерию респектабельным занятием» (The Push to Make Software Engineering Respectable). Ее авторы — Джильда Пуа (Gilda Pour), Мартин Л. Грисс (Martin L. Griss) и Майкл Лутц (Michael Lutz). В 1995 году Гэри Форд (Gary Ford) и Норман Гиббс (Norman Gibbs) из Института программной инженерии сформулировали признаки «зрелой» профессии и объяснили, почему профессию разработчика программ нельзя считать зрелой. За прошедшие пять лет программная инженерия вошла в практику разработчиков, были опубликованы тысячи статей, проведены десятки конференций, были разработаны новые учебные программы. Однако по мнению авторов статьи, профессия все еще остается незрелой. Причин для этого легион, но все они опираются на один факт - область слишком молода. Ясно, что рано или поздно программная инженерия станет зрелой областью, но процесс достижения зрелости можно ускорить. Как считают авторы, для этого необходимо разработать новые учебные планы, отражающие фундаментальные основы Computer Science и Software Engineering и требования практики, принять правила аккредитации учебных программ на соответствие этим планам, повысить роль профессиональных сообществ в достижении указанных целей. В статье описываются конкретные требуемые шаги и возможные трудности, а также подчеркивается потребность в более широком привлечении к решению проблем образования представителей индустрии программного обеспечения.
Третью статью, имеющую отношение к программной инженерии, написал Тимоти Летбридж (Timothy C. Lethbridge). Статья называется «Что надо знать профессионалу в области программного обеспечения» (What Knowledge Is Important to a Software Professional?) и посвящена результатам опроса, который автор вместе со своими коллегами проводил, начиная с 1997 года. Целью опроса было выяснение относительной важности различных компьютерных и смежных дисциплин для специалистов в области программной инженерии. Опрос касался 75 тем, которые были выбраны на основе типовых учебных планов университетов и предложений IEEE. По поводу каждой темы требовалось ответить на четыре вопроса. (1) В какой степени вы овладели знаниями по данной теме во время своего формального обучения? (2) Как вы оцениваете свой уровень знаний сегодня; что вы освоили на работе и что вспомнили из забытого? (3) Насколько полезны детальные сведения по данной теме для вашей профессиональной деятельности? (4) Как повлияло изучение материала на ваш образ мышления независимо от того, требуются ли вам детали? Ответы на вопросы были получены от 186 участников из 24 стран, 54% из Соединенных Штатов и 23% из Канады. Результаты сформированы в виде трех таблиц: (1) основные темы программной инженерии (впереди темы структур данных и языков программирования); (2) дополнительные темы (операционные системы на первом месте); (3) бизнес, наука, искусство (этика и профессионализм, техническое писательство). Делаются выводы о потребности использования результатов опроса для модификации университетских учебных планов и программ курсов.
Три оставшиеся большие статьи номера не связаны тематически и касаются весьма разных вопросов. В статье «В ногу с изменениями Web» (Keeping Up with the Changing Web) ее авторы Брайан Брюингтон (Brian Brewington) и Джордж Цыбенко (George Cybenko) обсуждают тему актуальности обновляемой информации. Существует множество обновляемых источников информации, особенно в Сети, предыдущее состояние которых не актуально (или не настолько актуально, как текущее состояние). Для отслеживания актуальности информации требуются развитые средства мониторинга. Описывается подход, предпринятый в проекте Web-сайта informant.dartmouth.edu. Созданная система помогает пользователям находить в Internet актуальную информацию с использованием стандартных поисковых машин (Lycos, AltaVista, Excite, Infoseek). Отмечается, что это только первые шаги, поскольку имеется серьезная проблема переиндексации поисковых машин.
Статья «Успехи моделирования сетей» (Advances in Network Simulation) написана большим коллективом авторов из AT&T Research, Университета Южной Калифорнии, Национальной лаборатории Лоуренса в Беркли, Lucent Technology и т.д. Всех их объединяет участие в проекте Virtual InterNetwork Testbed (VINT), целью которого является обеспечение исследователей сетевых технологий средствами моделирования для проектирования и внедрения широкомасштабных протоколов Internet. Описываются подходы к обеспечению таких требуемых для исследователей средств моделирования как абстракция, эмуляция, генерация сценариев, визуализация, расширяемость. При реализации использовался язык программирования Си++ с привлечением Tcl. Отмечается, что несмотря на относительный успех проекта VINT, остаются нерешенными некоторые проблемы, среди которых потребность в механизме интеграции в систему пользовательского кода.
Последняя из больших статей, «Практическая верификация программ для встраиваемых систем» (Practical Verification of Embedded Software) представлена десятью авторами из Дании. Описывается подход к исчерпывающей верификации встроенного программного обеспечения, используемый в современной версии коммерческого продукта VisualState. Демонстрируется, что VisualState может обеспечить верификацию сложных индустриальных приложений (с 1000 компонентов) на обычном ПК буквально за несколько минут. В основе похода лежит расширенная модель конечных автоматов с возможностью асинхронности. Проверяется достижимость состояний верифицируемой системы, причем множество состояний задается неявно, с помощью булевских предикатов и переменных.
Из небольших заметок, представленных в номере, хочу обратить внимание на статью независимого обозревателя Рида Хелмана (Reed Hellman) «Будущее операционных систем для Internet-приложений» (The Future of the OS for Internet Applications). В принципе, обзор не содержит откровений, но кое-что любопытно. Например, по данным International Data Corp. в 1999 году на рынке серверных платформ 52,7% занимали операционные системы семейства Unix, а 30,3% - Windows NT. Среди Unix-платформ упоминаются HP-UX, IBM AIX, SGI Irix, Linux (RedHat Linux 6.1), однако основное внимание уделяется недавно вышедшей системе Solaris 8. Приводится достаточно подробное сопоставление возможностей этой системы с возможностями Windows 2000. Пожалуй, единственный вывод, который можно сделать на основе этой заметки, состоит в том, что не следует ожидать прихода одной идеальной операционной системы для поддержки Internet-приложений. По-прежнему будет оставаться простор для выбора, большей частью субъективного.
Как всегда, в майском номере журнала Computer содержится масса самой разной полезной информации: конференции, вакансии, правила вступления в IEEE Computer Society и т.д. С этой информацией полезно знакомиться.
Полный доступ к содержимому журнала Computer и другим изданиям IEEE Computer Society получает любой человек, вступивший в Ассоциацию и подписавшийся на соответствующие публикации. Подробную информацию о Computer Society можно получить на сайтах www.computer.org, www.computer.org.ru или обратившись ко мне по телефону (095) 912-4614.
В заключение хочу заметить, что в Internet имеется совершенно свободный доступ к очень хорошему журналу Bulletin of the Technical Committee on Data Engineering (IEEE Computer Society). Обзоры нескольких номеров на русском языке можно найти на сайте www.citforum.ru, а полный текст - по адресу www.research.microsoft.com/research/db/debull.