Every project must be handled in a different manner. It is not wise to stick to just one method of software development. The requirements of a project vary from client to client. Every projects are divided into small time frames in software engineering life cycle, with each time frame focusing on delivery of certain sections for release. The process combines iterative and incremental approach that helps in fast development of the project. Each project is broken into incremental builds and then every build undergoes iterations that can last for 2-3 weeks. Every iteration cross functional teams work together on various aspects of the project right from requirement analysis to acceptance testing. At the end of each iteration the outcome is shown to the customer.
Overview on Agile Software Engineering Life Cycle
Agile software engineering life cycle it is adaptive in nature as compared to others that are predictive. It is different from other software development. Predictive planning requires in depth planning which consumes lot of time and effort and even a small change in the requirement after the development has started affects the development process. It does not require detailed planning, development begins keeping the features and characteristics of the software in mind. The team changes the course of development dynamically whenever a change in requirement is requested. This approach focuses more on customer interaction and less on documentation so that the development team is sure that it is on the right path.
Continuous Software Integration and Testing
The developers work on individual pieces of code for several days. Once the individual units are completed they move on to integration of units. It is the traditional way of software development. Since in every iteration this methodology believes in making the project focus on development of high quality code, continuous integration should be followed. The concept of continuous integration requires a lot of discipline and theories may vary from company to company. Some companies believe that at the end of the day a developer must ensure that nothing is left unintegrated. The developer needs to plan all his tasks properly in such a scenario. Although, this may seem like a difficult task, the biggest benefit of this approach is that the customer can walk in anytime and see how the product is being developed and can give his feedback on what is presented to him.
Testing and Role of Testing
A tester is not utilized to his complete potential in traditional way of software development . The testers started working only after the functional requirement has been developed completely. The tester is a very important member of the team in an agile environment and he is involved in every phase of every iteration, be it planning or requirement analysis. In Agile methodology, testing is as important as development. The product is subjected to continuous testing. By the end of the project the number of defects in the system are very less in number because a majority of them have been uncovered in initial phases of software development since the tester is working continuously in agile methodology