Self-contained subproblems with defined interfaces used as building blocks for larger problem construction.