Совершенство недостижимо
Сергей Кузнецов
24.04.2003
Открытые системы, #04/2003
Обзор мартовского, 2003 г. номера журнала Computer (IEEE Computer Society, V. 36, No. 3, March 2002)
Темой мартовского номера журнала Computer является инженерия программного обеспечения. Впрочем, в тематическую подборку вошли только три из шести больших статей номера, и даже эти три статьи лишь условно связаны общей темой. Вообще говоря, Software Engineering является настолько необъятной темой, что при желании под нее можно притянуть практически любую статью, связанную с программированием.
Первая статья тематической подборки, написанная Берри Боухмом (Barry Boehm) и Ли Гуо Хуангом (Li Guo Huang), озаглавлена «Инженерия программного обеспечения на основе стоимости: пример» (Value-Based Software Engineering: A Case Study). Традиционно экономическое регулирование проектов программных систем производится на основе учета бюджетной и реальной стоимостей шагов проекта в контрольных временных точках, а также на основе соответствия плану. В случае существенных расхождений реальных и запланированных показателей производится корректировка плана. Однако в случае сложных проектов планы могут меняться по внешним причинам (изменение ситуации на рынке, изменение требований потенциальных клиентов и т.д.). Поэтому приходится применять системы мониторинга и управления стоимостью. В статье приведены примеры проектов, основанных на данных, которые получены в результате подобного мониторинга.
Следующая статья называется «Искусство отбора требований» (The Art of Requirements Triage). Ее автор — Ален Дэвис (Alan Davis). Под отбором требований понимается процесс, в ходе которого определяется, какие требования к программному продукту должны быть удовлетворены при наличии заданных ограничений по времени и ресурсам. Рассматриваются три примера из личного опыта автора, когда для успешной реализации проекта действительно требовался тщательный отбор требований. Приводятся 14 рекомендаций, по мнению автора, ключевых.
- Поддерживайте список требований.
- Фиксируйте неизбежные взаимозависимости требований.
- Комментируйте трудоемкость удовлетворения требований.
- Комментируйте относительную важность требований.
- Производите отбор открытым образом.
- Основывайте решения на более чем одном механизме.
- Стремитесь установить дух коллективной работы.
- Руководствуйтесь вероятностью успешного завершения работы, а не абсолютными цифрами.
- Принимайте во внимание оптимистический, пессимистический и реалистичный подходы.
- Планируйте более чем один выпуск продукта в одно время.
- Перед каждым следующим выпуском производите перепланировку.
- Не бойтесь принимать решения.
- Принимайте решение прежде, чем приступать к делу.
- Помните, что совершенство недостижимо.
Авторами третьей статьи тематической подборки — «Строгое оценивание готовой к использованию технологии промежуточного программного обеспечения» (Rigorous Evaluation of COTS Middleware Technology) — являются Ян Гортон (Ian Gorton), Анна Лиу (Anna Liu) и Пол Бребнер (Paul Brebner). Цель ведущегося с 1998 года проекта MTE (Middleware Technology Evaluation) — обеспечение поддержки пользовательских организаций при выборе ими имеющегося на рынке промежуточного программного обеспечения для построения прикладных распределенных систем. В проекте выполняются два основных вида деятельности. Во-первых, производятся лабораторные испытания продуктов, во время которых анализируются соответствие каждого продукта требованиям MTE (данные требования сформулированы на основании опыта оценки однотипных продуктов) и показатели эффективности продукта. Результаты испытаний публикуются в отчетах. Во-вторых, обеспечивается оценка продуктов в условиях инфраструктуры конкретной организации (по заказу). Из статьи неявно следует, что в рамках проекта MTE оцениваются два рода продуктов — основанных на технологиях CORBA и J2EE соответственно. Приведены некоторые результаты оценивания Borland Enterprise Server 5.0.2, SiverStream Application Server 3.7.4, WebLogic Application Server 6.1, WebSphere Application Server 4.0, Interstage Application Server 4.0 и Jboss 2.4.3 (все эти продукты поддерживают J2EE).
Перейдем к другим статьям, опубликованным в мартовском выпуске журнала. Авторы из Индии, Дебашис Саха (Debashis Saha) и Амитава Мукхерджи (Amitava Mukherjee), представили статью «Повсеместные вычисления: парадигма XXI века» (Pervasive Computing: A Paradigm of 21st Century). Модель повсеместных вычислений является расширением модели мобильных вычислений. Основная идея состоит в обеспечении доступа пользователя к любым компьютерным ресурсам (как вычислительным, так и информационным) в любое время и в любой точке земного шара. Технология, требуемая для построения повсеместной вычислительной среды, включает четыре основных области: устройства, коммуникации, промежуточное программное обеспечение и приложения. Выделен ряд проблем, для решения которых требуются дальнейшие исследования: масштабируемость, разнородность, интеграция, прозрачность и т.д. Кратко описываются результаты нескольких исследовательских проектов, выполняемых в университетах и компаниях отрасли.
Статья «Оболочка ANTS для кооперативных рабочих сред» (ANTS Framework for Cooperative Work Environments) написана испанскими авторами, Педро Гарсия Лопесом (Pedro Garcia Lopez) и Антонио Гомесом Скарнетой (Antonio Gomez Skarneta). Существующие программные средства поддержки коллективной работы (groupware) обладают рядом недостатков. На концептуальном уровне они не обеспечивают возможности мониторинга и анализа информации, производимой в процессе совместной работы. На архитектурном уровне в них отсутствует согласованная компонентная модель. На технологическом уровне не поддерживается горизонтальная интеграция промежуточного программного обеспечения. Как утверждают авторы, созданная ими оболочка ANTS (http://ants.etse.urv.es) этих недостатков лишена. В настоящее время в ANTS поддерживается коллективная разработка компонентов с использованием языка Java.
Авторами еще одной большой статьи номера являются Ксин Чен (Xin Chen) и Ксяодонг Жанг (Xiaodong Zhang). Название статьи — «Предсказательная модель для упреждающей выборки из Web, основанная на популярности» (A Popularity-Based Prediction Model for Web Prefetching). Одной из наиболее серьезных проблем Internet является сокращение времени ожидания при доступе к Web. Кэширование данных на стороне клиента обеспечивает лишь ограниченное повышение эффективности, поскольку очень трудно понять, какие файлы из числа многочисленных и разнообразных прочитанных файлов следует сохранять в кэше. Перспективным подходом является комбинирование кэширования файлов с их упреждающей выборкой, обеспечивая на стороне клиента те данные, которые, вероятно, потребуются пользователю. Упреждающая выборка повышает эффективность, поскольку работает для двух видов клиентов. Для групповых клиентов загружаются объекты данных, которые обычно используются совместно. Для индивидуальных клиентов загружаются их наиболее популярные данные. Для выполнения упреждающей выборки требуется построить предсказательную модель и структуру данных для хранения селективной исторической информации. В широко используемой предсказательной модели PPM (Prediction by Partial Match) предсказания основываются на просмотре списка URL, к которым обращался клиент через данный сервер за некоторый промежуток времени. Эти URL сохраняются в виде Марковского дерева предсказаний, которое динамически поддерживается сервером. В статье предложен вариант модели PPM, в котором в марковское дерево встраиваются паттерны и закономерности. Длинные ветви дерева соответствуют популярным URL (т.е. тем, к которым часто происходят обращения). Чем меньше популярность URL, тем короче его ветвь. Эксперименты авторов показали, что их вариант модели PPM обеспечивает эффективность упреждающей выборки большую, чем любая из других существующих моделей.
На дворе уже лето, и тем, кто еще не вступил в IEEE Computer Society, самое время подумать о том, чтобы сделать это с середины года. Это откроет для вас целый ряд новых возможностей, прежде всего, возможность непрерывного повышения своего профессионального уровня. Если вам требуется помощь в связи со вступлением в IEEE CS, обращайтесь ко мне, Сергей Кузнецов, kuzloc@ispras.ru.