Software composition refers to the construction of software applications from components that implement abstractions pertaining to a particular problem domain. Raising the level of abstraction is a time-honored way of dealing with complexity, but the real benefit of composable software systems lies in their increased flexibility: a system built from components should be easy to recompose to address new requirements. A certain amount of success has been achieved in some well-understood application domains, as witnessed by the popularity of user-interface toolkits, fourth generation languages and application generators. But how can we generalize this?
No takes yet. Share an insight, caveat, or question.
Nierstrasz et al. (1995) studied this question.
Synapse has enriched 5 related papers. Consider them for comparative context: