I
am not going to elaborate further on how to select and define the business
objectives. I also will not spend much time on the How, assuming
that as experts in our field we know how to create a to-do list for achieving
our objectives. I do want to acknowledge that there are also First
Times, such as, a new application, a new graphical library, or a new
programming environment. In these cases, the to-do list may not be right
at our fingertips. In these situations, answering the following questions
will help us to produce the desired list.
-
Which work products do you share with the rest
of the team?
-
What are the steps for finding answers to what
is unknown?
-
Which deliverables give you feedback on your progress?
-
What is the level of detail that helps you to
provide better estimates?
I do want to cover the What in more detail.
The What defines the strategy for building the software system.
The strategy is the bridge between the Why and the How.
Moreover, this bridge has a name. We refer to it as the software development
process or software development lifecycle. A software development
process defines What to do When and for How Long.
Applying the first tip, Isolate Issues
gives structure to the work that needs to be accomplished. The Rational
Unified Process shows the issues we need to isolate when building software
systems. It depicts the areas of activities we spend our efforts on, and
it helps us divide our concerns as they evolve over time.
Figure 2: Overview of the Rational Unified
Process (RUP)
The point of this diagram is not to advocate the
incremental and iterative development process versus the spiral or waterfall
model.
These are archetypal models that do not exist
in their pure form?they are thinking models. Questions (e.g. How well do
we understand the problem?), and project characteristics (e.g. project
size and complexity) determine whether your product development strategy
follows the waterfall, spiral or iterative/incremental process.
The first proposed software development process
was the waterfall model. Its major contribution was to call out the different
engineering activities, such as requirements, analysis, design, implementation
and test, and the sequence in which they occur. The spiral model identifies
risk and its reduction as a major driver of the software development process.
It also acknowledges the shortcomings of the waterfall model by proposing
that the sequence of engineering activities will be executed repeatedly. |
The iterative life cycle
groups deliverables into iterations for early and continuous feedback on
the product as it evolves and the process.
Following are short descriptions
of the type of work that needs to be accomplished in each of the four phases
of the RUP:
-
The focus of the inception
phase is to prepare the business case. This includes the product requirements,
an estimate for the budget and schedule and projected costs and revenues.
-
During the elaboration phase,
software requirements are written, and a detailed project plan is prepared.
The component architecture of the software system and interfaces are defined.
Investigative prototyping may occur. Hardware and software are acquired,
installed and configured.
-
The construction phase
is devoted to producing the software system. Module design, source code
implementation and testing are implemented.
-
During the transition phase,
the emphasis is on crossing the Ts and dotting the Is. Beta test feedback
from customers is incorporated into the product, and system tests are conducted.
Product stability is the target. Release management moves into the center.
The titles for the four phases
serve as the first decomposition for the WBS. The process components are
placeholders or checklist items for the next level of the WBS. The target
is a detailed WBS similar to the one in Figure 3.
Figure 3: WBS for the Implementation
Component
-
To get from the phase-based
skeleton to a detailed WBS, we need to apply the second tip, which is divide
and conquer. Specifically, we need to divide and conquer the technical
content of the product we are building. There are two ways we can divide
the technical content:
-
Based on the functional requirements
-
Based on the software components
of the product
|