Agile development is a method that creates projects incrementally. At the start of the project, features that the user desires are turned into user stories and rated by importance. The project is divided into iterations, and during each iteration, the product development team commits to completing a certain number of user stories. The number of user stories depends on the work involved in the user stories, and the amount that the team can complete in an iteration. During the iteration, the team determines what is included in the user story through conversations with a user or user proxy. Research, development, and testing are done at the same time, so that everyone has something to work on.
Additional user stories can be added to the product backlog, or list of things to be done during the project, during iterations. They can be prioritized, but the team does not start work on new user stories until the next iteration. Since work cannot be changed, the team always knows beforehand what they will be working on during the iteration.
At the end of an iteration, the team determines if the user stories have been completed. This definition includes development and testing - every feature completed should be of shippable quality. Several iterations make up a release, which is a date by which a new version of the product should be ready to ship. After each iteration, the team should get together to discuss what went well, and how things could be done better next time.
An agile framework includes agile management toolsets and the supporting components - such as Business Models, Architecture Models, and ICT Portfolios - that combine to produce the supporting framework necessary to help agile development run efficiently and effectively. Thus, a successful implementation of agile requires of agile project teams and supporting business teams.
Project teams are made up of the project managers and business owners from the agile teams. The project managers are responsible for facilitating the project - determining risks, keeping people working, and making sure things run smoothly. The business owners are responsible for prioritizing user stories. The project team level is responsible for prioritizing, facilitating, and coordinating the agile teams.
Business teams are responsible for prioritizing, facilitating, and coordinating the projects. Business teams are made up of company managers and are responsible for deciding which projects will be worked on, and what each team will do. In this way, they prioritize the needs of the company. They are responsible for the products that the company develops, and thus, the overall direction of the company. They help to organize dependencies and eliminate redundancies.
For agile development to proceed smoothly, it requires agile teams and an agile framework. However, the agile framework must also interact well with the other departments of a company. Agile teams may need to interact with marketing, accounting, and other departments. To prevent the interaction from causing problems within the company, as more traditional management styles interact with agile management styles, the other departments must understand how agile works, and how to appreciate and work with it.