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.

and with concepts such as abstract data types. It is suitable as a text for advancedundergraduate or postgraduate courses in software design or software engineering.Systems analysts/designers, programmers and project managers should benefit fromthe comparison of a broad spectrum of design methods.Why software design is importantWriting a computer program is a challenging and creative experience, motivated by thedesire to solve problems. The task of developing even a small computer program is notan easy one. Programmers are continually required to keep their attention focusedupon many different aspects of both problems and solutions. Even when the staticstructure of a program is complete (that is, the program ‘compiles’ successfully), thecorrectness of its dynamic behaviour still needs to be confirmed. Indeed, it is this needto keep both static form and eventual dynamic behaviour continually in mind whendeveloping a solution that forms a significant part of the challenge that programmingprovides.During the 1970s a number of advances in software technology were designed toimprove the task of developing computer programs: higher-level programming languages,more efficient compilers, structured programming practices and symbolic debuggingfacilities. All of these have assisted programmers with developing, controlling andvisualizing their ideas about a program, mainly through increased use of the conceptof abstraction.Abstraction has played a central role in the development of better programmingtechniques, allowing the designer of a program to reason about its structure andbehaviour without needing to address the detailed issues of determining implementationforms at the same time. While the benefits arising from these improved techniqueswere at first identified mainly in terms of programming activities, there was also growingrealization of the need to develop better practices for programming-in-the-large,which is concerned with the design and development of ‘systems’ as a whole.xiiiPreface to the first editionProgramming-in-the-largeWhile the design of programs offers significant problems, the design of large systemsprovides a vastly increased degree of complexity. The increased levels of abstractionrequired for designing a large system make it more difficult for the designer to visualizeand ‘model’ the behaviour of the eventual system. The greatly increased time intervalthat can occur between the origination of an idea and its actual realization leavesdesigners much more isolated from their actual creation, compounded by the likelihoodthat the task of implementation will be allocated to others. This means thatdesigners also need to communicate their ideas to others in an unambiguous manner.So the 1970s also saw the development of design representation forms, and theemergence of design methods intended to capture the experiences of other designers,and so to help designers describe their ideas and to control and structure their task.(Throughout this book the term design method has been used in preference to themuch-abused design methodology when describing specific design techniques. According

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

Saved successfully!

Ooh no, something went wrong!