The agile software development methodology is considered the fastest development process, and this is achieved by avoiding anything that wastes time and eliminates unnecessary activities. It follows the incremental and evolutionary model principles and decomposes the requirements into many small incremental parts, and these parts are developed over one to four weeks. It incorporates the changes requested by the customer efficiently and produces very little documentation.
Agile Manifesto – Important for Agile Development
- Individuals and interactions over process and tools: Individual interactions are much more important than the process itself or any used tools.
- Working software over comprehensive documentation: Producing working code is much more important than writing extensive documentation.
- Customer collaboration over contract negotiation: Consciously, the customer must be involved in the project, possibly by making some customer representatives part of the team.
- Responding to change over following a plan: The contract negotiation that binds the customer to a contract and then finally makes them sign and obeys should not focus; rather, changes are welcome over the following plan.
Agile Methodologies
Agile is actually an umbrella term, and there are many development methodologies actually qualify as agile. These are Extreme programming (XP), Scrum, Unified Process, Crystal, DSDM, and Lean.
Agile Model – Principle Techniques
The agile model has four important manifestos which emphasize many techniques.
User Stories: The requirements should be in the form of user stories or, in other words, informal ways to under the user’s requirements. This approach is simpler than use cases.
Metaphors: The development should start based on the user stories and customer feedback, which can be refined over time. Metaphors are actually the overall design of the software or a common vision of what is required.
Spike: The spike is like a prototype or program written to explore potential solutions and evaluate the alternatives.
Refactor: Once the software works and customers agreed, then go for refactoring without affecting the behavior. This mainly improves efficiency and structure or management of the codebase.
Agile Model – Nitty Gritty
- Only one increment is planned, developed, deployed at the customer site, and no long-term plans are made.
- Each iteration may add even a small amount of code, but still, after a time box, an increment is made, and that is deployed at the customer site. Sometimes the incremental feature may be tiny, but still, these are deployed.
- Face-to-face communication is favored over written documents. The team members should communicate with each other rather than passing documents.
- The development team should share single office space to facilitate face-to-face communication, and the team size, when it is small, works best. The size should be between five to nine people for the development of small projects.
- The effectiveness of communication mode is face-to-face communication using a whiteboard. If not possible, then video conversation. If not, then phone or videotape or email conversation or audiotape. However, the worst mode of communication is via documents.
- The primary measure of progress is the incremental release of working software.
Agile Model – Requirement Management
In the agile model, the requirements are keep coming as in any evolutionary model. All the requirements are maintained in terms of their priority. Each time a requirement (as the user story) comes, these are put in the appropriate place based on the priority. For every next incremental development, always consider the higher priority requirements. However, it may be possible that queued requirements priority can go up or down or even be removed based on the customer feedback.
Agile Model – Documentation
It should be concise, describe the less likely to change information, and sufficiently accurate, consistent, and detailed.
Agile Model – Advantages
The agile model has many advantages that help deliver high-quality software products in the least time and least cost.
- Frequent delivery of versions – once every few weeks.
- Requirements change requests are easily accommodated.
- Close cooperation between customers and developers.
- Face-to-face communication among team members.
Agile Model – Disadvantages
The definition of the agile model is rather sketchy, several interpretations may be possible, and therefore, high-quality people skills are required. The long terms plan is not made here, and it only focuses on the increments. Consequently, it is harder to manage features and customer expectations as requirements are kept on coming. Also, upfront, it would be not easy to quantify the cost, time, and quality because here, we do not know how many increments or exact features are there.
The other difficulties are there, like the knowledge is shared among the developers through verbal communication rather than any formal document. Therefore, after the developers disperse, that knowledge may vanish, and sometimes the verbal communication can be misinterpreted. When the project is complete, and the team disperses that time, maintenance may become difficult.
Agile Model – Popularity
Agile models are used extensively in the industry, and the reason for that is the project characteristics have changed. Earlier, all programs were developed from scratch, and it was taking years, which was the reason for the popularity of waterfall-based models. However, nowadays, service-oriented projects have become prevalent, a lot of code reuse has been made, and customer involvement and satisfaction are crucial. This is achieved with incremental development and deployment of software at the customer site. So, this is the reason why the agile models are extensively used and popular.
Reference
- Fundamentals of Software Engineering Book & NPTEL Video Lectures by Rajib Mall.
189 total views, 1 views today