How to Design Programs: An Introduction to Computing and Programming
[Go to
first
,
previous
,
next
page;
contents
;
index
]
Section 16
Development through Iterative Refinement
When we develop real functions, we are often confronted with the task of designing a data
representation for complicated forms of information. The best strategy to approach this task is apply a
well-known scientific technique:
ITERATIVE
REFINEMENT
. A scientist's problem is to represent a part of
the real world using mathematics. The result of the effort is called a
MODEL
. The scientist then tests the
model in many ways, in particular by predicting certain properties of events. If the model truly captured
the essential elements of the real world, the prediction will be accurate; otherwise, there will be
discrepancies between the predictions and the actual outcomes. For example, a physicist may start by
representing a jet plane as a point and by predicting its movement in a straight line using Newton's
equations. Later, if there is a need to understand the plane's friction, the physicist may add certain
aspects of the jet plane's contour to the model. In general, a scientist refines a model and retests its
usefulness until it is sufficiently accurate.
A programmer or a computing scientist should proceed like a scientist. Since the representation of data
plays a central role in the work of a programmer, the key is to find an accurate data representation of the
real-world information. The best way to get there in complicated situations is to develop the
representation in an iterative manner, starting with the essential elements and adding more attributes
when the current model is fully understood.
In this book, we have encountered iterative refinement in many of our extended exercises. For example,
the exercise on moving pictures started with simple circles and rectangles; later on we developed
programs for moving entire lists of shapes. Similarly, we first introduced Web pages as a list of words
and embedded Web pages; in section
15.3
we refined the representation of embedded Web pages. For all
of these exercises, however, the refinement was built into the presentation.
This section illustrates iterative refinement as a principle of program development. The goal is to model
a file system. A file system is that part of the computer that remembers programs and data when the
computer is turned off. We first discuss files in more detail and then iteratively develop three data
representations. The last part of the section suggests some programming exercises for the final model.
We will use iterative refinement again in later sections.
16.1
Data Analysis
file:///C|/Documents%20and%20Settings/Linda%20Grauer.../How%20to%20Design%20Programs/curriculum-Z-H-21.html (1 of 7) [2/5/2008 4:48:06 PM]

This
** preview**
has intentionally

**sections.**

*blurred***to view the full version.**

*Sign up*