Page 54 -
P. 54
ITERATION IN SYSTEMS ANALYSIS AND DESIGN 39
“the repetition of a process” in computer science, “a specific form of repetition with a mutable
state” in mathematics, and in common parlance it is considered synonymous with repetition in
general (Wikipedia, 2007). The “iterative method” describes a problem-solving methodology in
many fields, including computer science and mathematics. These methods share the description
of techniques “that use successive approximations to obtain more accurate solutions . . . at each
step” (Barrett et al., 1994). The problem-solving system is said to converge when a solution that
satisfies the problem criteria is reached through successive iterations.
It is no wonder the term “iteration” is not used consistently to refer to the same aspect of
systems design in the extant literature. For example, for software designers, iteration commonly
refers to the cyclical generation and testing of increasingly functional software code (Beck, 2002),
but it can also describe the repetition of a phase of development due to rework (Davis, 1974), or
successive subphases within a main phase (Iivari and Koskela, 1987). Less common applications
also abound. For example, Checkland and Scholes (1999) indicate that the cyclical comparison
of conceptual models to the real world represents a form of iteration. Iterative activities also often
go by different names such as “prototyping” when designers iteratively elicit user input (Alavi,
1984), “rounds” when designers iteratively search for a design solution to reduce functional or
implementation risk (Boehm, 1988), or even a “dance” of interactions among designers and users
toward increased mutual understanding (Boland, 1978).
Although all of these uses bear a Wittgensteinian family resemblance (Blair, 2005), the funda-
mental aspect of iteration relates to a question of whether iteration is goal-driven or mere repeti-
tion. Dowson illustrates the difference vividly when speaking of a choice between Sisyphus and
Heraclitus while modeling software processes:
The Greek mythic hero Sisyphus was condemned to repeatedly roll a rock up a hill, never to
quite achieve his objective; the Greek philosopher Heraclitus maintained that “You can never
step in the same river twice.” That is, do we see iteration as repetition of the same (or similar)
activities, or does iteration take us to somewhere quite new? (Dowson, 1987, p. 37)
Here we contend that equating iteration with mere repetition does not capture the most salient
aspect in its common usage for systems analysis and design, computer science, or mathematics.
For us, use of the term “iteration” implies a progression toward an objective, whereas repetition
has no such implication. Software development activity accordingly involves work toward closure,
which is the delivery of a product. Even if repeated activities bear a strong resemblance to each
other, some learning in the development project can be reasonably assumed to take place within
each step while the same development activity is carried out many times. Yet, no formal, single
definition of the term “iteration” in systems analysis will be presented here. Rather, echoing the
spirit of its many uses, we suggest that the key facets of iteration are: (1) looping operations through
repeated activities, and (2) a progression toward a convergence or closure.
Systems design occurs within the minds of individual developers, among developers, and
between developers and other groups. Consequently, iterations take place cognitively, within the
minds of developers, and socially or communicatively across individuals. Cognitive iterations
imply repeated mental activity as a designer converges on a solution that is deemed adequate—
the perfecting of the design idea. Likewise, any object, or artifact, can be iterated during design
while it evolves in discrete steps toward some notion of completion as recognized by the rules of
the genre that define its completeness. As noted above, we suggest that there are two fundamental
forms of iteration during systems analysis and design process: (1) iterative cognitive processes
in the minds of the developers; and (2) iterations over representational artifacts that are used and