As an experienced software development vendor, we understand that some projects suit agile software development approach better than the others do. Innovative solutions or proof-of-concept projects with undefined scope and requirements are good examples.
WATERFALL VS AGILE METHODOLOGY
Classic waterfall methodology indicates heavy-documented, formalized approach towards software development, which is unsuitable for some project types because of at least a few of the following reasons:
- Business environment is constantly changing, hence new challenges appear;
- The software is not static, it needs to be enhanced to meet new requirements;
- Systematic planning of new updates is not always easy or doable;
- Sometimes it is too expensive to modify the software using SDLC approach;
- The existing project transparency is not sufficient for project owner or stakeholders.
Common Agile Principles
Iterative approach. The team is developing a software by short iterations, each lasting from one to six weeks. The customer is able to define the scope and goals for the next iteration depending on the results of the current iteration.
Incremental approach. Each iteration produces a valuable product increment. The customer is able to prioritize product features planned for each iteration. Each product increment is potentially deliverable.
Self-managed teams. Organizing developers in self-managed well-motivated team is the most effective way to face constantly changing business environment challenges.
Adaptive process. The team itself defines the most suitable process and procedures to follow in order to achieve its objectives.
The chart below illustrates cost of change in classic waterfall approach:
The biggest advantage of using agile approach in software development is that it allows responding to the constantly changing project requirements. Implemented changes can be promptly integrated, which in turn, increases development process effectiveness.
Continuous communication between the team and the customer ensures that nothing is overlooked or misunderstood. As a result, high quality software is supplied within a short time period.
SCRUM AS AN AGILE DEVELOPMENT FRAMEWORK
Scrum is one of the most popular agile approaches. It is a development framework with a simple set of rules. The rules act as constraints that force the team to self-organize into a highly motivated and intelligent development unit.
Picture above illustrates the scrum life cycle, where:
- Product Backlog is a prioritized list of user stories and issues, functional and non-functional requirements, and list of acceptance criteria.
- The team defines the acceptance criteria during the Sprint Planning Meeting, along with the print goals.
- Sprint backlog is a document containing information about how the team is going to implement features for the upcoming sprint.
- Daily scrum meetings are very short daily meetings aimed to raise shared responsibility and ensure rapid response to any challenges and adjustments.
- Product increment is a sprint results demonstrated to the product owner and/or stakeholders during the Sprint Review.
OCSICO RECOMMENDATIONS ON USING AGILE APPROACH
Agile development is a completely different method of software development. We advise considering agile software development methodology if the following conditions are true:
- Close collaboration between team members and stakeholders;
- Active customer/user involvement into the project is possible;
- Team members can be granted authority to make project decisions;
- Changes in project requirements are envisioned while the timeline is fixed;
- Lightweight documentation and requirements are acceptable;
- Development is planned to be done in small iterations with frequent deliveries;
- Testing process continuity is guaranteed throughout the development cycle;
- 80/20 rule is applicable focusing on 20% of efforts to bring 80% of results.
AGILE DEVELOPMENT: FEATURED PROJECTS