Now that we saw how software engineering was born and we
saw some of the problems that led to the birth of software
engineering. Let's see how we can do better. How can we
preform software development in a smarter, in a better way, a more
successful way? So what I'm going to show here is the
way I see software development. To
me software development is fundementally going
from an abstract idea in somebody's head, for example, the customer's head,
to a concrete system that actually implements that idea and hopefully it
does it in the right way. And this is a very
complex process. It can be overwhelming. So, unless we are talking about
the trivial system, it's very complex for us to keep in mind
all the different aspects of the systems, and to do all the
different steps required to build this system, automatically. So that's when
software processes come to the rescue. So what is a software process?
A software process is nothing else but a way of breaking down
this otherwise unmanageable task into smaller steps. In smaller steps that we
can handle. And that can be tackled individually. So having a
software process is of fundamental importance for several reasons. First of
all, for non-trivial systems, you can't just do it by getting
it, by just sitting down and developing. What you have to
do instead is to break down the complexity in a systematic
way. So software processes are normally systematic. And you need to
break down this complexity, in a more or less formal way.
So software processes are also a formal, or semiformal, way of
discussing, or describing, how software should be developed.
So what are the steps involved in developing software?