Written by a top Microsoft consultant, this book will become the standard guide to the build process in the software engineering lifecyle
° The build process is perhaps the least understood and least documented part of the software engineering process
° One thing that Microsoft does very well is build software, and this book is written by one of the top Microsoft experts on the build process
° Foreword by bestselling author Jeffrey Richter
"Wow, what can I say? Chapter 4, 'The Build Lab and Personnel,' by itself is enough justification to purchase the book! Vince is obviously a 'Dirty Finger Nails' build meister and there is a lot we can all learn from how he got them dirty! There are so many gems of wisdom throughout this book it's hard to know where to start describing them! It starts where SCM should start, at the end, and works its way forward. This book is a perfect complement to the 'Follow the Files' approach to SCM that I espouse. I will recommend that every software lead and software configuration management person I work with be required to read this book!"
Bob Ventimiglia, autonomic logistics software configuration manager, Lockheed Martin Aeronautics
"The Build Master contains some truly new information; most of the chapters discuss points that many people in the industry don't have a full understanding of and need to know. It's written in a way that is easy to read and will help a reader fill holes in their vision regarding software build management. I especially liked Vince's use of Microsoft stories to make his points throughout the book. I will purchase the book and make certain chapters mandatory reading for my build manager consultants."
Steve Konieczka, SCM consultant
"Vince does a great job of providing the details of an actual working build process. It can be very useful for those who must tackle this task within their own organization. Also the 'Microsoft Notes' found throughout the book provide a very keen insight into the workings of Microsoft. This alone is worth purchasing this book."
Mario E. Moreira, author of Software Configuration Management Implementation Roadmap and columnist at CM Crossroads
"Software configuration management professionals will find this book presents practical ideas for managing code throughout the software development and deployment lifecycles. Drawing on lessons learned, the author provides real-world examples and solutions to help you avoid the traps and pitfalls common in today's environments that require advanced and elegant software controls."
Sean W. Sides, senior technical configuration manager, Great-West Healthcare Information Systems
"If you think compiling your application is a build process, then this book is for you. Vince gives us a real look at the build process. With his extensive experience in the area at Microsoft, a reader will get a look in at the Microsoft machine and also how a mature build process should work. This is a must read for anyone doing serious software development."
Jon Box, Microsoft regional director, ProTech Systems Group
"Did you ever wonder how Microsoft manages to ship increasingly complex software? In The Build Master, specialist Vince Maraia provides an insider's look."
Bernard Vander Beken, software developer, jawn.net
"This book offers an interesting look into how Microsoft manages internal development of large projects and provides excellent insight into the kinds of build/SCM things you can do for your large-scale projects."
Lance Johnston, vice president of Software Development, SCM Labs, Inc.
"The Build Master provides an interesting insight into how large software systems are built at Microsoft covering the set up of their build labs and the current and future tools used. The sections on security, globalization, and versioning were quite helpful as these areas tend to be overlooked."
Chris Brown, ThoughtWorks, consultant
"The Build Master is a great read. Managing builds is crucial to the profitable delivery of high-quality software. Until now, the build process has been one of the least-understood stages of the entire development lifecycle. This book helps you implement a smoother, faster, more effective build process and use it to deliver better software."
Robert J. Shimonski, Networking and Security Expert, http://www.rsnetworks.net
The first best-practice, start-to-finish guide for the software build process
Managing builds is crucial to the profitable delivery of high-quality software; however, the build process has been one of the least-understood stages of the entire development lifecycle. Now, one of Microsoft's leading software build experts introduces step-by-step best practices for maximizing the reliability, effectiveness, timeliness, quality, and security of every build you create.
Drawing on his extensive experience working with Microsoft's enterprise and development customers, Vincent Maraia covers all facets of the build processintroducing techniques that will work on any platform, on projects of any size. Maraia places software builds in context, showing how they integrate with configuration management, setup, and even customer support. Coverage includes
How Microsoft manages builds: process flows, check-in windows, reporting status, and more
Understanding developer and project builds, pre- and post-build steps, clean builds, incremental builds, continuous integration builds, and more
Choosing the right build tools for your projects
Configuring source trees and establishing your build environmentintroducing Virtual Build Labs (VBLs)
Planning builds for multiple-site development projects or teams
Determining what should (and shouldn't) be kept under source control
Managing versioning, including build, file, and .NET assembly versions
Using automation as effectively as possible
Securing builds: a four layer approachphysical, tracking sources, binary/release bits assurance, and beyond
Builds powerfully impact every software professional: developers, architects, managers, project leaders, configuration specialists, testers, and release managers. Whatever your role, this book will help you implement a smoother, faster, more effective build processand use it to deliver better software.
© Copyright Pearson Education. All rights reserved.
1. Defining a Build.
2. Source Tree Configuration for Multiple Sites and Parallel (Multi-Version) Development Work.
3. Daily, Not Nightly, Builds.
4. The Build Lab and Personnel.
5. Build Tools and Technologies.
6. SNAP Builds---aka Integration Builds.
7. The Build Environment.
9. Build Security.
10. Building Managed Code.
11. International Builds.
12. Build Verification Tests and Smoke Tests.
13. Building Setup.
14. Ship It!
15. Customer Service and Support.
16. Managing Hotfixes and Service Packs.
17. 7 Suggestions to Change Your Corporate or Group Culture.
18. Future Build Tools from Microsoft.
Appendix A. Embedded Builds.
Appendix B. Extreme Programming.
Appendix C. Testing Guide.
Appendix D. Debug Symbols.
This book contains the knowledge I have gained while working on these various projects. Furthermore, I have built on the experiences of the people who were there before me and the lessons they taught me. I also gathered a lot of tips from people who are currently in the product team.
Many things can and have been said about Microsoft, but there is one thing most people will agree on: Microsoft has been one of the more successful companies when it comes to shipping software. Sure, we might be notorious for missing our ship date, but despite this fact, Microsoft cranks out hundreds of released software products per yearthousands if you include hotfixes via Windows Update. That is why we have all the processes mentioned in this book: to minimize the slippage and optimize the development process.
I tried to capture the best new and classic processes that we have developed throughout the years so that I could pass them on to you in The Build Master: Microsoft's Software Configuration Management Best Practices.
Of course, I am being facetious and picky about the semantics here because SCM is a widely used industry term. It just isn't used a lot at Microsoft. The only explanation I can think of is that the processes of SCM at Microsoft are broken down to specific tasks, and SCM is too broad a term to be used to describe these processes on a daily basis. So, despite the lack of the use of the term SCM at Microsoft, that is what this book is focused on since that is what we live and breathe every day.
Configuration management is the practice of handling changes systematically so that a system can maintain its integrity over time. Another name for it is change control. It includes techniques for evaluating proposed changes, tracking changes, and keeping copies of the system as it existed at various points in time.
A more detailed description might be from Stephen A. MacKay. He quotes several sources, but they all seem to be saying the same thing:
The most widely used definition of software configuration management (SCM) comes from the standards community IEEE87, IEEE90a, IEEE90b, Buck93. Configuration management (CM) is a discipline that oversees the entire life cycle of a software product or family of related products. Specifically, CM requires identification of the components to be controlled (configuration items) and the structure of the product, control over changes to the items (including documentation), accurate and complete record keeping, and a mechanism to audit or verify any actions. This definition is not complete. Dart Dart92 suggests that the definition should be broadened to include manufacturing issues (optimally managing the construction of the product), process management (ensuring adherence to the defined processes), and team work (supporting and controlling the efforts of multiple developers). Tichy Tich88 provides a definition that is popular in the academic and research communities: Software configuration management is a discipline whose goal is to control changes to large software system families, through the functions of component identification, change tracking, version selection and baselining, software manufacture, and managing simultaneous updates (teamwork).
In short, at Microsoft, SCM is broken into three groups: source control, build, and deployment or release. There could arguably be a fourth group, sustained engineeringhotfixes and service packsbut this separate distinction seems to show up only on the big teams such as Windows. The jobs at Microsoft that have the responsibilities described previously are builder, build management, or release program manager.
The really abbreviated term for SCM at Microsoft is builds. This is probably because when code is taken from developers and turned into a product that you can deliver to a customer, it is usually the build team that owns all the steps involved or helps manage the process.
Having a good build process seems to be a lost art even in some groups at Microsoft. For example, when I recently spoke with one development team, I heard them talk about trying a distributed build system over a group of build machines (also known as build farms). This idea was tried several years agoand tried a few times since the originalbut has proven to be unsuccessful for various reasons that are covered in Chapter 5, "Build Tools and Technologies." Maybe there have been recent improvements in tools, or the product has been broken into smaller packages of code (componentized) that will make this distributed build process more likely to succeed today than it did years ago. If so, this might justify revisiting the idea even though it was abandoned the last time someone looked at it. But if no changes have been made that would support moving to a distributed build process, trying to pursue this Holy Grail would be a waste of everyone's clock cycles.
It is impossible to talk about software builds without also addressing some of the surrounding software development areas around this process, such as source tree configuration and the deployment of a product. Therefore, I want to give the full story of setting up your development source trees, building your code, deploying your product, and supporting your customers with fixes by using examples of how we do it at Microsoft.
Information Technology (IT) Managers
If you develop or deploy software to departments within your company or manage the servers that host your developer's source code trees, this book will help you succeed in being more efficient and robust.
Software Development and Testing Managers
Because you are the one who implements and uses these processes, it would be best to read the explanations behind the processes firsthand. This will help you drive the adoption of these processes within your group or company.
Build Teams and Build Managers
Being a builder at heart and spending many years in build labs, I wrote this book as a collection of what I have learned. When software is shipped, everyone seems to have specific tasks or jobs: Developers write the code, testers test the code, program or product managers try to figure out what goes into the product, and executives sell it. So who makes sure that the flow of the product does not get interrupted? When there is a block or showstopper, who is the person who will jump through fire hoops to get things started again? It is the build or integration team, which I see as the "heart" of the product and everything else is the "soul." Because this large responsibility falls under the build team, and the most successful groups have a very solid build team, the topics in this book will help you keep the "flow" going.
Technical Project and Product Managers
If you want to be able to accurately predict when your product will be ready for release and learn the details of how a requested application feature goes from cradle to grave, this book will provide an overview of the whole process. You can work with the developers and testers on how to merge these recommendations into your current process and understand the language or lingo.
Anyone Interested in a Microsoft Case Study
Although this book is not intended to be a case study in the traditional sense, such as presenting the steps that Microsoft uses to build software and then analyze them to death, you can view this book as an example of a successful software company and the lessons it has learned over the years, with a lot of insight into why Microsoft chose a particular path.
Although some examples in this book concern Microsoft tools and technologies, I have tried to write this book in a tool-agnostic way. In other words, regardless of the tools or platforms that you develop on, you will still be able to use these processes to ship your software effectively. By "ship your software," I mean any way that software can be delivered to your customers, whether via the Internet, disc media, internal server releases, Web services and applications, or out of the box.
Contents at a Glance
Because it seems that the build team members tend to live in the source code trees and are usually the administrators of the trees, I spend a chapter talking about the best way to configure your sources.
This is the cornerstone of this book. Nine chapters cover, in detail, how to build your product. For a more in-depth overview, please read the book's Introduction.
This is another area that tends to spill over to the build team's responsibilities. This topic is covered in three chapters.
This tends to be the first area where symptoms of a failing project start to show up. Most notably, everyone on the project team is in reactive mode instead of working on new features.
If you are interested in the new tools that Microsoft will be releasing with the future release of Visual Studio, I touch on how to utilize those tools using the processes described in this book.
I recently completed a build architecture review for a large Microsoft customer. This customer already had a good build process and didn't think it needed much improvement. At the end of my onsite, week-long engagement at the customer's development headquarters, I suggested that this customer adopt the principles that I explain in more detail in this book. He agreed with me on most points but surprised me when he said, "I really appreciate all the information and suggestions that you provided. In order for you to have come up with all of these recommendations, you must have suffered through a lot of pain in the past." This statement blew me away. I never really viewed all of this experience working on builds at Microsoft for the past 15 years as painful, but just lessons we learned by "try and try again until we get it right."
Although some initial investment in resources will be required to reboot your processes if you decide to implement all the processes and suggestions in this book, you will save 3 to 5 years of the "pain" of learning all of this from the school of hard knocks. At the very least, you will be enlightened on how software is shipped at Microsoft. And as I always ask my customers, if you know of any other better processes than what I prescribe, please let me know. I am always open to improvement and would love to hear your suggestions.
What do I mean by "getting stuck"?
At the end of the day, all these issues, which you could avoid, will end up costing your company lots of money because you will be patching or hacking whatever process you currently have that does not seem to be getting the job done.
For more information on how Microsoft can help provide custom solutions to any software issue, please look at the Microsoft Partner Advantage site at http://www.microsoft.com/services/microsoftservices/default.mspx.
For other books from Addison-Wesley, go to http://www.awprofessional.com.
Download the Index
file related to this title.