07 Jun, 2010
Written by Effie Sha
Beijing RayooTech Co., Ltd.
What is Agile Software Development
Agile Software Development (ASD) is a methodology in software application development for the creative process that anticipates the need for flexibility and applies a level of pragmatism into the delivery of the finished product. Agile software development can keep code simple, testing often, and delivering functional bits of the application as soon as they’re ready. ASD focuses on building upon small client-approved parts as the project progresses, as opposed to delivering one large application at the end of the project.
Key Features of Agile Software Development
- Iterative: Iteration is an entire application distributed in incremental units. Development time of each iteration is small (for example couple of weeks) fixed and strictly adhered to. Every iteration is a mini increment of the functionality and is build on top of previous iteration.
- Active Customer Involvement: Clients can participate in face-to-face interaction of agile software development. All Iteration needed to test and approved by clients. The feedback from clients will be collected and implemented in the next iterations, and doing this can reduce risks and ensure higher client satisfaction.
- Feature Driven: More emphasis is on providing the required features in the application. 80/20 principle is applied to decide the 20% features which would be used 80% of the time.
- Fixed Time: Each iteration has a fixed time range in delivery.
- Priority based delivery: According to client need prioritization of features and development risks etc, high priority features will be developed firstly. The project priorities will be re-evaluated after every iteration process.
- Adaptive: The application can cater to inflow of new requirements throughout its development because the methodology in general is very adaptive. Goal is not to remove the uncertainty in the very beginning, but instead, it is to adapt to the changing needs.
- Empowered Teams: Usually, the project teams are small and have frequent interaction and communication. No separated team to manage project due to entire team is actively involved and empowered to make decisions.
- People Centric: Using the appropriate experts to do the development more than just following the development processes. Then there will be more time to develop and test software, minimized the documentation and other non-development activities.
- Rapid Development: Light weight development technologies make the development be done quickly.
- More Disciplined: The whole development process involves lots of team and self discipline which requires highly skilled and organized team members in order to deliver each part of software correctly in time.
- Simplicity: Keeping things as simple as possible and ready to open for any changes.
Agile vs. Waterfall: Practical Differences in Methodology
As the industry learned more about software development, development technologies for managing and predicting the cost of projects came into use. The methodology that has dominated software development projects for decades is called ‘waterfall’. In 1970, Winston Royce described a serial method for managing software projects through the five stages shown in the following figure:
One of the most important differences between the agile and waterfall approaches is that waterfall features distinct phases with checkpoints and deliverables at each phase, while agile methods have iterations rather than phases. The output of each iteration is working code that can be used to evaluate and respond to changing and evolving user requirements.
Waterfall supposes to have well understanding of the requirements at the beginning. However, in software development, usually, stakeholder have no idea what they want and their exact requirements. With waterfall, project development team rarely delivers what the client wants even it is what the clients asked for.
Agile methodologies introduce iterations. Software project development team works with stakeholders closely to define prototypes, concepts or other visual elements to solve problems. The project development team defines the user requirements for the iteration, develops the code and test application, finally, clients verify the results.
Benefits to the Client
- Clients are more actively involved in software development than ever and get higher priority.
- Regular and frequent application status and situation will be sent to clients immediately.
- Requirements are accepted after each iteration
- The key functionalities can be available to use as soon as possible since the methodology emphasizes rapid delivery.
- Delivery is defined by fixed timescale. Clients will receive functionality by a fixed time period.
- More testing is done, higher software quality is delivered.
Benefits to the Software Development Teams
- Software Development teams are involved more actively in all stages. The teams collaboratively take the decisions and are more empowered.
- Teams can focus on the specific requirements at any given point of time since the software development is incremental.
- Software development team would spend more attention on project development, not on documentation.
- The teams will receive feedback frequently to promote software project efficiently.
- Spending less time to collect requirements as these requirements are not gathered upfront and are implemented as and when they arise.
- Spending less time to make plans.
- Other non-development work related cost will be reduced.
[ All rights reserved, reprint, please specify source and the author. Thank You. ]