In software engineering, continuous integration (CI) implements continuous processes of applying quality control — small pieces of effort, applied frequently. Continuous integration aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control after completing all development.

– Source: Wikipedia

Build Software At Every Change

  • Automate builds
  • Separate build scripts from IDE
  • Centralize software assets
  • Use consistent directory structure
  • Use a dedicated build machine
  • Use a CI server
  • Run integration builds
  • Stage builds

Continuous Database Integration

  • Automate database integration
  • Use a local database sandbox
  • Use version control for db assets
  • Give developers access to modify db
  • Make DBA part of dev team

Continuous Inspection

  • Reduce code complexity
  • Perform design reviews continuously
  • Maintain code standards with code audits
  • Reduce duplicate code
  • Assess code coverage

Continuous Testing

  • Automate tests: unit, component, functional
  • Run faster tests first
  • Write test for defects
  • Make component tests repeatable

Continuous Deployment

  • Release working software, any time
  • Produce a clean environment
  • Label each build
  • Run all tests
  • Create feedback reports
  • Possess capability to roll back release

Book Recommendation

If you are interested in continuous integration, then I would highly recommend the book.