Pro .NET 2.0 Code and Design Standards in C#

pdf
Số trang Pro .NET 2.0 Code and Design Standards in C# 361 Cỡ tệp Pro .NET 2.0 Code and Design Standards in C# 3 MB Lượt tải Pro .NET 2.0 Code and Design Standards in C# 0 Lượt đọc Pro .NET 2.0 Code and Design Standards in C# 1
Đánh giá Pro .NET 2.0 Code and Design Standards in C#
4 ( 3 lượt)
Nhấn vào bên dưới để tải tài liệu
Đang xem trước 10 trên tổng 361 trang, để tải xuống xem đầy đủ hãy nhấn vào bên trên
Chủ đề liên quan

Nội dung

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, Jason Gilmore, 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 orders-ny@springer-sbm.com, 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 info@apress.com, or visit http://www.apress.com. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution 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.com in 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 ■CHAPTER ■CHAPTER ■CHAPTER ■CHAPTER PART 2 ■CHAPTER ■CHAPTER ■CHAPTER ■CHAPTER PART 3 ■CHAPTER ■CHAPTER ■CHAPTER ■CHAPTER PART 4 ■■■ 1 2 3 4 Code Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Code Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Code Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Code Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 ■■■ 5 6 7 8 Design Policy Standards Design Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Design Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Design Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Design Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 ■■■ 9 10 11 12 Code Policy Standards Pattern Standards Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Creational Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Structural Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Behavioral Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 ■■■ References ■APPENDIX A Environment Variables and Remote Proxy Example . . . . . . . . . . . . 257 ■LIST OF STANDARDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 ■GLOSSARY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 ■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 ■■■ ■CHAPTER 1 Code Policy Standards 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 vi 10/27/05 4:30 PM Page vi ■CONTENTS Supplementary Style Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Case Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 ■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 ■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 ■CONTENTS 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 ■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 vii 560-2 fm.qxd viii 10/27/05 4:30 PM Page viii ■CONTENTS PART 2 ■■■ ■CHAPTER 5 Design Policy Standards 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 ■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 ■CONTENTS Communications Integration Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Communications Infrastructure Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 ■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 ■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 ■■■ ■CHAPTER 9 Pattern Standards Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Pattern Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Design Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Talking Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 The Origins: Pattern Language and Design Patterns . . . . . . . . . . . . . . . . 172 ix
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.