Introduction to Agile Software Development
In software developing, agile practices approach is the best practice to discovering requirements and developing solutions through the collaborative effort of self-organizing and cross-functional teams and their customers and end users. It advocates,
Adaptive planning Evolutionary development Early delivery Continual improvement Encourages flexible responses to change.
This was popularized by the Manifesto for Agile Software Development.
AGILE methodology is a practice that promotes continuous iteration of development and testing throughout the software development lifecycle of the project. In the Agile model, both development and testing activities are process in concurrent time not step by step.
Agile works best for below situations:
If you can’t estimate the time you’ll need and don’t know the full scope of requirements If you don’t know whether there’s a need on the market for your software If you can’t map out the business needs, so the design needs to emerge through trial and error If you have unlimited access to your customer who’s ready for extensive involvement If you can afford to iterate and don’t need to deliver a fully functional software at once If clients don’t have a fixed budget/schedule If your customers don’t have trouble updating their software
Agile software development principles:
The Manifesto for Agile Software Development is based on twelve principles: 1) Customer satisfaction by early and continuous delivery of valuable software. 2) Welcome changing requirements, even in late development. 3) Deliver working software frequently (weeks rather than months) 4) Close, daily cooperation between business people and developers 5) Projects are built around motivated individuals, who should be trusted 6) Face-to-face conversation is the best form of communication (co-location) 7) Working software is the primary measure of progress 8) Sustainable development, able to maintain a constant pace 9) Continuous attention to technical excellence and good design 10) Simplicity—the art of maximizing the amount of work not done is essential 11) Best architectures, requirements, and designs emerge from self-organizing teams 12) Regularly, the team reflects on how to become more effective, and adjusts accordingly
Advantages of Agile model:
Customer satisfaction by rapid, continuous delivery of useful software.
People and interactions are emphasized rather than process and tools. Customers, developers and testers constantly interact with each other.
Working software is delivered frequently (weeks rather than months).
Face-to-face conversation is the best form of communication.
Close, daily cooperation between business people and developers.
Continuous attention to technical excellence and good design.
Regular adaptation to changing circumstances.
Even late changes in requirements are welcomed.
Disadvantages of Agile model:
In case of some software deliverables, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle. There is lack of emphasis on necessary designing and documentation. The project can easily get taken off track if the customer representative is not clear what final outcome that they want. Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.
References
https://www.softwaretestinghelp.com/agile-scrum-methodology-for-development-and-testing/ https://en.wikipedia.org/wiki/Agile_software_development https://www.guru99.com/agile-scrum-extreme-testing.html https://activecollab.com/blog/project-management/agile-project-management-advantages-disadvantages http://tryqa.com/what-is-agile-model-advantages-disadvantages-and-when-to-use-it/