stringtranslate.com

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

Разработка программного обеспечения с открытым исходным кодом (OSSD) — это процесс, посредством которого программное обеспечение с открытым исходным кодом или аналогичное программное обеспечение, исходный код которого находится в открытом доступе, разрабатывается проектом программного обеспечения с открытым исходным кодом . Это программные продукты, доступные с исходным кодом по лицензии с открытым исходным кодом для изучения, изменения и улучшения его дизайна. Примерами некоторых популярных программных продуктов с открытым исходным кодом являются Mozilla Firefox , Google Chromium , Android , LibreOffice и медиаплеер VLC .

История

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

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

Модель

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

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

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

Работа над проектом с открытым исходным кодом может начаться несколькими способами:

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

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

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

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

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

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

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

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

Методы

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

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

Инструменты

Каналы связи

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

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

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

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

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

Системы отслеживания ошибок и списки задач

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

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

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

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

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

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

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

Реклама проекта

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

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

Статьи:

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

Смотрите также

Ссылки

  1. ^ Raymond, ES (1999). Собор и базар . O'Reilly Получено с http://www.catb.org/~esr/writings/cathedral-bazaar/. См. также: Собор и базар .
  2. ^ Бар, М. и Фогель, К. (2003). Разработка с открытым исходным кодом с использованием CVS , 3-е издание. Paraglyph Press. ( ISBN  1-932111-81-6 )
  3. ^ Шарма, С., Сугумаран, В. и Раджагопалан, Б. (2002). Основа для создания сообществ гибридного программного обеспечения с открытым исходным кодом . Журнал информационных систем 12 (1), 7–25.
  4. ^ Роббинс, Дж. Э. (2003). Внедрение методов разработки программного обеспечения с открытым исходным кодом (OSSE) путем внедрения инструментов OSSE . Making Sense of the Bazaar: Perspectives on Open Source and Free Software, осень 2003 г.
  5. ^ Абрахамссон, П., Сало, О. и Варста, Дж. (2002). Методы гибкой разработки программного обеспечения: обзор и анализ . VTT Publications.
  6. ^ Фуггетта, Альфонсо (2003). «Программное обеспечение с открытым исходным кодом – оценка». Журнал систем и программного обеспечения . 66 (1): 77–90. doi :10.1016/S0164-1212(02)00065-1.
  7. ^ abc "Тим Бернерс-Ли в Сети в 25 лет: прошлое, настоящее и будущее". Wired UK .
  8. ^ "Величие Git - Linux Foundation". www.linuxfoundation.org . Получено 2023-08-25 .

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