Agile Methodology – Solution for dynamically changing requirements
Agile software development is a group of software development methods based on Iterative and incremental development, when requirements and solutions evolve through collaboration between self organizing, cross-functional teams.
Agile methodology continuously strives to overcome the issues of dynamically changing requirements while still trying to maintain a well-defined process. The project will be delivered to the Business users using “Iterative Development Methodology” or the “Agile Technology” i.e. in chunks/cycles.
The process is as follows:
- Customer prepares the Business Requirements and the Business Analyst or the Engineering team reviews it. The business requirements will be gathered upfront and a single Business Requirements Document (BRD) will be written for the entire upgrade
- During design and Implementation stages, the Engineering team writes User Stories and the analysis of issues at various stages. Customer reviews these on regular basis and updates the requirement specifications accordingly. Testing team would follow up on regular basis at every stage until a consolidated documentation is prepared. This is to ensure that the Customer, the Engineering team and the Testing team are at the same page always and thus ensuring complete test coverage. The business requirements scope from the BRD will be divided into various “cycles”. Functionalities will be summed into a cycle, where appropriate
- Functional requirements will be gathered at the beginning of a cycle, and a Functional Requirements Document (FRD) will be written for each cycle. While the Engineering team starts the implementation, the Testing team starts with test planning, test strategies and test cases preparation
- Once the functionality for a cycle is delivered, the team will start working on the next cycle. There will be 3 weeks of development and 1 week of testing handled by the QA persons
- Once the testing cycle starts, the Test team can now focus more on major test items such as Integration, Usability Testing and System Testing etc
- As and when the Developer implements the code, the Testing team identifies if the application can be built using this code for a quick testing. This is to identify the defects at the early stage so that the developer can fix them in the next round on priority basis and continue with further development. This iteration continues until the end of the code implementation
Thus agile methodology strives to be an efficient way for implementing a huge application in the long run.