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