Разработка программного обеспечения с открытым исходным кодом

редактировать

Разработка программного обеспечения с открытым исходным кодом - это процесс, с помощью которого программное обеспечение с открытым исходным кодом, или аналогичное программное обеспечение, исходный код которого общедоступно, разработано проектом с открытым исходным кодом . Это программные продукты, доступные вместе с исходным кодом по лицензии с открытым исходным кодом для изучения, изменения и улучшения его конструкции. Примеры некоторых популярных программных продуктов с открытым исходным кодом: Mozilla Firefox, Google Chromium, Android, LibreOffice и VLC media. player.

Содержание

  • 1 История
  • 2 Модель
    • 2.1 Запуск проекта с открытым исходным кодом
  • 3 Типы проектов с открытым исходным кодом
  • 4 Методы
  • 5 Инструменты
    • 5.1 Связь каналы
    • 5.2 Системы контроля версий
    • 5.3 Отслеживание ошибок и списки задач
    • 5.4 Инструменты для тестирования и отладки
    • 5.5 Управление пакетами
  • 6 Публикация проекта
  • 7 См. также
  • 8 Ссылки
  • 9 Внешние ссылки

История

В 1997 году Эрик С. Реймонд написал «Собор и базар». В этой книге Раймонд проводит различие между двумя видами разработки программного обеспечения. Первый - это обычная разработка с закрытым кодом. По словам Раймонда, такой метод развития похож на строительство собора; централизованное планирование, четкая организация и единый процесс от начала до конца. Второй - это прогрессивная разработка с открытым исходным кодом, которая больше похожа на «большой болтливый базар различных программ и подходов, из которого последовательная и стабильная система могла бы, казалось бы, возникнуть только в результате череды чудес». Последняя аналогия указывает на дискуссию, связанную с процессом разработки с открытым исходным кодом.

Различия между двумя стилями разработки, согласно Бару и Фогелю, в основном заключаются в обработке (и создании) отчетов об ошибках и запросах функций, а также в ограничениях, с которыми работают программисты. При разработке программного обеспечения с закрытым исходным кодом программисты часто тратят много времени на создание отчетов об ошибках, а также на обработку запросов функций. Это время уходит на создание и определение приоритетов дальнейших планов развития. Это приводит к тому, что часть команды разработчиков тратит много времени на эти вопросы, а не на саму разработку. Кроме того, в проектах с закрытым исходным кодом команды разработчиков часто должны работать в условиях ограничений, связанных с управлением (например, крайних сроков, бюджетов и т. Д.), Которые мешают техническим вопросам программного обеспечения. При разработке программного обеспечения с открытым исходным кодом эти проблемы решаются путем интеграции пользователей программного обеспечения в процесс разработки или даже предоставления этим пользователям возможности самостоятельно построить систему.

Модель

Модель данных процесса для открытых Разработка программного обеспечения с исходным кодом

Разработка программного обеспечения с открытым исходным кодом может быть разделена на несколько этапов. Указанные здесь фазы получены из Sharma et al. Диаграмма, отображающая структуру данных процесса разработки программного обеспечения с открытым исходным кодом, показана справа. На этом рисунке показаны этапы разработки программного обеспечения с открытым исходным кодом вместе с соответствующими элементами данных. Эта диаграмма составлена ​​с использованием методов мета-моделирования и моделирования метапроцессов.

Запуск проекта с открытым исходным кодом

Есть несколько способов начать работу над проектом с открытым исходным кодом:

  1. Человек, который ощущает потребность в проекте, объявляет о намерении разработать проект публично.
  2. Разработчик, работающий над ограниченной, но работающей базой кода, публикует ее как первую версию программы с открытым исходным кодом.
  3. Исходный код зрелой
  4. Хорошо зарекомендовавший себя проект с открытым исходным кодом может быть разветвлен заинтересованной внешней стороной.

Эрик Раймонд заметил в своем эссе «Собор и базар». что объявление о намерении по проекту обычно хуже, чем опубликование работающего проекта.

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

Типы проектов с открытым исходным кодом

Существует несколько типов проектов с открытым исходным кодом. Во-первых, существует множество программ и библиотек, состоящих из отдельных фрагментов кода. Некоторые могут даже зависеть от других проектов с открытым исходным кодом. Эти проекты служат определенной цели и удовлетворяют определенную потребность. Примеры проектов этого типа включают ядро ​​Linux, веб-браузер Firefox и офисный набор инструментов LibreOffice.

Дистрибутивы - это еще один тип проектов с открытым исходным кодом. Распространения - это коллекции программного обеспечения, которые публикуются из одного источника с общей целью. Наиболее ярким примером «дистрибутива» является операционная система. Существует множество дистрибутивов Linux (например, Debian, Fedora Core, Mandriva, Slackware, Ubuntu и т. Д.), Которые поставляют ядро ​​Linux вместе со многими пользовательскими компонентами. Существуют и другие дистрибутивы, такие как ActivePerl, язык программирования Perl для различных операционных систем и Cygwin дистрибутивы программ с открытым исходным кодом для Microsoft Windows.

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

Наконец, есть проект книги или отдельного документа. Эти элементы обычно не поставляются как часть пакета программного обеспечения с открытым исходным кодом. Проект документации Linux содержит множество таких проектов, которые документируют различные аспекты операционной системы GNU / Linux. Есть много других примеров этого типа проектов с открытым исходным кодом.

Методы

Трудно запустить проект с открытым исходным кодом, следуя более традиционному методу разработки программного обеспечения, например, водопадной модели, потому что в этих традиционных методах это недопустимо. чтобы вернуться к предыдущему этапу. При разработке программного обеспечения с открытым исходным кодом требования редко собираются до начала проекта; вместо этого они основаны на ранних версиях программного продукта, как описывает Роббинс. Помимо требований, часто привлекаются волонтеры для помощи в разработке программного продукта на основе ранних версий программного обеспечения. По мнению Абрахамссона и др., Этот сетевой эффект очень важен: «если представленный прототип привлечет достаточно внимания, он постепенно начнет привлекать все больше и больше разработчиков». Однако Абрахамссон и др. также отметьте, что сообщество очень сурово, как в деловом мире программного обеспечения с закрытым исходным кодом: «если вы найдете клиентов, вы выживете, но без клиентов вы погибнете».

Фуггетта утверждает, что «быстрое прототипирование, Постепенная и эволюционная разработка, спиральный жизненный цикл, быстрая разработка приложений и, в последнее время, экстремальное программирование и гибкий программный процесс могут в равной мере применяться к проприетарному программному обеспечению и программному обеспечению с открытым исходным кодом ». Он также называет Extreme Programming чрезвычайно полезным методом для разработки программного обеспечения с открытым исходным кодом. В более общем плане все методы гибкого программирования применимы к разработке программного обеспечения с открытым исходным кодом из-за их итеративного и инкрементного характера. Другой метод Agile одинаково полезен как для разработки программного обеспечения с открытым, так и с закрытым исходным кодом: Internet-Speed ​​Development, например, подходит для разработки программного обеспечения с открытым исходным кодом из-за принятого в нем принципа распределенной разработки. Internet-Speed ​​Development использует географически распределенные группы для «круглосуточной работы». Этот метод, в основном используемый крупными фирмами с закрытым кодом (потому что они единственные, у которых есть центры разработки в разных часовых поясах), одинаково хорошо работает в проектах с открытым исходным кодом, потому что программное обеспечение, разработанное большой группой добровольцев, естественно, чтобы разработчики работали во всех часовых поясах.

Инструменты

Каналы связи

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

Системы контроля версий

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

В начале 2000-х система Concurrent Versions System (CVS) была ярким примером инструмента для совместной работы над исходным кодом, который использовался в проектах OSS. CVS помогает управлять файлами и кодами проекта, когда над проектом одновременно работают несколько человек. CVS позволяет нескольким людям одновременно работать с одним файлом. Это делается путем перемещения файла в каталоги пользователей и последующего объединения файлов, когда пользователи закончат. CVS также позволяет легко получить предыдущую версию файла. В середине 2000-х годов была создана система контроля версий Subversion (SVN) на замену CVS. Он быстро завоевывает популярность в качестве системы управления версиями проектов OSS.

Многие проекты с открытым исходным кодом сейчас используют распределенные системы управления версиями, которые масштабируются лучше, чем централизованные репозитории, такие как SVN и CVS. Популярные примеры: git, используемый ядром Linux, и Mercurial, используемый языком программирования Python.

Отслеживание ошибок и списки задач

Для большинства крупномасштабных проектов требуется система отслеживания ошибок, чтобы отслеживать статус различных проблем в процессе разработки проекта. Некоторые средства отслеживания ошибок включают:

  • Bugzilla - веб-средство отслеживания ошибок от Mozilla.
  • Mantis Bug Tracker - веб-средство отслеживания ошибок PHP / MySQL.
  • Trac - интеграция системы отслеживания ошибок с вики и интерфейса с системой управления версиями Subversion.
  • Redmine - написан на Ruby, объединяет отслеживание проблем, вики, форум, новости, дорожную карту, планирование проекта Ганта и взаимодействует с Каталог пользователей LDAP.
  • Счетчик запросов - написан на Perl. По умолчанию заданы модули CPAN - см. Rt.cpan.org.
  • SourceForge и его форки предоставляют средство отслеживания ошибок как часть своих услуг. В результате многие проекты, размещенные на SourceForge.net и подобных сервисах, по умолчанию используют его.
  • JIRA - Веб-инструмент управления проектами и отслеживания проблем от Atlassian.

Инструменты для тестирования и отладки

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

A отладчик - это компьютерная программа, которая используется для отладки (а иногда и тестирования или оптимизировать) другие программы. GNU Debugger (GDB) - пример отладчика, используемого при разработке программного обеспечения с открытым исходным кодом. Этот отладчик предлагает удаленную отладку, что делает его особенно применимым для разработки программного обеспечения с открытым исходным кодом.

Инструмент утечки памяти или отладчик памяти - это инструмент программирования для поиска утечек памяти и буфер переполняется. Утечка памяти - это особый вид ненужного потребления памяти компьютерной программой, когда программа не может освободить память, которая больше не нужна. Примерами средств обнаружения утечек памяти, используемых Mozilla, являются инструменты XPCOM Memory Leak. Инструменты проверки используются для проверки соответствия фрагментов кода указанному синтаксису. Примером инструмента проверки является Splint.

Управление пакетами

A система управления пакетами - это набор инструментов для автоматизации процесса установки, обновления, настройки и удаления пакетов программного обеспечения с компьютера. Red Hat Package Manager (RPM) для.rpm и Advanced Packaging Tool (APT) для формата файлов .deb - это системы управления пакетами, используемые рядом дистрибутивов Linux.

Публикация проекта

Каталоги программного обеспечения и журналы выпуска:

  1. Каталог бесплатного программного обеспечения

Статьи:

  1. Еженедельные новости Linux
  2. IBM developerWorks

См. также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

Внешние ссылки

Последняя правка сделана 2021-06-01 12:36:01
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте