What is Agile Software Development Methodology? Agile software development is an interactive process that allows small development teams to build software functionality in a collaborative environment that is responsive to business change. Development is done in short iterations (typically weeks to months) ending with working increment of software. Salient features of this methodology are that it is quick to reacting to changes in the environment, has a greater customer commitment and a greater focus on the working product.

Why Agile SDM? The requirements of various projects in the E-governance sector keep frequently changing and therefore the software development model should factor in this constant element of change. Projects might include various stakeholders and multiple parallel activities overlapping in space and time. Agile methods actively involve the users in establishing, prioritizing and verifying requirements. This close collaboration, supported by feedback from frequent delivery of software is what makes this model suited to development of this genre of software.

Advantages of Agile SDM Agile methods typically involve a test driven approach to development, and more and early testing leads to greater quality. Agile teams now achieve measurably higher success rates (72%) than traditional application development teams (62.8%) and data warehousing projects (62.6%). An agile project incrementally delivers value to the business at regular short intervals of time which helps to provide visibility on a real scale. Even if an agile project is cut short at any point of time an agile project will delivers parts of project that works successfully while a traditional project model will not be able to deliver anything workable. Also Agile Projects are more modular and being iterative in its approach they are more responsive to the customer needs and keep undergoing refinement. The model brings in the customer as an active participant in the software development and thereby delivering in line with the priorities of the customer. Should the business need change or new technological solutions become apparent the prioritization of the requirements on the list can be easily amended and project adjusted to the new requirements.

Manageability of Agile Projects Agile project can be managed by applying various portfolio management tools to the project which will minimize the risks and maximize profits. Project metrics can be made available for the manager to have good project governance.

Factoring the change in requirements Changes in the requirements of the product can happen due to numerous reasons and a successful solution provider is one who anticipates change and is able to accommodate it into the development of the product. As computing people responsible for catering to the need of government departments, we have faced numerous situations where changes have been introduced into the products requirement at a later stage. Accommodating a change while following the traditional development model is difficult but agile development model is just the solution to take care of this problem. Agile Development practices are ideal for allowing a high degree of flexibility, evolving a project during its lifetime particularly in the early stages of the product when there is less certainty about business needs.

Agile Methods Amongst a few well established agile development models are Agile modeling, Agile unified Process (AUP), Extreme Programming, Scrum, and Feature Driven Development. Extreme Programming: Extreme Programming is a lightweight discipline of software development based on values of simplicity, communication, feedback, and courage. It works by bringing the whole team together in the presence of simple practices, with enough feedback after every release allowing the project to be progressively refined aligned with the larger goals. Scrum: Scrum is a simple framework for effective team collaboration on complex projects. Scrum provides a small set of rules that create just enough structure for teams to be able to focus their innovation on solving what might otherwise be an insurmountable challenge. Scrum is a way for teams to work together to develop a product. Product development, using Scrum, occurs in small pieces, with each piece building upon previously created pieces. Building products one small piece at a time encourages creativity and enables teams to respond to feedback and change, to build exactly and only what is needed. Scrum at its Core is governed by three major roles:

  1. Product Owners determine what needs to be built
  2. Development Teams build what is needed
  3. Scrum Masters ensure this process happens as smoothly as possible

Agile development strategy is not suited for mission critical systems such as those used for surgical procedures. It is also not very advisable to be followed by large teams that are not co located because an interaction amongst the team is one of the key elements of an agile project.

Activity Management Activity management comprises of daily scrum review, incorporating any changes as suggested by the review and some kind of burn down analysis (which actually helps to track progress and completion). After the process is completed an activity review is conducted to check whether the developed product conforms to the user requirements.

Agile Vs Waterfall Model One of the advantages of waterfall development model is that budget for each activity can be easily defined. This traditional methodology assumes requirements can be predicted upfront. As a result it fails to adequately respond to changing conditions and forces agencies to incur costs disproportionate to project returns. It assumes that requirements are fully understood by both user and implementing agency and that the requirements are unlikely to change. Yet due to the often-unique nature of government systems, software contractors typically face challenges to which they have never been exposed, rendering predicting of future needs an inherently futile task.

Agile and E Governance Agile Software Development mitigates the Risk Inherent in uncertainty by approaching a Project as Multiple Independent Tasks. The requirements on which an e-Governance software is likely to be built would change over time to reflect shifting technological and organizational priorities. As a practice widely used in the private sector, empirically agile development delivers better performing projects on time and under budget. Growing budget deficits in recent decades have rendered the Government anxious to deliver smarter, more cost-effective services to its citizens. Agile SDM is one of the best suited methodologies for development of e-governance software as developers would be able to respond well to the changing priorities and to feedback provided by the users. Agile’s flexible and iterative nature makes it one of the most suited methodologies to work in the context of e governance. Dividing government computing between 'agile' and 'platform' work could achieve cost and time savings while delivering more effective and flexible services. Mind tree one of the vendors implementing the Unique ID project is reportedly doing so based on Agile Software development model. Though Agile has been adopted as a preferred development model for various projects in US and UK it remains to be seen when India adopts it as a model for development of E- Governance Software.