Software Release Methodology
PrefaceSoftware release methodology is a field that unifies a number of previously abstract endeavors that occur during software product development. By unifying these abstract endeavors, we provide a more efficient, well-understood path from development to product release. The field focuses on the release activity as the driving force behind all development endeavors.Why focus on release? It is my observation that for the majority of software product development efforts, time to market is everything. This is where a company's ability to execute on software releases becomes critical. Successfully balancing a new product's performance and feature set against its release date is an important capability in our industry.Furthermore, additional goals such as quality, reliability, and performance take second place when compared with time to market. Although this seems to contradict the market pundits' demands for unimaginable strides in quality and functionality, it is an unfortunate reality to those faced with the development of successful products in today's industry. Companies rarely have the luxury to get to market on time and successfully implement all these secondary goals in their first release. If a company focuses on these secondary goals as its first priority, it risks not getting to market in time. If it doesn't, the result is that even though the company has a high-quality, technically innovative, reliable product, a more timely competitor has released an adequate solution first, and the market has become accustomed to the earlier product. The effort required to unseat an established competitor and capture an already dominated market is far greater than that needed to release the first acceptable solution and then maintain that initial success.It is indeed rare to capture a market with only the initial release of a product. Release is an iterative, long-term game that must be played in an optimal, organized manner.  In support of this time-to-market imperative, software release methodology endeavors to provide a reasonable framework for the development of that first and defining release that captures the market, as well as the future releases that secure a product's long term success.In this book, software release methodology is defined in a commonly applicable format. Because of time-to-market pressure, development teams no longer have the time to continually reinvent the elements of software release. How to organize source control systems? How to track defects? How to know when to release? The answers to these simple questions can take years for a product team to determine, as the answers can be different for each product, and even for each individual product release. The elements that make up software release methodology are as follows:Source code controlBuildsDefect trackingSystem integrationRelease classifications and numberingRelease distributionRelease servicesRelease managementThese elements are defined so that their roles, responsibilities, and relationships to the release objectives are well understood. These definitions provide a template that can be customized and localized to suit the specific needs of an individual development effort. Most importantly, the development effort will not need to reinvent them from scratch with every new project that is undertaken.It is my hope that the introduction and definition of this field will aid in efforts to improve and optimize the software development process as a whole.