Continuous Integration: Improving Software Quality and Reducing Risk (Addison-Wesley Signature Series)
Author: Paul M Duvall
For any software developer who has spent days in “integration hell,” cobbling together myriad software components, Continuous Integration: Improving Software Quality and Reducing Risk illustrates how to transform integration from a necessary evil into an everyday part of the development process. The key, as the authors show, is to integrate regularly and often using continuous integration (CI) practices and techniques.
The authors first examine the concept of CI and its practices from the ground up and then move on to explore other effective processes performed by CI systems, such as database integration, testing, inspection, deployment, and feedback. Through more than forty CI-related practices using application examples in different languages, readers learn that CI leads to more rapid software development, produces deployable software at every step in the development lifecycle, and reduces the time between defect introduction and detection, saving time and lowering costs. With successful implementation of CI, developers reduce risks and repetitive manual processes, and teams receive better project visibility.
The book covers
- How to make integration a “non-event” on your software development projects
- How to reduce the amount of repetitive processes you perform when building your software
- Practices and techniques for using CI effectively with your teams
- Reducing the risks of late defect discovery, low-quality software, lack of visibility, and lack of deployable software
- Assessments of different CI servers and related tools on the market
Table of Contents:
Foreword Martin Fowler xiiiForeword Paul Julius xv
Preface xix
About the Authors xxxi
About the Contributors xxxiii
A Background on CI: Principles and Practices 1
Getting Started 3
Build Software at Every Change 4
Developer 6
Version Control Repository 7
CI Server 8
Build Script 10
Feedback Mechanism 10
Integration Build Machine 12
Features of CI 12
Source Code Compilation 12
Database Integration 14
Testing 15
Inspection 17
Deployment 18
Documentation and Feedback 20
Summary 20
Questions 20
Introducing Continuous Integration 23
A Day in the Life of CI 25
What Is the Value of CI? 29
Reduce Risks 29
Reduce Repetitive Processes 30
Generate Deployable Software 31
Enable Better Project Visibility 31
Establish GreaterProduct Confidence 32
What Prevents Teams from Using CI? 32
How Do I Get to "Continuous" Integration? 33
When and How Should a Project Implement CI? 35
The Evolution of Integration 36
How Does CI Complement Other Development Practices? 37
How Long Does CI Take to Set Up? 38
CI and You 39
Commit Code Frequently 39
Don't Commit Broken Code 41
Fix Broken Builds Immediately 41
Write Automated Developer Tests 41
All Tests and Inspections Must Pass 42
Run Private Builds 42
Avoid Getting Broken Code 43
Summary 44
Questions 44
Reducing Risks Using CI 47
Risk: Lack of Deployable Software 49
Scenario: "It Works on My Machine" 50
Scenario: Synching with the Database 50
Scenario: The Missing Click 52
Risk: Late Discovery of Defects 53
Scenario: Regression Testing 53
Scenario: Test Coverage 54
Risk: Lack of Project Visibility 55
Scenario: "Did You Get the Memo?" 56
Scenario: Inability to Visualize Software 56
Risk: Low-Quality Software 57
Scenario: Coding Standard Adherence 58
Scenario: Architectural Adherence 59
Scenario: Duplicate Code 60
Summary 62
Questions 62
Building Software at Every Change 65
Automate Builds 67
Perform Single Command Builds 69
Separate Build Scripts from Your IDE 73
Centralize Software Assets 74
Create a Consistent Directory Structure 75
Fail Builds Fast 76
Build for Any Environment 77
Build Types and Mechanisms 78
Build Types 78
Build Mechanisms 80
Triggering Builds 81
Use a Dedicated Integration Build Machine 81
Use a CI Server 85
Run Manual Integration Builds 86
Run Fast Builds 87
Gather Build Metrics 88
Analyze Build Metrics 89
Choose and Implement Improvements 89
Stage Builds 92
Reevaluate 96
How Will This Work for You? 96
Summary 101
Questions 102
Creating a Full-Featured CI System 105
Continuous Database Integration 107
Automate Database Integration 110
Creating Your Database 112
Manipulating Your Database 115
Creating a Build Database Orchestration Script 116
Use a Local Database Sandbox 117
Use a Version Control Repository to Share Database Assets 119
Continuous Database Integration 121
Give Developers the Capability to Modify the Database 123
The Team Focuses Together on Fixing Broken Builds 124
Make the DBA Part of the Development Team 124
Database Integration and the Integrate Button 125
Testing 125
Inspection 125
Deployment 126
Feedback and Documentation 126
Summary 126
Questions 128
Continuous Testing 129
Automate Unit Tests 132
Automate Component Tests 134
Automate System Tests 136
Automate Functional Tests 137
Categorize Developer Tests 138
Run Faster Tests First 141
Unit Tests 141
Component Tests 141
System Tests 143
Write Tests for Defects 143
Make Component Tests Repeatable 148
Limit Test Cases to One Assert 156
Summary 158
Questions 159
Continuous Inspection 161
What Is the Difference between Inspection and Testing? 164
How Often Should You Run Inspectors? 165
Code Metrics: A History 166
Reduce Code Complexity 167
Perform Design Reviews Continuously 170
Maintain Organizational Standards with Code Audits 173
Reduce Duplicate Code 176
Using PMD-CPD 177
Using Simian 178
Assess Code Coverage 180
Evaluate Code Quality Continuously 182
Coverage Frequency 183
Coverage and Performance 184
Summary 185
Questions 186
Continuous Deployment 189
Release Working Software Any Time, Any Place 191
Label a Repository's Assets 191
Produce a Clean Environment 194
Label Each Build 195
Run All Tests 196
Create Build Feedback Reports 196
Possess Capability to Roll Back Release 199
Summary 199
Questions 200
Continuous Feedback 203
All the Right Stuff 205
The Right Information 205
The Right People 207
The Right Time 208
The Right Way 209
Use Continuous Feedback Mechanisms 209
E-mail 210
SMS (Text Messages) 212
Ambient Orb and X10 Devices 214
Windows Taskbar 217
Sounds 218
Wide-Screen Monitors 220
Summary 222
Questions 222
Epilogue: The Future of CI 223
CI Resources 227
Continuous Integration Web Sites/Articles 227
CI Tools/Product Resources 229
Build Scripting Resources 232
Version Control Resources 233
Database Resources 234
Testing Resources 236
Automated Inspection Resources 239
Deployment Resources 241
Feedback Resources 241
Documentation Resources 243
Evaluating CI Tools 245
Considerations When Evaluating Tools 247
Functionality 248
Compatibility with Your Environment 253
Reliability 254
Longevity 254
Usability 255
Automated Build Tools 255
Build Scheduler Tools 263
Conclusion 272
Bibliography 273
Index 275
New interesting book: Direzione & amministrazione di professione d'infermiera
CCNP ONT Official Exam Certification Guide
Author: Amir Ranjbar
- Master all 642-845 exam topics with the official study guide
- Assess your knowledge with chapter-opening quizzes
- Review key concepts with foundation summaries
- Practice with hundreds of exam questions on the CD-ROM
Amir Ranjbar, CCIE® No. 8669
CCNP ONT Official Exam Certification Guide is a best of breed Cisco® exam study guide that focuses specifically on the objectives for the Optimizing Converged Cisco Networks exam (642-845 ONT). Successfully passing the ONT 642-845 exam certifies that you have the knowledge and skills necessary to optimize and apply effective QoS techniques for converged networks.
CCNP ONT Official Exam Certification Guide follows a logical organization of the CCNP® ONT exam objectives. Material is presented in a concise manner, focusing on increasing your retention and recall of exam topics. You can organize your exam preparation through the use of the consistent features in these chapters. “Do I Know This Already?” quizzes open each chapter and allow you to decide how much time you need to spend on each section. Exam topic lists and concise Foundation Summary information make referencing easy and give you a quick refresher whenever you need it. Challenging chapter-ending review questions help you assess your knowledge and reinforce key concepts.
The companion CD-ROM contains a powerful testing engine that allowsyou to focus on individual topic areas or take complete, timed exams. The assessment engine also tracks your performance and provides feedback on a topic-by-topic basis, presenting question-by-question remediation to the text. Well regarded for its level of detail, assessment features, and challenging review questions and exercises, this book helps you master the concepts and techniques that can enable you to succeed on the exam the first time.
Amir Ranjbar, CCIE® No. 8669, is a certified Cisco instructor and an internetworking consultant. He conducts Cisco official courses such as BCMSN, BSCI, ONT, CVOICE, BGP, and MPLS for Global Knowledge, the largest Cisco training partner. Amir has a bachelor’s degree in computing and information science and a master’s degree in knowledge-based systems from the University of Guelph in Ontario, Canada.
The official study guide helps you master all the topics on the CCNP ONT exam, including
- Implementing a voice-over-IP (VoIP) network
- Implementing QoS on converged networks
- Specific IP QoS mechanisms for implementing the DiffServ QoS model
- AutoQoS
- Wireless security
- Basic wireless management
Companion CD-ROM
The CD-ROM contains an electronic copy of the book and more than 200 practice questions for the ONT exam, which are all available in study mode, test mode, and flash card format.
This volume is part of the Exam Certification Guide Series from Cisco Press®. Books in this series provide officially developed exam preparation materials that offer assessment, review, and practice to help Cisco Career Certification candidates identify weaknesses, concentrate their study efforts, and enhance their confidence as exam day nears.
Category: Cisco Certification
Covers: ONT Exam 642-845
No comments:
Post a Comment