stringtranslate.com

Кодовая база

В разработке программного обеспечения база кода (или база кода ) — это набор исходного кода, используемый для создания конкретной программной системы , приложения или программного компонента . Обычно база кода включает только системные файлы с исходным кодом , написанные человеком ; таким образом, база кода обычно не включает файлы исходного кода, созданные инструментами (сгенерированные файлы), или файлы двоичных библиотек (объектные файлы), поскольку они могут быть созданы из исходного кода, написанного человеком. Однако обычно он включает файлы конфигурации и свойств, поскольку они представляют собой данные, необходимые для сборки.

База кода обычно хранится в репозитории системы контроля версий . Репозиторий исходного кода — это место, где хранятся большие объемы исходного кода, как публично, так и конфиденциально. Репозитории исходного кода в основном используются для резервного копирования и управления версиями, а также в проектах с участием нескольких разработчиков для обработки различных версий исходного кода и оказания помощи в разрешении конфликтов, возникающих из-за того, что разработчики отправляют перекрывающиеся изменения.

Subversion , Git и Mercurial — примеры популярных инструментов, используемых для управления этим рабочим процессом, которые часто встречаются в проектах с открытым исходным кодом.

Для небольших проектов его код может храниться как неуправляемый набор файлов (даже ядро ​​Linux многие годы поддерживалось как набор файлов). [1]

Раздельные и монолитные кодовые базы

Несколько проектов могут иметь отдельные, отдельные базы кода или могут иметь единую, общую илимонолитная кодовая база .Это особенно актуально для связанных проектов, например, разработанных в рамках одной компании. Более подробно, монолитная кодовая база обычно предполагает наличие единого репозитория (весь код в одном месте) и часто общей системы сборки или общих библиотек. Будет ли кодовая база общей или разделенной, не зависит от архитектуры системы и фактических результатов сборки; таким образом, монолитная кодовая база, связанная с фактической разработкой, не влечет за собоймонолитную систему, связанную с архитектурой программного обеспечения, или один монолитный двоичный файл. В результате монолитная кодовая база может и (для больших кодовых баз) часто будет состоять из отдельных компонентов, а не содержать только одну систему или один двоичный файл; Распределенная кодовая база (с несколькими компонентами) может использоваться для создания единой монолитной системы или даже одного двоичного файла. Например, ядро ​​Linux архитектурно представляет собой единоемонолитное ядро, но оно состоит из отдельных двоичных файлов (загружаемых компонентов) и разрабатывается в нескольких распределенных репозиториях.

У монолитной кодовой базы есть как преимущества, так и недостатки по сравнению с распределенной кодовой базой. [2] [3] Проще говоря, монолитная кодовая база упрощает интеграцию — «изменения в различных компонентах или рефакторинг кода между компонентами можно выполнять легко и атомарно» — и позволяет выполнять операции по всей кодовой базе, но требует большего репозитория и упрощает ввести широкомасштабный технический долг . [ сомнительно ] Отдельная кодовая база или распределенная кодовая база делают отдельные репозитории меньшими и более управляемыми, одновременно обеспечивая разделение между компонентами, но это также требует интеграции между кодовыми базами (или с основным репозиторием) и усложняет изменения, охватывающие несколько кодовые базы. [4]

С точки зрения стандартов, называние нескольких баз кода «отдельными» означает, что существуют независимые реализации без общего исходного кода и что исторически эти реализации не возникли из общего проекта. Это может быть способом демонстрации совместимости путем демонстрации двух независимых программных продуктов, реализующих данный стандарт. [ сомнительно ]

Примеры

Некоторые особенно большие базы кода включают:

Смотрите также

Рекомендации

  1. ^ «Краткая история Git». git-scm.com . Проверено 21 октября 2014 г.
  2. ^ Дж. Дэвид Моргенталер; Миша Гриднев; Ралука Саучук и Санджай Бхансали (2012). «Поиск накопительного долга: опыт управления техническим долгом в Google». Материалы третьего международного семинара по управлению техническим долгом . IEEE. стр. 1–6. дои : 10.1109/MTD.2012.6225994.
  3. ^ ab «Масштабирование Mercurial в Facebook». Код Фейсбука . 07.01.2014 . Проверено 29 апреля 2016 г.
  4. ^ «Git — Распределенные рабочие процессы» . git-scm.com . Проверено 29 апреля 2016 г.
  5. ^ Потвин, Рэйчел; Левенберг, Джош (24 июня 2016 г.). «Почему Google хранит миллиарды строк кода в одном репозитории». Коммуникации АКМ . 59 (7): 78–87. дои : 10.1145/2854146 .
  6. ^ @feross (24 апреля 2014 г.). «Репозиторий Git в Facebook занимает 54 ГБ» (Твит) . Проверено 29 апреля 2016 г. - через Twitter .
  7. ^ Спроролл, Ли; Мун, Джэ Юн (05.11.2000). «Сущность распределенной работы: Случай ядра Linux – Луна – Первый понедельник». Первый понедельник . 5 (11) . Проверено 29 апреля 2016 г.