We just saw several software process models, and there
are many, many more. And because these process models define
the master plan for our project, the specific process
model that we choose has as much influence over a
project's success as any other major planning decision that
we make. Therefore, it is very important that we pick
the appropriate model for our development process. Picking an appropriate
model can ensure the success of a project. On the
contrary, if we choose the wrong model, that can be a
constant source of problems and ultimately, it can make the project
fail. So how can we choose the right model for a
project? To be able to do so, we have to take into
consideration many factors. In particular, we need to be aware of
what level of understanding we have of the requirements. Do we understand
all the requirements? Are we going to be able to collect all
the requirements in advance, or collecting requirements is going to be hard and
therefore, we might want to follow a process that is more flexible
with that respect. Another important point is the expected lifetime of the
project. Is this a quick project that we are putting together for
a specific purpose or something that's going to last for for a number
of years and that we're going to maintain over all those years?
That's going to make a difference in the way we decide to develop
that project. Also, what is the level of risk involved? Do we
know the domain very well? Do we know exactly the technologies involved?
Well, if so, we might go with a more traditional process. Otherwise,
we might want to be more agile, more flexible. It is also
very important to know the schedule constraints. How much time, how many
resources do we have for this project? What is the expected interaction
with the management and the customer? In particular for this ladder, there
are many processes that rely on the fact that there can be
a continuous interaction with the customer. If that interaction is not there,
there's no way we are going to be able to use these processes.
Conversely, there are processes that don't require the presence of the customer
at all, except for the initial phase and maybe some checking points and
so if the customer is very inaccessible, we might want to follow
one of those processes, instead of one of the more demanding ones in
terms of customer's time. Finally, it is important to take into account
the level of the expertise of the people involved. Do we have people
that know the technologies that we're using? Do we know people that
know a specific kind of process?
Some processes require some specific expertise and
we're not going to be able to follow that process if we don't
have the right expertise. So we need to take into account all of
these aspects, and sometimes more, in order to be able to make
the right decision and pick the right software process model for our project.