Release engineering, frequently abbreviated as RE or as the
clipped compound
In linguistics, a clipped compound is a word produced from a compound word by reducing its parts while retaining the meaning of the original compound.Elisa Mattiello, "An Introduction to English Slang: A Description of Its Morphology, Semantics and ...
Releng, is a sub-discipline in
software engineering
Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
concerned with the
compilation, assembly, and delivery of
source code
In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer.
Since a computer, at base, only ...
into finished products or other software components. Associated with the
software release life cycle
The software release life cycle is the process of developing, testing, and distributing a software product (e.g., an operating system). It typically consists of several stages, such as pre-alpha, alpha, beta, and release candidate, before the fi ...
, it was said by Boris Debic of Google Inc. that release engineering is to software engineering as manufacturing is to an industrial process:
Release engineering is the difference between manufacturing software in small teams or startups and manufacturing software in an industrial way that is repeatable, gives predictable results,
and scales well. These industrial style practices not only contribute to the growth of a company but also are
key factors in enabling growth.
The importance of release engineering in enabling growth of a technology company has been repeatedly argued by John O'Duinn and Bram Adams.
[2013. Proceedings of the 1st International Workshop on Release Engineering. IEEE Press, Piscataway, NJ, USA.] While it is not the goal of release engineering to encumber software development with a process overlay, it is often seen as a sign of organizational and developmental maturity.
Modern release engineering is concerned with several aspects of software production:
; Identifiability: Being able to identify all of the source, tools, environment, and other components that make up a particular release.
; Reproducibility: The ability to integrate source, third party components, data, and deployment externals of a software system in order to guarantee operational stability.
; Consistency: The mission to provide a stable framework for development, deployment, audit and accountability for software components.
; Agility: The ongoing research into what are the repercussions of modern software engineering practices on the productivity in the software cycle, e.g.
continuous integration
Continuous integration (CI) is the practice of integrating source code changes frequently and ensuring that the integrated codebase is in a workable state.
Typically, developers Merge (version control), merge changes to an Branching (revisio ...
and
push on green initiatives.
Release engineering is often the integration hub for more complex software development teams, sitting at the cross between development, product management, quality assurance and other engineering efforts, also known as
DevOps
DevOps is the integration and automation of the software development and information technology operations. DevOps encompasses necessary tasks of software development and can lead to shortening development time and improving the development life ...
. Release engineering teams are often cast in the role of gatekeepers (e.g. at Facebook, Google, Microsoft) for certain critical products where their judgement forms a parallel line of responsibility and authority in relation to production releases (pushes).
Frequently, tracking of changes in a
configuration management
Configuration management (CM) is a management process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life. ...
system or
revision control
Version control (also known as revision control, source control, and source code management) is the software engineering practice of controlling, organizing, and tracking different versions in history of computer files; primarily source code ...
system is part of the domain of the release engineer. The responsibility for creating and applying a version numbering scheme into software—and tracking that number back to the specific source files to which it applies—often falls onto the release engineer. Producing or improving automation in software production is usually a goal of the release engineer. Gathering, tracking, and supplying all the tools that are required to develop and build a particular piece of software may be a release engineering task, in order to reliably reproduce or maintain software years after its initial release to customers.
While most software engineers, or software developers, do many or all of the above as a course of their work, in larger organizations the specialty of the release engineer can be applied to coordinate disparate source trees, projects, teams, and components. This frees the developers to implement features in the software and also frees the
quality assurance
Quality assurance (QA) is the term used in both manufacturing and service industries to describe the systematic efforts taken to assure that the product(s) delivered to customer(s) meet with the contractual and other agreed upon performance, design ...
engineers to more broadly and deeply test the produced software.
The release engineer may provide software, services, or both to software engineering and software quality assurance teams. The software provided may build tools, assembly, or other reorganization scripts which take compilation output and place them into a pre-defined tree structure, and even to the authoring and creation of
installers for use by test teams or by the ultimate consumer of the software. The services provided may include
software build
A software build is the process of converting source code files into standalone artifact (software development), software artifact(s) that can be run on a computer, or the result of doing so.
In software production, builds optimize software for pe ...
(compilation) automation,
automated test integration, results reporting, and production of or preparation for software delivery systems—e.g., in the form of electronic media (CDs, DVDs) or electronic software distribution mechanisms.
Related disciplines
*
Application release automation
Application-release automation (ARA) refers to the process of packaging and deploying an application or update of an application from development, across various environments, and ultimately to production. ARA solutions must combine the capabilit ...
*
Application lifecycle management
Application lifecycle management (ALM) is the product lifecycle management (governance, development, and maintenance) of computer programs. It encompasses requirements management, software architecture, computer programming, software testing, ...
*
Build automation
Build automation is the practice of building software systems in a relatively unattended fashion. The build is configured to run with minimized or no software developer interaction and without using a developer's personal computer. Build automati ...
*
Continuous integration
Continuous integration (CI) is the practice of integrating source code changes frequently and ensuring that the integrated codebase is in a workable state.
Typically, developers Merge (version control), merge changes to an Branching (revisio ...
*
Change management
Change management (CM) is a discipline that focuses on managing changes within an organization. Change management involves implementing approaches to prepare and support individuals, teams, and leaders in making organizational change. Change mana ...
*Packaging & Deployment
*
Porting
In software engineering, porting is the process of adapting software for the purpose of achieving some form of execution in a computing environment that is different from the one that a given program (meant for such execution) was originally desig ...
-
Product Line Engineering includes porting of a software product from one platform to other.
*
Release management
Release management is the process of managing, planning, scheduling and controlling a software build through different stages and environments; it includes testing and deploying software releases.
Relationship with processes
Organizations that ...
*
Software configuration management
Software configuration management (SCM), a.k.a.
software change and configuration management (SCCM), is the software engineering practice of tracking and controlling changes to a software system; part of the larger cross-disciplinary field of ...
- Although release engineering is sometimes considered part of Software Configuration Management, the latter, being a tool or a process used by the Release Engineer, is actually more of a subset of the roles and responsibilities of the typical Release Engineer.
*
Software deployment
Software deployment is all of the activities that make a software system available for use.
Deployment can involve activities on the producer (software developer) side or on the consumer ( user) side or both. Deployment to consumers is a hard t ...
*
Software release life cycle
The software release life cycle is the process of developing, testing, and distributing a software product (e.g., an operating system). It typically consists of several stages, such as pre-alpha, alpha, beta, and release candidate, before the fi ...
*
Software versioning
Software versioning is the process of assigning either unique ''version names'' or unique ''version numbers'' to unique states of computer software. Within a given version number category (e.g., major or minor), these numbers are generally assig ...
References
Further reading
* "Software Release Methodology" by Michael E. Bays; .
* "Software Configuration Management" by H. Ronald Berlack; .
* "Design of a Methodology to Support Software Release Decisions" by H. Sassenburg; .
* "Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation" by Jez Humble, David Farley;
{{Software engineering
Software release
Software project management