As software systems, development processes, and resources become more distributed, they invariably become more complex. Further, software products used to be in an ongoing cycle of development, testing, and releases. Moreover different platforms add more complexity to this. Hence it is quite understandable that there are many different dynamic pieces that must fit together seamlessly to ensure the success and long-term value of a product or project.
Release Process means a set of well defined steps which MUST be followed before giving any new project version to end users for use. These steps involves various components like:
- Planning of features/enhancements/support/bugs we are covering in this release
- Versioning of releases
- Time line for release - release date for testing and for users
- Repository structure like branching in repository maintain the changes
- Trace-ability matrix to track the quality
- A good build system to ensure the quality deployments
- Test cases and procedures
- UAT management
- Release to production environment
- Procedures to revert the deployment in case of any failure
- Information to client and training wherever required
Release process is the core of a stable system. If engineering team is heart of the project, release process is like heart beat of the project. Stability of every release is directly proportional to the strength and quality of release process and how good are we adhering to it. Ideally Release process is so important that it is being kept at first step even before building the software. Because it is the prorces which will ensure a smooth and quality delivery to the end users. Software team responsibility is not only to build a great software, but also to deliver it to users on time as expected and with desired level of quality.