A
Well, I didn't mean to answer, but here's a comment that Francisco Junior made:If by chance any user comes only by subjectively opining in the answer (as in the first comment saying to "never use waterfall"), he should receive negative votes.So let's go. You can sit your finger on the negative here on the left!According to I recommend reading the whole article, and again I emphasize that it is from the distant year of 1970. However, this continues so far, waterfall part of the precept that development is composed of rigid and sequential steps, but this never works and everyone who has already entered some project in it knows why:The client changes his mind all the time.The client doesn't know what he wants.A bug came up in the test and we found that there is a mistake there at the beginning of the project.In the middle of the project something happens and then we have to go back and change a lot of thing.The user did not like the product.The competitor solved the problem in a different and better way.The customer asked for changes in a certain part, changing an important requirement.There are two or more conflicting requirements.The client says one thing an hour and then says the opposite.A difficult problem has arisen in development and the deadline has already been pro bag.Etc.If you want something more recent, it is muuuuito, but muuuito easy to find on the internet, you could easily cite Martin Fowler, TDD practices, or even the book Head First about agile development, which inside explains why waterfall does not work.And now, to ensure my downvote, I will give my personal remark about what we see today: In fact, it is difficult to find some material that defends waterfall today and that comes from someone who has a minimum idea about what is talking about, and not just parrotting old concepts that never gave themselves the job of questioning.On the top list I quoted some reasons why waterfall fails. Basically it all comes down to the fact that things change over time. What yesterday was a requirement, today may not be more. What was not important yesterday, today is fundamental. Today we have an important restriction, but tomorrow we have no more. This is where agile methodologies come in: they have been thought of attacking these problems, assuming that these things change over time and balling strategies so that changes can be implemented quickly.Well, I confess that I've only given half the answer here and I haven't said anything about scrum. I'm not going to get much into details of the scrum and I'm just going to make a quick list to recommend when using agile methodologies (more generically, either scrum or not) or when using waterfall, and I'm sure that after you read it and have already given the downvote, you'll still call your friends to also vote against:If your scope and your requirements are undeniably closed, immutable and stone-written, and your code is absolutely perfect and bug-free, you can get along well with waterfall. Otherwise, I recommend the agile.If your role or function of your company is to generate millions of pages of requirements documents, business rules, architectural decisions, flow charts, etc., and these documents will not be read or criticized by anyone (or at least by anyone who has the power to be heard), and it is not you who will make the code, so waterfall is also for you. Otherwise I recommend the agile.If you plant bugs and purpose-defined requirements in your project to then charge the customer for any requested change, then waterfall will also serve you. Otherwise I recommend the agile.If your religion, your philosophy, your sense of living, or your favorite divinity tells you that you should follow bureaucratic and rigidly defined plans simply because things have always been like this, are so and always will be so and that you have the obligation to be happy with it without ever thinking about questioning, then recommend waterfall. Otherwise I recommend the agile.To finalize, responding to this comment:By the way, aeronautical certifications require formal development models. It is much more likely that the software that surrounds the Boeing planes, for example, are developed with a process closer to Waterfall than a purely agile and informal methodology such as Scrum. And I ask you one thing: do you prefer to fly on a plane that has FAA software certification or on a plane that has been developed without any formality with Scrum?In response to this, I say that on 11/10/2013, I attended a lecture at IME/USP in São Paulo demonstrating the opposite. The title of the lecture was "Combinando Scrum, AOP, DDD and Metadados – A Successful Case in Embraer" and speakers Roberto Perillo, Tiaslei Vasni and Daniel Feichas. Here is the summary of the lecture:This lecture consists of the presentation of the approach to creating an application called AHEAD (Aircraft HEalth Analisys and Diagnosis), currently in progress in the Executive Aviation area at Embraer. The application architecture combines Domain-Driven Design, aspects and metadata, whose development is being managed with SCRUM. Initially, a small history of projects will be shown in Embraer and because it was decided to use the SCRUM. Then, some errors made by the software industry (according to the experience of team members) will be shown and the important concepts for understanding the approach used in the application design. The following will be presented the functional and non-functional requirements that motivated the use of the approach and how the elements were implemented. It will also be shown how the ALM environment manages the application life cycle and how tests were organized (unit, integration and system). As an example, issues related to the implementation of security in the application will be presented, reverse AJAX through domain events, cross interests and integration with other systems. In conclusion, the benefits obtained with the approach will be presented, such as the flexibility gain in the application and the speed acceleration of the team with regard to productivity.