Разработка программного обеспечения с открытым исходным кодом - это процесс, с помощью которого программное обеспечение с открытым исходным кодом, или аналогичное программное обеспечение, исходный код которого общедоступно, разработано проектом с открытым исходным кодом . Это программные продукты, доступные вместе с исходным кодом по лицензии с открытым исходным кодом для изучения, изменения и улучшения его конструкции. Примеры некоторых популярных программных продуктов с открытым исходным кодом: Mozilla Firefox, Google Chromium, Android, LibreOffice и VLC media. player.
В 1997 году Эрик С. Реймонд написал «Собор и базар». В этой книге Раймонд проводит различие между двумя видами разработки программного обеспечения. Первый - это обычная разработка с закрытым кодом. По словам Раймонда, такой метод развития похож на строительство собора; централизованное планирование, четкая организация и единый процесс от начала до конца. Второй - это прогрессивная разработка с открытым исходным кодом, которая больше похожа на «большой болтливый базар различных программ и подходов, из которого последовательная и стабильная система могла бы, казалось бы, возникнуть только в результате череды чудес». Последняя аналогия указывает на дискуссию, связанную с процессом разработки с открытым исходным кодом.
Различия между двумя стилями разработки, согласно Бару и Фогелю, в основном заключаются в обработке (и создании) отчетов об ошибках и запросах функций, а также в ограничениях, с которыми работают программисты. При разработке программного обеспечения с закрытым исходным кодом программисты часто тратят много времени на создание отчетов об ошибках, а также на обработку запросов функций. Это время уходит на создание и определение приоритетов дальнейших планов развития. Это приводит к тому, что часть команды разработчиков тратит много времени на эти вопросы, а не на саму разработку. Кроме того, в проектах с закрытым исходным кодом команды разработчиков часто должны работать в условиях ограничений, связанных с управлением (например, крайних сроков, бюджетов и т. Д.), Которые мешают техническим вопросам программного обеспечения. При разработке программного обеспечения с открытым исходным кодом эти проблемы решаются путем интеграции пользователей программного обеспечения в процесс разработки или даже предоставления этим пользователям возможности самостоятельно построить систему.
Разработка программного обеспечения с открытым исходным кодом может быть разделена на несколько этапов. Указанные здесь фазы получены из Sharma et al. Диаграмма, отображающая структуру данных процесса разработки программного обеспечения с открытым исходным кодом, показана справа. На этом рисунке показаны этапы разработки программного обеспечения с открытым исходным кодом вместе с соответствующими элементами данных. Эта диаграмма составлена с использованием методов мета-моделирования и моделирования метапроцессов.
Есть несколько способов начать работу над проектом с открытым исходным кодом:
Эрик Раймонд заметил в своем эссе «Собор и базар». что объявление о намерении по проекту обычно хуже, чем опубликование работающего проекта.
Распространенная ошибка - начинать проект, когда участие в существующем аналогичном проекте было бы более эффективным (синдром 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.
Для большинства крупномасштабных проектов требуется система отслеживания ошибок, чтобы отслеживать статус различных проблем в процессе разработки проекта. Некоторые средства отслеживания ошибок включают:
Поскольку проекты 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.
Каталоги программного обеспечения и журналы выпуска:
Статьи: