Software development life cycle has evolved with newer and more robust kind of approach. It is a conceptual model that lays the foundation for development of software systems, with well defined phases. Typically the phases are - user requirements definition, system requirement definition, analysis and system design, system development, testing, implementation and maintenance.
There are various models, each having its own approach, provide a strong foundation for an efficient software development life cycle. Few among the many are - Waterfall, Spiral, rapid, prototyping.
The traditional approach to software development includes Waterfall model. Waterfall Model is the oldest form of software development model that offers the various stages through which the cycle of software development has to go.
The very essence of a traditional software development life cycle lies in the following few facts:
Based on understanding of systems development, an organisation follows a certain kind of management style.
Agile methods took over the traditional methods, to overcome the rigidity of the traditional model. Agile follows a dynamic approach to software development. It is an interactive and team based method that aims to deliver an application in a short span of time.
In agile methodology, tasks are categorised into phases and are ''time-boxed'', that is, time frames are allotted to each task. Each time-boxed phrase is called a sprint. Each sprint has a defined duration of time, say, a week, few days or month.
A detailed description of how the agile model helps to overcome the shortcomings of the traditional model.
|SNo.||Traditional Model||Agile Model|
|1.||Follows a top down approach, and making changes is not easy as finishing one phase leads to another||Team conducts experiments on various techniques and gradually arrives at the best possible solution|
|2.||It has a leadership style of working||In agile, there is free flow of communication, anyone can present their ideas within the team|
|3.||Pre-planning is done to carry out the various phases||This is more flexible as compared to traditional model, as it can change it's work flow based on any new request for modifications|
|4.||Customer is involved only in the initial phases of requirements gathering||Customer involvement is crucial for this model to prove its mettle|
|5.||The project plan is prepared before commencing the process of system development||Project work is delivered to the client in small amount, that is, as and when one module is prepared, a demonstration is given to the client, so as to confirm the work progress in a right direction|
|6.||The ownership lies on the Project manager||It has the concept of shared ownership, i.e, every team member is equally responsible for their individual contribution|
|7.||Believes in one-time delivery of the product||Relies on incremental delivery of the product|
Both agile and traditional models are essential for an efficient software development process. However, in the process of choosing an appropriate model for software development, one needs to identify the scope and requirements of the project to be developed. Accordingly, a model is chosen that helps to deliver the right things at the right time.
Agile Model does overcome few deficiencies that the traditional model imbibes, but at the same time each model's pros and cons must be weighed before reaching a consensus.