COMPUTING SCIENCE 220
Software Engineering and Human-Computer Interfaces
A Brief Historical Overview of System Architecture
Traditional Mainframe Architecture
- online processing: an expensive mainframe running a time-sharing operating system (preemptive multitasking)
- multiple users connected via dumb terminals -- keyboard input, text output
- large applications -- payroll, billing -- tend to be run as batch jobs
- advantages
- centralized data: high data security, ease of backups; reliable, scalable computing.
- disadvantages
- inflexible; limited user interface; producing multiuser online applications was complex and difficult.
File Server Architecture
- development of microprocessor, PC and LAN enable "smart" clients and dumb server
- clients responsible for user interface, applications, file-based data management
- file server only services read and write requests -- applications run on the client
- advantages
- flexible, inexpensive to deploy
- disadvantages
- low security and reliability
Client/Server Architectures
Two-tier Client/Server Architecture
- emergence of relational DBMS's and common GUI (MS Windows)
- "smart-client, smart-server" --
processing more balanced between client and server, since DB server
can perform significant data processing
- client
- user interface and business logic
- server
- data management
- file server, print server, DB server, transaction server, groupware server
- advantages
- use of a relational DB increases security, reliability, flexibility;
GUI makes system easy to learn for users;
low to medium cost
- disadvantages
- maintenance: each client system must have a driver for each database it accesses ("fat client"),
and drivers must be updated regularly
- cost: DB vendors typically charge by maximum number of concurrent users, and clients
typically hold databases open for the duration of the session
Three-tier Client/Server Architecture
- uses a middleware server between the client and the database
- thin clients: clients need only a relatively simple driver to communicate with the middleware server
- middleware server:
- handles connection to the DB server
- a good place for the business logic of an application, so updates can be confined to the
middleware server, rather than updating all the clients
- can cache data to improve performance
- allows multiple clients to share a single database connection
Figure 34.11 Classic view of a three-tier architecture.
Figure 34.12 A three-tier logical division deployed in two physical architectures.
- advantages
- thin clients are easier to configure and maintain
- if business logic is maintained on middleware server, it only needs to be updated on
the server, not on all the clients using the application
- DB licensing costs may be lower due to sharing of a single DB connection
- disadvantages
- the server may become a bottleneck
- if the business is located in geographically remote locations, local data must be transmitted to
and stored on the centralized DB server
Distributed Architectures
If the organization is geographically dispersed, a distributed architecture should be considered:
- keeps data near the point at which it is most used
- distributes processing load across multiple servers
A distributed architecture for object-oriented applications typically uses an Object Request Broker (ORB),
a middleware layer that enables an object on a client to send a message to an object on the server. The ORB
handles all communication and coordination functions, providing transparent local and remote access to objects.
Various implementations are available:
- CORBA -- the Object Management Group's Common Object Request Broker Architecture, an open standard that was
developed to ensure that ORB's created by one vendor will interoperate with ORB's from other vendors
- RMI -- the Java-only Remote Method Invocation, "a poor man's CORBA" that supports getting references to remote
objects and passing messages to and from them, but that does not support many of the services provided by
CORBA implementations
- COM and DCOM -- Microsoft's Windows-only (Distributed) Component Object Model; an ActiveX component is a DCOM object
- JavaBeans -- Sun's portable, platform-independent component system, complete with a development kit
These technologies allow you to change the topology of your application without changing its classes.
See Chapter 4, §3, Problems and Methods to Avoid
from Eric S. Raymond's online book The Art of Unix Programming
for a critical view of RMI, COM, and DCOM.
Java and the Web
Java programs are:
- portable
- runs on any platform that offers a Java interpreter (JVM)
- distributable
-
- applets are automatically downloaded from a server when accessed
- push technologies allow updates to Java applications to be automatically propagated to client systems
Implementing client software in Java adds platform independence to the data independence
provided by a relational database and the topology independence provided by an object request broker
[Gilbert and McCarty, p. 635].
References
Stephen Gilbert and Bill McCarty, Object-Oriented Design in Java (Waite Group Press, 1998) [QA 76.73 J38 G55 1998]
Client/Server Software Architectures--An Overview from the Software Engineering Institute
What Are the Basic Concepts of Client/server Architecture? History, definition and evolution by Marion K. Jenkins,
Question #11 from Business Driven Information Technology: Answers to 100 Critical Questions for Every Manager
edited by David R. Laube and Raymond F. Zammuto (Stanford University Press, 2003).
Copyright © 2003 Jonathan Mohr
Figures copyright © 2002 Craig Larman