Достаточно хорошее программное обеспечение

Вчера в Сиэтле после упоминания Биллом Гейтсом о выходе бета-версии новой программы компании Мicrosoft произошло землетрясение. Пользователи с ужасом ждут объявления о выходе финальной версии продукта.

Анекдот по мотивам землетрясения и выступления Б. Гейтса 28-го февраля 2001 г.

 

Пропагандистом “достаточно хорошего” программного обеспечения является Эдвард Йордон [Йордон 2001]. Подчеркнем, что он применяет это понятие к “безнадежным проектам”, которые связаны жесткими ограничениями на время, бюджет и людские ресурсы. В большинстве безнадежных проектов заказчик может быть удовлетворен системой, которая достаточно дешева, достаточно производительна, обладает необходимыми возможностями, достаточно устойчива и будет готова достаточно скоро. Фактически, эти характеристики можно считать определением “достаточно хорошего” программного обеспечения.

Оказывается, что даже “достаточно хорошее” программное обеспечение создать сложно. Приведем часть из совокупности причин, дающих этому объяснение [2001].

Часто качество стремятся определить только в терминах дефектов (ошибок). С точки зрения пользователя не менее важны такие стороны, как готовность к определенной дате.

Предполагается, что малое количество ошибок равносильно лучшему качеству, и пользователь предпочитает именно такое качество. Однако иногда пользователь готов идти на компромиссы и примириться с некоторыми ошибками в обмен на более скорое выполнение работы.

Игнорирование таких факторов, как моральное состояние команды разработчиков и адекватные условия для работы.

Джеймс Бах (James Bach) [Bach 1995] указывает следующие необходимые условия для создания “достаточно хорошего” программного обеспечения:

- утилитарная стратегия — искусство количественного анализа и максимизации чистого выигрыша в неопределенных ситуациях;

- эволюционная стратегия — рассматриваемая не только по отношению к жизненному циклу проекта, но также к людям, процессам и ресурсам;

- героические команды — не могучие гениальные программисты, а обычные умелые специалисты, способные к эффективному сотрудничеству;

- динамическая инфраструктура — противоположность бюрократии и засилью политики;

- динамические процессы — процессы, поддерживающие работу в эволюционной среде.

К сожалению, “достаточно хорошее программное обеспечение редко бывает действительно достаточно хорошим”. Никлаус Вирт отмечает, что следствие грустного проявления духа нашего времени, в котором исчез личная гордость за свою работу’. По его мнению, “нельзя ожидать качественно выполненной работы, если не отдавать ей себя полностью, если личного удовлетворения, более того — удовольствия от нее”.

Интересное наблюдение, заключающееся в том, что некоторые компании стремятся к понижению интеллектуального уровня пользователей своей продукции, сделано многими программистами. Компаниям чрезвычайно выгодно иметь дело с людьми, техническая квалификация которых не позволяет определить реальные аспекты (например, качество, сложность, ценность) программного продукта. Прикрываясь “упрощением” работы и повышением доступности компьютеров для пользователей, компании многократно перегружают и усложняют программное обеспечение таким образом, чтобы пользователю было крайне трудно понять — каким образом оно работает на самом деле и стать профессионалом.