General Navigation Buttons - Home | Search | Contact Us | Site Map | Whats New
products graphic
white space
products
Software Technology Roadmap
What's New
Background & Overview
Technology Descriptions
Defining Software Technology
Technology Categories
Template for Technology Descriptions
Taxonomies
Glossary & Indexes
Feedback & Participation
Software Engineering Information Repository (SEIR)
white space
About SEI|Mgt|Eng|Acq|Collaboration|Prod.& Services|Pubs
pixel
Rollover Popup Hints for Topic Navigation Buttons above
pixel
Two Tier Software Architectures


Status

Complete

Note

We recommend Client/Server Software Architectures, as prerequisite reading for this technology description.

Purpose and Origin

Two tier software architectures were developed in the 1980s from the file server software architecture design. The two tier architecture is intended to improve usability by supporting a forms-based, user-friendly interface. The two tier architecture improves scalability by accommodating up to 100 users (file server architectures only accommodate a dozen users), and improves flexibility by allowing data to be shared, usually within a homogeneous environment [Schussel 96]. The two tier architecture requires minimal operator intervention, and is frequently used in non-complex, non-time critical information processing systems. Detailed readings on two tier architectures can be found in Schussel and Edelstein [Schussel 96, Edelstein 94].

Technical Detail

Two tier architectures consist of three components distributed in two layers: client (requester of services) and server (provider of services). The three components are

  1. User System Interface (such as session, text input, dialog, and display management services)
  2. Processing Management (such as process development, process enactment, process monitoring, and process resource services)
  3. Database Management (such as data and file services)
The two tier design allocates the user system interface exclusively to the client. It places database management on the server and splits the processing management between client and server, creating two layers. Figure 38 depicts the two tier software architecture.

Figure 38: Two Tier Client Server Architecture Design [Louis 95]

In general, the user system interface client invokes services from the database management server. In many two tier designs, most of the application portion of processing is in the client environment. The database management server usually provides the portion of the processing related to accessing data (often implemented in store procedures). Clients commonly communicate with the server through SQL statements or a call-level interface. It should be noted that connectivity between tiers can be dynamically changed depending upon the user's request for data and services.

As compared to the file server software architecture (that also supports distributed systems), the two tier architecture improves flexibility and scalability by allocating the two tiers over the computer network. The two tier improves usability (compared to the file sever software architecture) because it makes it easier to provide a customized user system interface.

It is possible for a server to function as a client to a different server- in a hierarchical client/server architecture. This is known as a chained two tier architecture design.

Usage Considerations

Two tier software architectures are used extensively in non-time critical information processing where management and operations of the system are not complex. This design is used frequently in decision support systems where the transaction load is light. Two tier software architectures require minimal operator intervention. The two tier architecture works well in relatively homogeneous environments with processing rules (business rules) that do not change very often and when workgroup size is expected to be fewer than 100 users, such as in small businesses.

Maturity

Two tier client/server architectures have been built and fielded since the middle to late 1980s. The design is well known and used throughout industry. Two tier architecture development was enhanced by fourth generation languages.

Costs and Limitations

Scalability. The two tier design will scale-up to service 100 users on a network. It appears that beyond this number of users, the performance capacity is exceeded. This is because the client and server exchange "keep alive" messages continuously, even when no work is being done, thereby saturating the network [Schussel 96].

Implementing business logic in stored procedures can limit scalability because as more application logic is moved to the database management server, the need for processing power grows. Each client uses the server to execute some part of its application code, and this will ultimately reduce the number of users that can be accommodated.

Interoperability. The two tier architecture limits interoperability by using stored procedures to implement complex processing logic (such as managing distributed database integrity) because stored procedures are normally implemented using a commercial database management system's proprietary language. This means that to change or interoperate with more than one type of database management system, applications may need to be rewritten. Moreover, database management system's proprietary languages are generally not as capable as standard programming languages in that they do not provide a robust programming environment with testing and debugging, version control, and library management capabilities.

System administration and configuration. Two tier architectures can be difficult to administer and maintain because when applications reside on the client, every upgrade must be delivered, installed, and tested on each client. The typical lack of uniformity in the client configurations and lack of control over subsequent configuration changes increase administrative workload.

Batch jobs. The two tiered architecture is not effective running batch programs. The client is typically tied up until the batch job finishes, even if the job executes on the server; thus, the batch job and client users are negatively affected [Edelstein 94].

Dependencies

Developing a two tier client/server architecture following an object-oriented methodology would be dependent on the CORBA standards for design implementation. See Common Object Request Broker Architecture.

Alternatives

Possible alternatives for two tier client server architectures are

When preparing a two tier architecture for possible migration to an alternative three tier architecture, the following five steps will make the transition less costly and of lower risk [Dickman 95]:

  1. Eliminate application diversity by ensuring a common, cross-hardware library and development tools.
  2. Develop smaller, more comparable service elements, and allow access through clearly-defined interfaces.
  3. Use an Interface Definition Language (IDL) to model service interfaces and build applications using header files generated when compiled.
  4. Place service elements into separate directories or files in the source code.
  5. Increase flexibility in distributed functionality by inserting service elements into Dynamic Linked Libraries (DLLs) so that they do not need to be complied into programs.

Complementary Technologies

Complementary technologies for two tier architectures are CASE (computer-aided software engineering) tools because they facilitate two tier architecture development, and open systems (see COTS and Open Systems-An Overview) because they facilitate developing architectures that improve scalability and flexibility.

Index Categories

This technology is classified under the following categories. Select a category for a list of related topics.

Name of technology

Two Tier Software Architectures

Application category

Client/Server (AP.2.1.2.1)

Quality measures category

Usability (QM.2.3)
Maintainability (QM.3.1)
Scalability (QM.4.3)

Computing reviews category

Distributed Systems (C.2.4)
Software Engineering Design (D.2.10)

References and Information Sources

[Dickman 95] Dickman, A. "Two-Tier Versus Three-Tier Apps." Informationweek 553 (November 13, 1995): 74-80.
[Edelstein 94] Edelstein, Herb. "Unraveling Client/Server Architecture." DBMS 7, 5 (May 1994): 34(7).
[Gallaugher 96] Gallaugher, J. & Ramanathan, S. "Choosing a Client/Server Architecture. A Comparison of Two-Tier and Three-Tier Systems." Information Systems Management Magazine 13, 2 (Spring 1996): 7-13.
[Louis 95] Louis [online]. Available WWW
<URL: http://www.softis.is> (1995).
[Newell 95] Newell, D.; Jones, O.; & Machura, M. "Interoperable Object Models for Large Scale Distributed Systems," 30-31. Proceedings. International Seminar on Client/Server Computing. La Hulpe, Belgium, October 30-31, 1995. London, England: IEE, 1995.
[Schussel 96] Schussel, George. Client/Server Past, Present, and Future [online]. Available WWW
<URL: http://www.dciexpo.com/geos/> (1995).

Current Author/Maintainer

Darleen Sadoski, GTE

External Reviewers

Paul Clements, SEI
Frank Rogers, GTE

Modifications

10 Jan 97 (original)



The Software Engineering Institute (SEI) is a federally funded research and development center sponsored by the U.S. Department of Defense and operated by Carnegie Mellon University.

Copyright 2007 by Carnegie Mellon University
Terms of Use
URL: http://www.sei.cmu.edu/str/descriptions/twotier_body.html
Last Modified: 11 January 2007