Agile software methodology is a set of software development methodologies that rely on an iterative and incremental development process, where the project requirements and solutions evolve from self organizing cross functional teams. There are a number of agile development methods existing which promote collaborative team work, development and make the process adaptable through out the project life cycle.
Agile Developments include:
- Agile Unified Process (AUP): This forms the simplified version of IBM Rational Unified Process (IRUP). This follows simplicity and agility and focuses on high value activities and independent tools. The model is to understand the organization’s business, problem domain and identify a solution to address the same.
- Dynamic Systems Development Methods (DSDM): The origin of DSDM comes from Rapid development methodology. This requires continuous user involvement and follows an iterative and incremental approach. To ensure successful projects with DSDM, first it is required to ensure that different actors of the project like senior management and other employees are motivated from the beginning itself. Second required is the commitment of the management to involve end-users to test and finally judge the prototypes which are fully functional. Third, this requires a set of skillful team members. Finally, a strong and supportive relationship is required between the vendor and the customer.
- Essential Unified Process (EssUP): This is an extension of the Rational Unified Process (RUP) which identifies RUP practices such as defining use cases, following iterative model of development, architecture driven approach, CMMI and agile. EssUP is supported by IBM Rational Toolset, Eclipse and Microsoft Visual Studio.
- Extreme Programming (XP): This is a software development methodology which mainly concentrates on improving the software quality and responsiveness to varying customer requirements. It suggests frequent releases in short cycles concentrating on improving the productivity and provision for adopting new customer requirements. It suggests programming in pairs and having extensive code reviews, avoids unused features, unit testing, expecting customer’s changes and a flat management structure.
- Feature Driven Development (FDD): This is similar to DSDM in following an iterative and incremental approach. Its main target is to deliver fully functional working software consistently in a timely manner. Best practices followed here are Domain object modeling, configuration management, inspections, regular builds, feature teams and visibility of progress.
- Open Unified Process (OpenUP): This forms a part of Eclipse Process Framework which comes with the eclipse foundation. OpenUP extracts the essential characteristics of RUP. It targets smaller teams which are co-located.
- Scrum: This is the most common agile development method used which follows an iterative and incremental approach. This can be used to run software maintenance teams although it was intended for software project management. Major roles in scrum include Scrum Master who will be responsible for maintaining the process, Product Owner who is the stakeholder and represent the business and Team which is cross functional having about 7 persons who will actually develop and test the application. Scrum follows an empirical approach which states that the problem cannot be wholly defined and hence focuses on the team’s capability to quickly deliver and respond to new upcoming requirements.