Skip to content

Continuous Integration Improving Software Quality and Reducing Risk

Best in textbook rentals since 2012!

ISBN-10: 0321336380

ISBN-13: 9780321336385

Edition: 2007

Authors: Paul Duvall, Steve Matyas, Andrew Glover, Andrew Glover, Steve Matyas

List price: $59.99
Shipping box This item qualifies for FREE shipping.
Blue ribbon 30 day, 100% satisfaction guarantee!
what's this?
Rush Rewards U
Members Receive:
Carrot Coin icon
XP icon
You have reached 400 XP and carrot coins. That is the daily max!

Description:

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…    
Customers also bought

Book details

List price: $59.99
Copyright year: 2007
Publisher: Addison Wesley Professional
Publication date: 6/29/2007
Binding: Paperback
Pages: 336
Size: 7.00" wide x 9.10" long x 0.90" tall
Weight: 1.386

Foreword
Foreword
Preface
About the Authors
About the Contributors
A Background on CI: Principles and Practices
Getting Started
Build Software at Every Change
Developer
Version Control Repository
CI Server
Build Script
Feedback Mechanism
Integration Build Machine
Features of CI
Source Code Compilation
Database Integration
Testing
Inspection
Deployment
Documentation and Feedback
Summary
Questions
Introducing Continuous Integration
A Day in the Life of CI
What Is the Value of CI?
Reduce Risks
Reduce Repetitive Processes
Generate Deployable Software
Enable Better Project Visibility
Establish Greater Product Confidence
What Prevents Teams from Using CI?
How Do I Get to "Continuous" Integration?
When and How Should a Project Implement CI?
The Evolution of Integration
How Does CI Complement Other Development Practices?
How Long Does CI Take to Set Up?
CI and You
Commit Code Frequently
Don't Commit Broken Code
Fix Broken Builds Immediately
Write Automated Developer Tests
All Tests and Inspections Must Pass
Run Private Builds
Avoid Getting Broken Code
Summary
Questions
Reducing Risks Using CI
Risk: Lack of Deployable Software
Scenario: "It Works on My Machine"
Scenario: Synching with the Database
Scenario: The Missing Click
Risk: Late Discovery of Defects
Scenario: Regression Testing
Scenario: Test Coverage
Risk: Lack of Project Visibility
Scenario: "Did You Get the Memo?"
Scenario: Inability to Visualize Software
Risk: Low-Quality Software
Scenario: Coding Standard Adherence
Scenario: Architectural Adherence
Scenario: Duplicate Code
Summary
Questions
Building Software at Every Change
Automate Builds
Perform Single Command Builds
Separate Build Scripts from Your IDE
Centralize Software Assets
Create a Consistent Directory Structure
Fail Builds Fast
Build for Any Environment
Build Types and Mechanisms
Build Types
Build Mechanisms
Triggering Builds
Use a Dedicated Integration Build Machine
Use a CI Server
Run Manual Integration Builds
Run Fast Builds
Gather Build Metrics
Analyze Build Metrics
Choose and Implement Improvements
Stage Builds
Reevaluate
How Will This Work for You?
Summary
Questions
Creating a Full-Featured CI System
Continuous Database Integration
Automate Database Integration
Creating Your Database
Manipulating Your Database
Creating a Build Database Orchestration Script
Use a Local Database Sandbox
Use a Version Control Repository to Share Database Assets
Continuous Database Integration
Give Developers the Capability to Modify the Database
The Team Focuses Together on Fixing Broken Builds
Make the DBA Part of the Development Team
Database Integration and the Integrate Button
Testing
Inspection
Deployment
Feedback and Documentation
Summary
Questions
Continuous Testing
Automate Unit Tests
Automate Component Tests
Automate System Tests
Automate Functional Tests
Categorize Developer Tests
Run Faster Tests First
Unit Tests
Component Tests
System Tests
Write Tests for Defects
Make Component Tests Repeatable
Limit Test Cases to One Assert
Summary
Questions
Continuous Inspection
What Is the Difference between Inspection and Testing?
How Often Should You Run Inspectors?
Code Metrics: A History
Reduce Code Complexity
Perform Design Reviews Continuously
Maintain Organizational Standards with Code Audits
Reduce Duplicate Code
Using PMD-CPD
Using Simian
Assess Code Coverage
Evaluate Code Quality Continuously
Coverage Frequency
Coverage and Performance
Summary
Questions
Continuous Deployment
Release Working Software Any Time, Any Place
Label a Repository's Assets
Produce a Clean Environment
Label Each Build
Run All Tests
Create Build Feedback Reports
Possess Capability to Roll Back Release
Summary
Questions
Continuous Feedback
All the Right Stuff
The Right Information
The Right People
The Right Time
The Right Way
Use Continuous Feedback Mechanisms
E-mail
SMS (Text Messages)
Ambient Orb and X10 Devices
Windows Taskbar
Sounds
Wide-Screen Monitors
Summary
Questions
Epilogue: The Future of CI
CI Resources
Continuous Integration Web Sites/Articles
CI Tools/Product Resources
Build Scripting Resources
Version Control Resources
Database Resources
Testing Resources
Automated Inspection Resources
Deployment Resources
Feedback Resources
Documentation Resources
Evaluating CI Tools
Considerations When Evaluating Tools
Functionality
Compatibility with Your Environment
Reliability
Longevity
Usability
Automated Build Tools
Build Scheduler Tools
Conclusion
Bibliography
Index