In the past, during the late 1990s, many development methodologies started attracting public attention since they proposed a better way of developing projects. Each methodology or framework was inherently based upon traditional and old ideas as to what ideal project development ought to include. However, they all had one thing in common. There was a fundamental need to collaborate, and the development team should interact closely with the project owners to build a product that could compete and sustain itself in a competitive market. Moreover, product development should be quick, with time least spent on working protocols and responding to authority. As a result, the concept of a tight, self-organizing team capable of delivering timed productivity and early product releases emerged. The Agile model is based upon these market-oriented needs and is specially designed to produce quick product increments through repetitive and sustained product development cycles known as sprints.
What is an Agile model? It is not that difficult to understand Agile. Agile believes that each project should be handled uniquely, and existing development methods should be “molded” to suit the project development process in the best manner possible. In Agile, each activity is time-boxed and has to be completed within the time specially allotted for it. Agile processes should not extend the time limit under any circumstances. The project is not developed “as a whole”. Rather, it is broken down into its constituent parts – the product features and functionalities – and each part is developed independently. Development is carried out in product incremental cycles known as daily sprints. Each sprint should result in a successful “feature” release that is tested, bug-free, and deployable. The productivity “churned” out at the end of the sprint is verified by the product owner and stakeholders. The daily sprints are repeated until all the constituent product features are developed. Once developed, all features are integrated to form a complete working product.
Incremental and iterative nature of an Agile model
The Agile model is highly flexible. It provides an opportunity to “change” the direction even after the development process begins. It is possible to incorporate the changes at any time while the development activity is underway – even late in the product development cycle. This is possible through rapid development and delivery of “shippable” product features through the incremental sprint cycles.
The Agile model is incremental and iterative.
1. Why incremental?
The entire product is not manufactured at once. It is produced in bits and pieces through the sprint cycles. Small “portions” of the product, in the form of features and functionality, keep on being developed by the team on a consistent basis. They “add” on to the product. Once all the features are developed, they can be “summed” up by integrating them to form a workable product. The product is built in small increments.
2. Why iterative?
The sprint development should be consistent and sustained. Sprint cycles have to keep on repeating until sufficient sprints are carried out and sufficient product features are developed. Since the sprint cycles have to be repetitive, the Agile development process is iterative.
Agile process models
The Agile ‘umbrella” includes several frameworks and methodologies. The most popular Agile process models are Scrum, XP, Kanban, etc. Agile Scrum and XP are most commonly used for developing software projects.
1. Extreme Programming “XP”
Typically featuring very short and frequent product releases, the XP development cycle is perhaps the “shortest” of all Agile process and models. However, in Agile, catering to exceptions is a part and parcel of the framework, and so the XP sprint cycle may extend beyond its normal tenure of seven to ten days. XP also features paired programming i.e. two or more developers collaborate and work together to develop the user stories (product features). The team develops and writes the product features. Emphasis is given to time estimation i.e. each feature development has to be estimated and completed within its stipulated time. The acceptance criterions or conditions required to mark the development as “complete” are carefully stated and followed during the development activity. Even though XP supports changes to the product design since it falls within the Agile umbrella, it is generally preferred for shorter software development projects where the product design is not likely to undergo major “structural” changes.
Scrum offers a way for small and large development teams to collaborate and work together and develop the product. It is especially recommended when the product design is likely to change over time. The framework is specially designed to support all types of changes – big and small alike – even late in the product development cycle. Development is achieved through product incremental cycles – sprints – on a consistent and sustained basis. The product is manufactured through product increments, in bits and pieces. Each piece is designed and developed independently. It is thoroughly tested and documented before it is “released”. The development process is fundamentally based upon the feedback received from other team members and the stakeholders. The product is designed and built exactly as per the client’s vision. The client is closely involved with the development team during the product development process and confirms the productivity offered by the team.