Now a day’s much information is available on the Agile Methodology of software development. But being novice about Agile, it sometimes proves hard to imbibe that information because they talk just the same things in different words and manner. This document may not be different from those but I will try to make it as simple as possible.
While going through the soft information available on internet about ‘Agile’, the first question came in my mind is that ‘What is agile modelling? What is agile methodology? Is there any difference between these two?’ There may be some difference between these two at deeper level. But On the very higher level we can describe these two as follows:
When we try to give a meaningful shape to something the process is called modelling. During modelling, if we follow some well defined processes then we can make sure that we are building a quality product. And in case if the product is intangible, then it becomes very important to assess the development process to minimize the risk.
Agile modelling follows some best practices and processes to model a software product. This collection of practices and processes is known as agile methodology.
Process in Agile: Agile uses adaptive approach. There is no detailed requirement exists instead the customer has the vision about the product. He may not be very clear about the exact requirement. Here agile methodology takes the benefits of Iterative process of SDLC.
And multiple development cycles take place here, making the life cycle a “multi-waterfall” cycle. Cycles are divided up into smaller, more easily managed modules. Each module passes through the requirements, design, implementation and testing phases. A working version of software is produced during the first module, so you have working software early on during the software life cycle. Each subsequent release of the module adds function to the previous release. The process continues till the complete system is achieved. Here agile modelling takes benefits of Incremental process of SDLC.
Practices in Agile: Agile methodology has 12 principles which are described as below:
- Customer satisfaction by rapid delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Self-organizing teams
- Regular adaptation to changing circumstances
Above principles gives birth to agile manifesto which is as follows:
Individuals and interactions over Processes and tools: In agile development, self-organization and motivation are important.
Working software over Comprehensive documentation: Working software will be more useful and welcome than just presenting documents to clients in meetings.
Customer collaboration over Contract negotiation: Requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important.
Responding to change over following a plan: Agile development is focused on quick responses to change and continuous development.
As agile methodology supports ‘Iterative and Incremental’ approach, we have many opportunities to assess the direction project throughout SDLC. This is achieved by regular evaluation of progress made at the end of iteration.
Iterations are short time frames that typically last from one to four weeks. Iteration involves a cross-functional team working in all functions: planning, requirements analysis, design, coding, unit testing, and acceptance testing. At the end of the iteration a working product (or shippable product) is demonstrated to stakeholders. This minimizes overall risk and allows the project to adapt to changes quickly.
Advantages of Agile Methodology: From the real world business vantage point agile modelling can be advantageous in following manner:
- The adaptive approach to development greatly reduces development costs and time to market.
- Team’s work cycle is limited to one to four weeks; stakeholders have recurring opportunities to calibrate releases for success in the real world.
- Agile provides enough flexibility to teams to continuously re-plan their release to optimize its value throughout development, facilitating them to be as competitive as possible in the marketplace.