One thing you need to know right away about software processes
is that there's not just one single process, but there are multiple,
possible processes, depending on your context, depending on the kind of
applications that you are developing. In this course, we are going to try
to cover the spectrum of the possible processes, as much as
possible, by focusing on four main software processes. The first one is
what we call normally the waterfall process. And, we call it waterfall
because in the process we go from one phase to the other
in the same way in which water follows the flow
in a waterfall. The second process that we consider is what
we call evolutionary prototyping, and in this case, instead of
following this set of rigid steps, all we're trying to do
is to start with an initial prototype and evolve it
based on the feedback from the customer. We will then move
towards a slightly more formal process, which is the rational unified
process or the unified software process. And this is a kind
of project heavily based on the use of UML, so we
will also cover UML when discussing this kind of project. Finally,
the fourth kind of process we will consider is the family
of agile software processes. And these are processes in which we
sacrifice the discipline a little bi,t in order to be more
flexible and be more able to account for changes and in
particular for changes in requirements. We are going to cover each
one of these four processes extensively in the rest of the class.