Page 64 -
P. 64

ITERATION  IN  SYSTEMS  ANALYSIS  AND  DESIGN     49
                    intended to correct (Boehm, 1988). Many problems associated with evolutionary development
                    include: “ad-hoc requirements management; ambiguous and imprecise communication; brittle
                    architectures; overwhelming complexity; undetected inconsistencies in requirements, designs, and
                    implementation; insufficient testing; subjective assessment of project status; failure to attack risk;
                    uncontrolled change propagation; insufficient automation” (Kruchten, 2000, ch. 1).
                      Not surprisingly, many caution that evolutionary development is not suited to every situation,
                    as the idea of continuous iteration makes unrealistic assumptions. Evolutionary methods assume
                    that projects can be structured according to short-term iterations, face-to-face interaction is always
                    tenable and superior to formal upstream documentation, and the cost of change remains constant
                    over the project (Turk, France, and Rumpe, 2005). Issues such as scaling, criticality, and devel-
                    oper talent will often require hybrid methodologies—or a combination of evolutionary prototypes
                    with formal and control-oriented methods (Boehm, 2002; Cockburn, 2002; Lindvall et al., 2002).
                    Also, evolutionary development demands other complementary assets like smart designers or the
                    availability of enlightened users in order to succeed (Beck, 2002; Boehm, 1981).

                    Empirical Impacts of “Iterative Development”

                    Empirical research on “iterative development” is as scarce as the prescriptive research is plentiful
                    (Gordon and Biemen, 1995; Lindvall et al., 2002; Wynekoop and Russo, 1997). The empirical
                    research that does exist focuses on the effects of prototyping on project success (e.g., Alavi, 1984;
                    Boehm, Gray, and Seewaldt, 1984; and others), while neglecting the impact and role of other
                    iterating representations. Nevertheless, in what follows, we assess the state of empirical research
                    on iterations over representational artifacts.
                      Representational artifacts include the documents, data models, and other representations of the
                    software, including artifacts such as user-interface mock-ups and “throw-away” prototypes. These
                    representations are addressed quite extensively in the prescriptive literature, but the iteration of
                    these representations and the effects of those iterations on design outcomes are notably absent.
                    The primary exception is the research on “throw-away” prototypes. Although many researchers
                    distinguish between prototypes that occur at different stages and are used for different purposes
                    (Beynon-Davies et al., 1999; Floyd, 1984; Janson and Smith, 1985), the empirical literature does
                    not underscore distinctions between these types of prototypes and their outcomes, and when they
                    see a distinction, there is no significant difference in the outcomes (Gordon and Biemen, 1993,
                    1995).
                      As indicated earlier, the notion most commonly associated with “iterative development” is
                    evolutionary prototyping. Table 4.4 summarizes the expected impacts of evolutionary prototyp-
                    ing and compares them with empirical findings. It is important to note that a good number of
                    researchers have found empirical evidence to be inconclusive, and these data are not reported in
                    our review. Furthermore, many expectations highlight the drawbacks of the evolutionary method,
                    but these criticisms focus on design outcomes, which are addressed below.
                      The fundamental reason Basili and Turner advocated iterative enhancement is that problems and
                    solutions are not well understood, and even if they were, “it is difficult to achieve a good design
                    for a new system on a first try” (1975, p. 390). Subsequent empirical research found prototyping
                    to be an excellent method for users and developers to learn about the requirements together (Alavi,
                    1984; Boehm, Gray, and Seewaldt, 1984; Naumann and Jenkins, 1982; Necco, Gordon, and Tsai,
                    1987). Prototyping has been found to support communication and problem solving between users
                    and developers (Deephouse et al., 1995; Mahmood, 1987), and has led to greater user involvement
                    (Alavi, 1984; Gordon and Bieman, 1995; Naumann and Jenkins, 1982). Improved user participa-
   59   60   61   62   63   64   65   66   67   68   69