Information Technology Reference
In-Depth Information
could settle on just what the package should do. Some time later, de
velopers realized that the details of check writing might be useful in
helping folks fill out their annual income tax forms (at least in the
United States). Again, an initial vision required considerable refine
ment and clarification before developers could produce a home
finance package that could handle both bank accounts and tax state
ments in ways that users would find helpful and easy to use.
In most cases, the process of moving from the initial idea to a
finished product that meets the needs of various people is rarely
trivial. Significant work is required to precisely define the problem,
clarify what capabilities might be needed to help solve it, determine
mechanisms to achieve the desired capabilities, translate the solu
tions into programs that a computer can interpret, and perform
checks that the software does what is intended. Clearly, many steps
(and people) are involved in the process of developing software.
Problem solving by creating software frequently proceeds ac
cording to the following basic steps—each of which will be defined
and explained shortly: writing specifications, developing algo
rithms, coding algorithms, testing and running programs, and main
taining programs.
Writing Specifications: A specification of a problem is the care
ful statement of what problem is to be solved. In most mathematics,
science, and engineering courses, this specification is complete in
every assignment; students are told precisely what work is to be
done. Unfortunately, however, even in such settings as a controlled
classroom environment, it sometimes happens that the statement of
a problem is flawed. The statement, for example, may be ambigu
ous or contradictory. (Some faculty members have been known to
state that each of their assignments actually has two parts: the first
consists of determining what the question is supposed to be asking,
and the second involves answering the corrected problem.)
In lesscontrolled environments, the careful specification of a
problem may take considerable work. For example, consider the traf
fic lights in a reasonably large city. Lights at each intersection may be
red, amber, or green in each direction, and a timing device or con
troller changes the lights from one color to the next after a prescribed
time interval. In this setting, an overall goal might be to determine
when lights should change color and to coordinate the color changes
at various intersections in such a way as to allow traffic to flow most
efficiently. Here the intuitive idea may seem clear: Traffic should
Search WWH ::




Custom Search