Agile development is a relatively new way of managing IT development teams and projects. Agile methodology is an alternative to traditional project management, such as Waterfall, typically used in software development. Agile SDLC model is a combination of iterative and incremental process models. The focus is on process adaptability and customer satisfaction through rapid delivery of a working software.
The Agile method breaks a project into small incremental builds. These builds are provided in quick iterations. Each iteration typically lasts between one to three weeks. Every iteration involves cross-functional teams working simultaneously on various functional areas including planning, requirements analysis, design, coding, unit testing, and user acceptance testing. At the end of each iteration, a working software is displayed to the user and other important stakeholders.
Types of Agile Methodologies
It may not be too much of a stretch to say that the Agile methodology is still evolving. Like any other SDLC, the agile methodology also has multiple ways of achieving results.
DSDM is probably the original Agile development method. DSDM was around long before the term ‘Agile’ was even invented. DSDM is based on all the principles we’ve come to know in Agile methodology. DSDM is popular in the UK, and not used too much elsewhere.
Scrum is another Agile development method that concentrates particularly on how to manage tasks within a team-based development environment. Scrum is the most popular and widely adopted Agile method. The reason for its popularity, I think, is because it is relatively simple to implement and that it addresses many of the management issues that have plagued IT development teams for decades.
XP (Extreme Programming) is a radical Agile methodology, focusing more on the software engineering process and addressing the analysis, development and test phases. The novel approaches make a substantial difference to the quality of the end product.
DSDM is probably a complete agile methodology, whereas Scrum and XP are easier to implement and complementary because they tackle different aspects of software development projects. Both are founded on very similar concepts.
Like any competing system, every software development method has its fans and haters. A few years ago, Waterfall was popular, particularly for large projects. Each step of the Waterfall method was executed in detail and with patience. The next step will not commence till all stakeholders have agreed on the previous step and signed off on it.
Today, one does not have the luxury of time. Hardware, memory and disk space have reached levels where optimisation plays second fiddle to quick delivery. Intense competition in all walks forces users and stakeholders to find ways to beat the competition and milk the small time leads as much as possible.
Given this scenario, unless you are developing something internal and non-competitive, a quick delivery is the most critical. The Agile method fits this environment perfectly. In addition, the Agile method has the following advantages.
- Promotes teamwork and cross training.
- Functionality can be developed rapidly and demonstrated.
- Resource requirements are minimal.
- Suitable for both static and dynamic requirements.
- Delivers early partial working solutions.
- A good model for environments and requirements that change regularly.
- Minimal rules, documentation easily deployed.
- Enables concurrent development and delivery within an overall planned context.
- Little or no planning required.
- Easy to manage.
- Large flexibility to developers.
Is Agile Perfect?
Nope. The Agile method has a number of perils and issues that need to be understood and avoided.
- Depends heavily on customer interaction. If the customer is not clear, the team can be driven in the wrong direction.
- High dependency on individual competence.
- There is minimum documentation generated. Lack of detailed documentation inhibits the transfer of technology to new members.
- Not suitable for handling complex dependencies.
- The risk of sustainability, maintainability, and extensibility.
- Delivery management dictates the whole process. Functionality and specifications may be adjusted to meet the deadlines.
- Frequent changes by users at each iteration make it difficult for developers and testers to deliver.
- Users not clear on requirements.
- Agile being short term, incorporation of automated testing is a challenge.
- The Agile development could kill innovation in developers. Process and users are more important.
The Agile software development methodology is becoming the accepted method for small projects and may be the development way for the future. As small projects become more popular in tiny OSs such as Android, Agile will become stronger, and will be used more often.
At Sosaley, we use Agile for all our large projects as well innumerable small projects running to less than 90 days. For a detailed look at the Sosaley Total Life Cycle Management that uses the Agile Methodology, please click here.
Sosaley Technologies is a growing company leading in the development of firmware, embedded systems, and other automation hardware and software. Sosaley is led by industry veterans who have pioneered software development in India, and have worked with companies such as Juniper Networks, Citibank, and many other Fortune 500 companies.
Sosaley is working with leading companies in India and elsewhere in multiple domains. Click here to read more about Sosaley Technologies.