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.

design plan) could well be an important constraint upon the task of maintenance.The timescale for these last two phases can also be very long.49The proportion of effort allocated to these tasks is one that depends upon many factors.However, a study of the practices of software developers that drew upon a global setof data suggests that the variations are not as great as might be expected (Blackburnet al., 1996). The task classified in the study as ‘detailed design’ was particularly stable,taking around 20 per cent of total effort and 20 per cent of total time. Interestingly,this seemed to be true regardless of whether the organizations were classified as being‘fast’ (showing improvements in development speed of over 25 per cent during theprevious five years) or ‘slow’ (improvement of 25 per cent or less).As might be expected, regardless of how these tasks are organized, the design taskis strongly linked to the tasks that precede it in the above list. To clarify their roles alittle more, therefore, we shall examine the simple example of a computer system thatis to support the issue, reservation and recall of books, CDs and videos for a locallibrary branch. Very briefly, these are as follows.Requirements elicitation will be concerned with identifying the needs of the librarystaff and users, in terms of the purposes of the library. An example of such a needmight be the facility for identifying those books that have particularly long reservationlists, so that the library staff can consider whether to order additional copies. Such ananalysis will usually also consider the interactions and organizational relationshipsthat may exist between the various needs of the users of the system.Analysis will create a model of how the library works and hence produce a list offunctions that the system will need to provide, and the behaviour it should exhibitwhen performing these functions under given conditions. As an example, the bookreservation function should specify the effects of adding a request when the maximumnumber of books that a borrower has on loan or requested is exceeded – and even whatis to happen when the borrower already has the book being requested! (One problemfor analysis is that it may not be appropriate to ‘freeze’ particular organizationalmodels of practice without considering the likely effects of introducing the new system.It may well be that in our example the library might be better advised also to changesome of the practices or rules that were originally formulated for the purpose of handlingpaper-based records. One of the roles of the analysis task should, therefore, be toidentify where such changes might be appropriate.)The specification for this system may also need to describe the way in which theusers’ interactions with the final system are to be organized (the ‘look and feel’aspects). The design of human–computer interfaces is still a relatively specialized anddifficult art, with a strong multi-disciplinary flavour. In this example it will be a veryimportant element, since the efficiency with which the librarians will be able to performtheir tasks will be strongly affected by the ease with which they can interact withthe information presented to them. (In some ways, this relates to the designer’s ownuse of ‘mental models’, since the interface should provide the librarians with a structurethat matches their own mental models of the processes that are involved. Wemight reasonably also expect that this will be expressed in terms of ‘library objects’rather than ‘computing objects’.)So the output from requirements elicitation is user-oriented, while that from analysisis solution-oriented. Indeed, the role of analysis is an important one, since it formsA context for design

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

Saved successfully!

Ooh no, something went wrong!