In the traditional waterfall model of software development, the first phase of requirements analysis is also the most important one. There are a number of problems with this theoretical model, and these can cause delays and errors in the rest of the process. This article discusses some of the more common problems that project managers experience during this phase, and suggests possible solutions.
This article is also available as a TechRepublic download.
In the traditional
waterfall model of software development, the first phase of requirements
analysis is also the most important one. This is the phase which involves
gathering information about the customer’s needs and defining, in the clearest
possible terms, the problem that the product is expected to solve.
This analysis includes
understanding the customer’s business context and constraints, the functions
the product must perform, the performance levels it must adhere to, and the
external systems it must be compatible with. Techniques used to obtain this
understanding include customer interviews, use cases, and “shopping
lists” of software features. The results of the analysis are typically
captured in a formal requirements specification, which serves as input to the
next step.
Well, at least that’s
the way it’s supposed to work theoretically. In reality, there are a number of
problems with this theoretical model, and these can cause delays and knock-on
errors in the rest of the process. This article discusses some of the more
common problems that project managers experience during this phase, and suggests
possible solutions.
Possibly the most
common problem in the requirements analysis phase is that customers have only a
vague idea of what they need, and it’s up to you to ask the right questions and
perform the analysis necessary to turn this amorphous vision into a
formally-documented software requirements specification that can, in turn, be
used as the basis for both a project plan and an engineering architecture.
To solve this problem,
you should:
The second most common
problem with software projects is that the requirements defined in the first
phase change as the project progresses. This may occur because as development
progresses and prototypes are developed, customers are able to more clearly see
problems with the original plan and make necessary course corrections; it may
also occur because changes in the external environment require reshaping of the
original business problem and hence necessitates a different solution than the
one originally proposed. Good project managers are aware of these possibilities
and typically already have backup plans in place to deal with these changes.
To solve this problem,
you should:
It’s quite common to
hear a customer say something like “it’s an emergency job and we need this
project completed in X weeks”. A common mistake is to agree to such
timelines before actually performing a detailed analysis and understanding both
of the scope of the project and the resources necessary to execute it. In
accepting an unreasonable timeline without discussion, you are, in fact, doing
your customer a disservice: it’s quite likely that the project will either get
delayed (because it wasn’t possible to execute it in time) or suffer from
quality defects (because it was rushed through without proper inspection).
To solve this problem,
you should:
Often, customers and
engineers fail to communicate clearly with each other because they come from
different worlds and do not understand technical terms in the same way. This can
lead to confusion and severe miscommunication, and an important task of a
project manager, especially during the requirements analysis phase, is to
ensure that both parties have a precise understanding of the deliverable and
the tasks needed to achieve it.
To solve this problem,
you should:
The scholars Bolman and Deal suggest that an
effective manager is one who views the organization as a “contested
arena” and understands the importance of power, conflict, negotiation and
coalitions. Such a manager is not only skilled at operational and functional
tasks, but he or she also understands the importance of framing agendas for
common purposes, building coalitions that are united in their perspective, and
persuading resistant managers of the validity of a particular position.
These skills are
critical when dealing with large projects in large organizations, as
information is often fragmented and requirements analysis is hence stymied by
problems of trust, internal conflicts of interest and information
inefficiencies.
To solve this problem,
you should:
Hopefully, this
discussion should have served to both make you aware of potential pitfalls in
the requirements analysis phase, and provided some guidance about how to avoid
them. Good luck!