The software development activity in which separate software components are combined into an executable whole.