В разработке программного обеспечения , A кодовый (или базовый код ) представляет собой набор из исходного кода используется для создания конкретного программного обеспечения системы , приложения или компонента программного обеспечения . Обычно база кода включает только файлы исходного кода, написанные человеком ; таким образом, база кода обычно не включает файлы исходного кода, созданные инструментами (сгенерированные файлы) или файлы двоичных библиотек (объектные файлы), поскольку они могут быть построены из исходного кода, написанного человеком. Однако обычно он включает файлы конфигурации и свойств, поскольку они являются данными, необходимыми для сборки.
Кодовая база обычно хранятся в управлении источником хранилища в управлении версиями системы. Для небольших проектов он может храниться как простой набор файлов (даже ядро Linux поддерживалось как набор файлов в течение многих лет). [1] Репозиторий исходного кода - это место, где хранятся большие объемы исходного кода, публично или конфиденциально. Репозитории исходного кода используются в основном для резервного копирования и управления версиями, а также в проектах с несколькими разработчиками для обработки различных версий исходного кода и оказания помощи в разрешении конфликтов, возникающих из-за того, что разработчики вносят частично совпадающие изменения. Subversion , Git и Mercurial - примеры популярных инструментов, используемых для обработки этого рабочего процесса, которые распространены в проектах с открытым исходным кодом.
Четкие и монолитные кодовые базы
Несколько проектов могут иметь отдельные, разные кодовые базы или могут иметь одну, общую илимонолитная кодовая база . Это особенно актуально для связанных проектов, например, разработанных в одной компании. Более подробно, монолитная кодовая база обычно влечет за собой единый репозиторий (весь код в одном месте) и часто общую систему сборки или общие библиотеки. Совместное использование или разделение кодовой базы не зависит от архитектуры системы и фактических результатов сборки; таким образом, монолитная кодовая база, которая связана с фактической разработкой, не влечет за собоймонолитную систему, которая связана с архитектурой программного обеспечения или единым монолитным двоичным кодом. В результате монолитная кодовая база может и (для больших кодовых баз) часто будет состоять из отдельных компонентов, а не содержать только одну систему или один двоичный файл; распределенная кодовая база (с несколькими компонентами) может использоваться для построения единой монолитной системы или даже единственного двоичного кода. Например, ядро Linux архитектурно представляет собой единоемонолитное ядро, но оно состоит из отдельных двоичных файлов (загружаемых компонентов) и разрабатывается в нескольких распределенных репозиториях.
У монолитной кодовой базы есть как преимущества, так и недостатки по сравнению с распределенной кодовой базой. [2] [3] Проще говоря, монолитная кодовая база упрощает интеграцию - «изменение различных компонентов или рефакторинг кода между компонентами может выполняться легко и атомарно» - и позволяет работать со всей кодовой базой, но требует большего репозитория и упрощает ввести крупномасштабный технический долг . [ сомнительно ] Отдельная база кода или распределенная база кода делает отдельные репозитории меньше и более управляемыми, обеспечивая в то же время разделение между компонентами, но также требует интеграции между базами кода (или с основным репозиторием) и усложняет внесение изменений, охватывающих несколько кодовые базы. [4]
С точки зрения стандартов, ссылка на несколько баз кода как на «отдельные» означает, что существуют независимые реализации без общего исходного кода и что исторически эти реализации не развивались из общего проекта. Это может быть способ продемонстрировать совместимость путем демонстрации двух независимых частей программного обеспечения, реализующих данный стандарт. [ сомнительно ]
Примеры
Некоторые особенно большие кодовые базы включают:
- Google : монолитный, 1 миллиард файлов, 9 миллионов файлов исходного кода, 2 миллиарда строк исходного кода, всего 35 миллионов коммитов, общий размер 86 ТБ (январь 2015 г.) [5]
- Facebook : монолитный, 8 ГБ (репо 54 ГБ, включая историю, 2014 г.) [6] сотни тысяч файлов (2014 г.) [3]
- Ядро Linux : распределено [7], более 15 миллионов строк кода (по состоянию на 2013 г.[Обновить] и версия ядра 3.10)
Смотрите также
Рекомендации
- ^ «Краткая история Git» . git-scm.com . Проверено 21 октября 2014 года .
- ^ Дж. Дэвид Моргенталер; Миша Гриднев; Ралука Сочук и Санджай Бхансали (2012). «В поисках увеличения долга: опыт управления техническим долгом в Google» . Материалы Третьего международного семинара по управлению техническим долгом . IEEE. С. 1–6, ( PDF ).CS1 maint: postscript ( ссылка )
- ^ а б «Масштабирование Mercurial в Facebook» . Код Facebook . 2014-01-07 . Проверено 29 апреля 2016 года .
- ^ «Git - Распределенные рабочие процессы» . git-scm.com . Проверено 29 апреля 2016 года .
- ^ Потвин, Рэйчел; Левенберг, Джош (24 июня 2016 г.). «Почему Google хранит миллиарды строк кода в одном репозитории» . Коммуникации ACM . 59 (7): 78–87. DOI : 10.1145 / 2854146 .
- ^ @feross (24 апреля 2014 г.). «Репозиторий Facebook git составляет 54 ГБ» (твит) . Проверено 29 апреля 2016 г. - через Twitter .
- ^ Спроулл, Ли; Мун, Чжэ Юн (2000-11-05). «Суть распределенной работы: кейс ядра Linux - Луна - Первый понедельник» . Первый понедельник . 5 (11) . Проверено 29 апреля 2016 года .