Agile Software Engineering Life Cycle
The agile methodology believes that every project must be handled in a different manner. Requirements of a project vary from client to client and therefore it is not wise to stick to just one method of software development. In software engineering life cycle all projects are divided into small time frames, with each time frame focusing on delivery of certain sections for release.
Agile Software Engineering Life Cycle
This process combines iterative and incremental approach that helps in fast development of the project. The project is broken into incremental builds and then every build undergoes iterations that can last for 2-3 weeks. In 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 Of Agile Software Engineering Life Cycle
Agile software engineering life cycle is different from other software development approach because it is adaptive in nature as compared to others that are predictive. 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. Predictive methods are dependent completely on requirement analysis and planning at the beginning of the project.
Agile methodology does not require detailed planning, development begins keeping the features and characteristics of the software in mind and 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.
Although agile software development follows a very realistic approach it is not ideal for complex projects and there is always a risk of sustainability, maintainability and extensibility. This process has minimum resource requirements and ideal for projects where requirement undergo changes frequently. Since the documentation is less and the focus is completely on customer interaction, the entire project depends on how well the customer is able to communicate his requirements. Agile methodology enables concurrent development; the rules are nominal that can be easily employed.
Continuous Software Integration and Continue Software Testing
In traditional way of software development, the developers work on individual pieces of code for several days and once the individual units are completed they move on to integration of units. Since in every iterationthis 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. For example some companies believe that at the end of the day a developer must ensure that nothing is left unintegrated. In such a scenario the developer needs to plan all his tasks properly. 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 In Agile Software Engineering Life Cycle
Traditional ways of software development does not utilize a tester to his complete potential. As a matter of fact testers started working only after the functional requirement has been developed completely. In an agile environment the tester is a very important member of the team and he is involved in every phase of every iteration, be it planning or requirement analysis. In this methodology testing is as important as development and the product is subjected to continuous testing. The tester is working continuously in agile methodology and so, 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 initialphases of software development.