JavaRush /Java Blog /Random EN /Software Development Methodologies

Software Development Methodologies

Published in the Random EN group
Hello. At the last two interviews I was asked about methodologies. This is not the most important or difficult question, but it will be nice to have a cheat sheet for the answer. In this article I will try to give an idea of ​​what a development methodology is and compare those that I have personally met or been asked about. Software development methodologies - 1Software development methodology is a process of describing how a specific product will be developed, that is, one of the ways to organize team development. There are many different models of such a process, each of which describes its own approach, and it cannot be said that among them there is one that should be used in each project, everything is purely situational. I propose to consider three of them in more detail.

Waterfall

Waterfall (cascade, waterfall) is one of the oldest methodologies and implies the strict sequential implementation of all stages, each of which must be completed before the next one begins. That is, the transition to the next stage means the complete completion of work on the previous one. The picture shows that first we analyze the task (document tasks, discuss difficulties), then design occurs (at this stage the project structure is formed), then coding and testing. There are no refunds for subsequent stages. It is recommended to use such a system in small projects where the requirements are known in advance and there is little likelihood that they will change. Software development methodologies - 2Advantages:
  • Complete and consistent documentation at every stage;
  • Ease of use;
  • Stable requirements.
  • Budget and deadlines are predetermined
Flaws:
  • A large amount of documentation;
  • Not a very flexible system;
  • The client cannot view the demo version of the product;
  • There is no way to go back a step.

Scrum

Scrum is a software development system based on dividing the entire process into iterations, where at the end of each of them the team is ready to provide a demo version of the product. The picture shows that the team goes through all stages of development in parallel, which allows us to have a finished part of the project at the end of each iteration. Software development methodologies - 3I will try to briefly explain in simple words the essence of the methodology, but there are a lot of terms here. I think the most important thing is to understand the essence, and the terms will be remembered with experience. All development is divided into sprints (often 2-3 weeks). There is a backlog (list of tasks) for the entire development period and for each sprint separately. Each task has its own story point (difficulty rating). Each participant in the process has a role:
  • A Scrum team is a team working on a project (developers, testers, designers).
  • A Scrum Master is a person who ensures that the principles of Scrum are followed.
  • Product owner – customer.
Since in this system the emphasis is on communication, there are a large number of rallies:
  • Stand-up is a short meeting, held every day, all team members take part and each participant answers 3 questions: what did you do? What will it do? And what are the blockers?
  • Planning – held at the beginning of the sprint and at this meeting it is determined what tasks should be completed in the next sprint.
  • Retrospective is held at the end of the sprint and its essence is to find out what was done well and what could be improved.
Advantages:
  • The customer can observe the result during the development process.
  • Daily control over the development process.
  • Ability to make adjustments during development.
  • Well-established communications with all team members.
  • Small amount of documentation.
Flaws:
  • Difficult to estimate labor and cost required for development
  • It is difficult to determine the biggest bottlenecks before development begins.
  • The need to involve everyone in the development of other team members.

Kanban

Kanban is a system built on visualizing the process of completing team tasks. The main idea in this system is to reduce the number of tasks currently being performed (in the “in progress” column). In Scrum, the team is focused on successfully completing sprints; in Kanban, tasks come first. Good for projects that are in the support stage, where the main functionality has already been developed and minimal improvements and bug fixing remain. In Kanban, tasks are submitted individually. The task, regardless of other tasks, goes through all the stages on the board and as soon as it is completed it can be shown to the customer. A Kanban board consists of columns, each of which represents a separate development process. Some columns (for example, in progress) impose restrictions on the number of tasks that can be there. This helps to easily and quickly find problem areas in the distribution of tasks. The picture shows an example of such a simple board. The number of columns and names may vary, but I will name the most common: Software development methodologies - 4
  • To do - a list of tasks that need to be done
  • In progress – tasks that are currently being worked on
  • Code review – tasks that have been completed and sent for review
  • In testing – tasks ready for testing
  • Done – completed tasks.
Advantages:
  • Ease of use.
  • Visualization (helps in finding bottlenecks, simplifies understanding)
  • High team involvement in the process itself.
  • High flexibility in development.
Flaws:
  • Unstable task list.
  • Difficult to use on long-term projects.
  • No hard deadlines.

In conclusion about software development methodology

In my opinion, people who hold management positions or aspire to them need to have a thorough understanding of software development methodologies, but it is advisable for everyone to understand at least the basics. This is an integral part of the development process and is used not only in the IT field. Thank you for taking the time to read my article, I hope you found it helpful. I tried to describe only the key points as clearly and briefly as possible, so the article is not exhaustive. I will be glad to hear your opinion about it and answer your questions. All the best!
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION