by Indusree Mavuru
Most companies today focus on delivering quality and gaining customer satisfaction and in order to accomplish this, the challenge lies in choosing between traditional development methodologies and agile development methodologies.
Though both these approaches have positives and negatives, making the right choice plays a crucial role while starting a new project. The main points to consider while choosing your development methodology are as follows:
- Business Need Impact of implementing specified requirements, on customers business
- Customer Perception
- Customer perspective of business impact
- Project Timeframe
- Defined timeframe for the real-time implementation of the project
Traditional Software Development Methodology
Traditional software development methodologies are based on pre-organized phases/stages of the software development lifecycle. Here the flow of development is unidirectional, from requirements to design and then to development, then to testing and maintenance. In classical approaches like the Waterfall model, each phase has specific deliverables and detailed documentation that have undergone a thorough review process.
Traditional approaches are suited when requirements are well understood for example, in industries like construction, where everyone clearly understands the final product. On the other hand, in rapidly changing industries like IT, traditional development procedures might fail to achieve project goals. Below are the major disadvantages of traditional SDLC methods.
- Problem statement / business need has to be defined well in advance. The solution also needs to be determined in advance and cannot be changed or modified.
- The entire set of requirements have to be given in the initial phase without any chance of changing or modifying them after the project development has started.
For example, the user might have given initial requirements to analyze their products in terms of sales. After the project has begun, if the user wants to change the requirement and analyze the data on the region-wise movement of products, the user can either wait till the completion of initial requirements or start another project.
- The user cannot conduct intermediate evaluations to make sure whether the product development is aligned so that the end product meets the business requirement.
- The user gets a system based on the developer's understanding and this might not always meet the customer's needs.
- Documentation assumes high priority and becomes expensive and time consuming to create.
- There are less chances to create/implement re-usable components.
These disadvantages hinder project delivery in terms of cost, effort, time and end up having a major impact on customer relationships.
- Testing can begin only after the development process is finished. Once the application is in the testing stage, it is not possible to go back and edit anything which could have an adverse impact on delivery dates and project costs.
- Occasionally, projects get scrapped which leads to the impression of inefficiency and results in wasted effort and expenditure.
Traditional development methodologies are suitable only when the requirements are precise i.e., when the customer knows exactly what they want and can confidently say that there wont be any major changes in scope throughout the project development. It is not suitable for large projects such as maintenance projects where requirements are moderate and there is a great scope for continuous modification.
Agile Software Development Methodology
Unlike the traditional approaches of SDLC, Agile approaches are precise and customer friendly. Users/Customers have the opportunity to make modifications throughout project development phases. The advantages of Agile over traditional development methodologies include:
- Though the problem statement/business need and solution are defined in advance, they can be modified at any time.
- Requirements/User Stories can be provided periodically implying better chances for mutual understanding among developer and user.
- The solution can be determined by segregating the project into different modules and can be delivered periodically.
- The user gets an opportunity to evaluate solution modules to determine whether the business need is being met thus ensuring quality outcomes.
- It is possible to create re-usable components.
- There is less priority on documentation which results in less time consumption and expenditure.
Agile proposes an incremental and iterative approach to development. Consider Agile Scrum Methodology to get good understanding of how Agile processes work. Scrum Master plays an important role in Agile Scrum Methodology. A Scrum Master interacts daily with the development team as well as the product owner to make sure that the product development is in sync with the customer's expectations. The following diagram illustrates the lifecycle process in Agile methodologies.
During project inception, the customer splits the initial set of requirements into User Stories. The Scrum Master or Product owner organizes these User Stories and segregates them into different Sprints. In general, Sprint contains 3-4 User Stories to be delivered in 4 to 5 weeks, these are approximate figures and they will be decided based the complexity of user stories. Once the Sprint planning is done, the selected User Stories are once again split into Tasks so that the developer can have a clear roadmap to deliver quality output. At the end of each Sprint, the customer gets a chance to review and predict the final outcome and can propose changes if any.
The main difference between traditional and agile approaches is the sequence of project phases requirements gathering, planning, design, development, testing and UAT. In traditional development methodologies, the sequence of the phases in which the project is developed is linear where as in Agile, it is iterative. Below picture illustrate this difference.
The main project variables like cost, time, quality etc., can be compared as shown in the following picture.
Things like project scope and requirements change during the project which make IT projects different from construction or engineering projects. Agile methodology like Scrum is preferable in projects involving large teams where we can expect frequent changes in requirements. As development phases like requirement gathering, design, development and testing can start in parallel, the entire team can be engaged in respective areas which increases productivity and speeds up the development process.
Key points while making the transition from Traditional to Agile methodologies:
- Identify the factors which made the transition necessary
- Everyone, including the user, should be clear about the reasons which lead to the transition
- Identify whether it is a small project or big project
- Note the current stage of the project to be transitioned, whether development has started or is yet to start
- Make sure the team has a good understanding of the new approach and have adapted to their respective roles as per the new approach
- Arrange necessary training for the team
Therefore, Agile development methodologies are more suitable to withstand the rapidly changing business needs of IT projects.
Indusree is a Senior Consultant at KPI Partners with deep expertise in OBIEE. She has previously worked on projects involving OPLA and has functional knowledge in Oracle Agile PLM.