Agile Programming: Design to Accommodate Change

Agile development focuses on accommodating program evolution. It's important in design to consider those points of the system that likely undergoes substantial change. At such points, it's often appropriate to apply agile-programming techniques. Agile programming is design for change, without refactoring and rebuilding. Its objective is to design programs that are receptive to, indeed expect, change. Ideally, agile programming lets changes be applied in a simple, localized way to avoid or substantially reduce major refactorings, retesting, and system builds.