In this post I will describe advantages and disadvantages of Agile Methodology in software development process. I have described in detail different Agile Software Development Methods like Agile Modeling, Agile Unified Process (AUP), Dynamic Systems Development Method, Essential Unified Process, Extreme programming, Feature Driven Development, Open Unified Process, Velocity Tracking and SCRUM.
What is Agile Methodology?
Agile methodology is a project management technique in software development process where development is based on iterative or incremental development. In this process requirements evolve through cross functional teams. In agile methodology communication and collaborations plays an important role.
Advantages of Agile Methodology:
Advantages of Agile Methodology are mentioned below:
- Team working will be an adaptive team which will be able to respond professionally to changing requirements.
- Team members do not have to spend time in efforts estimation.
- Frequent communication with clients regarding requirements leaves no space of requirement slippage or guess-work.
- Clear understanding regarding the requirement.
- Not much documentation is needed but only those very much essential are prepared which saves time.
- High quality software in least possible time with higher customer satisfaction.
Disadvantage of Agile Methodology:
Disadvantages of Agile Methodology are mentioned below:
- Efforts estimation will be tough at the beginning of the software development for bigger and complex.
- Less importance for designing and documentation.
- Project will be mess if client is unclear about requirements.
- Experience resource will be needed.
Different Agile Software Development Methods:
Different agile software development methods used are mentioned below:
- Agile Modeling: Agile Modeling is a practice based methodology used for modeling and documentation of software based systems. It is the collection of best software practices, values, principles that can be implemented in software development project in a more flexible manner than conventional Modeling methods. Agile Modeling is meant to be tailored in such a fashion that the software process meets the needs of client requirements.
- Agile Unified Process (AUP): Agile unified process is simplified version of IBM’s Rational Unified process. It is a simple, easy to understand approach to developing business application software used in Agile methodology but the concept is still from RUP. Agile Unified Process uses agile methodology which includes test driven development, Agile Modeling, agile change management and database refactoring to improve productivity.
- Dynamic Systems Development Method: Dynamic Systems Development Method is basically based on RAD model or Rapid Application Development Model. DSDM is an incremental and iterative method. Main aim of DSDM is to deliver project on time and on budget while adjusting for changing requirements throughout the way. DSDM is rooted in the software development community, but the convergence of software development, process engineering and hence business development projects has changed the DSDM framework to become a general framework for complex problem solving tasks.
- Essential Unified Process: It is an improvement of Rational Unified Process. It emphasize on use case, iterative development, architecture driven development, team practice and process practices which are taken from agile development. Idea behind this process is to take up the practice which is applicable.
- Extreme programming: Extreme programming is a light weight process which is intended to improve software quality to the changing customer requirements. It suggests releases after short development cycles which are intended to include checkpoints where new requirements can be adopted. Extreme programming is successful because it stresses on customer satisfaction. Instead of delivering everything you could possibly want on some date far in the future this process delivers the software you need as you need it. Extreme Programming empowers your developers to confidently respond to changing customer requirements, even late in the life cycle. Elements of extreme programming are programming, doing extensive code review, unit testing of all code, avoiding programming for features till they are required, flat management structure, simple and clear code, expecting changes in requirements as time passes and the problem is better understood, and frequent communication between customer and programmers. There are several drawbacks, including problems with unstable requirements, no documented compromises of user conflicts, and a lack of an overall design specification or document.
- Feature Driven Development: Feature Drive Development is an iterative software development process. It is client centric, architecture centric and pragmatic software process. It is includes best practices of various industry recognized best practices. As the name features are the most important aspects Feature is a small client valued function expressed in form. For accurate state reporting and keeping track of the software development project, milestones that mark the progress made on each feature are defined. There are five activities involved – Developing an overall model, Build a features list, Plan by feature, Design by feature and Build by feature.
- Open Unified Process: Open Unified Process is a minimally sufficient software development process where fundamental content is included because of which many details which project would deal will not be mentioned, such as large team size, compliance, technology guidance. However Open Unified Process is complete for software development. OpenUP is extensible to be used as foundation on which process content can be added or tailored as needed. OpenUP is lightweight, there is much more to agility than simply being light. OpenUP has the essential characteristics of a lean Unified Process that applies iterative and incremental approaches within a proven structured life cycle.
- Velocity Tracking: Speed is a measure of productivity in Agile Methodology. Velocity tracking method is the act of measuring. Velocity is calculated by counting number of units of work completed at certain interval which is determined at the beginning of the project. Main aim is to provide a light weight methodology of measuring the pace at which team is working and to assist in estimating the time needed to complete the project and also add value to software.
- SCRUM: SCRUM is an iterative, incremental framework for project management. Rather than a full process or methodology. In SCRUM work is confined to regular, repeatable work cycle known as sprints or iterations. So instead of providing complete, detailed descriptions of how everything is to be done on the project, much is left up to the software development team. This is done because the team will know best how to solve the problem they are presented. Scrum relies on a self-organizing, cross-functional team. The scrum team is self-organizing in that there is no overall team leader who decides which person will do which task or how a problem will be solved. Those are issues that are decided by the team as a whole. The team is cross-functional so that everyone necessary to take a feature from idea to implementation is involved. SCRUM has been successfully employed by hundreds of different companies in many different fields, with outstanding results.
What is Agile Modeling?
Agile Modeling is a practice based methodology used for modeling and documentation of software based systems. It is the collection of best software practices, values, principles that can be implemented in software development project in a more flexible manner than conventional Modeling methods. Agile Modeling is meant to be tailored in such a fashion that the software process meets the needs of client requirements. Values in Agile Modeling are extreme programming, effective communication, simplicity, feedback, courage and humility.
Agile Modeling is also based on collection Principles such as the importance of simplicity, embracing change as you are working because requirements will change over time. Recognize that incremental change of system over time enables agility and that should strive to obtain rapid feedback on work to ensure that it accurately reflects the needs of your project stakeholders. Agile Modeling should be tailored with a purpose, if we don’t know why we are working on something or we don’t know what the audience of the model/document actually requires then we shouldn’t be working on it.
Furthermore, we need multiple models in our intellectual toolkit to be effective. A critical concept is that models are not necessarily documents, a realization that enables us travel light by discarding most of your models once they have fulfilled their purpose.
Agile modelers believe that content is more important than representation, that there are many ways we can model the same concept yet still get it right. To be an effective modeler we need to recognize that open and honest communication is often the best policy to follow to ensure effective teamwork.
Finally, a focus on quality work is important because nobody likes to produce sloppy work and that local adaptation of AM to meet the exact needs of your environment is important.
To model in an agile manner we will apply AM’s practices as appropriate. Fundamental practices include creating several models in parallel, applying the right artifact(s) for the situation, and iterating to another artifact to continue moving forward at a steady pace.
Modeling in small increments, and not attempting to create the magical “all-encompassing model” from your ivory tower, is also fundamental to your success as an agile modeler. Because models are only abstract representations of software, abstractions that may not be accurate, we should strive to prove it with code to show that our ideas actually work in practice and not just in theory Active stakeholder participation is critical to the success of our modeling efforts because our project stakeholders know what they want and can provide the feedback that we require.
The principle of assume simplicity is a supported by the practices of creating simple content by focusing only on the aspects that we need to model and not attempting to creating a highly detailed model, depicting models simply via use of simple notations, and using the simplest tools to create our models. You travel light by single sourcing information, discarding temporary models and updating models only when it hurts.
Communication is enabled by displaying models publicly, either on a wall or internal web site, through collective ownership of our project artifacts, through applying modeling standards, and by modeling with others. Our development efforts are greatly enhanced when we apply patterns gently. Because we often need to integrate with other systems, including legacy databases as well as web-based services, we will find that we need to formalize contract models with the owners of those systems.
What is Velocity Tracking?
Speed is a measure of productivity in Agile Methodology. Velocity tracking method is the act of measuring. Velocity is calculated by counting number of units of work completed at certain interval which is determined at the beginning of the project. Main aim is to provide a light weight methodology of measuring the pace at which team is working and to assist in estimating the time needed to complete the project and also add value to software.
Terminologies used in velocity tacking are Unit of work and Interval.
Unit of Work: It is the piece of work chosen by team to measure velocity. It can either be a real unit like hours or days or an abstract of unit like story points.
Interval: It is the duration between each iteration in software development process for which the velocity should be measured.
To calculate velocity, a team first has to determine how many units of work each tasks are worth and the length of each interval. During development, the team has to keep track of completed tasks and, at the end of the interval, count the number of units of work completed during the interval. The team then writes down the calculated velocity in a chart or on a graph.
The first week provides little value, but is essential to provide a basis for comparison. Each week after that, the velocity tracking will provide better information as the team provides better estimates and becomes more used to the methodology.
Principles of Agile Methodology
Basically there are 12 principles upon which Agile methodology which are mentioned below:
- Highest priority to customer satisfaction by providing on-time and continuous delivery with valuable and quality software.
- Changes in requirement even at the later stage of development should be welcomed.
- Releasing working quality software in shorter duration instead of months in weeks.
- Working and quality software is the measure of progress.
- Business people and developer and everyone work collaboratively throughout the project till the completion.
- Highly motivated individual needed to complete to project. Necessary environment and support provided trust them to get the job done.
- Face to Face communication within team members so that conveying information will be the most effective and efficient way.
- Promotion of sustainable development and everyone clients, developers, testers, end users to maintain constant pace indefinitely.
- Attention towards technical excellence and good design.
- Maximizing the art of work not done – Excellence.
- Best architectures, requirements, design comes from self-organizing teams.
- Day to day basis team shows the best attitude to be more effective, compatible, adjusts and adapts responses and behaviors accordingly.
Smoothstack says
There are benefits of Agile Methodology, at the same time, it has its demands and drawbacks in using Agile methodology. Just like other methodologies, there is no perfect one. Less predictability and more time commitment that in the end, will lead the project falls off track. I think these two are the major drawbacks of Agile.