There are twelve principles on which Agile Manifesto is done.
1. The highest priority is to satisfy the customer by rapid delivery of valuable software.
2. Accept requirement changes even late in development.
3. Deliver working software frequently in weeks rather than in months.
4. Developers and business people must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and trust them to get the job done.
6. The effective method of communication within the development team is face to face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The team should be able to maintain a constant pace.
9. Technical excellence and good design are to be given attention continuously.
10. Simplicity—the art of maximizing the amount of work not done—is essential.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Advantages of Agile model:
- People and interactions are given importance 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.
Agile has came like a solution to the drawbacks of the waterfall model. Instead of a sequential design process, the Agile methodology follows an incremental approach.
Developers start off with a simplistic project design, and then begin to work on small modules. The work on these modules is done in weekly or monthly sprints, and at the end of each sprint, project priorities are evaluated and tests are run. These sprints allow for bugs to be discovered, and customer feedback to be incorporated into the design before the next sprint is run.
In this process, with its lack of initial design and steps, is often criticized for its collaborative nature that focuses on principles rather than process.