A method of solving complex problems by breaking them down into smaller, more manageable subproblems.