13.07.2015 Views

Software Design 2e - DIM

Software Design 2e - DIM

Software Design 2e - DIM

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

336(The latter point does require a somewhat wider interpretation of ‘refinement’ than iscommonly the case, although it is by no means an unreasonable use of the term!)Jackson System Development (JSD)15.4 JSD heuristicsAs might be expected, the principal heuristics in JSD are largely (but not entirely) usedfor tasks analogous to those supported by the heuristics of JSP, although, of course, thescale of application is somewhat larger. This section very briefly reviews the roles ofthe following three forms of heuristic:nnnprogram inversionstate vector separationbacktrackingTwo of these are ‘borrowed’ from JSP, while the third is specific to JSD.15.4.1 Program inversionThis technique is used much as in JSP, and provides a means of transforming a modelprocess into a routine (or, more correctly, a coroutine), which can then be invoked byanother process. As before, inversion can be organized with respect to either input oroutput, but the most common form is probably that in which it occurs around an inputdata stream, with the inverted process normally being suspended to wait for inputfrom that stream.One point in which the JSD model differs somewhat from that used in JSP is thatit is possible for a JSD process to have both data-stream inputs and state vector inputs.The use of inversion is really only appropriate for data-stream inputs, which are deterministicand well-formed, whereas state vector inputs are essentially non-deterministic(the value obtained will depend upon exactly when the state vector was last updated)and so do not fit well into the inversion mechanism.Program inversion is essentially a technique used during the implementation stage,when the designer begins to consider the detailed organization of a solution. Prior tothat, the design activities are based on a more abstract model and are less concernedwith the actual details of physical program organization.15.4.2 State vector separationThis heuristic is specific to the multiple-process nature of the JSD model, and has noreal analogy in JSP. It is used to improve efficiency where a JSD model has many processesof a given type. For example, in the ATC problem there might be many instancesof the ‘aircraft’ process; and in a banking system there might be many instances of the‘customer’ process. All the instances of a particular process can use the same code todescribe its structure, but each will require to store different values for the local variablesthat define its state.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!