INDEX

A Berczuk, Stephen promotion modeling, 28 active BVTs, 142 P., Software release, 28 Ambrose, Stephen E., Configuration break/fix capabilities, 166 Crazy Horse and Management breaks, 6 Custer, 155 Patterns, 20 builds, 39 Analyze.exe, 172 Berra, Yoggi, 87 fines, 40 ANT (Another Neat binaries policy enforcement, 41 Tool), 60 security verification, 106 priorities, 39-40 Appleton, Brad, Software single worldwide, 129-130 bugs, resolving, 11 Configuration binary-generating tools, builds Management 57-59 breaks, 6, 39 Patterns, 20 NANT, 60 fines, 40 applications NMake, 59-60 policy enforcement, 41 build lab set up, 50 recommended tools, priorities, 39-40 testing guide, 234-235 62-64 defect, 6 Arend, Mark, 171 scripts, 57 defining, 1 assemblies Visual Studio, 60-61 centralized process, 3-4 managed code, 116 XML (Extensible Markup terminology, 4-8 versioning, 93-95 Language), 62 types, 1-2 assigned to fields, work item BinPlace tool, 148 lab, 4, 104-105. See also trackers, 10 biometrics, physical labs automated unit tests, security, 104 numbers, 89-90 XP (extreme bits, security verification, 106 product flow, 8 programming), 220 body builds, 20 projects, 14-16 branch release technique, release to servers, 14 B 176 shipping meeting, 11-13 backups, UPS (uninterrupt- branching, 19 software development, 9 ible power supply), 49 configurations, 30-31 solution files, 14 Ballmer, Steve, 186 TFSC (Team Foundation work item tracker fields, batch files Source Control), 9-11 environment set up, 76 27-28 tools. See binary makefile, 83-85 component, 29 generating tools The Beatles, 183 developer isolation, build verification tests. See Beck, Kent, 8, 219 28-29 BVTs Bennis, Warren G., label, 29 BVTs (build verification On Becoming a partial, 29-30 tests), 5, 36, 133-138 Leader, 75

243 244 Index

defining scope, 138-142 freezes, 19 overwriting, 96 states of existence, managed registration, 97 142-143 assemblies, 116 setup, 147 CLR (common computer languages, 57 C language runtime), configurations C++ with Managed 113-114 build lab hardware, 47-48 Extensions, creating defining, 111-112 applications, 50 managed code, 114 delay signing, 116-119 build environment, CABinet files, 147 execution process, 50-51 cameras, physical security, 114-115 104 solution files, 119-120 set up, 49 Canned Heat, 235 sources, 18 requirements, 48-49 card key access, physical symbols, 237-239 software set up, 49 security, 104 versioning, 173 SNAP builds, 68-70 Carter, Rob, 203 XP (extreme solutions, 61 cases, 167 programming), 221 source trees case studies, XP (extreme CodeView symbols, 237 terminology, 18-21 programming), command-line, Monad, TFSC (Team 225-226 211-213 Foundation Source catch-up merges, 27 command-line utilities Control), 24-33 central build processes, 1-2 Devenv.exe, 61 VSS (Visual Central Build Teams, 2-4 MSBuild.exe, 60 SourceSafe), 22-24 Central WAR, 11-13 VCBuild.exe, 60 continuous builds. See CE builds, system basics, common language runtime. SNAP builds 216-217 See CLR continuous integration change sets, 25 companies, culture, 183-185 builds, 6, 222 charts, quality, 6-7 adapting, 197-198 control process, tracking check-ins defining, 186-187 source code, 105-106 process, testing process executive leadership, Covey, Steven R., The Seven maintenance, 70 187-197 Habits of Highly Visual Studio Team, 13 leading by example, 198 Effective People, 55 cherry-pick merges, 27 NASA space shuttle CPR (critical problem clean builds, 5 disasters, 199-201 resolution), 167 clone release technique, competitive philosophies, Crazy Horse and Custer, 155 176-177 186 critical problem resolution CLR (common language components (CPR), 167 runtime), 111 branching, 29 crunch time, 155 delay signing, 116-117 copying before CSS (customer service and command problems, overwrite, 97 support), 163-164 117-118 copying on reboot, 97 goals, 165-166 security, 118-119 correct installation product team managed codes, 113-114 problems, 98-99 communications, CmdletProvider, 212 correct version install, 96 166-168 Cmdlets, 212 file versioning field, 93 culture, companies, 183-185 Codeline, 18 installation to proper adapting, 197-198 codes directory, 96 defining, 186-187 Index 245

executive leadership, VSTB (Visual Studio makefile, 83-85 187-197 Team Build), 209-211 setenv.cmd file, 82 leading by example, 198 VSTS (Visual Studio set up, 76-77 NASA space shuttle Team System), escalation engineer disasters, 199-201 206-208 (EE), 167 Cunningham, Ward, XP developer environments, 77 executives, company culture (extreme program- Developing International change, 187-188 ming), 219 Software, 235 escalating issues to appro- Customer Respect development priate executive, 194 Group, 168 product flow, 8 hire consulting firm, customer service and projects, 14-16 188-189 support. See CSS release to server, 14 involve as much as shipping meeting, 11-13 possible, 188 D software, 9 maintain integrity, daily builds, 36-38 solution files, 14 193-194 successful releases, 39 work item tracker fields, match company values, policy enforcement, 41 9-11 189-192 priorities of build teams, build labs, 4 publishing policies and breaks, 39-40 Devenuti, Rick, 166 processes, 194-197 DDK ( Driver devenv.cmd file, 77-79 understand financial Development Devenv.exe command-line impacts, 192 Kit), 148 utility, 61 Extensible Markup death march, 155 directories, environment Language (XML), 62 debugging symbols, 237-239 set up, 77 extreme programming. Debugging Applications disabled BVTs, 142 See XP for Microsoft .NET Distinguished Engineer Extreme Programming, 8 and Microsoft (DE), navigating Extreme Programming Windows, 237 Microsoft culture, Explained, 219 machines, build lab 193-194 Extreme Programming in hardware, 48 distributable packages, 1 Practice, 219 defects, 6 drivers, XP (extreme delay signing, managed programming), 221 F code, 116-117 Dynamics of Software Feldman, Stu, Make, 59 command problems, Development, 157 Feynman, Richard P., 117-118 What Do You Care security, 118-119 E What Other People depend.mk files, 83 e-mail, etiquette, 195-197 Think?, 200 developer.cmd file, 79-81 EE (escalation engineer), FI (forward integration), 20 developers 167 fields, work item trackers, build type, 1-2 embedded builds, CE 9-11 isolation, 28-29 build system basics, filelist.mk files, 83 new tools, 203-204 216-217 FileMon, 235 Monad, 211-213 environment files MSBuild.exe, 204-206 build lab, 50-51 CABinet files, 147 developer.cmd file, 79-81 paths, testing guide, 231 devenv.cmd file, 77-79 246 Index

solutions, 61 H Integrated Development testing guide, 229-230 Hall, Mike Environment versioning, 88-93 mobile and (IDE), 61 WiX, 147 embedded devices integration builds. See fines, build breaks, 40 (MED) group, 215 SNAP builds FixBy fields, work item website, 218 internal developers trackers, 10 hardware workstation (IDW), 6 Flaat, Chris, 61 build labs, 47 internal release servers, forking, 19 configuration build lab, build lab hardware, 48 forward integration (FI), 20 47-48 internationally ignorant Fowler, Martin, Refactoring: applications, 50 codes, 126 Improving the Design build environment, international builds, of Existing Code, 221 50-51 123-124 full PDBs, 238 operating system internationally ignorant set up, 49 code, 126 G requirements, 48-49 locale-dependent source, Gates, Bill, 185 software set up, 49 127-128 general development hard drives, build lab single worldwide binary, projects, 14 requirements, 48-49 129-130 Gerstner, Lou, 145 Harvey, Paul, 111 single worldwide source, glass masters, 21 hidden cameras, physical 128-129 Glasser, Danny, 1 security, 104 support concepts, 124-125 global makefiles, 83 Hilbert, Christopher, 146 Unicode, 131-132 globalization, international Howard, Michael, Writing International Software, 123 builds, 124 Secure Code, 235 issues, 167 goals, CSS (customer How to Break Software, A iterative developments, XP service and support), Practical Guide to (extreme program- 165-166 Testing, 235 ming), 220 golden masters, 21 IT department, inherited golden source trees. See I security, 106-107 source trees IDE (Integrated Golden Trees, 19 Development J-L green builds, 73 Environment), 61 Jeffries, Ron, XP (extreme groups, culture, 183-185 IDW (internal developers programming), 219 adapting, 197-198 workstation), 6 Klingon language, 125 defining, 186-187 IM Wright, 44 executive leadership, inactive BVTs, 142 labeling 187-197 incidents, 167 SCC (source code leading by example, 198 incremental builds, 6 control), 91 NASA space shuttle incremental developments, SLM (Source Library disasters, 199-201 XP (extreme Manger), 91-92 guidelines, testing, 143 programming), 220 labeling release Guthrie, Scott, 13 inputs, testing guide, technique, 176 233-234 labels, branching, 29 InstallShield website, 146 Index 247 labs LKG (last known good), 6 managed execution process, builds, 4 locale-dependent sources, 114-115 hardware, 47-51 127-128 mapping, 25 personnel, 51-53 locales, international Maraia, Vincent, 163 physical security, 104-105 builds, 124 Maritz, Paul, 133 reasons for, 45-46 localization, international marketing, product version rules, 46 builds, 124 numbers, 90 languages, international localizing builds, 123-124 master languages, interna- builds, 123-124 internationally ignorant tional builds, 124 internationally ignorant code, 126 McCarthy, Jim, 38, 156-157 code, 126 locale-dependent source, McCartney, Paul, 51 locale-dependent source, 127-128 meetings, shipping, 11-13 127-128 single worldwide binary, Mensching, Rob, 146 single worldwide binary, 129-130 merging, TFSC (Team 129-130 single worldwide source, Foundation Source single worldwide source, 128-129 Control), 26-27 128-129 support concepts, 124-125 merging versions, patch support concepts, 124-125 Unicode, 131-132 releases, 177-179 Unicode, 131-132 Windows XP, 130-131 Microsoft laptops, physical security, local machines, build type, build tools, 56 104 1-2 BVTs (build verification last known good (LKG), 6 Lucovsky, Mark, VBLs tests), 133 leaders, company culture (Virtual Build cultural shifts, 184-186 change, 187-188 Labs), 18 Developer Division escalating issues to appro- testing guide priate executive, 194 M applications, 234-235 hire consulting firm, machines, SNAP build file paths, 231 188-189 configuration, 69 files, 229-230 involve as much as mainlines, 19, 67 inputs, 233-234 possible, 188 maintenance, testing network connections, maintain integrity, process, 70 234 193-194 major versions, 88 numeric values, 233 match company values, Make, 59 references, 235 189-192 makefiles, 59, 83-85 registry, 232 publishing policies and managed codes strings, 232-233 processes, 194-197 assemblies, 116 tools, 235-236 understand financial CLR (common language e-mail etiquette, 195-197 impacts, 192 runtime), 113-114 IM Wright, 44 LeBlanc, David C., Writing defining, 111-112 new developer tools, Secure Code, 235 delay signing, 116-117 203-204 Ledgard, Josh, testing command problems, Monad, 211-213 guidelines, 143 117-118 MSBuild.exe, 204-206 Lennon, John, 183 security, 118-119 VSTB (Visual Studio Leno, Jay, 185 managed execution Team Build), 209-211 Lewis, Ian, 222 process, 114-115 VSTS (Visual Studio solution files, 119-120 Team System), 206-208 248 Index

NT lab hidden multilingual user interface numeric values, testing cameras, 104 (MUI), international guide, 233 setup programs, 146 builds, 125 Ship It Award, 161 Murray, Mike, 184 O-P SoftRel, 160, 161 On Becoming a Leader, 75 Microsoft Developers N operations staff, SNAP Network website, 15 NANT, binary-generating builds, 71 Microsoft Driver tools, 60 Orcas, 204 Development Kit Nasarre, Christope, 204 OS (operating system), (DDK), 148 NASA shuttle disasters, 199 49, 96 Microsoft operations background, 199 pace, XP (extreme manager (MOM), 107 ignoring engineer programming), 222 Microsoft Solution e-mails, 199 packages, 1 Framework (MSF), investigation conclusions, pair programming, 221 15, 207 200-201 parallel releases, 179 Microsoft website, top level organization, 200 Parkerson, Scott, 94 nmake, 76 navigators, XP (extreme partial branching, 29-30 milestones, 19 programming), 221 patch releases, 177-179 minor versions, 88 .NET Framework paths, file testing guide, 231 MOM (Microsoft operations assembly versioning, personnel, build lab, 51-53 manager), 107 93-95 Peters, Chris, 39, 165 Monad, 211-213 installation platforms, 112 physical security, 103-105 motherboards, build lab managed code Pipelines, 212 requirements, 49 assemblies, 116 Plan of Attack, 39 MSBuild.exe, 204-206 CLR (common post-builds, 5 MSBuild.exe command-line language runtime), Pottery Barn rule, 39 utility, 60 113-114 power supplies, build lab MSF (Microsoft Solution defining, 111-112 requirements, 49 Framework), 15, 207 delay signing, 116-119 pre-builds, 5 MSH, 211-213 managed execution primary releases, 174 MUI (multilingual user process, 114-115 branch, 176 interface), interna- rewrites, 108 clone, 176-177 tional builds, 125 networks, connection labeling, 176 multilanguage builds, testing guide, 234 share and pin, 174 123-124 nightly builds, 35-36 priority fields, work item internationally ignorant NMake, binary-generating trackers, 10 code, 126 tools, 59-60, 76 private branches, SNAP locale-dependent source, nmake all command, 85 builds, 67 127-128 nmake clean command, 85 private builds, 19, 23 single worldwide binary, nmake depend processors, build lab 129-130 command, 85 requirements, 48 single worldwide source, nmake tree command, 85 product flows, 8 128-129 NT lab, hidden cameras, 104 projects, 14-16 support concepts, 124-125 numbers release to servers, 14 Unicode, 131-132 file versioning, 89, 92-93 versioning, 90 shipping meeting, 11-13 Index 249

software development, 9 RegMon, 235 rules, build labs, 46 solution files, 14 regression testing, XP RULES.mk files, 83 work item tracker fields, (extreme program- Rule 21, McCarthy, Jim, 9-11 ming), 220 156-157 product marketing, version Reis, Luis Miguel, 220 numbers, 90 released to Web (RTW), 21 S product support services releases sandbox builds, 19 (PSS), 163 daily builds, 39 SCC (Source Code product teams, CSS, policy enforcement, 41 Control), 17, 91 166-168 priorities of breaks, SCC tool (source code programming, XP (extreme 39-40 control tool), 171 programming) Microsoft SoftRel, scripts, 57 fundamental 160-161 security characteristics, parallel, 179 binary verification, 106 219-222 patch, 177-179 delay signing, 118-119 Microsoft case study, preparation steps, IT infrastructure, 106-107 225-226 157-158 multilevel approach, 102 refactoring, 222-224 primary, 174 .NET Framework scenario, 224-225 branch, 176 rewrite, 108 TDD (test-driven clone, 176-177 physical, 103-105 development), labeling, 176 tracking source changes, 222-224 share and pin, 174 105-106 projects, 1-2, 14-16 Rule 21, 156-157 Seiwald, Christopher, 20 promotion modeling, 28 source trees, 158-159 self-extracting EXE, 97-98 PSINFO.EXE, 50 VSS (Visual SourceSafe), self-host builds, 134 PSS (product support 172-173 self-test builds, 134 services), 163 XP (extreme servers public builds, 19, 23 programming), 220 build lab hardware, 48 release branching, 28 product release, 14 Q-R release build machines, service packs, 177 QFE (quick-fix build lab build numbers, 93 engineering), 167 hardware, 48 merging versions, 177-179 quality charts, 6-7 repositories, 25 Service Request (SR), 167 reverse integration (RI), 20 setenv.cmd file, 82 RAM, build lab revisions, 89 setup, 145-146 requirements, 48 RI (reverse integration), 20 basic definitions, 147-148 Refactoring Richter, Jeffrey, .NET components, 147 Improving the Design of Framework, 108 programs used by Existing Code, 221 Robbins, John, Debugging Microsoft, 146 XP (extreme Applications for SKU, 147 programming), Microsoft .NET and WiX build components, 221-224 Microsoft Windows, 148-153 references, Developer 237 Setupbuild.cmd, 152 Division testing Rockne, Knute, 198 The Seven Habits of Highly guide, 235 RTW (released to Web), 21 Effective People, 55 registry, testing guide, 232 250 Index

severity fields, work item system core, 67-68 offline checkout/ trackers, 10 throughput management, check-in, 32-33 share and pin release 71-73 shelving, 31-32 technique, 174 SoftRel, Microsoft, 160-161 VSS (Visual SourceSafe) shared code ownership, software setup, 22 XP (extreme build lab set up, 49 source control, 24 programming), 221 daily builds, 37-41 VBLs, 22-24 shell, Monad, 211-213 development flow, 9 space shuttle disasters, 199 shelving, TFSC (Team shipping background, 199 Foundation Source Microsoft SoftRel, ignoring engineer Control), 31-32 160-161 e-mails, 199 Shiny New Automation preparation steps, investigation conclusions, Process builds. See 157-158 200-201 SNAP builds Rule 21, 156-157 top level organization, 200 shipping, 37 Software Configuration SP (support professionals), meeting, 11-13 Management Patterns, 167 Microsoft SoftRel, 20, 91 SR (Service Request), 167 160-161 Software for Your Head, 157 SS.exe, 172 preparation steps, solutions status fields, work item 157-158 configuration, 61 trackers, 10 Rule 21, 156-157 files, 14, 61 Stock Keeping Unit source trees, 158-159 solution files, managing (SKU), 147 Ship It Award, 161 code, 119-120 strings, testing guide, single worldwide binaries, sources, 18 232-233 129-130 codes, 18 stripped PDBs, 238 single worldwide sources, physical security, 104-105 substatus fields, work item 128-129 tracking changes, 105-106 trackers, 10 SKU (Stock Keeping Source Code Control support professionals Unit), 147 (SCC), 17, 91 (SP), 167 SKU.XML files, 147, source code control tool symbols, debugging, 150-152 (SCC tool), 171 237-239 slime, 91-92 Source Library Manager SysInternals website, 50 SLM (Source Library (SLM), 91-92 Manager), 91-92 source life cycles, 102 T Smith, Edward J., 171 source trees TDD (test-driven smoke tests, 133-137 numbering, 89 development), snapshots, 19 shipping mode, 158-159 222-224 SNAP builds (Shiny New SNAP builds, 67 teams Automation Process terminology, 18-21 Central Build, 2-4 builds), 65-66 TFSC (Team Foundation testing check list, 141-142 defining, 66 Source Control), WAR, 12 implementing, 67 24-25 Team Foundation Source operations staff, 71 branching, 27-30 Control (TFSC), 92 sample configuration, configurations, 30-31 test-driven development 68-70 merging functionality, (TDD), 222-224 26-27 testing, 133-135 Index 251

bugs, 11 tools users BVTs (build verification binary generating, 57-59 locale, international tests), 137-138 NANT, 60 builds, 124 defining scope, 138-142 NMake, 59-60 XP (extreme states of existence, recommended tools, programming), 221 142-143 62-64 check list, 141-142 Visual Studio, 60-61 guide XML (Extensible V applications, 234-235 Markup Language), Vaughn, Dr. Diane, 201 files, 229-230 62 VBLs (Virtual Build Labs), file paths, 231 new developments, 18-19, 22-24, 92 inputs, 233-234 203-204 VCBuild.exe command-line network connections, Monad, 211-213 utility, 60 234 MSBuild.exe, 204-206 VerCheck tool (vercheck. numeric values, 233 VSTB (Visual Studio exe), 141 references, 235 Team Build), 209-211 verification test, 133-135 registry, 232 VSTS (Visual Studio BVTs (build verification strings, 232-233 Team System), tests), 137-138 tools, 235-236 206-208 defining scope, 138-142 guidelines, 143 scripts, 57 states of existence, smoke tests, 135-137 testing guide, 235-236 142-143 SNAP build machine VSS (Visual SourceSafe), smoke tests, 135-137 configuration, 69 172 versioning XP (extreme program- trackers, work items, 9-11 affects on set up, 95 ming), 220-224 tracking source changes, component copying Test Driven Development, 8 105-106 before overwrite, 97 TFSC (Team Foundation triage, 13 copying components, Source Control), trunks, 19 96-97 24-25, 92 overwriting branching, 27-28 U components, 96 component, 29 UI (user interface) registering developer isolation, languages, interna- components, 97 28-29 tional builds, 125 self-extracting EXE, label, 29 Unicode, international 97-98 partial, 29-30 builds, 131-132 specific components, 96 promotion modeling, 28 uninterruptible power testing on real-world release, 28 supply (UPS), 49 systems, 98 configurations, 30-31 unit tests, 135 assembly, 93-95 merging functionality, UPS (uninterruptible power build numbers, 90 26-27 supply), 49 correct installation offline checkout/check-in, usability tests, Chris problems, 98-99 32-33 Peters, 165 files, 88-93 shelving, 31-32 user interface (UI) merging, 177-179 throughput, SNAP builds, languages, interna- reasons important, 87-88 71-73 tional builds, 125 tickets, 167 252 Index

SCC (source code VBLs multisite Wingerd, Laura, 20 control), 91 development, 22-24 Wise Solutions website, 146 VSS (Visual SourceSafe), versioning, 173 WiX ( 173 VSS projects, 14 XML), 146-147 vfi.exe (Visual File VSTB (Visual Studio Team Wooden, John, 8 Information tool), 140 Build), 209-211 Woodward, Bob, Plan of video cameras, physical VSTS (Visual Studio Team Attack, 39 security, 104 System), 17, 206-208 working folders, 25 Virtual Build Labs (VBLs), VS IDE (Visual Studio workspaces, 25 18-19, 22-24, 92 Integrated work items, trackers, 9-11 Visual C++, creating Development Writing Secure Code, 235 managed code, 114 Environment), 61 WXS files, 147 Visual File Information tool (vfi.exe), 140 W X-Y-Z Visual SourceSafe. See VSS WAR, 11-13 XML (Extensible Markup Visual Studio websites Language), 62 binary-generating tools, Hall, Mike, 218 XP (extreme programming), 60-61 InstallShield, 146 6, 219 projects, 14-16 Microsoft, nmake, 76 fundamental characteris- solution files, 14 Microsoft Developers tics, 219-222 team check-ins, 13 Network, 15 Microsoft case study, Visual Studio .NET SysInternals, 50 225-226 projects, 14 Windows Update, 112 programming scenario, Visual Studio Integrated Wise Solutions, 146 224-225 Development WiX, 146 refactoring, 222-224 Environment Welch, Jack, 123 TDD (test-driven (VS IDE), 61 What Do You Care development), Visual Studio Team Build What Other People 222-224 (VSTB), 209-211 Think?, 200 Visual Studio Team Whittaker, James A., How Developer, 207 to Break Software: Visual Studio Team A Practical Guide to Foundation, 207 Testing, 235 Visual Studio Team wicks, 146 Suite, 207 Windows, debugging Visual Studio Team System symbols, 238-239 (VSTS), 17, 206-208 Windows Installer, 147 Visual Studio Team Windows Installer XML Test, 207 (WiX), 146 VSS (Visual SourceSafe), Windows Update 17, 171-172 website, 112 Administrator, 172 Windows XP, localized Explorer, 172 builds, 130-131 source control, 24 Windows XPe (XP source tree setup, 22 Embedded), 215-216 tools, 172