Непрерывная интеграция

Непрерывная интеграция
Разработка программного обеспечения
Процесс разработки ПО
Шаги процесса

Анализ • Проектирование • Программирование • Документирование • Тестирование

Модели

Итеративная • Спиральная • Каскадная • V-Model • Dual Vee Model

Методологии

Agile (XP, Lean, Scrum, FDD и др.) • Cleanroom • OpenUP • RAD • RUP • MSF • DSDM • TDD

Сопутствующие дисциплины

Конфигурационное управление • Управление проектами • Управление требованиями

Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий.

Непрерывная интеграция является одним из основных приёмов экстремального программирования.

Содержание

Требования к проекту

  • Исходные коды и все, что необходимо для сборки и тестирования проекта, хранится в репозитории системы управления версиями;
  • операции копирования из репозитория, сборки и тестирования всего проекта автоматизированы и легко вызываются из внешней программы.

Организация

На выделенном сервере организуется служба, в задачи которой входят:

  • получение исходного кода из репозитория;
  • сборка проекта;
  • выполнение тестов;
  • развёртывание готового проекта;
  • отправка отчетов.

Локальная сборка может осуществляться:

  • по внешнему запросу,
  • по расписанию,
  • по факту обновления репозитория и по другим критериям.

Сборка по расписанию

В случае сборки по расписанию (англ. daily build — рус. ежедневная сборка), они, как правило, проводятся каждой ночью в автоматическом режиме — ночные сборки (чтобы к началу рабочего дня были готовы результаты тестирования). Для различения дополнительно вводится система нумерации сборок — обычно, каждая сборка нумеруется натуральным числом, которое увеличивается с каждой новой сборкой. Исходные тексты и другие исходные данные при взятии их из репозитория системы контроля версий помечаются номером сборки. Благодаря этому, точно такая же сборка может быть точно воспроизведена в будущем — достаточно взять исходные данные по нужной метке и запустить процесс снова. Это даёт возможность повторно выпускать даже очень старые версии программы с небольшими исправлениями.

Преимущества

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

Недостатки

  • затраты на поддержку работы непрерывной интеграции;
  • потенциальная необходимость в выделенном сервере под нужды непрерывной интеграции;
  • немедленный эффект от неполного или неработающего кода отучает разработчиков от выполнения периодических резервных включений кода в репозиторий.
    • в случае использования системы управления версиями исходного кода с поддержкой ветвления, эта проблема может решаться созданием отдельной «ветки» (англ. branch) проекта для внесения крупных изменений (код, разработка которого до работоспособного варианта займет несколько дней, но желательно более частое резервное копирование в репозиторий). По окончании разработки и индивидуального тестирования такой ветки, она может быть объединена (англ. merge) с основным кодом или «стволом» (англ. trunk) проекта.

Средства непрерывной интеграции

Примечания

Литература

  • Поль М. Дюваль, Стивен М. Матиас III, Эндрю Гловер Непрерывная интеграция: улучшение качества программного обеспечения и снижение риска = Continuous Integration: Improving Software Quality and Reducing Risk (The Addison-Wesley Signature Series). — Вильямс, 2008. — 2000 экз. — ISBN 978-5-8459-1408-8, 0-321-33638-0

Ссылки



Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "Непрерывная интеграция" в других словарях:

  • Экстремальное программирование — Разработка программного обеспечения Процесс разработки ПО Шаги процесса Анализ • Проектирование • Программирование • Докумен …   Википедия

  • Автоматизация сборки (разработка ПО) — Автоматизация сборки  этап написания скриптов или автоматизация широкого спектра задач применительно к ПО, применяемому разработчиками в их повседневной деятельности, включая такие действия, как: Компиляция исходного кода в бинарный код… …   Википедия

  • Автоматизация сборки — Для улучшения этой статьи желательно?: Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное. Переработать оформление в соответствии с правилами написания статей …   Википедия

  • TeamCity — TeamCity …   Википедия

  • Hudson — Hudson …   Википедия

  • Bonsai CVS code management system — Bonsai Тип Непрерывная интеграция Разработчик Mozilla Corporation, Mozilla Foundation Написана на Perl[1] Операционная система Кроссплатформенное Состояние …   Википедия

  • Регрессионное тестирование — Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей. Регрессионное тестирование (англ. regression testing, от лат.  …   Википедия

  • Альфа-тестирование — (англ. alpha testing)  использование незавершённой (альфа) версии продукта (как правило, программного или аппаратного обеспечения), в которой реализована не вся функциональность, запланированная для данной версии продукта, штатными… …   Википедия

  • Code review — Инспекция кода или рецензия кода или ревизия кода от (англ. Code review или англ. Code inspection)  систематическая проверка исходного кода программы с целью обнаружения и исправления ошибок, которые остались незамеченными в… …   Википедия

  • Автоматизированное тестирование — программного обеспечения  часть процесса тестирования на этапе контроля качества в процессе разработки программного обеспечения. Оно использует программные средства для выполнения тестов и проверки результатов выполнения, что помогает… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»