The most prominent methods in developing software are Agile and Waterfall methodologies.
Waterfall methodology
Your project is worked following the Waterfall methodology when the eight project phases (conception, initiation, analysis, design, construction, testing, implementation, and maintenance) have to be completed before the commencement of the development phase.
Pros
1. You know what to expect at the end of the project, in terms of sizing, costs and timeline.
2. Minimal impact in the event of high turnover thanks to the detailed documentation.
Cos
1. No changes are allowed when a task is completed, even if the initial requirements were faulty.
2. The testing phase is only done at the end, hence bugs are only discovered too late and a new code needs to be written from scratch.
3. The plan would not take into account the evolving clients’ need.
Agile Methodology
Agile is a framework for developing and sustaining complex products that follows an incremental rather than a sequential design process approach.
Development work focus on launching a Minimum Valuable Product – from a end-user point of view – then by enhancing the MVP incrementally by working on flexible modules. The work on these modules is done in weekly or monthly iterations, and at the end of each iteration, project priorities are evaluated and tests are run. These iterations allow for bugs to be discovered, and customer feedback to be incorporated into the design before the next sprint is run.
Pros
1. It allows for changes to be made after the initial planning, but prior to the commencement of the spring/iteration period.
2. It allows the user’s feedback to be incorporated in the process by modifying the features in the backlog accordingly.
3. The testing is performed at the end of each iteration ensuring bugs are captured and fixed within the development cycle.
Cons
1. You don’t know what to expect at the end of the project, in terms of sizing, costs and timeline.
Scrum vs. Kanban
Scrum and Kanban in software development are specific form of an agile software methodology.
Scrum is a framework that leverages team commitment as change agent, whilst kanban is a less structured model for introducing change through incremental improvements.