Agile process is a collection of software development methods that encourages a software development team to be adaptable to constant change in project requirement. It requires stakeholders communicate to each other regularly, prioritize required features, develop working software in iteration, and design the system to handle quick response to change.
To adapt agile methodologies, customer representatives, managers and software developers need to sit in close proximity to build consensus. The working environment typically equipped with whiteboards that are used for brainstorming, design sessions and displaying information related to the project. Throughout the project, the team uses limited formal documentation to record all design and software changes. Such environment stimulates communication, and empowers stakeholders to make tough business, people and technical decisions as project progresses. In addition, it allows the team to have short and effective daily standup meeting (scrum) to share their daily work process and roadblocks.
In agile process, all stakeholders work together to evaluate and priorities all features that customer wants. Customer representatives write high level description of individual functions they want in a given software feature (user stories) and work with software development team to finalize and prioritize them. Throughout the iterative design and implementation phase of these features, the development team will evaluate and drop unnecessary user stories or features that have yet to be implemented. Developers will design and implement more important ones.
In design and implementation phase of the project, agile process constantly adjust plan base on progress of a working software. There are three level of plans: release plan, iteration plan, and daily plan. A release plan is a schedule of which a large group of user stories that represents a usable set of features that can be released together. A release plan have no details other than a list of stories to be done by a date. An iteration plan is a schedule for a subset of release plan stories. Only one iteration plan exists at a time. Developers set the estimate time that would need to implement the set of stories, usually between 1 to 3 weeks. (1) If developers’ estimation fall out of this time zone, we need to adjust the amount of user stories in this iteration. An iteration plan can have greater level of detail, such as development tasks and use cases. At the end of each iteration, there should be a working product that is tested. Feedback from customer need to be incorporated into future iterations. A daily plan is developers plan for the day. Programmers are typically working in pairs. If a developer fall behind schedule, the team should acknowledge the fact and make a new plan. Generally