software integration

Complete

Concept

  • combining parts of a software product to form a whole
  • troublesome - incompatibilities between parts

Integration approaches

CategoryApproachDescriptionProsCons
Timing & FrequencyLate & One-Timeintegrate everything at the endsimple planninghigh risk, many bugs at once, delays
Early & Frequentintegrate continuously in small stepsearly bug detection, smoother progressrequires discipline & coordination
Amount MergedBig-Bangmerge all components at oncequick to execute (initially)hard to debug, many issues at once
Incrementalmerge parts graduallyeasier debugging, controlled integrationslightly more planning needed
Order of IntegrationTop-Downstart from high-level componentsearly validation of system logicneeds stubs for missing parts
Bottom-Upstart from low-level componentseasier testing of core functionsneeds drivers, UI comes late
Sandwichcombine top-down & bottom-upbalanced approachmore complex to manage

Build automation

  • automates build steps (compile, test, package, deploy)
  • saves time and reduces manual errors
  • also handles dependency management

Continuous integration

  • integration, building and testing happens automatically after each code change

Continuous deployment

  • also deployed to end users continuously