Процесс разработки пакета программного обеспечения - это система для разработки пакетов программного обеспечения . Пакеты упрощают повторное использование и совместное использование кода, например, через репозиторий программного обеспечения . Формальная система проверки пакетов может помочь выявить ошибки, тем самым потенциально облегчая создание надежного программного обеспечения ( основная директива Чемберса ). [1] Это, в свою очередь, может помочь повысить продуктивность людей, которые производят и используют программное обеспечение как часть процесса разработки программного обеспечения или методологии разработки программного обеспечения .
Обсуждение
В этом контексте пакет представляет собой набор функций, написанных для использования на одном языке, таком как Python или R , вместе с документацией. Для многих языков программирования существуют репозитории программного обеспечения, в которых люди делятся такими пакетами.
Например, пакет Python объединяет документацию, код и начальную настройку, а также, возможно, примеры, которые можно использовать в качестве модульных тестов, в одном файле с расширением «py».
В отличие от этого, пакет R имеет документацию с примерами в файлах отдельно от кода, возможно, в комплекте с другими материалами, такими как образцы наборов данных и вводные виньетки . Исходный код для пакета R содержится в каталоге с главным файлом «описания» и отдельными подкаталогами для документации, кода, дополнительных наборов данных, подходящих для модульного или регрессионного тестирования, и, возможно, других. [2] Формальный процесс компиляции пакета [3] [4] проверяет наличие ошибок различных типов. Это включает проверку синтаксических ошибок как в языке разметки документации, так и в коде, а также сравнение аргументов между документацией и кодом. Примеры в документации проверены и выдают сообщения об ошибках, если они терпят неудачу. Это можно использовать как примитивную форму модульного тестирования ; могут быть включены более формальные модульные тесты и регрессионное тестирование . Это может повысить продуктивность разработки программного обеспечения, упростив поиск ошибок в процессе разработки кода. Кроме того, документация упрощает обмен кодом с другими. Это также упрощает для разработчика использование кода, написанного на несколько месяцев или даже лет раньше. Регулярные проверки выполняются для пакетов, добавленных в Comprehensive R Archive Network (CRAN) и находящихся в разработке на сопутствующем веб-сайте совместной разработки с открытым исходным кодом, R-Forge. Эти проверки повторно компилируют пакеты на разных платформах под разными версиями основного языка R. Результаты доступны разработчикам пакетов. Таким образом, участники пакета узнают о проблемах, с которыми они в противном случае никогда бы не столкнулись сами, потому что в противном случае у них не было бы легкого доступа к этим альтернативным результатам тестирования.
Интересным исследовательским вопросом было бы сравнить качество вкладов в различные репозитории программного обеспечения и попытаться связать это с особенностями языка и сопутствующим процессом разработки пакетов. Это может включать в себя попытку сравнить скорость роста предоставленного программного обеспечения со степенью формальности и соблюдения стандартов для документации, тестирования и кодирования.
Смотрите также
- Система управления пакетами для объединения программных пакетов на разных языках в операционную систему.
- Репозиторий программного обеспечения для коллекций пакетов для совместного использования.
- Процесс разработки программного обеспечения или методология разработки программного обеспечения для более общего обсуждения разработки программного обеспечения.
Рекомендации
- ^ Чемберс, Джон М. (2008). Программное обеспечение для анализа данных: Программирование с помощью R . Springer. ISBN 0-387-75935-2.
- ^ Запись R Extensions .
- ^ Лейш, Фридрих. «Создание пакетов R: учебное пособие» (PDF) .
- ^ Грейвз, Спенсер Б.; Дораи-Радж, Сундар. «Создание пакетов R с использованием CRAN, R-Forge и локальных сетей архивов R и репозиториев Subversion (SVN)» (PDF) .