Improve software quality, lower costs, and get to market faster!
Don't risk your software product's success through haphazard integration and release management! Software Release Methodology shows you "best practices" for every stage of a successful product release: source code control, product build, testing and defect tracking, code integration, software change management, and release engineering. No matter how large (or small) your project or software development organization, you'll find carefully designed, practical solutions that enhance quality, reduce costs, and get you to market faster. Coverage includes:
Bays presents expert techniques that have never been published before-and shows how to design a coherent integration and release process that's dramatically more effective than what you're doing now. If you're responsible for a successful software release, Software Methodology may be the most important book you'll buy this year.
Click here for a sample chapter for this book: 0136365647.pdf
The Basics of Software Products. The Basic Software Development Process. The Role of Software Integration and Release Methodology.
Files and Directory Hierarchies. What is a Tool? What is a Source File? The Need for Source Code Control. The Need for File Merging.
Core Set of Source Code Control Actions. Source File Management Protocols. Branch Management. Large-Scale Development Strategies.
Development Environments. Tools. Product Building. The Source Tree. The Order of Operations in a Build. Build Strategies. The Runtime Environment. The Developer's Build Environment. Build Reproducibility. Build Automation.
High Level Methods of Defect Tracking. Basic Elements of Defect Tracking. The Basic Elements of a Defect Record. Additional Elements for Advanced Defect Tracking Systems. Additional Uses of the Defect Tracking System. Defect Metrics.
When Do You Not Need Modularized System Integration. Product Modularization. System Integration Overview. Parallelism in System Integration. Major Aspects of the System Integration Cycle. Build Qualification. Coordination for Centralized System Integration. Using Computer Applications as Change Control Systems.
Independent Elements of Change Control. Comprehensive Aspects of Code Control in the Development Environment. Change Control Boards.
Customer Release Classifications. Customer Support for the Release. Release Classifications and Release Numbering. Internal Release Numbers. Making Customer Release Number Decisions.
Media Types. Physical Distribution Media. Media Mastering. Network Media. Customer Distribution Options. Internal Distribution and Customer Deliverable Prototyping. Release Note Documentation.
What is a Release Methodology? Issues With Development Service Groups. Size and Complexity Considerations.
Release Management. Dictator Philosophy. Process Development and Deployment. Release Execution.
Software 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:
These 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.