software design 2nd ed - d. budgen (pearson, 2003) ww

489 546 1
software design 2nd ed - d. budgen (pearson, 2003) ww

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

SOFTWARE DESIGN David Budgen second edition SOFTWARE DESIGN David Budgen Software Engineering Software Design provides a balanced view of the many and varied software design strategies most widely used by practitioners. By being aware of the strengths and limitations of each one, a student is better able to judge which to adopt when working in the field. The book is also valuable for software engineers and project managers who need an objective guide to the state of the art in this area. David Budgen is Professor of Software Engineering at Keele University, UK. A long- term student of software design, he has worked closely with the Software Engineering Institute in Pittsburgh to develop tutorial modules, as well as publishing many research papers on software design topics. www.pearsoneduc.com second edition Software design is a multi-disciplinary activity that develops tools through effective communication of ideas and the use of engineering practices. This text provides an overview and perspective of software design within the context of software development and also of more general thinking about design issues. It examines the nature of design activities, as well as their applications within software development, providing the reader with: • a non-proprietary view of design issues • an overview of design representation forms • a concise review of design practices based on the more widely used design methods • a strong architectural framework A particular feature is the strong evidence-based approach used in the analysis and assessment of these issues. Since the first edition, much progress has been made in the area of software design, with the major changes to the new edition being: • A much stronger recognition of the role played by the concept of architectural style in helping to structure ideas about design. This is used to provide an underpinning framework throughout the second edition. • The inclusion of new forms of software and of new approaches to design, ranging from agile methods and design patterns through to the component concept and the use of the Unified Modeling Language (UML). • An improved formalism to support the analysis of the processes embodied in design methods. SOFTWARE DESIGN Budgen second edition ppc_234x172budgen3 9/18/07 12:24 PM Page 1 Software Design SDA01 9/18/07 10:32 AM Page i INTERNATIONAL COMPUTER SCIENCE SERIES Consulting Editor A D McGettrick University of Strathclyde SELECTED TITLES IN THE SERIES Operating Systems J Bacon and T Harris Programming Language Essentials H E Bal and D Grune Programming in Ada 95 (2nd edn) J G P Barnes Java Gently (3rd edn) J Bishop Concurrent Programming A Burns and G Davies Real-Time Systems and Programming Languages: Ada 95, Real-Time Java and Real- Time POSIX (3rd edn) A Burns and A Wellings Comparative Programming Languages (3rd edn) L B Wilson and R G Clark, updated by R G Clark Database Systems (3rd edn) T M Connolly and C Begg Distributed Systems: Concepts and Design (3rd edn) G Coulouris, J Dollimore and T Kindberg Principles of Object-Oriented Software Development (2nd edn) A Eliëns Fortran 90 Programming T M R Ellis, I R Philips and T M Lahey Program Verification N Francez Introduction to Programming using SML M Hansen and H Rischel Functional C P Hartel and H Muller Algorithms and Data Structures: Design, Correctness, Analysis (2nd edn) J Kingston Introductory Logic and Sets for Computer Scientists N Nissanke Human–Computer Interaction J Preece et al. Algorithms: A Functional Programming Approach F Rabhi and G Lapalme Ada 95 From the Beginning (3rd edn) J Skansholm Java From the Beginning J Skansholm Software Engineering (6th edn) I Sommerville Object-Oriented Programming in Eiffel (2nd edn) P Thomas and R Weedon Miranda: The Craft of Functional Programming S Thompson Haskell: The Craft of Functional Programming (2nd edn) S Thompson Discrete Mathematics for Computer Scientists (2nd edn) J K Truss Compiler Design R Wilhelm and D Maurer Discover Delphi: Programming Principles Explained S Williams and S Walmsley Software Engineering with B J B Wordsworth SDA01 9/18/07 10:32 AM Page ii Software Design David Budgen SDA01 9/18/07 10:32 AM Page iii Pearson Education Limited Edinburgh Gate Harlow Essex CM20 2JE England and Associated Companies throughout the world Visit us on the World Wide Web at: www.pearsoned.co.uk First published 1993 Second edition 2003 © Addison-Wesley Publishers Limited 1993 © Pearson Education Limited 2003 The right of David Budgen to be identified as the author of this work has been asserted by him in accordance with the Copyright, Designs and Patents Act 1988. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without either the prior written permission of the publisher or a licence permitting restricted copying in the United Kingdom issued by the Copyright Licensing Agency Ltd, 90 Tottenham Court Road, London W1T 4LP. The programs in this book have been included for their instructional value. They have been tested with care but are not guaranteed for any particular purpose. The publisher does not offer any warranties or representations nor does it accept any liabilities with respect to the programs. All trademarks used herein are the property of their respective owners. The use of any trademark in this text does not vest in the author or publisher any trademark ownership rights in such trademarks, nor does the use of such trademarks imply any affiliation with or endorsement of this book by such owners. ISBN 0 201 72219 4 British Library Cataloguing-in-Publication Data A catalogue record for this book is available from the British Library Library of Congress Cataloging-in-Publication Data Budgen, D. (David) Software design / David Budgen.—2nd ed. p. cm. Includes bibliographical references and index. ISBN 0–201–72219–4 (alk. paper) 1. Computer software—Development. I. Title. QA76.76.D47B83 2003 005.1′2—dc21 2003041859 10987654321 08 07 06 05 04 03 Typeset in 10/12pt Sabon by 35 Printed and bound in Great Britain by Biddles Ltd., Guildford and King’s Lynn The publisher’s policy is to use paper manufactured from sustainable forests. SDA01 9/18/07 10:32 AM Page iv v Contents Preface to the Second Edition ix Preface to the First Edition xii Publisher’s Acknowledgements xvi Part 1 The Role of Software Design 1 Chapter 1 The Nature of the Design Process 3 1.1 What is design? 4 1.2 The role of the design activity 14 1.3 Design as a problem-solving process 18 1.4 Design as a ‘wicked’ problem 19 Chapter 2 The Software Design Process 25 2.1 What is software? 26 2.2 Building models 27 2.3 Transferring design knowledge 32 2.4 Constraints upon the design process and product 37 2.5 Recording design decisions 38 2.6 Designing with others 40 Chapter 3 Design in the Software Development Process 45 3.1 A context for design 46 3.2 Linear development processes 50 3.3 Incremental development processes 51 3.4 Economic factors 55 3.5 The longer term 57 SDA01 9/18/07 10:32 AM Page v Contents Chapter 4 Design Qualities 63 4.1 The quality concept 64 4.2 Assessing design quality 65 4.3 Quality attributes of the design product 75 4.4 Assessing the design process 82 Part 2 Transferring Design Knowledge 87 Chapter 5 Describing a Design Solution 89 5.1 Representing abstract ideas 90 5.2 Design viewpoints for software 94 5.3 Forms of notation 98 Chapter 6 Transferring Design Knowledge 105 6.1 The need to share knowledge 106 6.2 The architecture concept 109 6.3 Design methods 118 6.4 Design patterns 120 6.5 A unified interpretation? 122 Chapter 7 Some Design Representations 127 7.1 A problem of selection 128 7.2 Black box notations 129 7.3 White box notations 158 7.4 Developing a diagram 168 Chapter 8 The Rationale for Method 175 8.1 What is a software design method? 176 8.2 The support that design methods provide 180 8.3 Why methods don’t work miracles 185 8.4 Problem domains and their influence 187 Chapter 9 Design Processes and Design Strategies 193 9.1 The role of strategy in methods 194 9.2 Describing the design process – the D-Matrix 200 9.3 Design by top-down decomposition 205 9.4 Design by composition 207 9.5 Organizational influences upon design 209 vi SDA01 9/18/07 10:32 AM Page vi Contents viiChapter 10 Design Patterns 213 10.1 Design by template and design reuse 214 10.2 The design pattern 216 10.3 Designing with patterns 225 10.4 Patterns in the wider design context 227 Part 3 Design Practices 231 Chapter 11 Stepwise Refinement 233 11.1 The historical role of stepwise refinement 234 11.2 Architectural consequences 235 11.3 Strengths and weaknesses of the stepwise strategy 237 Chapter 12 Incremental Design 241 12.1 Black box to white box in stages 242 12.2 Prototyping 245 12.3 An example – DSDM 247 Chapter 13 Structured Systems Analysis and Structured Design 257 13.1 Origins, development and philosophy 258 13.2 Representation forms for SSA/SD 259 13.3 The SSA/SD process 263 13.4 The role of heuristics in SSA/SD 273 13.5 Extended forms of SSA/SD 275 13.6 SSA/SD: an outline example 275 Chapter 14 Jackson Structured Programming (JSP) 289 14.1 Some background to JSP 290 14.2 JSP representation forms 291 14.3 The JSP process 293 14.4 Some JSP heuristics 301 Chapter 15 Jackson System Development (JSD) 315 15.1 The JSD model 316 15.2 JSD representation forms 318 15.3 The JSD process 322 15.4 JSD heuristics 336 SDA01 9/18/07 10:32 AM Page vii Contents Chapter 16 Designing with Objects 341 16.1 The ‘object concept’ 342 16.2 Design practices for the object-oriented paradigm 356 16.3 Object-Oriented frameworks 367 16.4 Object-based design 371 16.5 Object-Oriented design 379 Chapter 17 Component-Based Design 401 17.1 The component concept 402 17.2 Designing with components 408 17.3 Designing components 414 17.4 At the extremity – COTS 415 Chapter 18 A Formal Approach to Design 419 18.1 The case for rigour 420 18.2 Model-based strategies 425 18.3 Property-based strategies 432 Chapter 19 Whither Software Design? 441 19.1 What is software now? 442 19.2 Codifying design knowledge 444 19.3 Improving knowledge transfer 447 Bibliography 451 Index 461 viii SDA01 9/18/07 10:32 AM Page viii ix Preface to the Second Edition ‘Science is built up of facts as a house is built of stones, but an accumulation of facts is no more a science than a heap of stones is a house.’ Jules Henri Poincaré (1854–1912) At times, it is hard not to feel that our knowledge about designing software is rather too close to being a heap of stones. Indeed, a large element in the motivation for the first edition of this book was the desire to gather, classify, categorize, and interpret that knowledge, in the hope of providing a structure that would be of assistance to others. While the end result was certainly far from being a ‘house’, it did perhaps resemble a low wall or two! Indeed, the production of this second edition (which I hope builds the walls a little higher at least), was motivated by the way that the first edition of this book has been generally well received by both teachers and students (a situation which is gratifying to any author!). In terms of its wider role, one of the more external signs of the recogni- tion of its ‘foundational’ status is the extent to which it was cited in the Trial Version of the IEEE’s SWEBOK (Software Engineering Body of Knowledge). However, technology and design thinking march on, albeit not always at the same rate and, in preparing this second edition, the material from the first edition has been extensively revised and rewritten to reflect the many changes that have occurred since it was published. So what are the major changes? In brief, these are as follows. n A much stronger recognition of the role played by the concept of architectural style in helping to structure our ideas about software design. This is used to provide an underpinning framework throughout this second edition. n The inclusion of new forms of ‘software’ and of new approaches to design, ranging from agile methods and design patterns through to the component concept and the use of the Unified Modeling Language. n An improved formalism to support the analysis of the processes embodied in design methods. It would be nice if this list could also include the use of a suitably extensive body of empirical evidence about the effectiveness and limitations of the design approaches SDA01 9/18/07 10:32 AM Page ix [...]... improved techniques were at first identi ed mainly in terms of programming activities, there was also growing realization 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 Programming-in-the-large While the design of programs offers significant problems, the design of large systems provides a vastly increased... accommodate the new The number of design methods described has been slightly reduced, reflecting a more general reduction in the emphasis placed upon procedural methods by practitioners The chapter on design representations has been restructured and also extended to include some new forms of notation And the overall grouping of chapters has changed the book from a two-part structure to one of three parts... programmers the design plans will need to capture a much wider range of factors than will be needed by the one-person project, where the designer may well be the programmer too Typically, such plans will be concerned with describing: SDC01 9/18/07 10:34 AM Page 18 18 The nature of the design process Figure 1.8 Examples of design viewpoints 1.3 Design as a problem-solving process Having considered the nature... systems should be designed as well as possible Faulty design can lead to disaster and can even be life-threatening It is increasingly accepted that the study of software based systems (whether we call it software engineering, computer science, information systems engineering, or even information technology) needs to involve some basic knowledge about the roles of design within the software development... curriculum in software design was developed for the Graduate Curriculum Project This was then extensively revised in 1988, taking on board subsequent thinking and experience The aim of this work was to develop a ‘road-map’ for use by instructors which identi ed the principal issues in the teaching of design knowledge and suggested ways in which these might be introduced to the student, supported by a bibliographical... chapter 1 The Nature of the Design Process 1.1 What is design? 1.2 The role of the design activity 1.3 Design as a problem-solving process 1.4 Design as a ‘wicked’ problem This opening chapter is concerned with examining the role that design plays in a wide range of spheres It looks at the ideas of design theorists and examines these in the light of some simple examples of design activity In particular,... What is design? Design is just as important with software systems also Most people will readily accept that the software used in an aeroplane needs to be well designed and rigorously tested, not least because they might find themselves as passengers on that aircraft one day Yet good design is equally desirable for smaller systems too, since the user still requires efficiency (if it can only be defined) and... need to ‘transform’ between the representation used to describe the problem and that used to describe the solution, as is generally the case for software design Similarly, the ‘designer’ is able to manipulate well-defined ‘objects’, in that each item of furniture already exists and its relevant properties (that is, its dimensions) are fixed, and can easily be measured The equivalent properties for software. .. take when we are designing software For both of the case studies introduced here, we can see how the concepts of design as described by Jones can be related to the processes involved in producing a solution, although the nature of the two problems is very different In both cases the designer proceeds to build a model of what he or she wants to achieve – an organized house or a balanced range of products;... expertise to design both types of application One of the problems that this introduces, therefore, is that a software designer may need to acquire some degree of ‘domain knowledge’ as a routine part of the input needed for undertaking any particular design task Some of this may be obtained from the specification (which may well run to hundreds of pages), but by no means all of the necessary knowledge is . SOFTWARE DESIGN David Budgen second edition SOFTWARE DESIGN David Budgen Software Engineering Software Design provides a balanced view of the many and varied software design strategies. Web at: www.pearsoned.co.uk First published 1993 Second edition 2003 © Addison-Wesley Publishers Limited 1993 © Pearson Education Limited 2003 The right of David Budgen to be identi ed as the. 342 16.2 Design practices for the object-oriented paradigm 356 16.3 Object-Oriented frameworks 367 16.4 Object-based design 371 16.5 Object-Oriented design 379 Chapter 17 Component-Based Design

Ngày đăng: 29/04/2014, 14:55

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan