Sprint - Iteration
Product Backlog - Work Items
Daily Scrum Meeting - Daily stand up Meeting
1. Planning Phase
2. Development Phase
3. Release Phase
Traditional Waterfall Approach
Traditional Waterfall Approach is used to build complex software systems, which can be built in sequence and phase-wise. Here all the requirements are captured at the beginning of the Project. Design is completed next, followed by Coding, Testing and finally Software is implemented. This approach holds very good where complex software system can be built without changing or revisiting already captured business requirements/design/layouts and have no dependencies with other systems /developments / sub projects.
Under this approach, Project Managers are putting lot of effort in the project plan. From my experience, most of the Software Projects failed due to not meeting the project time frame and/or cost overrun. Key success factors are making timely project implementation using best practices, next generation technology vision and meeting project time line. I came across a scenario where Customer was looking for a complex ERP solution within a particular time frame, which had 'n' number of dependencies, open solutions/requirements and so many integration touch points with various legacy systems.
I attempt to put forth my experience on the reason for the failure of Traditional Waterfall Approach in so many cases.
Traditional Waterfall Approach - Issues
1. Requirements captured Up-Front: One of the biggest issue with Waterfall is the assumption that all the requirements are captured up-front at the beginning of the project. All the requirements are finalised and documented in Requirement Document.
Requirement document forms the baseline for the Functional Specification Document and is passed to development team to start the development. It is possible that the Requirement Document miss some important details at the beginning of Requirement gathering phase or leave some open issues or holds on to some assumptions. This means, we have to change the requirements outside the requirement gathering phase. This gives rise to Change Requests (CR). In many cases, this will lead to design change and will also impact the next phases of the project. It will finally affect the Project Cost as well as Project time line.
So Project cost increases exponentially over time in case of Water Fall model. A long-term business will be extremely expensive where cost of change increases exponentially.
2. Having working Software Product always: Customer always expect to see and feel something related to the project as early as possible. This will help the customer to describe their requirements effectively. Water Fall model asks the Customers to define entire product/software/application at the beginning without giving them a chance to view , feel or review the application periodically and amend the requirements as and when needed.
So Water Fall model allow us to collect the requirements up-front, develop the entire product/software/application and deploy to customer for their testing. There are two issues here, one is restriction on the amendment to the requirements as needed, secondly, the customer sees the product at the end of the development and is kept in dark until then.
Agile Methodologies
Agile is a Software development framework which allows the development team to carry the software development in iterations throughout the project life cycle and each iteration touches all the traditional phases of development life cycle.
Requirements, design, testing cycles are revisited in each release of the Software in Agile.
Agile is an iterative product development approach and has continuous design - code - test cycle throughout of the project. This helps in reducing the cost of the Change Requests.
Agile Project Management
Agile has different flavors like XP, Scrum etc used for Rapid Application Development. Scrum is one of the flavors to implement Agile methodology. It is an iterative and incremental process to develop a software product enabling the Customer to have workable software product at any point of time. Scrum consists of series of 'n' day sprints, each sprint producing a usable software product.
Scrum is a Project Management approach in which project plans are continuously inspected and has full control on four important factors of the Project.
1. Project Cost
2. Project Schedule
3. Project Scope
4. Product Quality
Functionalities developed using iteration approach will have high quality because of short feedback cycle and controls can be adjusted frequently and quickly and resources can be utilised effectively.
Agile is not expecting any Up-front requirements, this will help Customers to take the decision when they have more details or after seeing initial version of the product. Frequent releases gives a chance to the Customer to test the Product periodically and give feed backs.
Another advantage is that development can start before all the requirements are known.
Much less interesting....