Software Development Methodologies
Learning Objectives
- You know of software development methodologies.
- You know what Scrum is.
While software process models broadly outline how the steps in the software development life cycle are followed, software development methodologies provide a framework for organizing and managing the software development process on a daily basis. These methodologies define the processes, roles, and responsibilities of the team members, and the tools and techniques used to develop software.
There exists a range of software development methodologies, ranging from following the Waterfall model to more iterative and incremental approaches. The recently more popular ones are often referred to as agile methodologies. Some are more suitable for small projects, while others are more suitable for large projects.
The choice of methodology depends on the project’s size, complexity, and the team’s experience — a small-scale hobby project of an individual developer might not need the same level of formality, if any, as a large-scale project developed by a team of experienced developers.
To outline an example of a software development methodology, let’s briefly look into Scrum. Scrum is based on the idea of iterative and incremental development, where the software is developed in short iterations (sprints) of typically two to four weeks (Fig. 1).
The scrum methodology has a few key items, meetings, and roles. In Scrum, the project has a product backlog, which is a prioritized list of features, enhancements, and bug fixes that need to be implemented for the product. The product backlog is maintained by a product owner, who is responsible for ensuring that the backlog is up to date and that the team knows what are the most important items in the backlog.
At the beginning of each sprint, the team holds a sprint planning meeting to select the items from the product backlog that will be implemented during the sprint. The team creates a sprint backlog, which is a list of (potentially refined) tasks from the product backlog. During spring planning, the team also estimates the effort required to complete the tasks.
During the sprint, the team meets daily in a short meeting called a daily stand-up (or daily scrum meeting) to discuss what they have done since the last meeting, what they are planning to do until the next meeting, and if there are any obstacles that need to be removed. The meetings are facilitated by a Scrum master, who is responsible for ensuring that the team follows Scrum and for removing any obstacles that the team may face. The team may also use a burndown chart or other means to track the progress of the sprint.
At the end of each sprint, the team holds a sprint review meeting to demonstrate the work done during the sprint and to get feedback from the stakeholders. In addition, the team also holds a sprint retrospective meeting to discuss what went well during the sprint, what could be improved, and how to improve it. Finally, once the sprint is over, the next one begins with a new sprint planning meeting.
When thinking of large language models and Scrum, it is clear that large language models cannot and do not replace the roles of the team members, the process, or the tools. However, large language models can be used to generate content for the product backlog, sprint backlog, and other documents. However, as the models are not aware of the context of the project, the generated content may not always be suitable for the project. For example, the models may generate content that is not necessary or that does not match the needs of the project.
There are a range of software development methodologies, including Extreme Programming, Kanban, Lean software development, and combinations of methodologies such as ScrumBan.