Home | Details | Downloads | Workshops Authors

Ad Hoc Networking

Real-Time Patterns

Resource Management

Three Tier Patterns

The Three-Tier Architecture Pattern Language


Designing a Three-Tier Architecure Pattern Language Design Fest, EuroPLoP 2001
Kloster Irsee/Germany, July 4-8
The Three-Tier Architecture Pattern Language Workshop, OOPSLA 2001
Tampa Bay, Florida/USA, Octoboer 15


Three-tier applications have gained increasing acceptance and popularity in the software industry. Three-tier applications usually consist of a thin client providing presentation logic, a middle-tier containing the business logic, and a back-end database.
Three-tier applications provide several benefits over traditional client-server applications including:
  • Scalability: A three-tier architecture allows distribution of application components across multiple servers thus making the system much more scalable.
  • Reliability: A three tier architecture makes it easier to increase reliability of a system by implementing multiple levels of redundancy.
  • Flexibility: By separating the business logic of an application from its presentation logic, a three-tier architecture makes the application much more flexible to changes.
  • Reusability: Separating the application into multiple layers makes it easier to implement re-usable components.
As a result of these benefits, three-tier architectures have been used in many large scale distributed systems and enterprise applications including a large number of e-commerce solutions. Component technologies such as Enterprise Java Beans (EJB) and CORBA Component Model (CCM) make use of three-tier architectures to provide frameworks for component development and deployment. Similarly, many web services based on HTTP and XML make use of three-tier architectures.
While no two three-tier systems may be alike, they share similar requirements and consequently similar system designs. It is the goal of this workshop to capture these similarities in the form of design patterns and to further integrate them into a pattern language. The net outcome of the workshop will be a pattern language that describes the fundamental architecture of a three-tier system. The workshop will be especially valuable to OOPSLA participants who are system architects as well as software developers since the pattern language that will be formulated will be a very useful and effective means of documenting architectures of three-tier systems.


The goal of this workshop is to discover and document common patterns and pattern languages among architectures of three-tier systems. The patterns, interwoven as they are, will be used to formulate a pattern language for three-tier systems.

Discovering Patterns

Three-tier systems share many similar requirements. A typical three-tier system includes the following requirements:
  • User interface: A web-based interface is commonly provided to access the rest of the system.
  • Persistent Storage: An important requirement is to be able to persistently store the data, for example, in a database.
  • Adaptive Business Logic: Systems need to be adaptive to changing business logic. They should provide hooks in the framework to add new features or plug in new services easily.
  • Data Consistency: The state of the data in a system needs to be consistent across the lifetime of the system. This usually refines into some form of transaction and concurrency control mechanisms.
  • Fault Tolerance: Systems need to be fault tolerant as well as highly available.
  • Lifecycle and Resource Management: Since systems must typically be highly scalable, special care needs to be taken regarding the lifecylce of the components and general resource management.
  • Security: Each layer of a three-tier system needs to support some form of security.
Design patterns can serve as a valuable tool to describe the system architecture that meets these requirements. Design patterns abstract away from any specific language, platform, or domain. The goal of the workshop is to discover the patterns common among three-tier architectures and interweave them into a pattern language. Several patterns and pattern languages have already been documented that address the requirements of three-tier systems. Here is a small subset of these patterns along with the requirements that they address.

Pattern References
User Interfaces
Interaction Patterns in User Interfaces [WeTr00], Pattern Language for User Interface Design [CoLe96]
Persistent Storage
Mapping Objects to Tables: A Pattern Language [Kell97], Relational Database Access Layer [KeCo97]
Adaptive Business Logic
Component Pattern Language [Voel01], Component Configurator [POSA]
Data Consistency
Monitor Object [POSA2], De-Centralized Locking [Schu01]
Fault Tolerance
Reliable Hybrid [Dani97], Master-Slave [POSA1], Object Group [Maff96]
Lifecycle and Resource 
Leasing [POSA3], Evictor [POSA3], Lazy Acquisition [POSA3], Eager Acquisition [POSA3]
Authenticator [BrFe99], Architectural Patterns for Enabling Application Security [YoBa97], Pattern Language for Cryptographic Software [BRD98]

The goal of the workshop is to expand on this list of patterns as well as integrate them into a pattern language that effectively describes the architecture of a three-tier system. As a basis for the workshop, we plan to present a pattern language that covers an important aspect of three-tier architectures, namely resource management. We discovered and documented the pattern language as part of a workshop we conducted at OOPSLA 2000 titled, "The Jini Pattern Language" [OOPSLA00]. During the workshop we realized that resource management forms the heart of ad hoc networking technologies such as Jini. As resources are continuously added and removed from an ad hoc network, managing these resources in an efficient manner becomes very important. We documented our findings in the form of a pattern language which we have submitted for further refinement at the European Pattern Language of Programs conference, 2001 [POSA3]. This pattern language will therefore form a subset of the Three-tier Architecture Pattern Language that we propose to discover and document at the workshop.

Submission Requirements

Anyone interested in participating in the workshop should submit a position paper by August 17, 2001. All participants are expected to be familiar with three-tier systems as well as writing design patterns.
The position paper should be about 2-3 pages long and of one of the following formats:
  • A report describing one or more patterns (or a pattern language) in a three-tier architecture.
  • An experience report describing architecture decisions that the participant made in designing a three-tier system.
The number of participants will not exceed 15.


Information about the workshop, the submissions, the presentations, the workshop minutes and the final outcome will be hosted on a web page on the internet. Invitations for this workshop will be posted to relevant mailing lists as well as newsgroups.
On the day of the workshop the participants will be invited to present their position papers in the morning. In the afternoon we will discuss how individual patterns and pattern languages can be combined into a pattern language describing three-tier architectures.
The outcome, the pattern language, is expected to be refined in further workshops at conferences such as Pattern Language of Programs (PLoP), European Pattern Language of Programs (EuroPLoP) and Conference on Object Oriented Technologies and Systems (COOTS).


The organizers have successfully led a workshop titled "The Jini Pattern Language" at OOPSLA 2000, in Minneapolis, MN. For complete details of the workshop including the workshop minutes as well as a list of all the submissions, please refer to [OOPSLA00].
All authors are experienced writers of design patterns and have several publications to their names. The authors also have several years of project experience designing and building N-tier systems.
Prashant Jain is currently working as a researcher in the Corporate Research division of Siemens AG in Delhi, India. He holds a Masters degree in Computer Science from Washington University in St. Louis, U.S.A. His professional experience includes working as a software engineer for companies like Fujitsu Network Communications, Inc., and Kodak Health Imaging Systems, Inc. He has also been actively involved in the Centre for Distributed Object Computing formerly headed by Dr. Douglas Schmidt at Washington University.
Michael Kircher is currently working as a researcher in the Corporate Research of Siemens AG in Munich, Germany. His main fields of interest are distributed object computing, design patterns as well as architectural consulting. He is also an active member of the Centre for Distributed Object Computing at Washington University in Saint Louis, which was formerly lead by Dr. Douglas Schmidt and now by Dr. Ron Cytron. He holds a Masters degree in Computer Science from University of Stuttgart.
Kirthika Parameswaran is currently working at Telcordia (formerly Bellcore) Applied Research Labs in New Jersey, U.S.A. She is actively involved with the Center for Distributed Object Computing at Washington University in St. Louis, U.S.A. and has been a Research Assistant under Dr. Douglas Schmidt and Dr. David Levine. She also holds a Master's degree in Computer Science from Washington University. Her areas of interest include distributed object computing, security, wireless middleware, design patterns and application frameworks.


[BRD98] A. Braga, C. Rubira, and R. Dahab, A Pattern Language for Cryptographic Software, Pattern Language of Programs Proceedings, 1998
[BrFe99] F.L. Brown and E.B. Fernandez, The Authenticator pattern, Pattern Language of Programs Proceedings, 1999
[CoLe96] T. Coram and J. Lee, A Pattern Language For User Interface Design, Pattern Language of Programs Proceedings, 1996
[Dani97] F. Daniels, The Reliable Hybrid Pattern: A Generalized Software Fault Tolerant Design Pattern, Pattern Language of Programs Proceedings, 1997
[GHJV] E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns - Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995
[KeCo97] W. Keller and J. Coldewey, Relational Database Access Layer, Pattern Language of Programs conference, Allerton Park, Illinois, USA, September 1997
[Kell97] W. Keller, Mapping Objects to Tables: A Pattern Language, Proceedings of the 1997 European Pattern Languages of Programming Conference, Irsee, Germany, 1997
[Maff96] S. Maffeis, The Object Group Design Pattern, Proceedings of the Second Conference on Object-Oriented Technologies and Systems, Toronto, Canada, June 1996
[OOPSLA00] M. Kircher, P. Jain, Kirthika Parameswaran, The Jini Pattern Language , OOPSLA 2000, Minneapolis, October 2000, http://posa3.org/workshops/AdHocNetworking
[POSA1] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerland and M. Stal, Pattern-Oriented Software Architecture--A System of Patterns, John Wiley and Sons, 1996
[POSA2] D. Schmidt, M. Stal, H. Rohnert, and F. Buschmann, Pattern-Oriented Software Architecture--Patterns for Concurrent and Distributed Objects, John Wiley and Sons, 2000
[POSA3] M. Kircher and P. Jain, Pattern-Oriented Software Architecture--Patterns for Resource Management, 2004
[Schu01] D. Schuetz, De-Centralized Locking Pattern, Submitted to European Pattern Language of Programs conference, Kloster Irsee, Germany, July 2001
[Voel01] M. Voelter, The Component Pattern Language, Submitted to European Pattern Language of Programs conference, Kloster Irsee, Germany, July 2001
[WeTr00]  M. van Welie, H. Trætteberg, Interaction Patterns in User interfaces, Pattern Language of Programs conference, August 2000, Allerton Park, Illinois
[YoBa97]  J. Yoder and J. Barcalow, Architectural Patterns for Enabling Application Security, Pattern Language of Programs conference, 1997, Allerton Park, Illinois