The software development life cycle, also known as SDLC, is a phased process or methodology to develop software. To achieve the required objective, many SDLC methodologies have been developed. Each methodology or model has their own set of rules to achieve a goal. Both models have their conveniences and drawbacks. So, it’s essential to use the right methodology to develop a software product.
There are many software development models, but the following two are the most popular approaches:
Both methods are suitable for small to medium-sized teams. Each methodology has different approaches to achieve the target. The waterfall is a linear and sequential method, whereas Agile is a more progressive and iterative approach.
So, what is ‘scrum’?
Scrum is a framework that helps to develop a product as a team. It’s a continuous process of learning, improving, and adjusting because of its heuristic approach. A scrum team learns and improves as the project progresses — it’s an agile-based framework. The dissimilarity between scrum and agile is that scrum is a faster and flexible approach. Compared to Agile, scrum accepts and reacts to changes swiftly.
The agile manifesto
Nearly 20 years ago, 17 software developers came together in Snowbird, Utah to propose a new way of developing software “by doing it and helping others do it.” Through this work, the signers of the Manifesto understood how much of an impact these principles would help them in the field of software development—but they had no idea how quickly their ideas would spread beyond their industry. Values the Manifesto creators cited as paramount were:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Since that time, the original document has been used by groups as disparate as coders to Boy Scout Troops, from marketing departments to restaurants. Its universality is derived from a group of principles that can be broadly applied, easily learned, and rarely mastered completely. Before spreading to all corners of the globe, here are the key principles for incremental development that have made Agile what it is today:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
The above is an extract from The Agile Manifesto.
Roles in scrum
There are three main roles in the scrum framework which are located in the same place for optimal results and better communication with development teams. These are the following:
- Product owner
- Scrum team
- Scrum master
All clients and stakeholders are handled by the product owner. The product owner drives the backlogs and prioritizes the work to maximize the efficiency of the project. It’s the responsibility of the product owner to emphasize the business side of the product and stay in contact with clients and the scrum team.
This role is more about communication, the product owner acts as a proxy between the development team and stakeholders and communicate with each other and conveys messages in technical terms. The following are some tasks a product owner performs:
- Communicate and manage stakeholders
- Inform stakeholders about RIDA’s
- Manage the backlogs
- Take input and prioritize/schedule the work
- Keep track of the progress
- Announce deliveries
The product owner also has to see the interests of the stakeholders, cooperate with the team, and effectively fulfill the requirements.
A development team does not always have to be a team of software developers, but instead, it may consist of researchers, designers, data scientists, and developers. The development team has to be self-organized and handle their own decisions. The team members can also directly interact with stakeholders or clients for a better understanding of the requirement.
Scrum master assists the development team; this role is also termed as servant-leader. A scrum master removes any hindrance in the development process and makes sure that framework rules are being followed. They also lead the scrum and help the product owner in defining objectives. The scrum master has the following main roles:
- Assisting development teams
- Serving the product owner to define goals
- Removing any hindrance that hampers the progress of development
- Encouraging self-organizing within the team
A scrum master also assists the organization and team to take on empiricism and quitting predictability.
Artifact means a work of art. So, an artifact is an object that we create, for example a product or device to solve an issue. There three primary artifacts that scrum defines:
- Product Backlog
- Sprint backlog
Product backlogs are the requirements of the stakeholders. The product owner supervises and manages product backlogs. It includes a list of tasks for the development team to perform in sprints. Progress on product backlogs is always available for stakeholders to review it. Each backlog has a description, time, and amount. Backlogs keep on changing according to the feedback of the stakeholders.
Sprint backlogs come from product backlogs as goals to be completed in the sprint. The scrum team manages the sprint backlogs. Scrum team also plans and schedules the sprint backlogs.
Multiple increments make a product. Each sprint gives one product output. The product owner decides to demonstrate it or not after each sprint.
Sprint is a working period of a scrum team, usually comprise of one to four weeks. A sprint starts with defining objectives and scheduling work. These objectives or tasks are also termed as ‘sprint backlogs.’ Scrum emphasizes to deliver useful output at the end of the sprint. Each sprint is consisting of the following workflow:
- Sprint planning
- Daily scrum
- Sprint review
- Sprint retrospective
After each sprint, the product owner decides when to deliver the product. The final product may take more than one sprint.
Each sprint starts with planning. In the sprint planning, the scrum team defines and lists the backlogs. Backlogs are the objectives that a scrum has to be fulfilled. Scheduling those tasks are also done in sprint planning. Backlogs have to be updated daily by each team member. The team tries its best to complete its sprint backlogs but it’s not rigidly required to fulfill all the planned tasks backlogs can be added in the next sprint.
Scrum teams daily gather for a 15 minutes meeting where they update their backlogs and plan work for the next day. The development team members also share impediments of the backlog. So, the following are the few things which scrum team do in a daily scrum:
- Inspect the progress and contribution of each member
- Identify Impediments
- Plan the next 24 hours
The scrum master makes sure the development team meets daily but still, it’s entirely up to the development team to hold a meeting.
Each sprint ends with “Sprint Review and “Sprint Retrospective.” Here’s what these are:
In the sprint review, the team reviews the work and identifies the unfinished tasks. The product owner and scrum team also hold a meeting with stakeholders, demonstrate their work, and plan what to work on next. Stakeholders give their feedback and then the product owner presents new objectives to the scrum team for the next sprint. It is important to note that incomplete work must not be presented.
Before the next sprint planning the team inspect its performance and contemplate that what improvements can be made to boost productivity. The Scrum Master ensures the all the members attend the event acknowledge its importance and purpose.
Scrum is a framework designed for teams to produce a product. It’s an iterative and heuristic framework. The project progresses on the bases of facts instead of predictability. Three main roles control the whole process from start to end. The product owner manages the backlog and communicates with the stakeholder. The scrum team has to present the progress after every sprint. After getting feedback from the stakeholders the team and product owner review the sprint and retrospect it. Planning of the next sprint begins after this and the process keeps on going until the stakeholder finalizes the product.
This article was originally published on Live Code Stream by Juan Cruz Martinez (twitter: @bajcmartinez), founder and publisher of Live Code Stream, entrepreneur, developer, author, speaker, and doer of things.
Live Code Stream is also available as a free weekly newsletter. Sign up for updates on everything related to programming, AI, and computer science in general.