What is a Software Release?
Software release(s) is/are the change(s) to the software that is built, tested, verified, and deployed together.
Software Release Types:
- Major Release means a new software release that adds one or more features, module, functionality, a UI/UX revamp, which leads to improvements in product performance, efficiency, and/or usability.
- Minor release means a new software release that adds more functionality to existing features, enhances functionality, upgrades the databases, or changes the back-end. This kind of release is always an upgrade of a major release.
- Hotfix, Patch, or Point is code change that solves a bug or more in the current software, usually not planned for the case of a hotfix or a scheduled timeline for patches.
Release Version Criteria
Each release going to production should have a version number.
Most organizations follow an x.y.z numbering pattern for Major.Minor.Patch. For a new release, the respective number is incremented, so that, for example, a minor release number is formed by incrementing the previous minor release number, so release 1.2.0 follows next after release 1.1.0.
Release Management Overview
- The process of planning, scheduling, and monitoring the progress of the build, through its stages (Dev, Test, and production).
- Managing the deployment to the target infrastructure and resources allocation
- Customer announcements deployment announcement
- Involves controlling the software repositories and using best practices for the branching model and audits/review of the changes
- Release management ensures that production releases have a positive impact on the business performance of the software while protecting the integrity of existing services/features.
Benefits of Release Management
- The release management process has a positive impact on organizations, by increasing the number of successful releases. This process increases the probability of high-quality products by reduces the number of production defects
- Reduce risk, downtime, and failure, by having a well-designed rollback procedure
- implements a product life cycle with a high-quality standard
What Does Release Management Entail?
- Plan, Schedule, and coordinate with delivery teams, scrum masters or project managers to ensure having a planned and accurate release schedule.
- Ensure that each release follows correct versioning, and all the dependencies are clearly understood and followed the process -- release versioning criteria vary between organizations (ex: Major.Minor.Patch/Hotfix)--
- Coordinate and ensure the quality status for the release on each testing environment (Stagging, pre-production) and Stress/Performance test
- Ensure each release has met its acceptance criterion (deployment checklist), and any potential risks are known, understood from all parties (stakeholders) and have a mitigating plan
- Coordinate, ensure, and force applying the release processes and procedures.
- Key contributor for CICD and integrate it with the release process adopted in the organization
- The owner of the release note documentation and the release announcement with all stakeholders in and out of the organization
- Recommends teams for best practices of releasing, based on the product nature and the release full requirements to meet the business needs
- Participate as a key party in the projects plan, products prioritization, and releases a timeline
Release Management and Product Management
The release management role is part of Product Management, who own all the phases of the product life-cycle. The release manager role is to oversee the mechanics of release to ensure all parties are synced and aligned. The Release management role is more important and effective, when the company adopts a scaled agile methodology with cross-functional teams.