13.07.2015 Views

Software Design 2e - DIM

Software Design 2e - DIM

Software Design 2e - DIM

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

238Setpwise refinementUndoubtedly one of the strengths is the relative simplicity of the design process,although even that can be partially illusory, as Wirth observed when commenting onthe ‘long story’ that was needed to describe his solution to the eight-queens problem.Indeed, although the emphasis is placed upon the functional viewpoint, the need toconsider the data modelling viewpoint, at least in later stages, does mean that thesimplicity of the process is indeed relative.A second strength, perhaps less widely recognized, is the emphasis upon the stepwisenature of the process. While creative ‘leaps’ can and do occur when designingsoftware, the stepwise process which favours a gradual development has its benefitstoo. In particular, it encourages an orderly development of ideas and (if suitablydocumented) a means of managing backtracking in a controlled manner. An importantelement of this is to accept (as Wirth did) that backtracking is a normal feature of anydesign process. (This aspect of design is rarely given much emphasis in design textbooks,not least because case studies of design are already ‘long stories’ and addingepisodes of backtracking makes them even longer!)Turning now to the issue of weaknesses, we begin by reminding ourselves of thelimiting characteristics of a top-down strategy that were identified in Chapter 9. Theseincluded:nnnthe instability that can arise from making key decisions at early stages (which tosome extent is countered in stepwise refinement by its emphasis upon the ability tobacktrack, providing that the process is managed adequately);the lack of a stopping rule which, although inconvenient, does not render the processinvalid in any way; andthe problem of duplication of lower-level units.The last of these relates to the issue of scalability, which Wirth did not try to addressin his 1971 paper. (His chosen problem was also relatively small and particularlywell-specified.)Duplication of functionality is only one aspect of scalability. A related issue isthe way that the data is employed in large systems. Zahniser (1988) argues that where‘resident data’ is involved (as opposed to ‘transient data’ or ‘control data’), then thecomplexity of data access and manipulation can lead to further duplication and complexity,requiring a more data-centred approach to design.Perhaps the main conclusion from this section is that stepwise refinement, while itis an eminently practical strategy, is most effectively employed on a limited scale (oftenas an initial design phase), and on problems that are not data-centric in nature. In thenext chapter we see how some of the benefits of stepwise progression can be realizedusing larger and more self-contained process steps.SummaryStepwise refinement has been examined as a design strategy in its own right. From this wecan see that, while applicable within a limited range of problem size (and with well-specifiedproblems that are strongly functional in their emphasis), it becomes less satisfactory for largerproblems and for those that involve more than a minor element of data modelling.

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

Saved successfully!

Ooh no, something went wrong!