Proceedings of. The Three-Tier Architecture Pattern Language Design Fest

Similar documents
PATTERN-ORIENTED ARCHITECTURE FOR WEB APPLICATIONS

Encapsulating Crosscutting Concerns in System Software

A methodology for secure software design

Web Application Architectures

CHAPTER 4: PATTERNS AND STYLES IN SOFTWARE ARCHITECTURE

Service Oriented Architecture

How to Build an E-Commerce Application using J2EE. Carol McDonald Code Camp Engineer

Broker Revisited Michael Kircher, Markus Voelter, Klaus Jank, Christa Schwanninger, Michael Stal

25 May Code 3C3 Peeling the Layers of the 'Performance Onion John Murphy, Andrew Lee and Liam Murphy

Dynamic Adaptability of Services in Enterprise JavaBeans Architecture

Brokerage in web application frameworks

Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville

Chapter. Solve Performance Problems with FastSOA Patterns. The previous chapters described the FastSOA patterns at an architectural

Web Services and Service Oriented Architectures. Thomas Soddemann, RZG

Distributed systems. Distributed Systems Architectures

Contents. Client-server and multi-tier architectures. The Java 2 Enterprise Edition (J2EE) platform

On Building Secure SCADA Systems using Security Patterns. Outline

Application of MVC Platform in Bank E-CRM

Web Application Framework: Review

Architectural Patterns (3)

Service-Oriented Architecture and Software Engineering

Distributed Database Design

GenericServ, a Generic Server for Web Application Development

A MODEL OF HETEROGENEOUS DISTRIBUTED SYSTEM FOR FOREIGN EXCHANGE PORTFOLIO ANALYSIS

Research Topics in Software Engineering

Syslog Analyzer ABOUT US. Member of the TeleManagement Forum

Definition of SOA. Capgemini University Technology Services School Capgemini - All rights reserved November 2006 SOA for Software Architects/ 2

WebSphere Application Server - Introduction, Monitoring Tools, & Administration

Java EE 7: Back-End Server Application Development

Virtual machine interface. Operating system. Physical machine interface

SOA REFERENCE ARCHITECTURE: WEB TIER

Service Oriented Architecture

Introduction. Observation Patterns. Accounting Patterns. How to use Patterns

Commercial software development with the help of J2EE architecture and MVC

SPPA-T3000 Control System The Benchmark in Controls

Core J2EE Patterns, Frameworks and Micro Architectures

Usability-Improving Mobile Application Development Patterns

Client-Server Architecture & J2EE Platform Technologies Overview Ahmed K. Ezzat

Client/server is a network architecture that divides functions into client and server

OUR COURSES 19 November All prices are per person in Swedish Krona. Solid Beans AB Kungsgatan Göteborg Sweden

2012 LABVANTAGE Solutions, Inc. All Rights Reserved.

So You Want an SOA: Best Practices for Migrating to SOA in the Enterprise. Eric Newcomer, CTO

System types. Distributed systems

Distributed Objects and Components

Maturity Assessments of Service- oriented Enterprise Architectures with Iterative Pattern Refinement

SOA Myth or Reality??

COMP9321 Web Application Engineering

Service Oriented Architecture (SOA) An Introduction

Monitoring Pramati EJB Server

White Paper: 1) Architecture Objectives: The primary objective of this architecture is to meet the. 2) Architecture Explanation

Detailed Table of Contents

A Unified Messaging-Based Architectural Pattern for Building Scalable Enterprise Service Bus

Distributed Systems Lecture 1 1

Base One's Rich Client Architecture

Pattern. seconda parte. Types of patterns. ...other good guidance... some GRASP. design patterns (software design) Types of software patterns

The Different Types of Search and Execution Systems

Using MDA in Web Software Architectures

Case Study. SaaS Based Multi-Store Market Place Brainvire Infotech Pvt. Ltd Page 1 of 5

Application Integration Framework for a Large Business Process Redesign Project

The Software Container pattern

3-Tier Architecture. 3-Tier Architecture. Prepared By. Channu Kambalyal. Page 1 of 19

Two patterns for cloud computing: Secure Virtual Machine Image Repository and Cloud Policy Management Point

Deployment Pattern. Youngsu Son 1,JiwonKim 2, DongukKim 3, Jinho Jang 4

Final Project Proposal. CSCI.6500 Distributed Computing over the Internet

Web Application Development for the SOA Age Thinking in XML

Oracle WebLogic Foundation of Oracle Fusion Middleware. Lawrence Manickam Toyork Systems Inc

APLRAC: A PATTERN LANGUAGE FOR DESIGNING AND IMPLEMENTING ROLE-BASED ACCESS CONTROL

Senior IT Strategist R&D Center

Utilizing Domain-Specific Modelling for Software Testing

UNIVERSITY OF ILLINOIS AT CHICAGO University of Illinois Ready

Component Middleware. Sophie Chabridon. INT - INF Department - Distributed Systems team 2006

Automating Rich Internet Application Development for Enterprise Web 2.0 and SOA

Service Oriented Architecture

To increase scalability, the following features can be integrated:

Towards a Pattern Language for Security Risk Analysis of Web Applications

CHAPTER 1 INTRODUCTION

Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note

Outline SOA. Properties of SOA. Service 2/19/2016. Definitions. Comparison of component technologies. Definitions Component technologies

Twin A Design Pattern for Modeling Multiple Inheritance

Glassfish Architecture.

Distributed Systems Architectures

-8*6-DYD6HPLQDU 6HUYOHW$UFKLWHFWXUHV 5DLQHU+LVV$QGUHDV.DSS 6<6725$*

Universität Karlsruhe (TH) Institut für Telematik Prof. Dr. S. Abeck. Cooperation & Management. Application Server. An Introduction

Java Technology in the Design and Implementation of Web Applications

Middleware Lou Somers

zen Platform technical white paper

Applying 4+1 View Architecture with UML 2. White Paper

<Project Name> Solution Architecture Preliminary System Design

A Review of an MVC Framework based Software Development

Extend the value of your core business systems.

Stock Trader System. Architecture Description

Customer Bank Account Management System Technical Specification Document

Chapter 4. Architecture. Table of Contents. J2EE Technology Application Servers. Application Models

Understanding Application Servers

Ebase Xi Agile Service Oriented Architecture

Load Balancing in Cluster

Enabling Technologies for Web-Based Legacy System Integration

A Service Discovery: A Service Broker Approach

A pattern language for security models

i-questionnaire A Software Service Tool for Data

Transcription:

Proceedings of The Three-Tier Architecture Pattern Language Design Fest Introduction 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) support the middle-tier of three-tier architectures. They 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 was the goal of the 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 was the beginning of a pattern language that describes the fundamental architecture of a three-tier system. 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 lifecycle 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 was 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. Requirement 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 [POSA], Object Group [Maff96] Lifecycle and Leasing [JaKi00], Evictor [Jain01], Lazy Acquisition [Kirch01], Eager Resource Acquisition [KiJa01] Management Security Authenticator [BrFe99], Architectural Patterns for Enabling Application Security [YoBa97], Pattern Language for Cryptographic Software [BRD98] The goal of the workshop was 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. Results of the Design Fest The Design Fest began with a discussion of layers. We first asked the question why we need layers. Here are some of the forces that drive the need for a layered architecture: To manage complexity Separate concerns Scalability issues, such as load balancing Ability to exchange user interfaces Support for multiple communication channel We then asked the question how many layers are needed in a system. The answer for this question was simple: It depends. It depends on the domain problem one is trying to solve. We agreed that when we usually talk about three-tier architectures, we refer to three layers presentation layer, business layer and data layer. However, to separate concerns even more, it is more appropriate to group responsibilities into additional logical layers. We then spent a

considerable amount of time identifying a list of layers that are common among most n-tiered architectures. Along with each layer, we identified the responsibilities of the layer, the forces that come into play and finally any existing patterns that address the forces. The following list shows the layers we agreed on, which are most common: Layer Responsibility Forces Patterns Presentation Presentation of the user Avoid (hard) state interface No business Logic View/Dialog Manage the display state Support for multiple user interfaces (presentation layers) and associated communication channels Keeping track of the conversational state Process Contains business rules Lifecycle of business use cases Is stateful, keeps application/session state Connects and Service/ Business Process Business Entity Data coordinates services Stateless Atomic actions/services, also allows composite services No user interaction Covered by one transaction Represents persistent data in the application Hides implementation details of the data layer Might provide optimization of data access Represents persistent data Fast access, relative to data layer Slow access MVC User Interface patterns Service Abstraction Layer Server-side Component Pattern Language Business Components Dynamic Object Model Business Components Object-to-relational mapping In addition, we identified some general patterns that applied to a majority of the layers. Resource Management Pattern Language Command [GHJV] Distribution and Communication patterns Security patterns

Discussion on Legacy Integration We then had a discussion on integration with legacy systems. Legacy Systems include Enterprise-Information-Systems, Back-Ends, and Mainframes (with overlap of course). They can provide pure services, pure data access, or any combination of them. We agreed that depending on the major focus of the legacy system, it is best to integrate them into the service layer or the data layer. Pattern Language Discussion We concluded the Design Fest with a discussion on what kinds of patterns are important to put into the pattern language. We agreed upon: Patterns to separate the layers Patterns to find the right amount of layers Documentation for newbies start with simple patterns continue with more complex patterns We then asked what kind of pattern language we could document. Finding the suitable architecture, finding forces to shape the system architecture Catalog existing patterns and pattern languages in the context of 3-tier architectures How should the business process be structured according to the domain problems? List of Participants Prashant Jain, Siemens AG, Germany Michael Kircher, Siemens AG, India Nicolai Josuttis, Solutions in Time, Germany Oliver Vogel, Systor AG, Switzerland Markus Voelter, Mathema AG, Germany Thomas Neumann, Systor AG, Germany

References [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 Generalize d 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 [JaKi00] P. Jain and M. Kir cher, Leasing Pattern, Pattern Language of Programs conference, Allerton Park, Illinois, USA, August 2000 [Jain01] P. Jain, Evictor Pattern, To be submitted to Pattern Language of Programs conference, Allerton Park, Illinois, USA, September 2001 [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 [KiJa00] M. Kircher and P. Jain, Lookup Pattern, European Pattern Language of Programs conference, Kloster Irsee, Germany, July 2000 [KiJa01] M. Kircher and P. Jain, Eager Acquisition, To be submitted to Pattern Language of Programs conference, Allerton Park, Illinois, USA, September 2001 [KiJa01] M. Kircher and P. Jain, Ad-hoc Networking Pattern Language, Submitted to European Pattern Language of Programs conference, Kloster, Irsee, Germany, July 2001 [Kirch01] M. Kircher, Lazy Acquisition Pattern, Submitted to European Pattern Language of Programs conference, Kloster Irsee, Germany, July 2001 [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://www.cs.wustl.edu/~mk1/adhocnetworking [POSA] 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 [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