Jason and Brad are two developers at Hometown bank. They work on web applications for Hometown, do support, and generally are great all around hard working individuals. Jim is a requirements writer, or some might say he's a business analyst. Tammy is a user proxy, also a business analyst. Then there's David, the QA tester.
Jason and Brad were handed a list of requirements drawn up by Jim and Tammy. Looking over it, there were a lot of unanswered questions, but management wanted them to get started. Knowing that the customer wanted a commitment date of when this project could be delivered, Jason made the choice to use what I would call a waterfall analysis phase to gather requirements.
After putting together a backlog of every task they needed to accomplish to deliver and getting what they thought were sufficient requirements Jason and Brad began writing the code to their interpretation of the requirements. Tammy and Jim were on hand to answer any questions.
Now these two developers also needed to access some services from outside the company so they had to employ an enterprise webservices developer. Desmond stepped in to help them out and wrote web services to accomodate the requirements.
3 months down the road Desmond, Jason, and Brad declared that development was complete and they were ready to begin QA testing.
As testing began a slew of bugs cropped up. Problems integrating with the web services, problems connecting to the business 2 business services. Simple problems with validation on fields. Roughly 10 defects per day were being picked out by the Tester who was seeing the app for the first time in the 3 months of development.
The developers kept reporting that everything was green because these were really simple bugs honestly... validation logic, some mild integration things... nothing really that complex and the turnaround was really quick. Surely we'll make our date they said to management.
As the date neared and neared things hadn't changed with the defect rate... about 10 per day still of various things. None too perplexing to the developers and they turned around quickly.
Feeling the pressure to deliver, the team was expanded by adding 2 testers and another developer. They struggled to learn the state of the application and how to use the test environment and had to ask a lot of questions of the already swamped team that was working on it, but like good soldiers everyone went right at it and hammered away.
The defect rate soared even higher for a while as more and more people were using the source code, using the test environment, doing exploratory testing while waiting to get the actual test scripts and requirements clarifications they needed.
The dead line neared closer and closre and management called for everyone to work weekends. "Do whatever it takes" was unspoken but understood because we can't possibly miss this date.
Meanwhile, in another project, during the same timeline, a similiar team was working on a rewrite of a financial application for a different platform than the original software. They decided to use agile and aligned their list of work with the requirements document and knowledge of the existing application. Each requirement was scrutinized to be independent of eachother and became a product backlog. Each items acceptance criteria was discussed between tester, developer and business owner until a negotiated scope was agreed upon, estimated, and committed to for a 3 week sprint. If the item was completed, it was demo'd to the stakeholders at the end of the sprint. If the item was not completed (meaning it wasn't user accepted, qa tested, code reviewed, security scanned, end to end integration tested, unit tested) then it was not demo'd to the stakeholder. Sometimes they showed the stakeholder what they did, but a very large disclaimer was put on it, that it was not "Done" yet.
This second team had to change directions a lot. They ran into many things that made the requirements have to be adjusted, acceptance criteria to be re-negotiated, and expectations to be modified. In the end, what the customer originally asked for was only a memory and the real product stood before them, working, tested, and ready for deployment. Now, it wasn't on schedule by any means and much of the functionality originally asked for wasn't in the deliverable that actually was launched... but everyone was in agreement as to why and the business owner "Signed off" on what was delivered and was in agreement with it the whole way.