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.

<strong>Design</strong> is just as important with software systems also. Most people will readilyaccept that the software used in an aeroplane needs to be well designed and rigorouslytested, not least because they might find themselves as passengers on that aircraft oneday. Yet good design is equally desirable for smaller systems too, since the user stillrequires efficiency (if it can only be defined) and reliability (which suffers from a similarproblem of being difficult to define in a precise manner). A word processor may notbe a safety-critical item, but its user is unlikely to appreciate the occasional lost paragraphoccurring at apparently random points in a document. It may not be appropriateor cost-effective to employ the same techniques for designing a word processor asfor designing safety-critical avionics systems, but the need for a well-designed productis still there. The same parallel might apply to the design of major road-bridges and thedesign of seating in the dentist’s waiting room: the structural complexities are very different,but both of them are expected to function well enough to meet our needs.Despite extensive exposure to the products of the design process in general (withan associated awareness that good design practices cannot always ensure success interms of design quality), people’s awareness of how design is carried out is often ratherunstructured and piecemeal. In the domain of computing science and software engineering,designing software is a major problem-solving technique, to be ranked alongsidethe concepts of theory and of abstraction (Denning et al., 1989). Yet all too rarelydo we have a clear idea of the nature and purpose of the design process, and our ideasabout design are all too often muddled in with notions derived from the more specificpractices of design methods. So this first chapter aims to explore some ideas about thedesign process and its nature, in order to provide a basic framework for an understandingof design issues that can then be used to explore the ideas and concepts introducedin the subsequent chapters.Although this book is focused largely on the application of design ideas andmethods to the production of software, the task of design involves the use of manyideas and concepts that can be applied more widely. To help reinforce this point, theexamples used in these introductory chapters will be drawn from a wide range offields, and not just from the field of software development.So what is design exactly, what sort of activities does it involve, and what can weobserve about the products of that process? Perhaps a good starting point is to considerthe words of one of the pioneering design methodologists, J. Christopher Jones,taken from his classic work, <strong>Design</strong> Methods: Seeds of Human Futures (Jones, 1970).5What is design?‘The fundamental problem is that designers are obliged to use current informationto predict a future state that will not come about unless their predictions are correct.The final outcome of designing has to be assumed before the means of achievingit can be explored: the designers have to work backwards in time from anassumed effect upon the world to the beginning of a chain of events that will bringthe effect about.’This concise description of the design process is more than sufficient to show that itsform is very different from that of the scientific approach to problem-solving whichwill perhaps be more familiar to many readers. As shown in Figure 1.1, the interactionbetween mankind and the surrounding ‘world’ has historically taken two paths. Thepath of science has been concerned with studying things as they are, with observationand experimentation as its key activities. In its ‘classical’ form, the scientific approach

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

Saved successfully!

Ooh no, something went wrong!