Разработка программного обеспечения с открытым исходным кодом
Разработка программного обеспечения с открытым исходным кодом (OSSD) — это процесс, в ходе которого программное обеспечение с открытым исходным кодом или аналогичное программное обеспечение, исходный код которого общедоступен, разрабатывается в рамках проекта программного обеспечения с открытым исходным кодом . Это программные продукты, доступные с исходным кодом по лицензии с открытым исходным кодом для изучения, изменения и улучшения их конструкции. Примерами некоторых популярных программных продуктов с открытым исходным кодом являются Mozilla Firefox , Google Chromium , Android , LibreOffice и медиаплеер VLC .
История
[ редактировать ]В 1997 году Эрик С. Рэймонд написал «Собор и базар» . [ 1 ] В этой книге Рэймонд проводит различие между двумя видами разработки программного обеспечения. Первый — это традиционная разработка с закрытым исходным кодом. Этот метод развития, по мнению Раймонда, подобен строительству собора; централизованное планирование, четкая организация и один процесс от начала до конца. Второе — это прогрессивная разработка с открытым исходным кодом, которая больше похожа на «большой болтливый базар различных программ и подходов, из которого последовательная и стабильная система, казалось бы, могла возникнуть только благодаря череде чудес». Последняя аналогия указывает на дискуссию, связанную с процессом разработки с открытым исходным кодом.
По мнению Бара и Фогеля, различия между двумя стилями разработки заключаются в основном в обработке (и создании) отчетов об ошибках и запросах функций, а также в ограничениях, в которых работают программисты. [ 2 ] При разработке программного обеспечения с закрытым исходным кодом программисты часто тратят много времени на обработку и создание отчетов об ошибках, а также на обработку запросов на добавление новых функций. Это время уходит на создание и расстановку приоритетов дальнейших планов развития. Это приводит к тому, что часть команды разработчиков тратит много времени на эти вопросы, а не на собственно разработку. Кроме того, в проектах с закрытым исходным кодом командам разработчиков часто приходится работать в условиях ограничений, связанных с управлением (таких как сроки, бюджет и т. д.), которые мешают решению технических проблем программного обеспечения. При разработке программного обеспечения с открытым исходным кодом эти проблемы решаются путем интеграции пользователей программного обеспечения в процесс разработки или даже предоставления этим пользователям возможности создавать систему самостоятельно. [ нужна ссылка ]
Модель
[ редактировать ]Разработку программного обеспечения с открытым исходным кодом можно разделить на несколько этапов. Указанные здесь фазы взяты из работы Sharma et al . [ 3 ] Диаграмма, показывающая структуру данных процесса разработки программного обеспечения с открытым исходным кодом, показана справа. На этом рисунке показаны этапы разработки программного обеспечения с открытым исходным кодом вместе с соответствующими элементами данных. Эта диаграмма построена с использованием методов метамоделирования и моделирования метапроцессов .
Запуск проекта с открытым исходным кодом
[ редактировать ]Есть несколько способов начать работу над проектом с открытым исходным кодом:
- Человек, чувствующий потребность в проекте, публично объявляет о намерении разработать проект.
- Разработчик, работающий над ограниченной, но работающей базой кода, публикует ее как первую версию программы с открытым исходным кодом.
- Исходный код зрелого проекта публикуется.
- Хорошо зарекомендовавший себя проект с открытым исходным кодом может быть разветвлен заинтересованной внешней стороной.
Эрик Рэймонд в своем эссе «Собор и базар» заметил , что объявление о намерении проекта обычно уступает обнародованию рабочего проекта.
Распространенной ошибкой является начало проекта, когда участие в существующем аналогичном проекте было бы более эффективным ( синдром NIH ). [ нужна ссылка ] . Чтобы начать успешный проект, очень важно изучить то, что уже есть. Процесс начинается с выбора между принятием существующего проекта или началом нового проекта. Если запускается новый проект, процесс переходит в фазу инициации. Если принимается существующий проект, процесс переходит непосредственно к этапу реализации. [ оригинальное исследование? ]
Типы проектов с открытым исходным кодом
[ редактировать ]Существует несколько типов проектов с открытым исходным кодом. Во-первых, существует огромное количество программ и библиотек, состоящих из отдельных фрагментов кода. Некоторые из них могут даже зависеть от других проектов с открытым исходным кодом. Эти проекты служат определенной цели и удовлетворяют определенную потребность. Примеры проектов такого типа включают ядро Linux , веб-браузер Firefox и офисный пакет инструментов LibreOffice.
Дистрибутивы — это еще один тип проектов с открытым исходным кодом. Дистрибутивы — это наборы программного обеспечения, опубликованные из одного источника с общей целью. Наиболее ярким примером «дистрибутива» является операционная система. Существует множество дистрибутивов Linux (таких как Debian , Fedora Core , Mandriva , Slackware , Ubuntu и т. д.), которые поставляют ядро Linux вместе со многими пользовательскими компонентами. Существуют и другие дистрибутивы, такие как ActivePerl , язык программирования Perl для различных операционных систем, и Cygwin дистрибутивы программ с открытым исходным кодом для Microsoft Windows .
Другие проекты с открытым исходным кодом, такие как производные BSD , хранят исходный код всей операционной системы, ядра и всех ее основных компонентов в одной контроля версий системе ; разрабатываем всю систему вместе, как единая команда. Эти проекты разработки операционных систем тесно интегрируют свои инструменты, в большей степени, чем в других системах на основе распространения.
Наконец, есть книга или отдельный проект документа. Эти элементы обычно не поставляются как часть пакета программного обеспечения с открытым исходным кодом. Проект документации Linux содержит множество таких проектов, документирующих различные аспекты операционной системы Linux. Есть много других примеров такого типа проектов с открытым исходным кодом.
Методы
[ редактировать ]Трудно запустить проект с открытым исходным кодом, следуя более традиционному методу разработки программного обеспечения, такому как каскадная модель , поскольку в этих традиционных методах не допускается возврат к предыдущему этапу. При разработке программного обеспечения с открытым исходным кодом требования редко собираются до начала проекта; вместо этого, как описывает Роббинс, они основаны на ранних версиях программного продукта. [ 4 ] Помимо требований, часто привлекаются волонтеры для помощи в разработке программного продукта на основе ранних версий ПО. По мнению Абрахамссона и др., этот сетевой эффект важен: «если представленный прототип соберет достаточно внимания, он постепенно начнет привлекать все больше и больше разработчиков». Однако Абрахамссон и др. Также отметим, что сообщество очень жесткое, во многом похожее на деловой мир программного обеспечения с закрытым исходным кодом: «если вы найдете клиентов, вы выживете, но без клиентов вы умрете». [ 5 ]
Убегать [ 6 ] утверждает, что «быстрое прототипирование, поэтапная и эволюционная разработка, спиральный жизненный цикл, быстрая разработка приложений и, в последнее время, экстремальное программирование и гибкий процесс разработки программного обеспечения могут в равной степени применяться к проприетарному программному обеспечению и программному обеспечению с открытым исходным кодом». Он также называет экстремальное программирование чрезвычайно полезным методом разработки программного обеспечения с открытым исходным кодом. В более общем плане все методы гибкого программирования применимы к разработке программного обеспечения с открытым исходным кодом из-за их итеративного и поэтапного характера. Другие гибкие методы одинаково полезны как для разработки программного обеспечения с открытым, так и с закрытым исходным кодом: например, Internet-Speed Development подходит для разработки программного обеспечения с открытым исходным кодом из-за принятого в нем принципа распределенной разработки. Internet-Speed Development использует географически распределенные команды для «работы круглосуточно». Этот метод, в основном используемый крупными фирмами с закрытым исходным кодом (поскольку они единственные, у которых есть центры разработки в разных часовых поясах), работает одинаково хорошо в проектах с открытым исходным кодом, поскольку программное обеспечение, разработанное большой группой добровольцев, естественно, будет иметь тенденцию чтобы разработчики были распределены по всем часовым поясам.
Инструменты
[ редактировать ]Каналы связи
[ редактировать ]Разработчики и пользователи проекта с открытым исходным кодом не обязательно работают над проектом в непосредственной близости. Им требуются некоторые электронные средства связи. Электронная почта — одна из наиболее распространенных форм общения среди разработчиков и пользователей открытого ПО. Часто электронные списки рассылки используются для обеспечения одновременной доставки сообщений электронной почты всем заинтересованным сторонам. Это гарантирует, что хотя бы один из участников сможет на него ответить. Для общения в режиме реального времени многие проекты используют метод обмена мгновенными сообщениями, такой как IRC . Веб-форумы в последнее время стали для пользователей обычным способом получить помощь в решении проблем, с которыми они сталкиваются при использовании продукта с открытым исходным кодом. Вики стали обычным средством общения для разработчиков и пользователей. [ 7 ]
Системы контроля версий
[ редактировать ]При разработке OSS участники, в основном добровольцы, распределены по разным географическим регионам, поэтому необходимы инструменты, которые помогут участникам сотрудничать в разработке исходного кода.
В начале 2000-х годов система параллельных версий (CVS) была ярким примером инструмента совместной работы с исходным кодом, используемого в проектах OSS. CVS помогает управлять файлами и кодами проекта, когда над проектом одновременно работают несколько человек. CVS позволяет нескольким людям одновременно работать с одним файлом. Это делается путем перемещения файла в каталоги пользователей и последующего объединения файлов, когда пользователи завершат работу. CVS также позволяет легко получить предыдущую версию файла. В середине 2000-х годов для замены CVS была создана система контроля версий Subversion (SVN). Она быстро завоевывает популярность как система контроля версий проектов 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 (RPM) для .rpm и Advanced Packaging Tool (APT) для формата файлов .deb — это системы управления пакетами, используемые в ряде дистрибутивов Linux. [ нужна ссылка ]
Преимущества программного обеспечения с открытым исходным кодом:
Программное обеспечение с открытым исходным кодом предлагает ряд преимуществ, в том числе:
• Экономическая эффективность: программное обеспечение с открытым исходным кодом часто можно загрузить и использовать бесплатно, что снижает затраты для отдельных лиц и организаций. • Настраиваемость: программное обеспечение с открытым исходным кодом можно модифицировать в соответствии с конкретными потребностями, обеспечивая большую гибкость и контроль. • Безопасность: программное обеспечение с открытым исходным кодом часто более безопасно, чем проприетарное программное обеспечение, поскольку исходный код доступен для просмотра и изменения сообществом разработчиков.
Публикация проекта
[ редактировать ]Каталоги программного обеспечения и журналы выпусков:
Статьи:
См. также
[ редактировать ]- Бизнес-модели для программного обеспечения с открытым исходным кодом
- Совместная работа правительства по открытому коду
- Безопасность программного обеспечения с открытым исходным кодом
- Анализ состава программного обеспечения
- Процесс разработки программного обеспечения
- Управление релизами
- Программная инженерия
- Метамоделирование
Ссылки
[ редактировать ]- ^ Раймонд, ES (1999). Собор и базар . О'Рейли Получено с http://www.catb.org/~esr/writings/cathedral-bazaar/ . Смотрите также: Собор и базар .
- ^ Бар, М. и Фогель, К. (2003). Разработка с открытым исходным кодом с помощью CVS , 3-е издание. Параглиф Пресс. ( ISBN 1-932111-81-6 )
- ^ Шарма С., Сугумаран В. и Раджагопалан Б. (2002). Платформа для создания сообществ гибридного программного обеспечения с открытым исходным кодом . Журнал информационных систем 12 (1), 7 – 25.
- ^ Роббинс, JE (2003). Внедрение практик разработки программного обеспечения с открытым исходным кодом (OSSE) путем внедрения инструментов OSSE . Осмысление базара: перспективы открытого и бесплатного программного обеспечения, осень 2003 г.
- ^ Абрахамссон П., Сало О. и Варста Дж. (2002). Гибкие методы разработки программного обеспечения: обзор и анализ . Публикации ВТТ.
- ^ Фуггетта, Альфонсо (2003). «Программное обеспечение с открытым исходным кодом – оценка». Журнал систем и программного обеспечения . 66 (1): 77–90. дои : 10.1016/S0164-1212(02)00065-1 .
- ^ Jump up to: а б с «Тим Бернерс-Ли в сети в 25 лет: прошлое, настоящее и будущее» . Проводная Великобритания .
- ^ «Величие Git — Linux Foundation» . www.linuxfoundation.org . Проверено 25 августа 2023 г.