Pattern-Oriented Software Architecture For Dummies - Robert Hanmer - E-Book

Pattern-Oriented Software Architecture For Dummies E-Book

Robert Hanmer

4,8
19,99 €

oder
-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Implement programming best practices from the ground up Imagine how much easier it would be to solve a programming problem, if you had access to the best practices from all the top experts in the field, and you could follow the best design patterns that have evolved through the years. Well, now you can. This unique book offers development solutions ranging from high-level architectural patterns, to design patterns that apply to specific problems encountered after the overall structure has been designed, to idioms in specific programming languages--all in one, accessible, guide. Not only will you improve your understanding of software design, you'll also improve the programs you create and successfully take your development ideas to the next level. * Pulls together the best design patterns and best practices for software design into one accessible guide to help you improve your programming projects * Helps you avoid re-creating the wheel and also meet the ever-increasing pace of rev cycles, as well as the ever-increasing number of new platforms and technologies for mobile, web, and enterprise computing * Fills a gap in the entry-level POSA market, as well as a need for guidance in implementing best practices from the ground up Save time and avoid headaches with your software development projects with Pattern-Oriented Software Architecture For Dummies.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 462

Veröffentlichungsjahr: 2012

Bewertungen
4,8 (16 Bewertungen)
12
4
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Pattern-Oriented Software Architecture For Dummies®

Visit www.dummies.com/cheatsheet/patternorientedsoftwarearchitecture to view this book's cheat sheet.

Table of Contents

Introduction
About This Book
Conventions Used in This Book
What You’re Not to Read
Foolish Assumptions
How This Book Is Organized
Part I: Introducing Software Architecture and Patterns
Part II: Putting Patterns to Work
Part III: Creating Your Application Architecture
Part IV: Designing with Other POSA Patterns
Part V: The Part of Tens
Icons Used in This Book
Where to Go from Here
Part I: Introducing Software Architecture and Patterns
Chapter 1: Software Architecture Basics
Understanding Software Architecture
Components of software architecture
Architecture document
Architecture models (views)
Software development methods and processes
Identifying the Problem to Be Solved
Breaking the problem into the four attributes
Developing a problem statement
Defining the important use cases
Identifying the Requirements
Defining functional requirements
Defining nonfunctional requirements
Reviewing the requirements
Choosing a Software System Style
Architectural styles
Programming style
Chapter 2: Where Do Architectures Come From?
Understanding Architectural Styles
Elements of styles
Patterns and architectural styles
Creating Software Architecture
Deciding when to create an architecture
Identifying problem categories
Defining layers and abstractions
Employing enabling techniques
Designing your architecture
Documenting your work
Chapter 3: What Do Software Architectures Look Like?
Examining UML Architectural Models
Choosing a diagram style
Showing different views
Working with UML Diagrams
Creating class diagrams
Showing the interactions
Deploying your system
Packaging up the software
Using use-case diagrams
Choosing Your Design Tools
Commercial software-development tools
Free UML tools
General drawing tools
Explaining Your Software in an Architecture Document
Organizing the architecture document
Filling in the sections
Chapter 4: Software Pattern Basics
What Patterns Are
Reusable designs
Proven solutions
Educational tools
System guides
Architectural vocabularies
Repositories of expertise
What Patterns Are Not
Looking Inside Patterns
Title
Problem statement
Context
Forces
Solution
Other common sections
Understanding the Patterns Used in This Book
The Design Patterns pattern style
The Pattern-Oriented Software Architecture pattern style
Chapter 5: Seeing How Patterns Are Made and Used
Creating Patterns
Coming up with the idea
Confirming the Rule of Three
Extracting the general solution
Writing the pattern document
Naming the pattern
Getting expert reviews
Keeping patterns current
Documenting System Architecture with Patterns
Part II: Putting Patterns to Work
Chapter 6: Making Sense of Patterns
Understanding Pattern Classifications
Styles
Depth
Other classifications
Grouping Patterns
Pattern collections
Pattern languages
Chapter 7: Building Your Own Pattern Catalog
Assembling Your Catalog
Choosing a medium
Identifying the problems you face
Finding patterns that solve your problems
Organizing the catalog in sections
Connecting the patterns
Keeping Your Catalog Current
Chapter 8: Choosing a Pattern
Examining Patterns Critically
Asking the right questions about patterns
Knowing what to look for in a pattern
Selecting a Particular Pattern
Step 1: Specify the problem
Step 2: Select the pattern category
Step 3: Select the problem category
Step 4: Compare the problem descriptions
Step 5: Compare benefits and liabilities
Step 6: Select the best variant
Step 7: Select an alternative problem category
Designing Solution Architecture with Patterns
Part III: Creating Your Application Architecture
Chapter 9: Building Functionality in Layers
Using Layered Architecture
Keeping communications open
Creating web applications
Adapting to new hardware
Problem: Designing at Differing Levels
Building a monolith
Breaking up your monolith
Making this problem harder
Solution: Layering Your System
Exploring the effects of layers
Layering your architecture
Implementing a layered architecture
Chapter 10: Piping Your Data through Filters
Problem: Analyzing an Image Stream
Solution: Piping through Filters
Exploring the effects of Pipes and Filters
Implementing Pipes and Filters
Chapter 11: Sharing Knowledge and Results on a Blackboard
Problem: Building an Attack Computer
Meet the components
Ponder your approach
Enter the blackboard
Put your blackboard into software
Solution: Building the Blackboard Architecture
Exploring the effects of the blackboard
Knowing the parts of a blackboard system
Implementing a blackboard architecture
Chapter 12: Coordinating Communication through a Broker
Problem: Making Servers Cooperate
Thinking about the problem
Adding a middleman
Connecting clients and servers
Solution: Use a Broker
Looking inside a broker system
Exploring the effects of broker architecture
Following the flow of broker messages
Implementing a broker architecture
Chapter 13: Structuring Your Interactive Application with Model-View-Controller
Problem: Looking at Data in Many Ways
Pondering what you need
Viewing the system flexibly
Keeping the views current
Changing the user interface
Solution: Building a Model-View-Controller System
Exploring the effects of MVC
Inspecting MVC’s moving parts
Implementing MVC
Seeing Other Ways to Manage Displays
Combining controller and view
Comparing Presentation-Abstraction-Control
Chapter 14: Layering Interactive Agents with Presentation-Abstraction-Control
Understanding PAC
Problem: Coordinating Interactive Agents
Combining the programs
Ruling out MVC
Comparing PAC and MVC
Using separate agents
Solution: Creating a Hierarchy of PAC Agents
Exploring the effects of PAC
Knowing when — and when not — to use PAC
Looking inside PAC architecture
Implementing PAC
Chapter 15: Putting Key Functions in a Microkernel
Problem: Hosting Multiple Applications
Considering an existing OS
Designing a custom OS
Separating policy from mechanisms
Building the system
Solution: Building Essential Functionality in a Microkernel
Examining Microkernel Architecture
Viewing the architecture’s parts
Exploring the effects of the Microkernel pattern
Implementing a microkernel architecture
Chapter 16: Reflecting and Adapting
Understanding Reflection
Looking for Reflection
Externalization
Code analysis tools
Aspect-oriented programming
System configuration files
Designing Architectural Reflection
Making applications adaptable
Structuring the classes
Understanding the consequences of Reflection
Implementing Reflection
Programming Reflection Today
Reflection in C++
Reflection in Java
Reflection in C#
Reflection in Ruby
Part IV: Designing with Other POSA Patterns
Chapter 17: Decomposing the System’s Structure
Understanding Whole-Part Systems
Seeing how the pieces fit
Recognizing the benefits and liabilities
Implementing the Whole-Part Pattern
Step 1: Define the whole’s public interface
Step 2: Divide the whole into parts
Step 3: Define the services of the whole and the services offered by the parts
Step 4: Build the parts
Step 5: Implement the whole
Chapter 18: Making a Component the Master
Introducing the Master-Slave Pattern
Benefits of Master-Slave
Liabilities of Master-Slave
Implementing Master-Slave
Step 1: Divide the work
Step 2: Combine the subtasks
Step 3: Define how master and slaves will cooperate
Step 4: Implement the slave components
Step 5: Build the master component
Chapter 19: Controlling Access
Understanding Proxies
The Proxy pattern versus the Broker pattern
Parts of a proxy
Getting Acquainted with Proxy Variants
Remote
Protection
Cache
Synchronization
Counting
Virtual
Firewall
Reverse
Implementing a Proxy
Step 1: Identify access control responsibilities
Step 2: Introduce an abstract base class
Step 3: Implement the proxy’s functions
Step 4: Remove responsibilities from the server
Step 5: Give the proxy theaddress of the server
Step 6: Remove the relationships between the clients and servers
Chapter 20: Managing the System
Separating Requests from Execution with Command Processor
Looking inside the pattern structure
Implementing Command Processor
Managing Your Views with View Handler
Looking inside View Handler
Implementing View Handler
Chapter 21: Enhancing Interprocess Communication
Forwarding Messages to a Receiver
Using specialized components
Implementing Forwarder-Receiver
Connecting Client and Server through a Dispatcher
Issuing directions from a dispatcher
Implementing Client-Dispatcher-Server
Publishing State Changes to Subscribers
Step 1: Define the publication policies
Step 2: Define the publisher’s interface
Step 3: Design the subscriber interface
Chapter 22: Counting the Number of References
Problem: Using the Last of Something
First try: Passing objects with pointers
Second try: Passing objects by copying
Third try: Using the Counted Pointer idiom
Solution: Releasing Resources with the Counted Pointer Idiom
Implementing Counted Pointer
Seeing some Counted Pointer variations
Part V: The Part of Tens
Chapter 23: Ten Patterns You Should Know
Special Case
Do Food
Leaky Bucket Counter
Release Line
Light on Two Sides of Every Room
Streamline Repetition
Observer
Sign-In Continuity
Architect Also Implement
The CHECKS Pattern Language of Information Integrity
Chapter 24: Ten Places to Look for Patterns
A Pattern Language
Pattern-Oriented Software Architecture
Design Patterns
Domain-Driven Design
Pattern Languages of Program Design
Patterns for Time-Triggered Embedded Systems
Software Configuration Management Patterns
Patterns of Enterprise Application Architecture
Welie.com
Apprenticeship Patterns
Chapter 25: Ten Ways to Get Involved with the Pattern Community
Advocate Using Patterns
Write About Your Experiences Using Patterns
Compile a Catalog of Your Work
Mentor Someone
Help Index Patterns
Join a Mailing List
Join a Reading Group
Write Your Own Patterns
Attend a Pattern Conference
Start a Writers’ Workshop
Cheat Sheet

Pattern-Oriented Software Architecture For Dummies®

by Robert Hanmer

Pattern-Oriented Software Architecture For Dummies®

Published byJohn Wiley & Sons, LtdThe AtriumSouthern GateChichesterWest SussexPO19 8SQEngland

Email (for orders and customer service enquires): [email protected]

Visit our home page on www.wiley.com

Copyright © 2013 by Alcatel-Lucent. All rights reserved.

Published by John Wiley & Sons Ltd, Chichester, West Sussex

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, scanning or otherwise, except under the terms of the Copyright, Designs and Patents Act 1988 or under the terms of a licence issued by the Copyright Licensing Agency Ltd., Saffron House, 6-10 Kirby Street, London EC1N 8TS, UK, without the permission in writing of the Publisher. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Ltd, The Atrium, Southern Gate, Chichester, West Sussex, PO19 8SQ, England, or emailed to [email protected], or faxed to (44) 1243 770620.

Limit of Liability/Disclaimer of Warranty: The publisher, the author, and anyone else in preparing this work make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifically disclaim all warranties, including without limitation warranties of fitness for a particular purpose. No warranty may be created or extended by sales or promotional materials. The advice and strategies contained herein may not be suitable for every situation. This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services. If professional assistance is required, the services of a competent professional person should be sought. Neither the publisher nor the author shall be liable for damages arising herefrom. The fact that an organization or Website is referred to in this work as a citation and/or a potential source of further information does not mean that the author or the publisher endorses the information the organization or Website may provide or recommendations it may make. Further, readers should be aware that Internet Websites listed in this work may have changed or disappeared between when this work was written and when it is read.

For general information on our other products and services, please contact our Customer Care Department within the U.S. at 877-762-2974, outside the U.S. at 317-572-3993, or fax 317-572-4002.

For technical support, please visit www.wiley.com/techsupport.

Wiley also publishes its books in a variety of electronic formats and by print-on-demand. Some content that appears in standard print versions of this book may not be available in other formats. For more information about Wiley products, visit us at www.wiley.com.

British Library Cataloguing in Publication Data: A catalogue record for this book is available from the British Library.

ISBN 978-1-119-96399-8 (pbk); ISBN 978-1-119-96631-9 (ebk); ISBN 978-1-119-96632-6 (ebk); ISBN 978-1-119-96630-2 (ebk)

Printed and bound in the United States by Bind-Rite

10 9 8 7 6 5 4 3 2 1

About the Author

Robert Hanmer is a director of The Hillside Group, an organization whose mission is to improve quality of life for everyone who uses, builds, and encounters software systems. The Hillside Group also sponsors Pattern Languages of Programming (PLoP) software pattern conferences. Bob is active in the software pattern community and has been program chair at pattern conferences in the United States and overseas.

He is a consulting member of technical staff with Alcatel-Lucent near Chicago. Within Alcatel-Lucent, Lucent Technologies, and Bell Laboratories (same office, new company names), he is involved in development and architecture of embedded systems, focusing especially on the areas of reliability and performance. Previously, he designed interactive graphics systems used by medical researchers.

Bob is the author of Patterns for Fault Tolerant Software (Wiley) and has written or co-written 14 journal articles and several book chapters. He is a senior member of the Association for Computing Machinery, a member of the Alcatel-Lucent Technical Academy, and a member of the IEEE Computer Society. He received his BS and MS degrees in Computer Science from Northwestern University in Evanston, Illinois.

Dedication

For Karen

Author’s Acknowledgments

First, and most important, I want to acknowledge the authors of Pattern-Oriented Software Architecture: A System of Patterns (Wiley): Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. Peter also has been helpful with questions about modern C++ and the software architecture classroom.

Many other people answered questions, reviewed sections, or generally consulted with me while I was writing this book. Thanks to Ademar Aguiar, Omar Aldawud, Dan Bergen, Filipe Correia, Chuck Corwin, Jerry Dzeidzic, Christoph Fehling, Becky Fletcher, Brian Foote, Karen Hanmer, Kenji Hiranabe, Lise Hvatum, Satomi Joba, Dr. Ralph Johnson, Capt. U.S. Navy (Ret.) Will H. Jordan, Steven P. Karas, Allan Kelley, Christian Kohls, Christian Koppe, John Krallman, John Letourneau, Steffen Macke, Dennis Mancl, Jyothish Maniyath, Veena Mendiratta, Pedro Monteiro, Karl Rehmer, Linda Rising, Hans Rudin, Eugene Wallingford, Michael Weiss, and Joe Yoder.

Thanks to the members of my writers’ workshop group at PLoP 2011 who held a workshop on parts of this book: Dr. Tanya L. Crenshaw, Andre Hauge, Jiwon Kim, Alexander Nowak, Rick Rodin, YoungSu Son, and Hironori Washizaki.

The Real-World Example sidebars in the pattern chapters are based on a workshop at the 1998 OOPSLA conference. It was organized by Michael Duell, Linda Rising, Peter Sommerlad, and Michael Stal. Russ Frame, Kandi Frasier, Rik Smoody, and Jun’ichi Suzuki participated in the workshop and contributed to the examples that I’ve adapted here.

Thanks also to the many people at John Wiley & Sons, including Birgit Gruber, Chris Katsaropoulos, Elizabeth Kuball, Ellie Scott, Jim Siddle, Kathy Simpson, Chris Webb, and the others whose names you see on the Publisher’s Acknowledgments page.

Publisher’s Acknowledgments

We’re proud of this book; please send us your comments at http://dummies.custhelp.com. For other comments, please contact our Customer Care Department within the U.S. at 877-762-2974, outside the U.S. at 317-572-3993, or fax 317-572-4002.

Some of the people who helped bring this book to market include the following:

Acquisitions and Editorial

Project Editor: Elizabeth Kuball

Executive Commissioning Editor: Birgit Gruber

Assistant Editor: Ellie Scott

Copy Editor: Elizabeth Kuball

Technical Editor: James Siddle

Editorial Manager: Jodi Jensen

Sr. Project Editor: Sara Shlaer

Editorial Assistant: Leslie Saxman

Cover Photo: © teekid / iStock

Cartoons: Rich Tennant (www.the5thwave.com)

Composition Services

Senior Project Coordinator: Kristie Rees

Layout and Graphics: Joyce Haughey

Proofreaders: John Greenough, Tricia Liebig

Indexer: Sharon Shock

Marketing

Associate Marketing Director: Louise Breinholt

Marketing Manager: Lorna Mein

Senior Marketing Executive: Kate Parrett

Marketing Assistant: Tash Lee

UK Tech Publishing

Michelle Leete, Vice President Consumer and Technology Publishing Director

Martin Tribe, Associate Director–Book Content Management

Chris Webb, Associate Publisher

Publishing and Editorial for Technology Dummies

Richard Swadley, Vice President and Executive Group Publisher

Andy Cummings, Vice President and Publisher

Mary Bednarek, Executive Acquisitions Director

Mary C. Corder, Editorial Director

Publishing for Consumer Dummies

Kathleen Nebenhaus, Vice President and Executive Publisher

Composition Services

Debbie Stailey, Director of Composition Services

Introduction

Wouldn’t it be great to never rewrite code? To always face new challenges rather than solve the same problems over and over? To always solve new and interesting problems instead of rehashing old ones? If you remember how you solved a problem before, reuse that solution. Don’t reinvent the wheel!

Software patterns help you avoid reinventing the wheel, in that they help you avoid reinventing the solution to a software problem that someone else has already solved.

Patterns have been around in the software community since at least the early 1990s. Software pattern authors have been writing patterns that document their proven solutions in the hope that you — the reader — will benefit from their experience.

In particular, many people are collecting and publishing patterns that structure software architecture — the underlying structure of the software. The goal of architectural patterns is to speed your development; allow you to move forward, knowing that a particular architecture will help rather than hinder you; and ultimately give you the time you need to solve new and interesting problems.

Pattern-Oriented Software Architecture For Dummies is written to help you understand the basics of software architecture. It also helps you understand software patterns. The book brings these two concepts together and presents eight software architectures that you can use in your next software design project. It also gives you some design patterns, tips, and resources where you can find out more about software patterns.

About This Book

This book provides proven architectures and designs expressed as patterns. These patterns aren’t the only ways you can structure your software architecture, though, and this book doesn’t replace the other references you use for software design patterns.

As you read this book, keep in mind that you can’t just plug-and-play these patterns. Your intelligence and taste are required to adapt these patterns to your design problem. This is the norm with software patterns: No respectable pattern author will tell you that you can use his or her patterns without adapting them to your situation.

In the early days, software patterns provided valuable assistance to people who were trying to get a handle on object-oriented design. The discussions of these patterns seemed to me, however, to focus on getting the structure of the object-oriented program’s header files and class definitions correct at the expense of the real application. In this book, I give you an understanding of the solutions to the problems, not the detailed header files. I want you to understand the principles involved rather than get caught up in the implementation details. As a result, this book isn’t language-specific or programming paradigm-specific; instead, it explains the underlying principles involved in the solutions that you will apply using your prior experience and expertise.

Finally, you don’t have to read the whole book from front cover to back. Instead, use the table of contents and index to locate the information you need when you need it.

Conventions Used in This Book

Here are the conventions I use throughout this book:

I capitalize the names of patterns. In some chapters, the name of the pattern is the same as the name of a key component of the architecture. In general, the pattern name is capitalized, and the name of the component is not capitalized.

I abbreviate the names of many of the patterns discussed in Parts III and IV because they’re quite long. Model-View-Controller, for example, becomes MVC. On the first use in a chapter, the whole name is spelled out, and the abbreviation is used thereafter.

When I introduce a new term, I put it in italics and define it shortly thereafter (often in parentheses).

I put web addresses in monofont so they stand out from the surrounding text. Note: When this book was printed, some web addresses may have needed to break across two lines of text. If that happened, rest assured that we haven’t added extra characters (such as hyphens) to indicate the break. So, when using one of these web addresses, just type in exactly what you see in this book, pretending as though the line break doesn’t exist.

What You’re Not to Read

I’ve sprinkled a few sidebars around in the text. They show up as gray boxes. You can safely skip them. They contain information that I think you may find useful but that isn’t required to understand the patterns or software architecture. You also can skip anything marked with a Technical Stuff icon (see “Icons Used in This Book,” later in this Introduction, for more information).

Foolish Assumptions

I make some assumptions about who would read and benefit from this book. I don’t expect that you’re an expert in software architecture; in fact, I assume that you’re pretty new to it. I do assume that you know something about writing software, however, and that you’ve already written some software. In particular, I assume that you’ve written software in some sort of team setting on a project bigger than a school project. From this experience, you’ll have learned about designing with modules and components.

Because more software is changed, evolved, and maintained than written from scratch, I assume that you’ve experienced some software maintenance. Maintenance of someone else’s (or even your own) code will have given you an understanding of the importance of modularity and good structure.

I don’t assume that you’re an expert in object-oriented design or any other particular design methods. The architectures in this book can be adapted to any paradigm you work in and are familiar with. Some familiarity with at least the basic terminology of objects, classes, and methods is assumed.

How This Book Is Organized

This book has five parts. Parts I and II introduce software architecture and software patterns. The next two parts present real live patterns that you can use in your software. Finally, Part V shows you where to turn next to explore the exciting world of software patterns.

Part I: Introducing Software Architecture and Patterns

To build a foundation for the rest of the book and to explain the basic concepts, Part I focuses on software architecture: what it is, how to create it, and how to document it. Architecture builds on the needs of the customer or client, so Part I also talks about the requirements that shape your architecture.

Architecture needs to be explained to those who will build the application. Even if you’re the sole builder, an explanation will help you remember later what you did today. Part I introduces various ways of documenting your architecture, including simple Class-Responsibility-Collaboration cards, the basics of the Unified Modeling Language, and an outline of an architecture description document.

Part I ends with a chapter that describes the basics of software patterns. This chapter provides a foundation for the discussions in Part II of making the most of software patterns.

Part II: Putting Patterns to Work

You need to find patterns that address the problems you need to solve. Part II describes how patterns are organized and catalogued. It also presents a process you can use to find the patterns that can help you.

As you start using patterns, you’ll find that you use the same patterns over and over. Part II has instructions for collecting the patterns you use most often in a private quick-reference catalog.

Part III: Creating Your Application Architecture

Part III contains eight architectural patterns that you can use in several kinds of software, ranging from distributed systems to user interfaces. Each chapter discusses a single topic. The patterns cover several different architectural problem spaces like structuring the solution, disturbed systems, and interactive systems. Chapters 13 and 14 show two different ways to solve similar problems related to user interfaces. The chapters in this part all contain implementation sections to give you an outline of the steps needed to implement the pattern’s solution.

Part IV: Designing with Other POSA Patterns

Architectural patterns solve the really big problem of how to structure the entire software system. In Part IV, the focus is on smaller patterns that address smaller programming problems. These design patterns address specific elements of the software, not the whole structure. The design patterns are organized by the kind of problems that they help with, and each kind of problem is presented in its own chapter.

Solving lower-level problems that you encounter only in a single programming language is the work of an idiom pattern. Part IV contains an example idiom pattern that’s useful in the C++ language (although the general principle is useful elsewhere as well). The patterns in Part IV also outline the steps needed to implement the solution. You’ll build on your own experience to adapt these steps to your program.

Part V: The Part of Tens

Every For Dummies book has a Part of Tens. This book has three chapters in Part V, each containing ten tips to help you continue your study of patterns. Chapter 23 contains ten individual patterns that you should know. Chapter 24 lists ten places to look for specific patterns, including books and websites. Finally, Chapter 25 lists ten ways that you can get involved with the software patterns community, ranging from using patterns in your own development to telling people about patterns to writing your own.

Icons Used in This Book

I’ve used several icons throughout this book:

The Remember icon is a friendly notice of information that you should keep in mind as you’re reading the text.

The Technical Stuff icon marks text that digs deeper into a concept. You can skip this material if you want.

When something is especially helpful for using a pattern or idea, I mark it with a Tip icon.

I’ve thrown in a few warnings, which are things that you need to be consciously aware of; otherwise, you could run into problems.

Throughout the book I provide examples of how you can use patterns in the real world. I mark that material with the Real-World Example icon.

Where to Go from Here

The book is structured so that you can jump in anywhere. If you aren’t familiar with software architecture, I suggest that you start with the first part. If you already know about software architecture but aren’t sure what patterns are, start with Chapter 4 and progress through Part II.

Each chapter in Parts III and IV discusses a different pattern. None of these chapters depends on your having read any other chapter. You’ll see some cross-references between chapters, but they’re provided to help you dig deeper and understand your options; they aren’t there to point out that you should have read something else beforehand.

Part I

Introducing Software Architecture and Patterns

In this part . . .

The first part of this book introduces the underlying concepts to get you ready to use the patterns described later. I begin by giving you some background on software architecture and then discuss the basics of software patterns.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!