- November 24, 2017
- Posted by: admin
- Category: Agile, Scrum
What is Software Development and what are its methodologies?
Before I go into Scrum and Agile, lets understand the basics of software development metothodologies.
In software engineering, a software development process is the process of dividing software development work into distinct phases to improve design, product management, and project management. It is also known as a software development life cycle. The methodology may include the pre-definition of specific deliverables and artifacts that are created and completed by a project team to develop or maintain an application.
A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system.
There are the following methodologies:
- Agile Software Development
- Crystal Methods
- Dynamic Systems Development Model (DSDM)
- Extreme Programming (XP)
- Feature Driven Development (FDD)
- Joint Application Development (JAD)
- Lean Development (LD)
- Rapid Application Development (RAD)
- Rational Unified Process (RUP)
- Systems Development Life Cycle (SDLC)
- Waterfall (a.k.a. Traditional)
Agile software development is a conceptual framework for undertaking software engineering projects. There are a number of agile software development methodologies e.g. Crystal Methods, Dynamic Systems Development Model (DSDM), and Scrum.
Most agile methods attempt to minimise risk by developing software in short timeboxes, called iterations, which typically last one to four weeks. Each iteration is like a miniature software project of its own, and includes all the tasks necessary to release the mini-increment of new functionality: planning, requirements analysis, design, coding, testing, and documentation.
While iteration may not add enough functionality to warrant releasing the product, an agile software project intends to be capable of releasing new software at the end of every iteration. At the end of each iteration, the team reevaluates project priorities.
Agile methods emphasize realtime communication, preferably face-to-face, over written documents. Most agile teams are co-located and include all the people necessary to finish the software.
At a minimum, this includes programmers and the people who define the product such as product managers, business analysts, or actual customers. The team may also include testers, interface designers, technical writers, and management .
Agile methods also emphasize working software as the primary measure of progress. Combined with the preference for face-to-face communication, agile methods produce very little written documentation relative to other methods.
Scrum is an agile method for project management developed by Ken Schwaber. Its goal is to dramatically improve productivity in teams previously paralyzed by heavier, process-laden methodologies.
Scrum is characterised by:
- A living backlog of prioritised work to be done.
- Completion of a largely fixed set of backlog items in a series of short iterations or sprints.
- A brief daily meeting (called a scrum), at which progress is explained, upcoming work is described, and obstacles are raised.
- A brief planning session in which the backlog items for the sprint will be defined.
- A brief heartbeat retrospective, at which all team members reflect about the past sprint.
Scrum is facilitated by a scrum master, whose primary job is to remove impediments to the ability of the team to deliver the sprint goal. The scrum master is not the leader of the team (as they are self-organizing) but acts as a productivity buffer between the team and any destabilizing influences.
Scrum enables the creation of self-organizing teams by encouraging verbal communication across all team members and across all disciplines that are involved in the project.
A key principle of scrum is its recognition that fundamentally empirical challenges cannot be addressed successfully in a traditional “process control” manner. As such, scrum adopts an empirical approach – accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team’s ability to respond in an agile manner to emerging challenges.
The Scrum process includes the following steps:
This process allows all team members to share thoughts and concerns, and properly understand the workflow.
Every iteration starts with a sprint planning meeting. The product owner holds a conversation with the team and decides which stories are highest in priority, and which ones they will tackle first. Stories are added to the sprint backlog, and the team then breaks down the stories and turn them into tasks.
The daily scrum is also known as the daily standup meeting. This serves to tighten communication and ensure that the entire team is on the same page. Each member goes through what they have done since the last standup, what they plan to work on before the next one, and outline any obstacles.
Sprint review meeting
At the end of a sprint, the team presents their work to the product owner. The product owner goes through the sprint backlog and either accepts or rejects the work. All uncompleted stories are rejected by the product owner.
Sprint retrospective meeting
Finally, after a sprint, the scrum master meets with the team for a retrospective meeting. They go over what went well, what did not, and what can be improved in the next sprint. The product owner is also present, and will listen to the team lay out the good and bad aspects of the sprint. This process allows the entire team to focus on its overall performance and identify strategies for improvement. It is crucial as the ScrumMaster can observe common impediments and work to resolve them.
Scrum Task Board
The task board is a visual display of the progress of the Scrum team during a sprint. It presents a snapshot of the current sprint backlog allowing everyone to see which tasks remain to be started, which are in progress and which are done.