Page 69 -
P. 69

40            PART ONE  THE PRODUCT AND THE PROCESS


                       anchor point and represents a set of objectives associated with the preparation of the
                       software for installation/distribution, site preparation prior to installation, and assis-
                       tance required by all parties that will use or support the software.

                       2.7.4  The Concurrent Development Model
                       The concurrent development model, sometimes called concurrent engineering, has
                       been described in the following manner by Davis and Sitaram [DAV94]:
                       Project managers who track project status in terms of the major phases [of the classic life
                       cycle] have no idea of the status of their projects.  These are examples of trying to track
                       extremely complex sets of activities using overly simple models. Note that although . . . [a
                       large] project is in the coding phase, there are personnel on the project involved in activities
                       typically associated with many phases of development simultaneously. For example,
                       . . . personnel are writing requirements, designing, coding, testing, and integration  testing
                       [all at the same time]. Software engineering process models by Humphrey and Kellner
                       [[HUM89], [KEL89]] have shown the concurrency that exists for activities occurring during
                       any one phase. Kellner's more recent work [KEL91] uses statecharts [a notation that repre-
                       sents the states of a process] to represent the concurrent relationship existent among activ-
                       ities associated with a specific event (e.g., a requirements change during late development),
                       but fails to capture the richness of concurrency that exists across all software development
                       and management activities in the project. . . . Most software development process models
                       are driven by time; the later it is, the later in the development process you are. [A concur-
                       rent process model] is driven by user needs, management decisions, and review results.
                       The concurrent process model can be represented schematically as a series of  major
                       technical activities, tasks, and their associated states. For example, the engineering
                       activity defined for the spiral model (Section 2.7.2) is accomplished by invoking the
                       following tasks: prototyping and/or analysis modeling, requirements specification,
                       and design. 9
                          Figure 2.10 provides a schematic representation of one activity with the concur-
                       rent process model. The activity—analysis—may be in any one of the states 10  noted
                       at any given time. Similarly, other activities (e.g., design or customer communica-
                       tion) can be represented in an analogous manner. All activities exist concurrently but
                       reside in different states. For example, early in a project the customer communication
                       activity (not shown in the figure) has completed its first iteration and exists in the
                       awaiting changes state. The analysis activity (which existed in the none state while
                       initial customer communication was completed) now makes a transition into the
                       under development state. If, however, the customer indicates that changes in
                       requirements must be made, the analysis activity moves from the under develop-
                       ment state into the awaiting changes state.
                          The concurrent process model defines a series of events that will trigger transi-
                       tions from state to state for each of the software engineering activities. For example,


                        9 It should be noted that analysis and design are complex tasks that require substantial discussion.
                          Parts Three and Four of this book consider these topics in detail.
                       10 A state is some externally observable mode of behavior.
   64   65   66   67   68   69   70   71   72   73   74