Organizing Business Knowledge The Mit Process Handbook [Electronic resources]

Thomas W. Malone, Kevin Crowston, George A. Herman

نسخه متنی -صفحه : 185/ 85
نمايش فراداده

10.7 Timing Dependencies

Timing dependencies specify constraints on the relative timing of two or more activities. The most widely used members of this dependency family are prerequisite dependencies (A must complete before B starts) and mutual exclusion dependencies (A and B cannot overlap).

Timing dependencies are used in software systems for two purposes:

To specify implicit resource relationships

To specify cooperation relationships among activities that share some resources

Specify Implicit Resource Relationships Implicit resource relationships arise in situations where parts of a resource flow coordination protocol have been hard-coded inside a set of components. Other parts of the protocol might be missing, and explicit coordination might be needed to manage the missing parts only. One example is a set of components for accessing a database. Each of the components contains all the functionality needed in order to access the database built into its code. The name of the database is also embedded in the components and does not appear in their interface. However, none of the components contains any support for sharing the database with other activities. In applications that require concurrent access of the database by all components, designers need to specify and manage an external mutual exclusion dependency among the components.

Table 10.4: Allen's taxonomy of relationships between time intervals

Relation

Symmetric relation

Pictorial example

X before Y

XXX YYY

X equal Y

XXX

YYY

X meets Y

XXXYYY

X overlaps Y

XXX YYY

X during Y

X equal Y

YYYYYY

XXX

X starts Y

X, Y simstart

XXX

YYYYY

X finishes

Y X, Y simend

XXX

YYYY

Specify Cooperation Relationships Flow dependencies assume that different users of a resource are independent from one another. In many applications, however, users of a resource are cooperating in application-specific ways. Section 10.3 describes an example of such patterns of cooperation. In those cases designers must specify additional dependencies that describe the cooperation among the users. Some of those dependencies could be other resource dependencies. Other could be timing dependencies.

To derive a useful family of timing dependencies we have used the following approach, based on Allen's (1984) taxonomy of time interval relationships. Allen has enumerated all possible relationships between two time intervals (table 10.4). An occurrence of a software activity can be represented by a time interval: [Begin_time, End_time]. Timing dependencies express constraints among activity occurrences. These constraints can be expressed by equivalent constraints between time intervals. Constraints can either require or forbid that a given time interval relationship hold. By enumerating ''required''and ''forbidden''constraints for each of Allen's time interval relationships, we get a list of potentially interesting elementary timing dependencies (table 10.5). These dependencies can be combined to define additional, composite timing relationships. Finally, the resulting set of dependencies can be organized in a specialization hierarchy, as shown in figure 10.18.

Table 10.5: Deriving timing dependency types from Allen's time interval relationships

Allen's relation

''Relation required'' dependency

''Relation forbidden'' dependency

Comments

X before Y

X prerequisite Y

X prevents Y

X equal Y

Can be expressed as a composite pattern:

X, Y simstart AND X, Y simend

X meets Y

X meets Y

Special case of prerequisite

X overlaps Y

X overlaps Y

X, Y mutex

X during Y

X during Y

X, Y mutex

During can be expressed as a composite pattern:

X overlaps Y AND Y finishes X

X starts Y

X starts Y

X, Y simstart

X, Y simstart

X finishes Y

X finishes Y

X, Y simend

X, Y simend

Figure 10.18: Specialization relationships among timing dependencies

The following paragraphs describe each of the dependencies shown in figure 10.18. For each dependency type, we describe:

The timing constraint it specifies

The dependency design dimensions

The principal ways to manage it

Some situations where it might be useful

10.7.1 Mutual Exclusion Dependencies (X, Y Mutex)

Description

Mutual exclusion dependencies among a set of activities limit the total number of activities of the set that can be executing at any one time

Design dimensions

Degree of concurrency (maximum number of concurrently executing activities)

Coordination

processes See Raynal (1986)

Typical use

Mutual exclusion dependencies typically arise among competing users who share resources with limited concurrency

10.7.2 Prerequisite Dependencies (X Prereq Y )

Description

Prerequisite dependencies specify that an activity X must complete execution before another activity Y begins execution

Design dimensions

See section 10.6.3

Coordination processes

See section 10.6.3

Typical use

Prerequisites arise in two general situations:

Between producers and consumers of some resource. A resource must be produced before it can be consumed.

As a special way of managing mutual exclusion dependencies. Mutual exclusion relationships can be managed by ensuring that the activities involved occur in a statically defined sequential order. The ordering can be specified by defining appropriate prerequisite relationships.

10.7.3 Prevention Dependencies (X Prevents Y )

Description

Prevention dependencies specify that the occurrence of an activity X prevents further occurrences of another activity Y

Design dimensions

In permanent prevention dependencies, an occurrence of X prevents all further occurrences of Y

In temporary prevention dependencies, occurrence of a third activity Z re-enables occurrences of Y

Coordination

processes Prevention relationships are closely related to perishable prerequisites (see section 10.6.3). As shown in figure 10.19, every prevention dependency can be mapped to an equivalent perishable prerequisite.

Typical use

Prevention relationships often arise among competing activities that share some resource, where one of the competing activities X has higher priority, and thus the power to restrict access to (prevent) other competing activities Y

Figure 10.19: Relationships between prevention and perishable prerequisite dependencies

10.7.4 Meets Dependencies (X Meets Y )

Description

Meets dependencies specify that an activity Y should begin execution after completion of another activity X

Design dimensions

Minimum or maximum delay between the completion of X and the initiation of Y

Coordination processes

Most of the coordination processes for managing lockstep prerequisites can be used to manage this dependency. Delay parameters between X and Y can determine which alternatives are appropriate for each special case (e.g., if Y must start immediately after X completes, direct transfer of control is usually preferable to loose event synchronization).

Typical use

Meets dependencies are a special case of prerequisite and can also be used to describe relationships between producers and users of resources. The explicit specification of maximum delay between the two activities is useful in situations where resources produced have finite lifetimes and must be used within a specified time interval.

10.7.5 Overlap Dependencies (X Overlaps Y )

Description

Overlap dependencies specify that an activity Y can only begin execution if another activity X is already executing

Design dimensions

None

Coordination processes

This dependency can be managed in two different ways:

Proactively scheduling Y when X starts execution. This is equivalent to decomposing X overlaps Y to Y starts X with specified delay.

Waiting for X to begin execution before allowing Y to start. This is equivalent to defining a perishable prerequisite (enabled by initiation of X, invalidated by completion of X ) between Y and X.

Typical use

Overlap relationships typically imply resource relationships between Y and X. In most cases, during its execution Y produces some resource or state required by X. Overlap dependencies occur most frequently as components of During dependencies.

10.7.6 During Dependencies (X during Y )

Description

During dependencies specify that an activity X can only execute during the execution of another activity Y

Design dimensions

None

Coordination processes

This dependency is a composite pattern of the following two dependencies:

X overlaps Y,so X can begin execution only if Y is already executing.

Y finishes X. Termination of Y also terminates X.

It can be managed by composing processes for managing its two component dependencies.

Typical use

During dependencies imply that X uses some resource or state generated during Y 's execution. For example, a network client can only execute successfully during execution of the system's network driver.

10.7.7 Starts Dependency (X Starts Y )

Description

Starts dependencies specify that an activity Y must start execution whenever X starts execution

Design dimensions

Minimum or maximum delay between initiation of the two activities

Coordination processes

Combinations of direct control flow and scheduling can be used to manage this dependency

Typical use

This dependency is often used to describe application-specific patterns of cooperative resource usage or implicit resource dependencies. For example, when starting a word processor program, the printer driver is often initialized as well, in anticipation to the word processor's need for its services.

10.7.8 Simultaneity Dependency (X, Y Simstart)

Description

Simultaneity dependencies specify that all activities in a set must start execution at the same time

Design dimensions

Minimum and maximum tolerances between the actual time each activity in the specified set begins execution

Coordination processes

Simultaneity dependencies can be transformed into many-to-many prerequisite dependencies and managed as such (see figure 10.20)

Typical use

Simultaneity dependencies are most often used to describe patterns of cooperative resource or mutual resource dependencies

Figure 10.20: A simultaneity dependency can be transformed and managed as a composite prerequisite. Before activities X and Y can begin execution, all four prerequisite activites must occur. Then both X and Y can occur together.

Figure 10.21: Termination of the user-interface also requires termination of the database and graphics servers

10.7.9 Finishes Dependency (X Finishes Y )

Description

Finishes dependencies specify that completion of an activity X also causes activity Y to terminate execution

Design dimensions

Minimum or maximum delay between completion of X and termination of Y

Coordination processes

Termination of the process that executes Y using machine-specific system primitives

Typical use

This dependency is most often used to specify application termination relationships (figure 10.21)

10.7.10 Simultaneous End Dependency (X, Y Simend)

Description

Simultaneous end dependencies specify that all activities in a set must terminate if any of them completes execution

Design dimensions

Minimum or maximum tolerances between the actual time each member of the specified set terminates

Coordination processes

Centralized. Each activity in the set sends a signal to a monitor process upon termination. The monitor process terminates all other activities in the set.

Decentralized. Terminating activities generate an event. All participant activities periodically check for that event and terminate themselves if they detect it.

Typical use Speculative concurrency.

Multiple worker activities are jointly or independently working on a problem. All of them terminate if at least one of them arrives at a solution.