Проектирование релизов , часто сокращенно называемое RE или сокращенное соединение Releng , представляет собой раздел инженерии программного обеспечения , занимающийся компиляцией , сборкой и доставкой исходного кода в готовые продукты или другие программные компоненты. Что касается жизненного цикла выпуска программного обеспечения , Борис Дебич из Google Inc. [1] [2] сказал, что проектирование выпуска относится к разработке программного обеспечения так же, как производство относится к промышленному процессу:
Проектирование выпуска — это разница между производством программного обеспечения в небольших группах или стартапах и промышленным производством программного обеспечения, которое воспроизводится, дает предсказуемые результаты и хорошо масштабируется. Эти методы промышленного стиля не только способствуют росту компании, но и являются ключевыми факторами, обеспечивающими рост.
Важность разработки релизов для обеспечения роста технологической компании неоднократно подчеркивалась Джоном О'Дуинном [3] и Брэмом Адамсом. [4] Хотя целью разработки релизов не является обременение разработки программного обеспечения наложением процессов, это часто рассматривается как признак организационной зрелости и зрелости развития.
Современная разработка выпусков связана с несколькими аспектами производства программного обеспечения:
Проектирование релизов часто является центром интеграции для более сложных команд разработчиков программного обеспечения, находящихся на стыке разработки, управления продуктами, обеспечения качества и других инженерных усилий, также известных как DevOps . Команды разработчиков релизов часто играют роль контролеров (например, в Facebook, Google, Microsoft) для определенных критически важных продуктов, где их суждения формируют параллельную линию ответственности и полномочий в отношении производственных релизов (push).
Зачастую отслеживание изменений в системе управления конфигурацией или системе контроля версий входит в сферу компетенции инженера по выпуску. Ответственность за создание и применение схемы нумерации версий в программном обеспечении, а также отслеживание этого номера до конкретных исходных файлов, к которым он применяется, часто ложится на инженера по выпуску. Создание или улучшение автоматизации производства программного обеспечения обычно является целью инженера по выпуску. Сбор, отслеживание и предоставление всех инструментов, необходимых для разработки и создания конкретной части программного обеспечения, может быть задачей разработки выпуска, чтобы надежно воспроизводить или поддерживать программное обеспечение спустя годы после его первоначального выпуска для клиентов.
В то время как большинство инженеров-программистов или разработчиков программного обеспечения выполняют многие или все вышеперечисленные действия в ходе своей работы, в более крупных организациях специальность инженера по выпуску может применяться для координации разрозненных деревьев исходного кода, проектов, команд и компонентов. Это освобождает разработчиков от реализации функций в программном обеспечении, а также освобождает инженеров по обеспечению качества от более широкого и глубокого тестирования создаваемого программного обеспечения.
Инженер по выпуску может предоставлять программное обеспечение, услуги или и то, и другое группам разработки программного обеспечения и группам обеспечения качества программного обеспечения. Поставляемое программное обеспечение может создавать инструменты, сборки или другие сценарии реорганизации, которые принимают результаты компиляции и помещают их в заранее определенную древовидную структуру, и даже могут использоваться для разработки и создания установщиков для использования группами тестирования или конечным потребителем программного обеспечения. . Предоставляемые услуги могут включать автоматизацию сборки (компиляции) программного обеспечения, автоматизированную интеграцию тестов, отчетность о результатах, а также производство или подготовку систем доставки программного обеспечения — например, в форме электронных носителей (CD, DVD) или механизмов электронного распространения программного обеспечения.