| | Dedication |
| | Copyright |
| | Preface |
| | | What This Book Is About |
| | | What This Book Is Not About |
| | | Who Should Read This Book |
| | | What's Inside |
| | | Style Conventions |
| | | Using Code Examples |
| | | Safari Enabled |
| | | Comments and Questions |
| | | Acknowledgments |
| | Chapter 1. Introduction |
| | | Section 1.1. Developing Software Products |
| | | Section 1.2. Open and Closed Software Development |
| | | Section 1.3. Dirty Secrets of Software Projects |
| | | Section 1.4. What Does "Practical" Mean? |
| | | Section 1.5. A Personal Tools Quiz |
| | Chapter 2. Project Basics |
| | | Section 2.1. The Parts of a Project |
| | | Section 2.2. Software Configuration Management |
| | | Section 2.3. Building Software |
| | | Section 2.4. Testing Software |
| | | Section 2.5. Tracking Bugs |
| | | Section 2.6. Writing Documentation |
| | | Section 2.7. Releasing Products |
| | | Section 2.8. Maintenance |
| | | Section 2.9. Recommended Tools |
| | Chapter 3. Project Concepts |
| | | Section 3.1. Preconstructed Development Environments |
| | | Section 3.2. Why Integration Is Helpful |
| | | Section 3.3. Why Automation Is Vital |
| | | Section 3.4. Automation Environments |
| | | Section 3.5. Labeling Builds |
| | | Section 3.6. Naming Projects and Machines |
| | | Section 3.7. Choosing New Tools |
| | | Section 3.8. Internationalization and Localization |
| | | Section 3.9. Authentication, Authorization, and Accounting |
| | Chapter 4. Software Configuration Management |
| | | Section 4.1. Why Do I Need SCM? |
| | | Section 4.2. What SCM Is and Is Not |
| | | Section 4.3. Drawbacks of SCM |
| | | Section 4.4. A Typical Day's Work with SCM |
| | | Section 4.5. SCM Annoyances |
| | | Section 4.6. SCM Tools |
| | | Section 4.7. Comparison of SCM Tools |
| | | Section 4.8. Wider Uses of SCM |
| | | Section 4.9. Checklist |
| | Chapter 5. Building Software |
| | | Section 5.1. How Software Gets Built |
| | | Section 5.2. Build States: Virgin, Up-to-date, Changed, Interrupted, Clean |
| | | Section 5.3. Build Dependencies |
| | | Section 5.4. Common Build Problems |
| | | Section 5.5. Build Tools |
| | | Section 5.6. Comparison of Build Tools |
| | | Section 5.7. Changing Your Build Tool |
| | | Section 5.8. Checklist |
| | Chapter 6. Testing Software |
| | | Section 6.1. Different Kinds of Tests |
| | | Section 6.2. Why Automate Your Tests? |
| | | Section 6.3. Evaluating Test Environments |
| | | Section 6.4. Test Environments |
| | | Section 6.5. Types of Test Tools |
| | | Section 6.6. The Difficult Parts of Testing |
| | | Section 6.7. Checklist |
| | Chapter 7. Tracking Bugs |
| | | Section 7.1. Tool Requirements |
| | | Section 7.2. Bug Tracking Tools |
| | | Section 7.3. Bug Tracking Annoyances |
| | | Section 7.4. Integrating with SCM Tools |
| | | Section 7.5. Checklist |
| | Chapter 8. Documentation Environments |
| | | Section 8.1. Technical Documentation |
| | | Section 8.2. Documents and SCM |
| | | Section 8.3. File Formats for Documentation |
| | | Section 8.4. Documentation Environments |
| | | Section 8.5. More File Formats |
| | | Section 8.6. Automated Production of Documentation |
| | | Section 8.7. Bad Ideas for Documentation |
| | | Section 8.8. Internal Project Documentation |
| | | Section 8.9. Checklist |
| | Chapter 9. Releasing Products |
| | | Section 9.1. Overview |
| | | Section 9.2. Before the Release |
| | | Section 9.3. Creating the Release |
| | | Section 9.4. Packaging Formats |
| | | Section 9.5. Installation Tools |
| | | Section 9.6. Installation IrritationsShip Happens! |
| | | Section 9.7. After the Release |
| | | Section 9.8. Checklist |
| | Chapter 10. Maintenance |
| | | Section 10.1. Maintaining an Environment |
| | | Section 10.2. What Is Product Maintenance? |
| | | Section 10.3. Product Maintenance Tasks |
| | | Section 10.4. Product Maintenance and Development Environments |
| | | Section 10.5. Cleaning Up Your Environment |
| | | Section 10.6. Checklist |
| | Chapter 11. Project Communication |
| | | Section 11.1. Tools for Communication |
| | | Section 11.2. A Project Web Site |
| | | Section 11.3. Different Areas for the Project Web Site |
| | | Section 11.4. Creating the Web Site |
| | | Section 11.5. Avoiding Content Rot |
| | Chapter 12. Politics and People |
| | | Section 12.1. The Role of the Toolsmith |
| | | Section 12.2. When Good Projects Go Bad |
| | | Section 12.3. Awkward People |
| | | Section 12.4. Twisted Communications |
| | | Section 12.5. Commit Rights |
| | | Section 12.6. Automation Discipline |
| | | Section 12.7. What Do Developers Really Want? |
| | | Section 12.8. An Upbeat Ending |
| | Appendix A. How Tools Scale |
| | | Section A.1. Scaling of Compilers |
| | | Section A.2. Scaling of Build Tools |
| | Appendix B. Resources |
| | | Section B.1. Online |
| | | Section B.2. Magazines |
| | | Section B.3. Books |
| | | Section B.4. Conferences |
| | | Section B.5. University and College Courses |
| | Colophon |
| | Index |