![]() ![]() |
|
|
|
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Также в разделе
![]() |
![]() |
Надежность и безопасность: открытый код против закрытогоОткрытые системы :: БезопасностьНезависимые исследованияЕсли открытое сообщество легче откликается на программные дефекты, то можно заключить, что открытые продукты должны иметь в среднем более высокую надежность, чем их частные аналоги. Хотя каждая из сторон спора по проблемам открытого кода приводит в поддержку своей точки зрения самые убедительные свидетельства, авторы некоторых независимых исследований отдают предпочтение именно популярным открытым системам. В 1990 году профессор Бартон Миллер из Университета штата Висконсин разработал инструмент тестирования fuzz, который подавал случайные потоки данных на вход программ из нескольких частных версий Unix [3]. Миллер обнаружил, что 24-33% программ отказали под воздействием этих данных, и каждый из отказов мог быть непосредственно отнесен к программному дефекту. Правильно написанная программа не должна выходить из строя при получении неожиданных или случайных данных. В 1995 году Миллер включил в испытания также утилиты Linux и другие свободно доступные программы из проекта GNU. Он протестировал свыше 80 утилит из девяти версий Unix. Семь из них принадлежали частным поставщикам, а две были разработаны открытым сообществом. Основные результаты исследования, опубликованные в [9], свидетельствуют о следующем. С момента первого исследования частные системы улучшились, и коэффициент их отказов снизился с 24–33 до 18-23%. В открытых системах утилиты Linux заняли второе место с коэффициентом отказов примерно 9%. Самым низким был коэффициент отказов утилит GNU, который составил 6%. Итак, популярные открытые реализации утилит Unix существенно более устойчивы к неожиданным данным, чем их частные аналоги, что указывает на более высокие качество и надежность утилит с открытым кодом. Нельзя сказать, что все открытые системы надежнее частных, но они могут быть качественнее коммерческих разработок. В другом исследовании, предпринятом в 1999 году независимой консультационной и аналитической организацией Bloor Research из Великобритании, сравнивались Windows NT и GNU/Linux [10]. Испытание проводилось в течение года, и каждая из платформ оценивалась по девяти критериям. GNU/Linux была оценена выше, чем Windows NT, по семи критериям. Так, по критерию готовности ОС GNU/Linux получила значительно более высокую оценку, чем Windows NT. За год GNU/Linux не продемонстрировала ни одного отказа, который можно отнести на счет программного обеспечения. Однако аппаратный отказ из-за сбоя жесткого диска послужил причиной отключения системы, которое продолжалось четыре часа. Итоговый коэффициент готовности GNU/Linux составил 99,95%. За тот же период система Windows NT «выдала» 68 отказов: один был отказом жесткого диска, 26 были связаны с ошибками управления памятью, восемь относились к ошибкам файловой системы, а остальные имели неизвестное происхождение. Потери времени из-за этих отказов составили 65 часов, что дало коэффициент готовности Windows NT, равный 99,26%. Результаты исследования убедительно показывают, что открытые системы могут по меньшей мере на равных конкурировать с частными аналогами, обеспечивая устойчивые и надежные серверные платформы. Сегодня несколько компаний предлагают услуги проверки программного обеспечения, что позволяет производителям отдавать проверку кода на аутсорсинг. Фирма Reasoning почти 20 лет помогает организациям улучшать качество систем путем автоматизированной проверки программного обеспечения и считается лидером в этой области. В 2003 году Reasoning провела исследование реализации протокола TCP/IP в ядре Linux версии 2.4.19 и в пяти частных операционных системах [11]. Цель состояла в применении автоматизированных методов проверки кода для сравнения качества и уровней дефектности разных реализаций протокола. Выяснилось, что коэффициент дефектности для кода Linux составлял 0,1 дефекта на 1 тыс. строк кода, а для частных реализаций — 0,55. Reasoning пришла к выводу, что открытая реализация TCP/IP имеет значительно меньшую плотность дефектов, чем реализации в пяти частных операционных системах. Исследование также показало, что по общему качеству открытая система находится в первой трети списка рассмотренных проектов. В июле 2003 года Reasoning проанализировала популярный открытый Web-сервер Apache [12], разработанный и поддерживаемый некоммерческой корпорацией Apache Software Foundation (www.apache.org). По данным Netcraft [13], сейчас Apache является доминирующим HTTP-сервером в Internet. В июне 2004 года он занимал 67% рынка, составлявшего 51,6 млн. серверов, а на долю продуктов Microsoft приходился 21%. Если столь много организаций полагаются на открытые технологии при организации своих Internet-представительств, то очевидно, что ИТ-администраторам был бы полезен независимый от поставщика показатель качества ПО, помогающий при выборе между открытыми и частными системами. Reasoning пришла к выводу, что коэффициент дефектности Apache версии 2.1 составляет 0,53 на 1 тыс. строк кода. В Reasoning сравнили плотность дефектов Apache с 200 другими открытыми и частными программами общим объемом 33 млн. строк кода. В первой трети списка этих проектов коэффициент дефектности был менее 0,36, во второй трети — от 0,36 до 0,71, а в последней трети — более 0,71. Коэффициент дефектности системы Apache попадает примерно в середину списка и несколько превосходит средний коэффициент дефектности частного программного обеспечения (по оценкам Reasoning, он составляет 0,51). Reasoning продолжила исследования качества открытых систем на примере исходного кода ведущей открытой СУБД MySQL версии 4.0.16 [14]. В декабре 2003 года в Reasoning проверили 236 тыс. строк исходного кода MySQL и обнаружили в системе 21 программный дефект. Качество кода MySQL оказалось в шесть раз выше, чем в среднем у сопоставимого частного кода (коэффициенты дефектности, соответственно, 0,09 и 0,51). Разработчики MySQL быстро устранили обнаруженные проблемы и выпустили версию 4.0.17. Эти исследования показывают, что по качеству открытые системы могут превосходить частные аналоги. Кроме того, исследования Reasoning касались лишь дефектов исходного кода, но не затрагивали столь важные аспекты, как удобство применения, совместимость, функциональные возможности и эксплуатационные затраты, которые нужно рассматривать в процессе принятия решения о развертывании системы. Исследования Reasoning показали, что открытые системы являются жизнеспособной альтернативой частным системам с точки зрения качества и надежности. Процессы разработкиОчевидно, что разработка и поддержка частного программного обеспечения требует огромных затрат. Каким же образом гораздо более слабо связанная группа разработчиков может бесплатно создать систему с сопоставимым качеством? Рассмотрим процесс разработки программного обеспечения с открытым кодом, чтобы лучше разобраться в причинах успеха открытых проектов. В большинстве традиционных частных программных проектов используется тот или иной вариант модели водопада [15], которая имеет пять хорошо определенных стадий.
Процесс в целом имеет итеративный характер: в любой момент из-за появления новых проблем или изменения требований проект может вернуться к более ранней стадии. Это цепочка обратной связи с разработчиками. Проблемы, обнаруженные на стадиях тестирования и эксплуатации, доводятся до сведения программистов. Программисты ищут решения проблем, разрабатывают исправления и повторно предоставляют компоненты для тестирования и включения в систему. Открытая разработка зачастую менее структурирована, но в какой-то мере повторяет традиционные стадии. Главное отличие состоит в добавлении цепочки обратной связи с пользователями, с помощью которой последние вовлекаются в процесс разработки. В частной среде пользователи могут сообщить о программных дефектах или что-то предложить, но не способны непосредственно участвовать в процессе разработки, поскольку не имеют доступа к исходному коду. При открытой разработке каждый потребитель получает доступ к исходному коду и может участвовать в непрерывном совершенствовании программ. Правда, лишь небольшая доля пользователей имеет необходимый опыт или желание активно участвовать в проекте. Однако когда сообщество потребителей становится достаточно большим, эта доля дает значительное число участников. Наглядной иллюстрацией служит разработка Web-сервера Apache. Система Apache возникла в 1995 году из набора заплат (patch) для исходного кода популярного в то время Web-сервера Национального центра суперкомпьютерных приложений США. Этим заплатам система и обязана своим названием (игра слов: Apache server — a patchy server, то есть «заплаточный сервер» — Прим. перев.). Заплаты были предоставлены пользователями сервера (в то время почти лишенного поддержки), которые нуждались в дополнительных функциях. Потребители имели доступ к исходному коду сервера и могли изменять систему в соответствии со своими нуждами. Изменения поступали в группу добровольцев, поддерживающих систему. В конечном счете эта группа отказалась от первоначального набора заплат и полностью перепроектировала систему. В декабре 1995 года был официально выпущен сервер Apache версии 1.0, который, как уже отмечалось, быстро стал доминирующим Web-сервером в Internet. По мере роста популярности системы Apache росло и число организаций, полагающихся на нее при решении своих основных задач. Как следствие, множилось число участников проекта. Группа добровольцев, рассматривавших усовершенствования и поддерживавших исходный код Apache, продолжала расти, в 1995 году превратившись в Apache Group, в 1999-м была преобразована в Apache Software Foundation.
|
![]() |
![]() |
![]() |
Об издательстве Как нас найти Реклама Контакты |
Открытые системы:
Computerworld
Windows IT Pro
LAN
Сети
Мир ПК
Открытые системы
Publish
Директор ИС
Лечащий врач
ФСП
Искусcтво управления WhatCar? Классный журнал Stuff Oil&Gas Copyright © 1992-2006. All rights reserved. |