I agree with Leo that theory is different from practice, and the whole answer is very good.
Theory vs Practice
We have to be careful.
Many theories are created to then be implemented and tested in practice. They may or may not work.
But in the case of Software Engineering, what happens in general is the reverse. Much of the theory came from the observation of practice or borrowed from other areas of knowledge, such as factory procedures or project management.
The problem is that these things don’t work the same way, after all you don’t develop software the same way you make an automobile on production lines or you build a building.
Analogies
Although they are not perfect, many analogies with these other areas help us to understand what we are doing.
Similarly, a step-by-step like the one described in the question does not consist of a fixed rule to be followed, but an abstraction of what is actually done.
In other words, it’s not like a cookbook or an assembly manual where you take each step and get the final product. Think about the Software Engineering theory about an attempt to explain or describe what we often do without even understanding.
Example
Suppose you had an idea for an internal system for your company that will improve a certain process.
You go to the person in charge of the area and ask some questions to understand how things really work.
Then go back to your desk and write a text telling you what the system could do to effectively improve the process.
Then you go back to talk to the person in charge and explain your proposal, that is, how you intend to make their work easier or effective, save effort, decrease errors, or anything along those lines.
Imagine that he liked the idea and tells you that he would be grateful to work with you to make it real.
At this point you go back to your desk and spend a day or two outlining your idea better, creating screen models, maybe modeling the database and, in the end, assembling a very simple small prototype,
Now you call the man in charge and show him what you’ve done. Imagine that he liked it, thinks he’s on the right track and just gives some tips on some details that would look better in another way.
Finally, you would spend another week or two to improve the prototype, polish the interface, put some security and make available the first version of the product.
The responsible one then starts to use with his team, verifies that the result was positive and from there he will begin to request some improvements, small adjustments and new functionalities to improve even more the gotten gain.
Explanation
All I described above trying not to use technical terms is exactly how a project could work using the same steps described in the question, but with an agile approach.
Note that even in the agile project you have the analysis of requirements, description of the system in user stories, think of the objects that will compose the solution and make these objects work.
The main differences are:
- It may not be necessary to spend a lot of time making diagrams to unless this is relevant to your understanding of the problem
- In the agile process we don’t try to figure out everything the system should do forever and ever, but focus on an initial idea that solves the most critical problem, test whether it works, get the feedback user and iterate again, that is, go back to the first step to create a new version of the system with better and more functionality
- The focus is on meeting customer needs and not simply creating a computational model and beautiful diagrams
Considerations
Use the concepts of Software Engineering to understand the principles of software development and then use the engineering or management techniques that contribute to improve your work.
Sometimes, when the work environment is chaotic, it is recommended to adopt some existing development model. But, in general, the ideal is not to try to follow a textbook but to adapt the available methods that are relevant in your case to then try to do a more effective job.
Anything that doesn’t work should simply be discarded. For example, I recommend you try to make a simple class diagram without spending too much time thinking about absolutely all possible relationships and attributes. After a while you will realize how much this diagram was useful or not and in the next cycle you will have more security to decide this.
I suggest you take a look at Project Management Body of Knowledge, also known as PMBOK. The stage of collecting requirements is only a small part among the 10 areas of knowledge that a project can possess. The little you absorb from there is already a big step for the projects you’ll be playing in the future.
– Rodrigo Rigotti
Thanks for the suggestion @rodrigorigotti, I’ll take a look yes. This book is focused on teams or for a programmer alone also serves?
– SomeDeveloper
PMBOK actually targets the project manager, but anyone can be a project manager for their own project. : ) Good luck!
– Rodrigo Rigotti
(Four years later...) Look for online UML courses such as Udemy.com, some of which are focused on web applications.
– Piovezan