It's my favourite topic. My current project badly requires Agile and Iterative development approach, however I failed to convince my orthodox project leader about this. We are struggling with often changing requirements, gaps, miscommunication and working with people who lacks interest in work and bad attitude. Leaving behind political, personnel issues, Iterative development is good because it gives transparency to the customer. Customer can see working software rather than plain documents on how software works. Nobody is going to appreciate for documents. What customer wants is real software. I hate to bog down in details of requirements and analysis stuff.
Nothing in the world is constant except change. Even we freeze the requirements, they are infact not freezed. Just after signing requirements documents, I got a call from one of the stakeholderwho participated in the project kick-off meeting. She wanted to change things here and there. This is the beginning of the changes. I know stakeholders who changed requirements even before the day of software release.The bad thing about SDLC is we try to define everything at once and we insist on sticking to the plan. I strongly believe in Murphy's law and don't expect things to go smooth. On the other side, if we follow more Agile, Iterative development approach, myself and my team have flexibility to embrace change, and time to respond to customer's needs. Ultimately, our job is to deliver what customer want. For customer, time, money and working code are the successful factors.