Pattern-Oriented Software Architecture: Difference between revisions

Content deleted Content added
#suggestededit-add-desc 1.0
Tags: Mobile edit Mobile app edit Android app edit
weed out the long lists
 
(9 intermediate revisions by 9 users not shown)
Line 1:
{{Short description|seriesSeries of engineeringcomputer programming books}}
{{Prose|date=March 2020}}
'''Pattern-Oriented Software Architecture''' is a series of [[software engineering]] books describing [[software design patterns]].
 
{{col-float}}
== POSA1 ==
 
{{Infobox book
| name = Pattern-Oriented Software Architecture Volume 1: A System of Patterns
| image = Pattern-Oriented Software Architecture.jpg
| author = Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad and Michael Stal
| language = English
| subject = [[Computer programming]]
| published = {{plainlist|1996
| isbn = 978-0471958697
* 1996 }}
| isbn = 978-0471958697
}}
 
{{col-float-break}}
[[Architectural patterns]]
* [[Layer (object-oriented design)|Layers]]
* [[Pipeline (software)|Pipes and filters]]
* [[Blackboard (design pattern)|Blackboard]]
* [[Broker pattern|Broker]]
* [[Model–view–controller|Model–View–Controller]]
* [[Presentation–abstraction–control|Presentation–Abstraction–Control]]
 
[[Design patterns]]
* [[Whole–Part]]
* [[Master/slave (technology)|Master–Slave]]
* [[Proxy pattern|Proxy]]
* [[Command Processor]]
* [[View Handler]]
* [[Forwarder-Receiver]]
* [[Client–Dispatcher–Server]]
* [[Publish–subscribe pattern|Publisher–subscriber]]
 
== POSA2 ==
 
{{Infobox book
| name = Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects
| image = Pattern-Oriented Software Architecture.jpg
| author = [[Douglas C. Schmidt]], Michael Stal, Hans Rohnert, Frank Buschmann
| language = English
Line 46 ⟶ 27:
}}
 
{{col-float-break}}
Service access and configuration patterns
* [[Wrapper Facade]]
* [[Component Configurator]]
* [[Interceptor pattern|Interceptor]]
* [[Extension interface]]
Event handling patterns
* [[Reactor pattern|Reactor]]
* [[Proactor pattern|Proactor]]
* [[Asynchronous Completion Token]]
* [[Acceptor-Connector]]
Synchronization patterns
* [[Scoped Locking]]
* [[Strategized Locking]]
* [[Thread safety|Thread-Safe Interface]]
* [[Double-checked locking]]
Concurrency patterns
* [[Active object]]
* [[Monitor (synchronization)|Monitor Object]]
* [[Half-Sync/Half-Async]]
* [[Leader/Followers]]
* [[Thread-Specific Storage]]
 
== POSA3 ==
 
{{Infobox book
| name = Pattern-Oriented Software Architecture Volume 3: Patterns for Resource Management
| image = Pattern-Oriented Software Architecture.jpg
| author = Michael Kircher, Prashant Jain
| language = English
| subject = [[Computer programming]]
| published = {{plainlist|2004
| isbn = 978-0470845257
* 2004 }}
| isbn = 978-0470845257
}}
 
{{col-float-break}}
Resource acquisition
* [[Service locator pattern|Lookup]]
* [[Lazy loading|Lazy acquisition]]
* [[Eager acquisition]]
 
{{Infobox book
Resource lifecycle
| name = Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing
* [[Cache (computing)|Caching]]
| image = Pattern-Oriented Software Architecture.jpg
* [[Connection pool|Pooling]]
| author = Frank Buschmann, [[Kevlin Henney]], [[Douglas C. Schmidt]]
* [[Coordinator (software)|Coordinator]]
| language = English
* [[Resource Lifecycle Manager]]
| subject = [[Computer programming]]
 
| published = 2007
Resource release
| isbn = 978-0470059029
* [[Lease (computer science)|Leasing]]
}}
* [[Evictor]]
 
{{col-float-break}}
== POSA4 ==
 
{{Infobox book
| name = Pattern-Oriented Software Architecture Volume 45: AOn PatternPatterns Languageand for DistributedPattern ComputingLanguages
| image = Pattern-Oriented Software Architecture.jpg
| author = Frank Buschmann, [[Kevlin Henney]], [[Douglas C. Schmidt]]
| language = English
| subject = [[Computer programming]]
| published = {{plainlist|2007
| isbn = 978-0471486480
* 2007 }}
| isbn = 978-0470059029
}}
 
{{col-float-end}}
Software architecture
* [[Domain model]]
* [[Layer (object-oriented design)|Layers]]
* [[Model–view–controller|Model–View–Controller]]
* [[Presentation–abstraction–control|Presentation–Abstraction–Control]]
* [[Microkernel]]
* [[Reflection (computer programming)|Reflection]]
* [[Pipeline (software)|Pipes and filters]]
* [[Shared repository]]
* [[Blackboard (design pattern)|Blackboard]]
* [[Domain object]]
 
== Reception ==
Distribution Infrastructure
David E. DeLano of ''[[C++ Report]]'' praised the first volume, writing, "Overall this text is good and I recommend it as an addition to any collection of books on patterns." He said "some of the language and grammar usage feels awkward to the reader" and some of the book has "stiffness and flow problems".<ref name="DeLano1996">{{cite book |last=DeLano |first=David E. |editor-last=Rising |editor-first=Linda |date=December 1996 |chapter=C++ Report book review of Pattern-Oriented Software Architecture: A System of Patterns |chapter-url=https://archive.org/details/patternshandbook0000unse/page/518/ |title=The Patterns Handbook: Techniques, Strategies, and Applications |url=https://archive.org/details/patternshandbook0000unse/ |___location=Cambridge |publisher=[[Cambridge University Press]] |via=[[Internet Archive]] |pages=518–521 |isbn=0-521-64818-1 |accessdate=2024-12-22 }}</ref> Ian Graham reviewed the first volume in the ''Journal of Object-Oriented Programming''.<ref name="Graham1997">{{cite journal |last=Graham |first=Ian |date=October 1997 |title=Pattern-oriented software architecture (Book Review) |journal=Journal of Object-Oriented Programming |issn=0896-8438 |volume=10 |issue=6 |pages=75–76 |id={{EBSCOhost|500514125}} }}</ref> DBMS columnist David S. Linthicum found the first volume to be "the best book on patterns for application architects", while Bin Yang of ''[[JavaWorld]]'' thought it had "many interesting architecture and design patterns".<ref name="Linthicum1997-10-01">{{cite news |last=Linthicum |first=David S. |date=1997-10-01 |title=Patterns demystified. (integrating patterns into software development cycles) (Application Architect) (Technology Tutorial)(Column) |newspaper=DMBS |publisher=M&T Publishing |issn=1041-5173 |volume=10 |number=11 |id={{Factiva|dbms000020011006dta10005t}} }}</ref><ref name="Yang2001-05-01">{{cite magazine |last=Yang |first=Bin |date=2001-05-01 |title=E++: A pattern language for Java Internet applications, Part 1; Weaving the design patterns together |magazine=[[JavaWorld]] |id={{Factiva|javw000020010711dx510001c}} }}</ref>
* [[Message Channel]]
* [[Message endpoint]]
* [[Message translator]]
* [[Message route]]
* [[Publish–subscribe pattern|Publisher–subscriber]]
* [[Broker pattern|Broker]]
* [[Client proxy]]
* [[Request–response|Requestor]]
* [[Invoker]]
* [[Client request handler]]
* [[server request handler]]
 
[[ACCU (organisation)|ACCU]] writer Ian Glassborow reviewed the second volume, writing, "This book is one of the more important contributions to the literature on 'patterns' and deserves to become a standard text on its specified area of interest."<ref name="Glassborow2000">{{cite news |last=Glassborow |first=Francis |date=October 2000 |title=Review: Pattern-Oriented Software Architecture |url=https://accu.org/bookreviews/2000/glassborow_1219/ |publisher=[[ACCU (organisation)|ACCU]] |accessdate=2024-12-22 |archiveurl=https://web.archive.org/web/20241222100745/https://accu.org/bookreviews/2000/glassborow_1219/ |archivedate=2024-12-22 }}</ref> The [[Software Engineering Institute]] author Paul Clemente found the first two volumes to be "the best-known catalog of architectural patterns".<ref name="Clemente2005">{{cite news |last=Clemente |first=Paul |date=July 2005 |title=Comparing the SEI's Views and Beyond Approach for Documenting Software Architecture with ANSI-IEEE 1471-2000 |url=https://archive.org/details/DTIC_ADA441291/page/4/ |publisher=[[Software Engineering Institute]] |via=[[Internet Archive]] |accessdate=2024-12-22 }}</ref> Regarding the third volume, D. Murali recommended that software engineers should follow the "eager acquisition" pattern.<ref name="Murali2005-06-06">{{cite news |last=Murali |first=D. |date=2005-06-06 |title=Control is the key to the Net |url=https://infoweb.newsbank.com/apps/news/document-view?p=WORLDNEWS&docref=news/10A9109FCA24CBB9&f=basic |newspaper=[[Business Line]] |id={{Factiva|BSNLNE0020050605e16600021}} |accessdate=2024-12-22 |archiveurl=https://archive.today/20241222094647/https://infoweb.newsbank.com/apps/news/document-view?p=WORLDNEWS&docref=news/10A9109FCA24CBB9&f=basic |archivedate=2024-12-22 }}</ref>
Adaptation and execution
* [[Protocol converter|Bridge]]
* [[Adapter pattern|Object Adapter]]
* [[Chain of responsitiblity]]
* [[Interpreter (computing)|Interpreter]]
* [[Interceptor pattern|Interceptor]]
* Visitor
* [[Decorator pattern|Decorator]]
* [[Execute-Around Object]]
* [[Template method]]
* [[Strategy pattern|Strategy]]
* [[Null object pattern|Null Object]]
* [[Wrapper Facade]]
* [[Declarative component configuration]]
 
== References ==
Resource management
{{reflist}}
* [[Container (abstract data type)|Container]]
* [[Component Configurator]]
* [[Object manager]]
* [[Lookup]]
* [[Virtual Proxy]]
* [[Lifecycle callback]]
* [[Task coordinator]]
* [[Connection pool|Resource pool]]
* [[Cache (computing)|Resource cache]]
* [[Lazy loading|Lazy Acquisition]]
* [[Eager Acquisition]]
* [[Partial Acquisition]]
* [[Activator (software)|Activator]]
* [[Evictor]]
* [[Lease (computer science)|Leasing]]
* [[Automated Garbage Collection]]
* [[Counting Handle]]
* [[Abstract Factory]]
* [[Builder pattern|Builder]]
* [[Factory method]]
* [[Disposal Method]]
 
Database access
* [[Database Access Layer]]
* [[Data mapper pattern|Data mapper]]
* [[Row Data Gateway]]
* [[Table Data Gateway]]
* [[Active Record]]
 
== POSA5 ==
 
{{Infobox book
| name = Pattern Oriented Software Architecture Volume 5: On Patterns and Pattern Languages
| image = Pattern-Oriented Software Architecture.jpg
| author = Frank Buschmann, [[Kevlin Henney]], [[Douglas C. Schmidt]]
| language = English
| subject = [[Computer programming]]
| published = {{plainlist|
* 2007 }}
| isbn = 978-0471486480
}}
 
Patterns referenced in volume 5:
* [[Abstract Factory]]
* [[Acceptor-Connector]]
* [[Active Object]]
* [[Adapted Iterator]]
* [[Adapter pattern|Adapter]]
* [[Conway's Law|Align Architecture and Organization]] (see [[Conway's Law]])
* [[Application Controller]]
* [[Architect Also Implements]]
* [[Architecture Follows Organization]]
* [[Asynchronous Completion Token (ACT)]]
* [[Automated Garbage Collection]]
* [[Batch Iterator]]
* [[Batch Method]]
* [[Blackboard (design pattern)|Blackboard]]
* [[Bridge pattern|Bridge]]
* [[Message broker|Broker]]
* [[Build Prototypes]]
* [[Builder pattern|Builder]]
* [[Bureaucracy]]
* [[Business Delegate]]
* Cantrip
* [[Chain-of-responsibility pattern|Chain of Responsibility]]
* [[Class Adapter]]
* [[CLI Server]]
* [[Proxy pattern|Client Proxy]]
* [[Collections for States]]
* [[Combined Method]]
* [[Command pattern|Command]]
* [[Command Processor]]
* [[Command Sequence]] (see Composite Command)
* [[Community of Trust]]
* Compiler
* [[Completion Headroom]]
* [[Component Configurator]]
* [[Composite pattern|Composite]]
* [[Composite Command]]
* [[Model–view–controller|Composite-Strategy-Observer]] (see [[Model–view–controller|Model-View-Controller (MVC)]])
* [[Context Object]]
* [[Conway's Law]]
* [[Cooperate, Don’t Control]]
* [[CORBA-CGI Gateway]]
* [[Data Access Object (DAO)]]
* [[Data is the Next Intel Inside]]
* [[Data Transfer Object (DTO)]]
* [[Decorator pattern|Decorator]]
* [[Disposal Method]]
* [[Distributed Callback]]
* [[Domain Appropriate Devices]]
* [[Domain Model]]
* [[Domain Object]]
* [[Domain Store]]
* [[Bozo bit|Don't Flip the Bozo Bit]]
* [[Dynamic Invocation Interface (DII)]]
* ed
* [[Encapsulated Context]] (see Context Object)
* [[Engage Customers]]
* [[Enumeration Method]]
* [[Explicit Interface]]
* [[External Iterator]]
* [[Facade pattern|Facade]]
* [[Factory method pattern|Factory Method]]
* [[Few Panes Per Window]]
* [[Filter (software)|Filter]]
* [[Firewall Proxy]]
* [[Flat and Narrow Tree]]
* [[Forwarder-Receiver]]
* [[Front Controller]]
* [[Half-Sync/Half-Asynchronous]]
* [[Harnessing Collective Intelligence]]
* [[Immutable Value]]
* [[Information Just In Time]]
* [[Interceptor pattern|Interceptor]]
* [[Internal Iterator]] (see Enumeration Method)
* [[Interpreter pattern|Interpreter]]
* [[Invisible Hardware]]
* [[Involve Everyone]]
* [[Iterator pattern|Iterator]]
* [[Layer (object-oriented design)|Layers]]
* [[Leader/Followers]]
* [[Long tail (disambiguation)|Leveraging the Long Tail]]
* [[Macro Command]] (see Composite Command)
* [[Manager (disambiguation)|Manager]] (see Object Manager)
* [[Mediator pattern|Mediator]]
* [[Memento pattern|Memento]]
* [[Messaging pattern|Message]]
* [[Methods for States]]
* [[Mock Object]]
* [[Model–view–controller|Model-View-Controller (MVC)]]
* [[Monitor Object]]
* [[Mutable Companion]]
* [[Network Effects by Default]]
* [[Nouns and Verbs]]
* [[Null Object]]
* [[Object Adapter]]
* Object Manager
* [[State pattern|Objects for States]]
* [[Observer pattern|Observer]]
* [[Organization Follows Architecture]]
* [[Page Controller]]
* [[Perpetual Beta]]
* [[Pipes and Filters]]
* [[Pluggable Adapter]]
* [[Pluggable Factory]]
* [[Polyvalent-Program]]
* [[Presentation-abstraction-control|Presentation-Abstraction-Control (PAC)]]
* [[Proactor pattern|Proactor]]
* [[Prototype pattern|Prototype]]
* [[Prototype-Abstract Factory]] (see Pluggable Factory)
* [[Proxy pattern|Proxy]]
* [[Publisher-Subscriber]]
* [[Reactor pattern|Reactor]]
* [[Reflection (disambiguation)|Reflection]]
* [[Remote Proxy]] (see [[Proxy pattern|Client Proxy]])
* [[Resource Lifecycle Manager]] (see Object Manager)
* Roguelike
* [[Separated Engine and Interface]]
* [[Short Menus]]
* [[Singleton pattern|Singleton]]
* [[Sink (disambiguation)|Sink]]
* [[Smart Pointer]]
* [[Software Above the Level of a Single Device]]
* [[Some Rights Reserved]]
* [[Source (programming language)|Source]]
* [[Stable Intermediate Forms]]
* [[Standard Panes]]
* [[State pattern|State]] (see [[State pattern|Objects for States]])
* [[Strategized Locking]]
* [[Strategy pattern|Strategy]]
* [[Template Method]]
* [[Template View]]
* [[Long tail (disambiguation)|The Long Tail]] (see [[Long tail (disambiguation)|Leveraging the Long Tail]])
* [[The Perpetual Beta]] (see Perpetual Beta)
* [[Transfer Object]] (see Data Transfer Object)
* [[Transform View]]
* [[Two-Way Adapter]]
* [[Users Add Value]] (see Harnessing Collective Intelligence)
* [[View Handler]]
* [[Visitor pattern|Visitor]]
* [[Window Per Task]]
* [[Wrapped Class Adapter]]
* [[Adapter pattern|Wrapper]] (see [[Adapter pattern|Adapter]] and [[Decorator pattern|Decorator]])
* [[Wrapper Facade]]
 
{{Design Patterns patterns}}
Line 344 ⟶ 81:
[[Category:Software development books]]
[[Category:Software design patterns]]
 
{{software-book-stub}}