development model where applications are (dynamically) composed of many different (reusable) components.