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.

software design ideas and has described how thinking about software design has developedand evolved. A particularly important element of this work is that it includedmaking contact with some of the pioneers of the field, in order to obtain their impressionsand recollections.A major factor in the development of thinking about software design has been theway that the concept of a module has been interpreted and defined. In the earlieststages, the goal of physical modularity was achieved through the development of thesubprogram mechanism, which then provided the basic design element that could bemodelled in the design process. Only later did such concepts as that of informationhidingprovide a basis from which to develop a quite different view of how modularitymight be used in a logical manner.The form of module employed in a design model is clearly related to the ideasabout architectural style introduced in Chapter 6, and the evolution of the two haslargely gone in parallel. Changes in the form of module employed have reflected theevolution of ideas about how systems should be structured, and how those structuresmight be achieved. Early thinking about design was concerned with making effectiveuse of the subprogram’s strengths, and so was focused on partitioning system functionalityinto sub-tasks, well summarized in Niklaus Wirth’s (1971) classic paper.Structuring a design solution around the principle of information-hiding has proved tobe a rather more difficult goal to achieve through procedural forms but, since the late1980s, applying these to the object-oriented architectural style has attracted considerableattention and effort. In such a style, the basic module concept (the object) iscorrespondingly more complex in its nature and properties than the subprogram.<strong>Software</strong> design methods are not influenced by technical issues alone, of course.There are environmental, cultural, organizational and national influences, as well asthe continually increasing scale of user expectations and need as systems have becomeever larger and more complex (Curtis et al., 1988).Clearly, many factors have influenced the development of design methods, and forthat reason they are difficult to classify in any very systematic manner. For the purposesof the rest of this chapter, though, we will use the following broad groupings inorder to discuss how strategy is incorporated into a design method:199The role of strategy in methodsnnnndecompositional methods, which generally take a ‘top-down’ view of the designprocess, developing the design model through a process of sub-division;compositional methods, whereby the basic design model is built up from the identificationof ‘entities’ of some form;organizational methods, for which the structure of the design process is stronglyinfluenced by the requirement that it should conform to non-technical requirementsthat are based on the form of the organization;template-based methods, where a specific problem domain provides a class of problemsthat can be tackled using a fairly standard strategy.The rest of this chapter examines the characteristics of each of these strategies (withthe exception of the last, which is addressed in the next chapter), and makes an initialclassification of methods in terms of them.

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

Saved successfully!

Ooh no, something went wrong!