Annonated Bibliography On Agile Software development

By s0105094

                                                   Agile software development

Today the economy of Information Technology is not stable and changes tremendously so we have to deduce the ways to cope with the changing need of the information technology and software development. So the agile methods are came into being so that the software can be developed with changing demand in time and should be cost effective and efficient and can adapt itself with the new demands. According to Scott Ambler the latest approach to software development is Agile approach and it combines the best characteristics of both extreme programming and Unified Processing .It increases the amount of modelling over XP and decreases the formality and documentation of Unified processing. Agile software development is a conceptual framework for undertaking software engineering projects. There are large number of methods of agile which are used to develop the software like extreme programming, crystal methods, lean programming, Srcum, Adaptive software development method. They minimize the risk by developing the software in short timeboxes, called iterations which last for four weeks. An agile software project intends to be capable of releasing new software at the end of every iteration. At the end of each iteration, the team reevaluates project priorities.
(http://en.wikipedia.org/wiki/Agile_Software_Development)
The main emphasize of Agile methods  is realtime face to face communication between the team members or user involvement so that there need can be known to the developers and satisfied .The agile teams include all the people necessary to finish software. At a minimum, this includes programmers and their customers. The team may also include testers, interaction designers, technical writers, and managers. Agile methods also emphasize on working software combined with the preference for face-to-face communication, agile methods produce very little written documentation relative to other methods.
(http://en.wikipedia.org/wiki/Agile_Software_Development)

Principles behind the Agile Software developelopment:
Customer Satisfaction: The main principle behind this innovative approach is the customer satisfaction by delivering the useful software in time
Working Software: The working software is the main motive of this method and after each iteration the working software came in the market
Adaptation: The software after every iteration should have capability to change with new demands and work efficiently with newmodifications in the system.
Team involvement from the beginning to the end : There should be face to face comunication between the business people, developers and users while developing the software and there needs and demands should be welcomed at each step.
Simplicity: The main emphasis is on simplicity that there will be few documentation in this method as compared to other methods .

Traditional Approach of software Development:
The traditional approach is also known as structured system development. This approach uses structured analysis, structured design, and structured programming techniques. The structured programming has one beginning and one ending and the programme executes in sequence the step can be executed only when the previous one is finished. It means that designing face of the system development cycle will not be executed unless and until the analysis face is finished.

Weakness of the Traditional Approach:
Though the traditional approach is still practiced but due to the emergent system development many developers consider this approachto be weak because of the following reasons:
It is more comprehensive and rigorous set of techniques to make system development more like an engineering discipline and less like an art.
The transition from the data flow diagram to the structured chart did not work well in practice.
The data modelling and the entity relationship diagram are much more important than the modelling processes with the data flow diagram
The main focus of this approach is process and not the data.

Due to all these drawbacks the developers now prefer agile methods as it gives the customers the working software at each step. And the main focus is data in this method and not the process.
(http://en.wikipedia.org/wiki/Agile_Software_Development)

Comparison with other methods:
In the broad sense the approaches are classified into types the adaptive and the predictive. The agile software development is the adaptive method of developing the software and the other methods are predictive one.
Adaptive Method: The main focus of adaptive method is to adapt according to the changing demands. The software are not developed keeping in view the future and therefore it is difficult to describe what exactly will happen in future.
Predictive Method: In contrast to this the predictive can not adapt themselves according to the changing demands. The software are developed keeping in view the future and there it is not possible to change the direction of development. The predictive method can tell what exactly will happen in the future.

Contrasted with iterative development:
Agile method is similar to iterative method in delivering working software in each iteration. The main difference between these methods is that the time period of iteration is week in agile method and nearly months in iterative development. The other difference is that iterativedevelopment develops software in very structured and planned manner. The agile method is not such a planned and collaborative.
(http://en.wikipedia.org/wiki/Agile_Software_Development)

Contrasted with the waterfall model:
The waterfall model is predictive methodology of software development. It follows the system development life cycle step by step starting from analysis, design, testing and implementation. The time period of releasing the software is several month to several year. The size and difficulty of this integration and testing effort is one cause of waterfall project failure. In contrast to this the agile software development takes week to deliver the software rapidly and emphasis on continually improving it. The water fall life cycle can be repeated in each iteration by agile method on small scale.
(http://en.wikipedia.org/wiki/Agile_Software_Development)

Contrasted with “cowboy coding”:
Cowboy coding is a method in which there is not at all any definite method of development. The similarity between both the methods is that they emphasize on communication between the team members and very less documentation but the difference in both of them lies in the fact that the agile is more defined method of development compared to Cowboy coding.
(http://en.wikipedia.org/wiki/Agile_Software_Development)

Appropriate use of agile method and traditional methods:
 Though there are number of agile methods having different characteristics and practices. The appropriate use of agile method is examined from various perspectives.Product perspective: According to this perspective the agile software development method is suitable in emergent and rapidly changing environment. In contrast to this the traditional method is suitable where there are very high reliability and safety is required. (Cohen et al., 2004).
Organizational Perspective: According to this perspective the suitability of method depends on three factors namely the supportive culture, trusted and competent people and rapid communication prevailing in the organization.  (Cohen et al., 2004)DSDM (Dynamic System Development Method): This method provides a suitability-filter to develop a system that meets the business needs on time and on budget. http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method
DSDM and FDD(feature Driven Development Method) are the accepted techniques for any type of agile software development method.(Abrahamsonn et al., 2003).

Boehm and Turner’s risk-based approach:
According to Barry Boehm and Richard Turner the appropriate use of agile and other predictive method is based on the risk analysis. According to him the use of agile method is more appropriate when there is low criticality, there are senior and small number of developers and the requirements changes from time to time. Where as the plan driven method appropriate in just the opposite conditions that is high criticality, junior and large number of developers. By analyzing the project against these home grounds, the risk of using an agile or plan-driven method can be determined.

(http://en.wikipedia.org/wiki/Agile_Software_Development)

 Conclusion:
In the last it is concluded that in the dynamic world of today we can not rely only on traditional approach. The traditional approach is suitable in conditions when the demands are stable, and there is very less possibility of change in the future. In this approach the software developed in a very planned and systematic manner. The system requirements are fixed in the very beginning and the software development proceed step by step. End of one step is the beginning of another. Therefore it takes several month or years to deliver the funional or working software. So, it dissatisfies the customer for late delivery and moreover in such a long span of time there is every possibility that the requirements of the system get changed. So, the need of such a method is required which satisfy the user requirement with changing condition. The Agile method is the best method of developing software in such a changing world. This method delivers the software very fast, and the software is developed with adaptive approach. The suitability of method has different criteria in different conditions. The agile method has different ground for use and other methods have different. The agile methods are suitable when the conditions are not critical, and the tam members are few and are senior developers and requirements changes from time to time. On theother hand the traditional methods are suitable for the conditions which are not critical, and the requirements are stable and where team members are many and the developers of the software are juniors.In the last it is concluded that in the emerging and growing world of development the best approach to satisfy the customer is agile approach. It’s a very flexible approach and adaptive method. Moreover it a very fast process and the key measure of progress in this approach is working software. The customer gets the required software in time.So, keeping in view the benefits of the agile method in the emergent world it is concluded that it is the best practice of developing software.

Reference List:
•John W.Satizinger, Robert B. Jackson, Stephen D. Burd,”System Analysis ans Design in a changing world” third edition , p-62
•http://en.wikipedia.org/wiki/Agile_Software_Development
•http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method
•http://ieeexplore.ieee.org.ezproxy.cqu.edu.au/iel5/2/20507/00947100.pdf?isnumber=20507&arnumber=947100

Leave a Reply