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