ebook img

Pro .NET 2.0 Code and Design Standards in C# PDF

361 Pages·2005·3.267 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Pro .NET 2.0 Code and Design Standards in C#

560-2 fm.qxd 10/27/05 4:30 PM Page i Pro .NET 2.0 Code and Design Standards in C# Mark Horner 560-2 fm.qxd 10/27/05 4:30 PM Page ii Pro .NET 2.0 Code and Design Standards in C# Copyright © 2006 by Torville Pty Ltd All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN (pbk): 1-59059-560-2 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editor: Ewan Buckingham Technical Reviewer: Jon Reid Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Tony Davis, JasonGilmore, Jonathan Hassell, Chris Mills, Dominic Shakeshaft, Jim Sumser Associate Publisher: Grace Wong Project Manager: Beckie Brand Copy Edit Manager: Nicole LeClerc Copy Editors: Freelance Editorial Services and Ami Knox Assistant Production Director: Kari Brooks-Copony Production Editor: Ellie Fountain Compositor: Molly Sharp Proofreader: Linda Seifert Indexer: Toma Mulligan Artist: Kinetic Publishing Services, LLC Interior Designer: Van Winkle Design Group Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail [email protected], or visit http://www.springeronline.com. For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail [email protected], or visit http://www.apress.com. The information in this book is distributed on an “as is” basis, without warranty. Although every precau- tion has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at http://www.apress.comin the Source Code section. 560-2 fm.qxd 10/27/05 4:30 PM Page iii Contents at a Glance About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix PART 1 (cid:2) (cid:2) (cid:2) Code Policy Standards (cid:2)CHAPTER 1 Code Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 (cid:2)CHAPTER 2 Code Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 (cid:2)CHAPTER 3 Code Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 (cid:2)CHAPTER 4 Code Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 PART 2 (cid:2) (cid:2) (cid:2) Design Policy Standards (cid:2)CHAPTER 5 Design Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 (cid:2)CHAPTER 6 Design Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 (cid:2)CHAPTER 7 Design Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 (cid:2)CHAPTER 8 Design Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 PART 3 (cid:2) (cid:2) (cid:2) Pattern Standards (cid:2)CHAPTER 9 Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 (cid:2)CHAPTER 10 Creational Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 (cid:2)CHAPTER 11 Structural Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 (cid:2)CHAPTER 12 Behavioral Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 PART 4 (cid:2) (cid:2) (cid:2) References (cid:2)APPENDIX A Environment Variables and Remote Proxy Example . . . . . . . . . . . . 257 (cid:2)LIST OF STANDARDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 (cid:2)GLOSSARY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 (cid:2)INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 iii 560-2 fm.qxd 10/27/05 4:30 PM Page iv 560-2 fm.qxd 10/27/05 4:30 PM Page v Contents About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix PART 1 (cid:2) (cid:2) (cid:2) Code Policy Standards (cid:2)CHAPTER 1 Code Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Code Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Code Vision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Code Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Code Plan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Code Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Development Methodology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Supplementary Development Policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Peer Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Unit Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Refactoring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Development Imperative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Enterprise Imperative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Domain Imperative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Source-Code Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Code Obsolescence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Code Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Code Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Camel–Hungarian–Pascal Notation Standard . . . . . . . . . . . . . . . . . . 17 Camel–Pascal Notation Standard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Pascal Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Camel Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Hungarian Notation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Code Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Visual Studio Formatting Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 v 560-2 fm.qxd 10/27/05 4:30 PM Page vi vi (cid:2)CONTENTS Supplementary Style Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Case Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 (cid:2)CHAPTER 2 Code Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Interface Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 struct Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Class Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Partial Type (Introduced C# 2.0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Generic Type (Introduced C# 2.0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 (cid:2)CHAPTER 3 Code Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Development Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Application Development Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Top-Down Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Bottom-Up Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Application Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Class Development. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Composition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Inheritance Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Class Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Interface Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Overriding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Overloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 abstract. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 sealed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Accessibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 protected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 internal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 protected internal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Accessibility Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Class Fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Class Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 560-2 fm.qxd 10/27/05 4:30 PM Page vii (cid:2)CONTENTS vii const . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 delegate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 enum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Indexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Variable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Flow Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 if-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Nested if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 switch and case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 default. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 throw Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 try-catch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 try-finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 try-catch-finally. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 foreach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 (cid:2)CHAPTER 4 Code Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Documentation Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Documentation of Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Code Design Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Code Design Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Documentation of Code Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Line Comment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Block Comment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 XML Comment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Object Browser Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 XML and Line/Block Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Visual Studio XML Comment Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 560-2 fm.qxd 10/27/05 4:30 PM Page viii viii (cid:2)CONTENTS PART 2 (cid:2) (cid:2) (cid:2) Design Policy Standards (cid:2)CHAPTER 5 Design Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Design Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Design Style. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Architecture Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Target Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Architecture Roadmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Enterprise Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Network Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Technical Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Application Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Data Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Deployment Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Integration Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Service-Oriented Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Business Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 (cid:2)CHAPTER 6 Design Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Structural Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 The Enterprise-Domain Dichotomy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Modularity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Coupling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Design Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Enterprise Design Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Application Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Application Design Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Domain Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Enterprise Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Services Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Application Design Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Two-Tier Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Three-Tier Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Five-Tier Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Application Integration Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Enterprise Services Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 560-2 fm.qxd 10/27/05 4:30 PM Page ix (cid:2)CONTENTS ix Communications Integration Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Communications Infrastructure Layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 (cid:2)CHAPTER 7 Design Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Implementing Design in the Design Framework . . . . . . . . . . . . . . . . . . . . 142 Implementing Design in Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Design of Enterprise Services Layer . . . . . . . . . . . . . . . . . . . . . . . . . 144 Design of Application Integration Layer . . . . . . . . . . . . . . . . . . . . . . 145 Design of Application Layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Horizontal and Vertical Design Methodologies . . . . . . . . . . . . . . . . . . . . . 146 Horizontal Design Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Vertical Design Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Object Collaboration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 The Abstract-Interface Dichotomy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 The Composition-Inheritance Dichotomy . . . . . . . . . . . . . . . . . . . . . . . . . . 152 The Abstraction-Implementation Dichotomy . . . . . . . . . . . . . . . . . . . . . . . 154 Design Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Implementing Design in Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Start-from-Scratch Application Solution . . . . . . . . . . . . . . . . . . . . . . 157 Application Framework Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 (cid:2)CHAPTER 8 Design Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Documentation Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Application Specification Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . 160 Technical Specification Documentation . . . . . . . . . . . . . . . . . . . . . . 161 Functional Specification Documentation . . . . . . . . . . . . . . . . . . . . . 162 Application Design Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Application Architecture Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Enterprise Framework Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 PART 3 (cid:2) (cid:2) (cid:2) Pattern Standards (cid:2)CHAPTER 9 Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Pattern Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Design Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Talking Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 The Origins:Pattern Language and Design Patterns . . . . . . . . . . . . . . . . 172

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.