Release engineering
From Wikipedia, the free encyclopedia
Release engineering, frequently abbreviated as "releng", is a sub-discipline in software engineering concerned with the compilation, assembly, and delivery of source code into finished products or other software components. An associated term is software release life cycle.
Contents |
[edit] Release engineer
Frequently, tracking of changes in a configuration management system or revision control 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 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 be 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 (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.
[edit] Build and release cycle
An often overlooked task in the software development process is the need to get software from the hands of developers into the test organization. This software is usually called a "release" or "delivery" or, more informally, a "build" (noun, rather than verb). Group software development, however, generally implies the following questions:
- Who delivers all the pieces in a coordinated fashion?
- What, exactly, is in any particular build (differing it from a previous build, at varying stages of development)?
- What are the processes involved in reliably reproducing the software?
Large software projects, whether using agile software development or the waterfall model, rely on many and frequent iterations of the "build -> test -> debug -> code -> build" cycle before the software project is complete. Release engineering attempts to bring consistency, reproducibility, and verifiability to the build and release cycle.
[edit] Related Disciplines
- Software configuration management - 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 quality assurance
- Software engineering - Release engineering is considered a specialty of Software Engineering.
- Build automation
- Continuous integration
- Change Management
- Release Management
- Configuration Management
- Packaging & Deployment
- Porting - Product Line Engineering is the porting software product into one platform to other.
[edit] Related Books
- "Software Release Methodology" by Michael E. Bays; ISBN 0-13-636564-7.
- "Software Configuration Management" by H. Ronald Berlack; ISBN 0-471-53049-2.
- "Design of a Methodology to Support Software Release Decisions" by H. Sassenburg; ISBN 90-367-2424-4.