Architekturmuster
Aus AKAEM
Hier folgen einige Informationen zu Architektur- und Entwurfsmustern. Die Begriffsdefinition zeigt die grundsätzlichen Konzepte und deren Unterschiede auf. Eine Literaturliste listet verwendete und weiterführende Referenzen zum Thema Architektur- und Entwurfsmuster.
Bitte nicht versuchen, die Muster auf dieser Seite zu klassifizieren (ausser den "großen" Klassen wie Muster, AntiPattern oder Smells). In diesem Wiki kann jeder mittels der Kategorien eine eigene Klassifikation aufsetzen (d.h. eigene Klassen mittels [[Kategorie:myClass]] vergeben).
Kriterien zur Anwendung von Mustern
- Identifikation von passenden Mustern aus dem Quellkode
- Identifikation von passenden Mustern aus der Spezifikation / den Anforderungen
- Identifikation von neuen Mustern aus Softwaresystemen (Muster-Entdeckung, Pattern-Mining)
- Methoden und Techniken der Muster-orientierten Modellierung
- Analyse und Bewertung von Mustern
- Empirische Studien, Statistiken
Offene Fragen
- Welchen (positiven wie negativen) Effekt haben Muster auf Qualitätseigenschaften? (z.B. nach ISO 9126: Funktionalität (Functionality), Zuverlässigkeit (Reliability), Benutzbarkeit (Usability), Effizienz (Efficiency), Wartbarkeit (Maintainability), Übertragbarkeit (Portability))
- In welcher Domäne sind Muster anwendbar? (z.B. Eingebetteten Systemen, Enterprise Applikationen, Informationssystemen, Datenbanksystemen, ...)
- Bei welcher Technologie sind Muster anwendbar? (z.B. Java, J2EE, EJB, .NET, OSGI, ...)
- Bei welchen Sprachkonzepten sind Muster anwendbar? (z.B. Objekt-orientierten Systemen, Aspekt-orientierten Systemen, Prozeduralen Systemen, ...)
- In welchen Repräsentationsformen eines Softwaresystems sind Muster anwendbar? (z.B. in Klassendiagrammen, Komponentendiagrammen, Sequenzdiagrammen, Verteilungsdiagrammen, Zustandsdiagrammen, ...)
Im Arbeiskreis bislang inhaltlich diskutierte Muster
- Singleton in Diskussion:Singleton
- Abstract Factory in Diskussion:Singleton
- Factory Method in Diskussion:Singleton
Darueber hinaus sind auch Musterdefinitionen eingepflegt, die noch keine Diskussionsbeitraege haben. Sobald Sie einen Diskussionsbeitrag hinzufuegen, koennen Sie dies hier durch einen Link direkt auf die Diskussionsseite bekanntgeben - und optional die Diskussionsseite bei sich auf "Beobachten" setzen.
Kataloge von Architektur- und Entwurfsmuster
Die Liste aller Muster ist in der Kategorie Kategorie:Muster zu finden. Spezielle Gruppen von Mustern sind in den Unterkategorien zu finden.
Muster aus dem Buch "Design Patterns"
- Erzeugungsmuster (Creational Patterns): Singleton, Abstract Factory, Builder, Factory Method, Prototype
- Strukturmuster (Structural Patterns): Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
- Verhaltensmuster (Behavioral Patterns): Strategy, Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Mnemento, Observer, State, Template Method, Visitor
Muster aus dem Buch "Pattern Languages of Program Design 1"
- ...
Muster aus dem Buch "Pattern Languages of Program Design 2"
- Mary Shaw: Pipeline, Data Abstraction, Communicating Processes, Implicit Invocation, Repository, Interpreter, Main Program and Subroutines, Layered Architecture
- Frank Buschmann: Reflection
- Software Tectonics, Flexible Foundations, Metamorphosis
Muster aus dem Buch "Pattern Languages of Program Design 3"
- ...
Muster aus dem Buch "Pattern Languages of Program Design 4"
- ...
Muster aus dem Buch "Pattern Languages of Program Design 5"
- Plug-ins: Plug-In, Framework Providing Application, Plug-In Registration, Plug-In Contract, Plug-In Per Task, Plug-In Lifecycle, Plug-In Package, Plug-In Based Product
- Grid Computing: Grid
- Component & Language Integration: Automatic Type converter, Split Object, Command Language, Component Wrapper, Object System Layer
- Framework Development: Concrete Evidence for Reuse, The Beauty of Simplicity, Skilled Team, Pilot Applications, Small Objects, Pilot-based Tests, Framework User Involvement, Multiple Change Requests
Muster aus dem Buch "Pattern-Oriented Software Architecture 1"
- Layers, Pipes and Filters, Blackboard, Broker, Model-View-Controller, Presentation-Abstraction-Control, Microkernel, Reflection,
- Entwurfsmuster: Whole-Part, Master-Slave, Proxy, Command Processor, View Handler, Forward-Receiver, Client-Dispatcher-Server, Publisher-Subscriber
Muster aus dem Buch "Pattern-Oriented Software Architecture 2"
- Service Access and Configuration: Wrapper Facade, Component Configurator, Interceptor, Extension Interface
- Event Handling: Reactor, Proactor, Asynchronous Completion Token, Acceptor-Connector
- Synchronization: Scoped Locking, Strategized Locking, Thread-Safe Interface, Double-Checked Locking Optimization
- Concurrency: Active Object, Monitor Object, Half-Sync/Half-Async, Thread-Specific Storage
Muster aus dem Buch "Pattern-Oriented Software Architecture 3"
- ...
Muster aus dem Buch "Pattern-Oriented Software Architecture 4"
- ...
Muster aus dem Buch "Pattern-Oriented Software Architecture 5"
- ...
Muster aus dem Buch "Patterns of Enterprise Application Architecture"
- Domain Logic Patterns: Transaction Script, Domain Model, Table Module, Service Layer
- Data Source Architectural Patterns: Table Data Gateway, Row Data Gateway, Active Record, Data Mapper
- Object-Relational Behavioral Patterns: Unit of Work, Identity Map, Lazy Load
- Object-Relational Structural Patterns: Identity Field, Foreign Key Mapping, Association Table Mapping, Dependent Mapping, Embedded Value, Serialized LOB, Single Table Inheritance, Class Table Inheritance, Concrete Table Inheritance, Inheritance Mappers
- Object-Relational Metadata Mapping Patterns: Metadata Mapping, Query Object, Repository
- Web Presentation Patterns: Model View Controller, Page Controller, Front Controller, Template View, Transform View, Two-Step View, Application Controller
- Distribution Patterns: Remote Facade, Data Transfer Object
- Offline Concurrency Patterns: Optimistic Offline Lock, Pessimistic Offline Lock, Coarse Grained Lock, Implicit Lock
- Session State Patterns: Client Session State, Server Session State, Database Session State
- Base Patterns: Gateway, Mapper, Layer Supertype, Separated Interface, Registry, Value Object, Money, Special Case, Plugin, Service Stub, Record Set
Muster aus dem Buch "Core J2EE Patterns"
Business Delegate, Session Facade, Service Locator, Value List Handler, Transfer Object, Transfer Object Assembler, Composite Entity, Data Access Object, Service Activator, Intercepting Filter, Front Controller, Composite View, View Helper, Dispatcher View, Service To Worker
Muster aus dem Buch "Software Architecture: Organizational Principles and Patterns"
- Vision: Front-End Alignment, Generative Vision, Rotation
- Rythm: Release Committee, Drop Pass, Synchronize Releases
- Anticipation: Pilot, Architecture Review, Outsource
- Partnering: Know thy Stakeholders, Reciprocity, No Surprises, Promote the Network
- Simplification: Slow Down To Speed Up, Migration Path, Whirlpool Watch
Muster aus dem Buch "Patterns in Java, Vol. 1"
- Fundamental Design Patterns: Delegation (When Not to Use Inheritance) [Grand98], Interface [Grand98], Marker Interface [Grand98], Immutable [Grand98], Proxy
- Creational Patterns: Factory Method [GoF95], Abstract Factory [GoF95], Builder [GoF95], Prototype [GoF95], Singleton [GoF95], Object Pool [Grand98]
- Partitioning Patterns: Layered Initialization [Grand98], Filter [BMRSS96], Composite [GoF95]
- Structural Patterns: Adapter [GoF95], Iterator [GoF95], Bridge [GoF95], Facade [GoF95], Flyweight [GoF95], Dynamic Linkage [Grand98], Virtual Proxy [Larman98], Decorator [GoF95], Cache Management [Grand98]
- Behavioral Patterns: Chain o Responsibility [GoF95], Command [GoF95], Little Language / Interpreter [Grand98], Mediator [GoF95], Snapshot [Grand98], Observer [GoF95], State [GoF95], Null Object [Woolf97], Strategy [GoF95], Template Method [GoF95], Visitor [GoF95]
- Concurrency Patterns: Single Threaded Execution [Grand98], Guarded Suspension [Lea97], Balking [Lea97], Scheduler [Lea97], Read/Write Lock [Lea97], Producer-Consumer, Two-Phase Termination [Grand98]
Muster aus dem Buch "Patterns in Java, Vol. 2"
- GRASP - General Responsibility Assignment Software Patterns: Low Coupling / High Cohesion [Larman98], Expert [Larman98], Creator [Larman98], Polymorphism [Larman98], Pure Fabrication [Larman98], Law of Demeter [Larman98], Controller [Larman98]
- GUI Design Patterns: Window per Task [Beck-Cunningham87], Interaction Style [Coram-Lee98], Explorable Interface [Coram-Lee98], Conversational Text [Grand99], Selection [Grand99], Form [Tidwell98], Direct Manipulation [Grand99], Limited Selection Size [Grand99], Ephemeral Feedback [Grand99], Disabled Irrelevant Things [Tidwell98], Supplementary Window [Grand99], Step-by-Step Instructions [Tidwell98]
- Organizational Coding Patterns: Accessor Method Name [Grand99], Anonymous Adapter [Grand99], Symbolic Constant Name [Grand99], Define Constants in Interfaces [Trost98], Switch [Grand99], Extend Super [Beck97], Intention Revealing Method [Beck97], Composed Method [Beck97], Conditional Compilation [Grand99], Checked versus Unchecked Exceptions [Grand99], Convert Exceptions [Brown98], Server Socket [Grand99], Client Socket [Grand99]
- Coding Optimization Patterns: Hashed Adapter Objects [Grand99], Lazy Initialization [Beck97], Double-Checked Locking [Schmidt-Harrison96], Loop Unrolling [Grand99], Lookup Table [Grand99]
- Code Robustness Patterns: Assertion Testing [Grand99], Guaranted Cleanup [Grand99], Maximize Privacy [Grand99], Return New Object from Accessor Method [Gold97], Copy Mutable Parqameters [Pryce98]
- Testing Patterns: Black Box Testing [Grand99], White Box testing [Grand99], Unit Testing [Grand99], Integration Testing [Grand99], System Testing [Grand99], Regression Testing [Grand99], Acceptance Testing [Grand99], Clean Room Testing [Grand99]
- sonstige (TODO): Fast Lane Reader, Model-View-Controller
Muster aus dem Buch "Java Enterprise Design Patterns: Patterns in Java Volume 3"
Muster aus dem Buch "Patterns for Computer-Mediated Interaction"
Muster aus dem Buch "EJB Design Patterns: Advanced Patterns, Processes, and Idioms"
Muster aus dem Buch "J2EE Best Practices: Java Design Patterns, Automation, and Performance"
Muster aus dem Buch "Security Patterns: Integrating Security and Systems Engineering"
Muster aus dem Buch "Architecting Enterprise Solutions: Patterns for High-Capability Internet-based Systems"
Muster aus dem Buch "Ajax Patterns and Best Practices"
Muster aus dem Buch "Ajax Design Patterns"
Foundational Technology Patterns
- Ajax Architecture: Ajax App
- Display Manipulation: Display Morphing, Page Rearrangement
- Web Remoting: Web Service, XMLHttpRequest Call, IFrame Call, HTTP Streaming, On-Demand Javascript
- Dynamic Behavior: User Action, Scheduling
- Extended Technologies: Richer Plugin
Programming Patterns
- Web Services: RESTful Service, RPC Service, Ajax Stub, HTML Message, Plain-Text Message, XML Message, JSON Message
- Browser-Server Dialogue: Call Tracking, Periodic Refresh, Submission Throttling, Explicit Submission, Distributed Events, Cross-Domain Proxy
- DOM Population: XML Data Island, Browser-Side XSLT, Browser-Side Templating
- Code Generation and Reuse: Server-Side Code Generation, Cross-Browser Component
- Performance Optimisation: Browser-Side Cache, Predictive Fetch, Guesstimate, Multi-Stage Download, Code Compression, Fat Client
Functionality and Usability Patterns
- Widgets: Slider, Progress Indicator, Drilldown, Data Grid, Rich Text Editor, Suggestion, Live Search, Live Command-Line, Live Form
- Page Architecture: Drag-And-Drop, Sprite, Popup, Malleable Content, Microlink, Portlet, Status Area, Update Control, Virtual Workspace
- Visual Effects: One-Second Spotlight, One-Second Mutation, One-Second Motion, Highlight
- Functionality: Lazy Registration, Direct Login, Host-Proof Hosting, Timeout, Heartbeat, Unique URLs
Development Practices
- Diagnosis: Logging, Debugging, DOM Inspection, Traffic Sniffing
- Testing: Simulation Service, Browser-Side Test, Service Test, System Test
Muster aus dem Buch "A Pattern Approach to Interaction Design"
Muster aus dem Buch "Server Component Patterns: Component Infrastructures Illustrated with EJB"
Kataloge von Architektur- und Entwurfs-AntiPatterns
Antipatterns aus dem Buch "J2EE AntiPatterns"
- Distribution and Scaling: Localizing Data, Misunderstanding Data Requirements, Miscalculating Bandwidth Requirements, Overworked Hubs, The Man with the Axe
- Persistence: Dredge, Crush, DataVision, Stifle
- Service-Based Architecture: Multiservice, Tiny Service, Stovepipe Service, Client Completes Service
- JSP Use and Misuse: Ignoring Reality, Too Much Code, Embedded Navigational Information, Copy and Paste JSP, Too Much Data in Session, Ad Lib TagLibs
- Servlets: Including Common Functionality in Every Servlet, Template Text in Servlet, Using Strings for Content Generation, Not Pooling Connections, Accessing Entities Directly
- Entity Beans: Fragile Links, DTO Explosion, Surface Tension, Coarse Behavior, Liability, Mirage
- Session EJBs: Sessions A-Plenty, Bloated Session, Thin Session, Large Transaction, Transparent Façade, Data Cache
- Message-Driven Beans: Misunderstanding JMS, Overloading Destinations, Overimplementing Reliability
- Web Services: Web Services Will Fix Our Problems, When in Doubt, Make It a Web Service, God Object Web Service, Fine-Grained/Chatty Web Service, Maybe It’s Not RPC, Single-Schema Dream, SOAPY Business Logic
- J2EE Services: Hard-Coded Location Identifiers, Web = HTML, Requiring Local Native Code, Overworking JNI, Choosing the Wrong Level of Detail, Not Leveraging EJB Containers
Links
- http://de.wikipedia.org/wiki/Architekturmuster
- Ein weiteres Plug-in Pattern (Mayer02)
