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

Виновников ошибок в программном обеспечении долго искать не надо. Виноваты в первую очередь производители, выпускающие на рынок «сырые» продукты, не прошедшие полноценного тестирования. Тем же грешат и внутренние корпоративные команды разработчиков. Несовершенство законодательной базы также позволяет производителям ПО практически безнаказанно наносить пользователям ущерб, первопричиной которого являются ошибки в самих программах. Наконец, многие упрекают систему высшего образования, в которой при подготовке молодых ИТ-специалистов куда большее внимание уделяется вопросам разработки программ, нежели их тестирования.

Последнее, впрочем, не совсем верно, если повнимательнее рассмотреть некоторые частные случаи. Например, научного сотрудника Массачусетского технологического института Шарфраза Хуршида, разрабатывающего процедуры автоматического тестирования ПО, никак нельзя отнести к числу виноватых.

Тестирование программного обеспечения предусматривает генерацию «входного потока» — специальных инструкций, которые должны выполнять программы. На каждую возможную ошибку должен быть создан свой тест, способный выявить ее.

Хуршид уже создал ряд алгоритмов «генерации входных потоков» и твердо верит в то, что качество подобных алгоритмов в ближайшие несколько лет заметно повысится. Однако эксперты утверждают, что само по себе улучшение технологии автоматического тестирования не оказывает прямого воздействия на повышение качества программного обеспечения.

«При создании большей части программных продуктов вопросам их качества просто не уделяется достаточного внимания, — пояснил директор Института изучения качества программного обеспечения при Техасском университете Херб Краснер. — В деловом мире основным условием является не высокое качество программного обеспечения, а максимально сжатые сроки его выпуска на рынок. Это постоянная гонка, которая отодвигает вопросы качества на второй план».

Результаты исследования, проведенного в прошлом году Национальным институтом по стандартам и технологиям при Министерстве торговли США, показывают, что недостаточно тщательное тестирование программного обеспечения ежегодно увеличивает расходы производителей и клиентов на 60 млрд. долл. Вирусы, проникающие через имеющиеся бреши, приводят к дополнительным убыткам, которые также исчисляются в миллиардах долларов.

Внедрение стандартов

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

Новый импульс усилиям органов стандартизации в какой-то степени был придан обнаружением знаменитой «ошибки всех времен и народов», которая в 1999 году привела к катастрофе космического аппарата Mars Polar Lander, запущенного для проведения исследований на Красной планете. Для НАСА это стало переломным моментом, после которого руководство космического агентства стало более широко привлекать университеты к решению задач повышения качества. Агентство НАСА выступило также в качестве одного из инициаторов создания при Университете Карнеги-Меллона консорциума Sustainable Computing Consortium (SCC), в который вошли представители компаний FedEx, Pfizer, Microsoft и Oracle.

Инженеры знают, как оценить качество многих сложных продуктов: самолетов, лекарств, мостов и т. д. Но стандартов для оценки качества программного обеспечения и сравнения его с другими программными продуктами аналогичного назначения пока не существует. Поэтому непонятно, как следует расценивать, к примеру, заявления Microsoft о намерении выпускать продукты, «заслуживающие доверия», или желание Oracle придать своему «супернадежному» пакету статус стандарта.

«Как сравнить то, что ?заслуживает доверия?, с тем, что провозглашается ?супернадежным??» — задается вопросом директор SCC Уильям Гуттман. Консорциум стремится поддержать процесс создания стандартов и спецификаций, которые позволят оценивать различные параметры систем, в частности их функциональную надежность и безопасность. Если эти показатели применительно к программным продуктам будут поддаваться количественной оценке, пользователи получат возможность делать покупки, исходя из качества предлагаемой продукции.

Такова точка зрения Гуттмана, сравнивающего сложность задачи, поставленной перед его группой, с разработкой норм и правил муниципального строительства фактически с нуля.

Вина законодателей

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

Профессор информатики технологического института Мельбурна (шт. Флорида) Сэм Канер, рассмотревший вопросы юридической защиты пользователей программного обеспечения в своей книге Bad Software (John Wiley & Sons, 1998), сравнивает сегодняшние обязательства создателей программ с обязательствами автомобилестроителей до принятия законов об обмане потребителей. (Сейчас такие законы действуют практически во всех штатах. К примеру, в Калифорнии один из законов гласит, что, если новый автомобиль в течение первого года после приобретения провел в ремонте более 30 дней или если один и тот же дефект трижды безуспешно пытались устранить, автопроизводитель обязан забрать машину и полностью компенсировать затраты клиента. Кроме того, продавая уже отремонтированную машину (естественно, как подержанную), производитель обязан сообщить покупателю, что ему предлагается именно возвращенный первым владельцем автомобиль. — Прим. ред.)

Сейчас ответственность производителя программного обеспечения, как правило, ограничена стоимостью продукта. Убытки, понесенные пользователем в результате простоя, и упущенная выгода при этом не компенсируются.

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

Создание программного обеспечения с минимальным числом ошибок — настоящая страсть Дэйла Кемпбелла. Директор информационной службы Warner Music Group видит отличную возможность для снижения фактических затрат компаний за счет совершенствования процесса разработки.

В Warner Music Group используют различные инструментальные средства обнаружения ошибок в программном обеспечении, которое разрабатывается внутренними силами компании (в частности, пакет Monrovia, предлагаемый компанией Parasoft). По словам Кемпбелла, процедура разработки совершенствуется по мере повышения качества приобретаемых инструментальных средств.

«Изъяны программного обеспечения вызывают необходимость повторного выполнения работ, а дополнительные работы приводят к потере денег, — пояснил Кемпбелл. — Не думаю, что покупатели когда-нибудь согласятся приобретать ?физические? продукты с таким же количеством дефектов».