Agile software development is a group of methodologies whose basis is iterative development. The requirements and alternatives in this develop through collaboration between self-organizing cross-functional teams. Agile methods usually endorse a well-organized task management process that promotes many inspection and version. It endorses a management philosophy that induces teamwork, self-organization and accountability, a set of engineering guidelines intended to enable swift delivery of high-quality software, and a business procedure that aligns development with customer needs and company goals. Agile methods promote an iterative mechanism for producing software. They further improve the iterative aspect of the software lifecycle by tightening design-code-test loop to at least once a day (if not much more frequently) instead of once per iteration. The theoretical foundations of this framework are located in modern methods to operations management and analysis, such as trim manufacturing, gentle systems methodology, conversation function theory (network of conversations approach), and Six Sigma.
Agile Vs Waterfall
Waterfall Model: The Adoption of waterfall has helped to drive down the failing rate of software development tasks, but despite having rigorous job management and procedures, a full 70 percent of software assignments using this strategy neglect to meet their aims. To put this in perspective, waterfall software projects have not even half the success rate (66 percent) of exceeding Niagara Falls in a barrel.
Figure: The waterfall process for software development
Agile methodology differs from Waterfall in several ways, however the major point of difference is the fact in the waterfall process there are several inspections completed in phases and the team is likely to deliver a specific part in each period, however in agile the team is likely to perform their task in iterations instead of phases. By the end of every iteration, the deliverable expected is a working code that can be continuously improved in order to deal up with the ever before changing needs of the challenging client. However, in case of Waterfall, the assumption is that the needs and requirements of your client are known specifically right at the start of the task. Alibi the software development industry is in a way that, it is very difficult to understand the exact requirements of the customer at the beginning of the job. This is actually the major shortcoming of waterfall, where the development team is rarely able to meet the expectations of the customer. Agile methodologies adopt iterations. Small clubs interact with stakeholders to establish quick prototypes, proof of principles, or other aesthetic means to explain the challenge to be fixed. The team identifies the requirements for the iteration, builds up the code, and defines and works designed test scripts, and the users confirm the results. Verification occurs much earlier in the development process than it could with waterfall, allowing stakeholders to fine-tune requirements while they're still relatively easy to change.
1. XP
Extreme development mainly focuses on the development; it generally does not lay too much focus on the management point of view of the software projects. The primary purpose with which XP was designed was that all organizations could choose it for free in its entirety or partly.
XP development
The XP project begins with the original planning stage. That is followed by a wide array of iterations, and the merchandise continuously increases with each iteration, the final outcome of each of these iterations is marked by the customer's popularity. Finally, when the user is satisfied with the software and all its features meet up with the customers' expectations, then your iterations are quit and the team delivers the ultimate software to the customer. Users write "user stories" to describe the need the software should fulfil. Individual reports help the team to calculate the time and resources essential to build the release and to determine user acceptance assessments. A customer or a rep is part of the XP team, so he or she can add fine detail to requirements as the software is being built. This enables requirements to develop as both users and developers define what the merchandise can look like. To develop the program for release, the job team fragments the whole project into many iterations. The program clearly clarifies each iteration and the jobs to be carried out in that particular iteration. After each iteration, the users do tests to check on their approval by corresponding the results of the iteration with the user stories. In the event, the users find any pests, then the activity is cut out for the team to eliminate those bugs within the next iteration.
Iterative user approval testing, theoretically, can bring about release of the software. If users decide that enough user reviews have been delivered, the team can make to terminate the job before all of the originally planned consumer experiences have been put in place.
Figure 5 shows a simplified version of XP.
XP rules and concepts
The most important concepts are given below:
· Integrate often: Development clubs must combine changes in to the development baseline at least once a day. This concept is also known as continuous integration.
· Project velocity: Velocity is a measure of how much work gets done on the task. This important metric drives release planning and program updates.
· Pair encoding: All code for a development release is established by two different people working jointly at an individual computer. XP proposes that two coders working mutually will satisfy consumer tales at the same rate as two coders working only, but with much higher quality.
· User history: A end user story identifies problems to be resolved by the system being built. These experiences must be compiled by the user and should be about three sentences long. Customer reviews do not express a remedy, use technical terms, or contain traditional requirements-speak, such as "shall" assertions. Instead, a sample user history might go like this: Search for customers. An individual tells the application to find customers. The application asks the user to specify which customers. After the end user specifies the search standards, the application comes back a list of customers reaching those criteria.
Because user testimonies are brief and somewhat hazy, XP will only work if the customer representative is on hand to examine and approve individual story implementations. That is one of the primary objections to the XP technique, but also one of its biggest strengths.
Scrum
In rugby, 'scrum' (related to "scrimmage") is the term for a huddled mass of players employed with each other to obtain a job done. In software development, the work is to put out a release. In software development, scrum surfaced out of fast prototyping community, because of the need of any strategy for prototypes that might be supportive within an environment where in fact the initial requirements are not complete and specific at the start, and also maintains changing continuously through the development period. Scrum differs from XP because it not only includes the development process but also lais focus on the managerial aspects.
Scrum management
In the center phase of every Scrum project, there is always a whole lot of piled-up work. This backlog gets accrued mainly through the planning stage of the release and the opportunity of release is mainly described by this. Following the team completes the job range and high-level designs, it divides the development process into some brief iterations called sprints. Each sprint is designed to implement a fixed variety of backlog items. Before each sprint, the associates identify the backlog items for the sprint. At the end of a sprint, the team reviews the sprint to articulate lessons learned and check improvement. During a sprint, the team has an everyday assembly called a scrum. Each team member explains the work to be achieved that day, improvement from your day before, and any blocks that must definitely be cleared. To keep the meetings brief, the scrum is meant to be conducted with everyone in the same room-standing up for your meeting.
When enough of the backlog has been integrated so the end users believe the release will probably be worth putting into development, management closes development. The team then functions integration testing, training, and documents as essential for product release.
Scrum development
The Scrum development process concentrates on managing sprints. Before each sprint starts, the team designs the sprint, figuring out the backlog items and assigning clubs to these things. Teams develop, wrap, review, and adjust each of the backlog items. During development, the team determines the changes essential to use a backlog item. The team then writes the code, tests it, and documents the changes. During wrap, the team creates the executable necessary to display the changes. In review, the team demonstrates the new features, provides new backlog items, and assesses risk. Finally, the team consolidates data from the review to upgrade the changes as necessary.
Following each sprint, the entire team-including management, users, and other interested parties-demonstrates improvement from the sprint and reviews the backlog progress. The team then reviews the rest of the backlog and brings, gets rid of, or reprioritizes items as necessary to account for new information and understanding accumulated through the sprint.
Figure 6: The Scrum process
Scrum concepts
Here are some of the most crucial concepts:
· Burndown graph: This graph, modified every day, shows the work staying within the sprint. The burndown chart provides the dual reason for tracking the progress in sprint and also helps choose when the items have to be postponed from the existing sprint to the concurrent sprint.
· Product backlog: It offers a comprehensive set of all certain requirements, including the bugs to be removed, the advancement requests created by the user, usability recommendations, and efficiency improvement which will not form an integral part of the current product release.
· Scrum Get good at: He's in charge of the management of the entire task. A person can also be qualified by attaining training from an existing Scrum Get better at.
· Sprint backlog: It gives a set of all the backlog items designated to a sprint, however, not yet completed. Commonly, almost everything which shows up on the sprint backlog is cleared off within two days and nights. This functions as a performance meter for the team, and provides an indication about the amount of effort that should be put-in to be able to complete the sprint.
AGILE SOFTWARE DEVELOPMENT IN INDIA:
Agile software development is an easy growing approach which has been implemented by many companies in India. Microsoft, Google and Yahoo! were among the first professionals of agile methodologies, however, now agile systems are being implemented by big, non-software companies like British Telecom and Ericsson, who have been business IT customers, says Anurag Shrivastava, MD, Xebia India. There has been an exponential growth since 2004. Currently, lots of the biggest names in software have initiated tasks that use agile software while others are using agile for some reason or the other in their projects. It is becoming easier for the smaller size companies to adapt to agile while the bigger ones are slowly addressing it. The best amount of companies practicing agile are positioned in the silicon valley of India i. e. Bangalore. However, eventhough the amount of companies with understanding of agile is more in Bangalore, the other metros and bigger cities too are capturing up. E. g The firms in Mumbai, Delhi, Pune, Hyderabad etc.
Adoption of agile software is becoming rampant in various companies having occurrence in product and service categories. Time to attain the market and efficiency enlargement will be the key factors that are driving the speed of adoption. In a nutshell, there is inside motivation. In case of services, the main element factors driving a vehicle adoption rates are peer pressure and competitive advantages which basically means there is external drive.
Agile methodologies (Extreme Programming, SCRUM) have started getting wider approval in the program industry and in many cases, customers insist upon heading the Agile method for various reasons.
In the original software development process, customers find the view of the software at a pretty late stage and it could no longer fit their real and changing needs. Agile stimulates a more collaborative model for software development with significant and regular interactions between the customers, creators, and stakeholders.
In the SDLC waterfall model, need gathering and evaluation is the first stage, and then the product is developed. It hardly leaves a opportunity for necessity changes in the later periods. Agile welcomes necessity changes even at the later levels in the development routine.
Many times, customer has a eyesight about the software but does not know the finish tips. In Agile, he could get mixed up in development process at regular intervals and continue refining the perspective even through few changes in the necessity. In few domains where business cases are changing fast, Agile could be a much better and faster way to turn out with quick software to fulfil immediate requirements.
This view point can be be observed from the have a discussion of Ramana Rao, VP of Anatomist Q3 Technology where he distributed his view on Scrum and Agile development methods utilized by Indian software companies. "I think Scrum and Agile development methods have started out making their make in India. As a matter of fact, many companies have began leaving the traditional Waterfall model. The change is imminent as customers strat to get unequivocal in their demand of "quickly watch things working". Companies will be successful as long as they could manage shorter learning curves, impose strict quality recommendations within constantly dwindling development iteration's and at the same time reduce rework. "
Recently there have been a whole lot of talks regarding the integration of offshore programming and agile software development to be able to mitigate the down sides associated with just offshore programming. "offshoring" of software development option has seduced attention due to some relative and perceived great things about cost effectiveness, well-timed services, and swift access to various technical functions for increased productivity. Agile programming methodologies such as Extreme Development (XP), Scrum, DSDM, Test Driven development (TDD) are ultimately fitted to offshore development. Well-planned milestones, recurrent iterations and close engagement of your client in the development process ensure that the software development team is actually on track. Any deviations from the expected record are corrected early on in the development circuit.
India being one of the preferred countries for offshoring, agile software development has become even more relevant to the software companies here. This is also shown in the recent survey by Forrester which says "IT organizations must maximize their processes to better support the business enterprise, keep your charges down, improve quality, and improve time-to-market. Many have turned to offshore outsourcing or Agile application development procedures to help addresses these issues - however, not both. Indeed, given Agile methodologies' powerful developer/customer discussion and light documentation requirements, the two approaches seem diametrically opposed. However, companies that get better at the complexity of merging the two types of solutions can further reduce costs and also improve their ability to talk to remote development resources, an effort for all companies doing just offshore outsourcing. The result? Companies doing just offshore work can better meet their customers' needs, and Agile development groups can cut costs. "
For the goal of integration and sharing of the information among the firms that are planning to use Agile software development and those which may have already carried out the strategy, Agile Software Community of India (ASCI) was made. ASCI, today is a signed up modern culture founded by several agile fanatics and practitioners from companies that practice Agile methodologies. ASCI was essentially initiated as a discussion board for software professionals from various organisations to meet and promote various experiences regarding software techniques and methodologies. The key focus in case of ASCI is Agile technique and related light-weight methodologies. ASCI is considered as an institution that facilitates and supports light weight methodologies' invention for software development. ASCI has collaborated with various colleges and universities to increase recognition related to agile software within the academic sphere. So far ASCI has been successful in organising various workshops and corporate conferences on agile software in a variety of parts of India. The basic goal of these workshops is to increase knowing of Agile in India.
The various companies which work in the field of Agile Software Development and have been a dynamic part of ASCI are
ThoughtWorks Subex Systems Curam Software BNP Paribas India Solutions
JKT IRIS Spectra Power TataConsultancy Services
Global Logic Novell Cordys Saviance Technologies
Conchango Virtusa CDC Software
Pragati Software Pvt. Limited
First ECG Tieto Enator
Infotech Global
Brainwave
Xebia R Systems
Agile at Technology Mahindra Ltd.
Tech Mahindra Ltd. (TechM) formerly known as Mahindra Uk Telecom (MBT) can be an Information Technology company company headquartered in Pune, India. It is a jv between Mahindra & Mahindra Small (M&M) and Uk Telecommunications plc (BT). It's the 5th major software exporter in India (Nasscom, 2009) and 1st greatest Telecom Software Professional in India (Tone of voice & Data, 2009).
British Telecom: The Client
British Telecom is also one of the key clients of Technical Mahindra. The business was successfully delivering large and intricate solutions in a vibrant time frame, but failing woefully to deliver the results in an suitable timeframe. Reinforcement of the current technology (BT used waterfall procedures to provide its clients) had not been the solution as some of the problems encountered by the company stemmed from the waterfall lifecycle.
To overcome the existing bottlenecks and problems in the current systems, the company needed iterative and incremental (evolutionary) approach to software development. They needed self managing clubs with only that degree of governance and control that can propel them to deliver affordable and time sure answers to changing needs of the client. Agile development offered these and hence British Telecom decided to "go" Agile and develop and deploy the machine using its Indian JV partner Tech Mahindra.
Development stage
Tech Mahindra generally used its resources to build up Agile software owing to increasing client demand for execution.
Training
For putting into action Agile, workout sessions were conducted for at two phases. The first was training the Managers who become Project leads for producing the Agile solution in the foreseeable future. The second was training the program developers. Contrary to the common understanding that trained in Agile requires considerable training, the business conducted 3 day workout sessions for programmers and 3 + 2 day workout sessions for managers. The excess two days of training was focused inspiring waterfall managers to become Agile managers.
Developing Agile system
Agile systems performed in a highly collaborative manner by self-organizing teams. To reap the maximum benefits of the system in the shortest period of your time and in the very best and reliable manner, Technology Mahindra made a decision to use it through matrix composition.
Daily meetings: Daily conferences were conducted to truly have a feedback on last day's goal and new goals/deliverables were place for the following day.
Every week deadlines: The code made by the designers was examined with the client on a every week basis and therefore advancements were made at a week's interval.
Pilot Phase: The projects were divided and worked well upon in periods. Each of these stages at Technical Mahindra experienced a Pilot Stage. This essentially supposed that a no frill model was initially tested with customer and then if certified by the client frills were added later.
Stress on records: With an try to standardize the complete process, an increasing effort was designed to document the complete process - at every level with integration level.
Implications
Financial costs and benefits
The highest cost mixed up in project was the price tag on execution. This cost was borne by your client, Uk Telecom. Since training included 3 (or 3+2) days of training working out costs were pretty low. When looked at these costs with a longer time frame, it was discovered that implementing Agile ended up as being a cheaper option as circuit time reduced significantly.
Resistance of the managers
It is often quoted by many that Agile does not require comprehensive training and development, that it generally does not require know-how of the best order to provide quick replies to changing client specification. All it requires is a change in mind collection. While the conditions stated formerly are still better to satisfy, changing mind set is the largest hurdle. Tech Mahindra encountered the same hurdle by means of resistance from senior level and project managers to adopt the new ways. It took a while for the business to overcome the original inertia. But this didn't result in any severe result like refusal to comply with the change or increased staff turnover.
Improved response rate
Agile software development overcomes the restriction of waterfall model regarding its inflexibility in breaking a job into separate phases. With Agile set up, Tech Mahindra will make short term commitments, each one changing as certain requirements of the project changed. Apart from giving your client enough scope to comprehend end the program in stages, it offered Technical Mahindra a buffer that if it misinterpreted the requirements of your client then it might make progressive changes at small intervals (say a week) instead of discovering at move out day that the perfect solution is developed doesn't solve clients' problem.
Effect of the Matrix
Matrix management is a method of managing an organization (or an integral part of an organization) through a series of dual-reporting relationships instead of a far more traditional linear management composition. As suggested by the matrix, many employees at Technical Mahindra were required to are accountable to at least two professionals. This created conflicts of pursuits at some places while triggered interior friction on some instances. But these limits were small set alongside the gains attained by the business through quick and set up percolation of the learning.
Benefits
The following will be the benefits of putting into action agile development systems in an corporation:
1. Earnings- Since in agile development, little time is spent on planning, and the execution is iterative, it ensures some early on inflow of income, which may be used as functioning capital for even more activities.
2. First mover's benefits- It has a Shortened development cycle-time of 75%. By putting into action this process businesses ensure an early on entry in to the markets, which would inturn help them take the first movers advantages. The incremental delivery system helps the cause of an early on delivery.
3. Quality- In comparison with the traditional form of working where the testing of the product is done only by the end of the circuit, this process has the good thing about inspection at regular intervals and at the end of various stages. This ensures a zero-defect outflow to the next process, which not only ensures an increased quality but also helps reduce additional costs and time which would be incurred got the defect not been discovered at the early stages.
4. Visibility- In the traditional process, almost all of the communication was done in the written form, but in agile development the stakeholders have regular meetings in order to go over key issues and to update each other on their day to day operations and progress. This visibility means that the prospects from the project and the obligations of the task members are clear.
5. Risk Management- In addition to the benefit of visibility, the rule of personal conferences also reduces the risk involved in the task. Through these meetings the key issues can be discovered and handled at the initial with the co-operation of the required stakeholders (all of whom would be present in the conferences). Which means this ensures that the right corrective actions can be taken while there's still time to make a difference.
6. Overall flexibility- In traditional development assignments, a detailed plan is made prior to the start of any job and the role of every stakeholder is defined therein. But then due to administrator think (where he declines to go back on his plan) it is very difficult to change the plan in case there is any glitches. However, this matter is properly dealt with by making use of agile development, where change is accepted, in fact it is expected. Here the timescale is fixed and requirements emerge and progress as the merchandise is developed. The major requirement for this is coordination between the group participants, understanding one's responsibility, potential to accept mistakes and be prepared to make remedies to the same.
7. Cost Control- The timescale is set in this process and so is the cost. The task has a fixed budget, so therefore only the range of the product and its features are adjustable and not the cost.
8. Customer Satisfaction- Customer satisfaction is achieved by rapid delivery of goods. The main element factor to client satisfaction is to provide custom-made products and services to him. The process provides this versatility and hence permits individual customization with the changing needs of the customer. This enables the business enterprise to form a permanent relationship with the customer.
9. Promised Product Delivered- In agile development, a whole lot of emphasis is laid on delivering the right product to the client. The product/service emerges and evolves through the course of the project, and hence provides a built-in device which ensures that the delivered product is as per customer prospects.
10. Motivated employees- In agile development, small clubs are formed for the execution of projects. These groupings meet regularly to go over the developments in the job. This active involvement, cooperation and collaboration has an opportunity for each member to tone his concern and give his views on important issues. This makes the complete experience very rewarding and helps in creating a very congenial environment to work, where all the employees are motivated to perform better and face up to the challenges.
The diagram below displays the distinctions between agile and traditional development methods. By delivering working, analyzed, deployable software by using an incremental basis, agile development deliversincreased value, visibility, and adaptability muchearlier in the lifecycle, significantly minimizing task risk.
Source: www. versionone. com/Agile101
Problems:
The problems of agile software are the following:
Active user involvement and close marriage are needed in the entire length of the development period. This phenomena is very efficient and makes sure that the right product is offered. It is one of the primary tenets of agile software development that ensures good management of most expectations. However these tenets require an individual to devote huge amounts of time and expect him to commit himself totally during the whole course of the project.
During software development, various requirements emerge. This creates the essence of agile which symbolizes versatility. Flexibility in essence means ability to improve the plan of action whenever required also to make sure that the right final result e is shipped. A couple of two disadvantages to this concept. One of them is opportunity for range creep, which can raise the risks of projects. The other disadvantage is there is less reliability at the start and during the course of the job regarding what product it would deliver. This in truth can make things much more difficult to comprehend the situation of the job and work out for jobs where in the purpose is to truly have a continuous price. Without complete understanding of what's needed and self-discipline of timescale, it may become disadvantageous.
Testing is combined well throughout the course of the development. That is necessary to ensure the efficiency and quality without requiring to vacation resort to a long and a wearisome test period at the completion of every job. However, it does not suggest that assessment instruments aren't required through the project. These testers are costly and they improve the overall reference cost. This however has no influence on curtailing various risks. Research has proven that lots of assignments have actually failed. The various costs involved in a lengthy test phase can result in high costs when a project works over enough time.
Agile software development is very time consuming and requiring for software programmers. They are required to finish to achieve 100% efficiency in every feature within each iteration, and the plethora of iterations can be stressing. Therefore it is extremely important to select the right team and provide a support team as well.
Agile software provides limited support in the next cases:
o Limited support for sent out development environment
o Limited support for subcontracting
o Limited support for building reusable artifacts
o Limited support for producing large complex software
In case there is some software deliverables, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.
There is lack of emphasis on necessary coming up with and documentation.
The project can certainly get taken off track if the client representative is not yet determined what final results that they need.
Only older programmers can handle taking the sort of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.
Costs:
Costs in relevance to agile software development can be classified as:
a) Costs of change
b) Costs of learning (Experience costs)
1) Cost of change
a) Traditional cost of change curve:
Cost of change is an essential requirement of lifecycle screening. The diagram below shows the relative cost of a changed requirement. It could be seen for the diagram that mending error cost has an exponential development in the later recognition stage in the development lifecycle. That is so because the components in a serial process cumulatively build using one another.
For example, if the requirement problem is committed and is detected during the requirement phase, it would not cost much to fix. This is because one can just alter the part of the model. Typically in American context, the change is in the region of 1 buck. If requirement error is not found before design level, it becomes extremely costly to rectify it. That's because one then has to change the evaluation as well concerning alter the parts of the design which were formed considering the faulty research. In cases like this the cost of changing would be ten times more i. e 10 dollars. If the challenge is further not found till the development stage, one will have to upgrade everything including design and its own evaluation and discard the prior code. In cases like this, the error could cost ten times more i. e 100 dollars. Furthermore, if one picks up the requirement problem during the stage where traditionally screening is performed, the error can cost 1000 dollars. Here in this case, one has to change the whole documentation and dispose of majority of the code. Lastly, if the necessity mistake is not found before production stage happens, the repair cost would be of the magnitude of 10000 us dollars.
Traditional cost of change curve.
b) Cost of change curve:
The diagram below shows a curve representing cost of change with regards to agile software development. The curve shows a slight rise as time goes on and will not flatten. There are many reasons for this:
* Tendency to visit heavier over time. The base of the business enterprise and test code show development after a while in that way increasing the likelihood that any change that occurs would effect more things later.
* Inflexibility of non code artifacts. The code bottom and non code bottom part will develop over the time. Various things such as manuals related to businesses and user sources as well as systems related documents would have to be altered and modified. Resorting to a novel approach of Agile Modeling Driven Development (AMDD) will ensure reduction in bills but however will not lead to full eradication.
* Extra costs anticipated to deployment issues. When releasing software becomes costly, it becomes a more economical alternative to sell CD rather than launching software. This boosts the cost of change because one starts off pursuing moe expensive types of procedures.
* Environment and lack of agility. Many a times software development workers have to work in conditions that are not agile. They may be therefore pressured to utilize procedures that raise the overall costs. These techniques bring about creating a feedback loop which hamper the range of change.
A sensible cost of change curve
2) Cost of learning
The learning costs in case there is agile software development too comes after the same pattern as the normal cost of learning. The main reasons for the downward slope of the cost of learning curve are as follows:
1) Labour efficiency
2) Better use of equipment
3) Standardization, specialty area, and methods improvements
4) Technology-Driven Learning
Note: The above mentioned diagram is made for representation purpose.
The above diagrams show that the cost per product on using agile software would reduce as the production output due to agile software boosts.