Agile is an iterative approach to software development that builds software incrementally from the start instead of trying to deliver all at once. It focuses on customer satisfaction, welcoming changing requirements, frequent delivery of working software from weeks to months, motivated individuals, working software as progress measure, simplicity, and face-to-face conversation. In agile, design and implementation are central and requirements and design are developed incrementally through iterations rather than separately as in traditional models like Waterfall. An example compares how two teams developing a web browser, one using agile and one using waterfall, handle changing requirements, with the agile team better able to adapt.