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
   49   50   51   52   53   54   55   56   57   58   59