System Architecture
System architecture is a sub-discipline of computer science concerned with the design of systems. There are many
different kinds of architecture, but any architecture is fundamentally concerned with defining two classes of objects:
Components and Interfaces. The components of an architecture are parts that can be hooked together; the interfaces of an
architecture are the methods by which components are connected.
By specifying a set of components and interfaces, the architect defines a space of valid systems. A good architect can specify
components and interfaces in such a way that the space of valid systems is restrictive enough to be easily built, maintained
and extended, but not so restrictive as to eliminate potentially useful designs.
Many architectures focus more on components than interfaces, because components are more readily recognized and seem
more stable. In practice, however, it is the interfaces that last the longest in computer systems. This is because the interfaces
control the interchangeability of components, and hence determine how the system will evolve over time.
The types of components and interfaces under discussion depend on the kind of architecture we want to define. We next
consider three different kinds of architecture: physical, software, and system architecture.
Physical Architecture
The physical architecture of a computer system is essentially its hardware. It includes components such as:
- Servers
- Workstations
- Monitors
- Modems and telephone connections
- Network hardware (cable, hubs, switches, repeaters, load balancers)
- Storage subsystems (tape drives, disk farms, and Storage Area Networks)
- Uninterruptible power supplies, power conditioning equipment, and other environmental systems
The interfaces of physical architecture include:
- Bus interfaces (IDE, PCI, SCSI)
- Auxiliary interfaces (PCMCIA, FireWire, Universal Serial Bus)
- Ethernet (CATV cable, RJ-45)
- Removable media (CD-ROM, CD-RW, QIC-Tape)
- Video (RGB)
- Power (A/C, PMS)
An important component of the physical architecture is the specification of parameters for each of the physical
components - for example, what types of computers can be used as servers, parameters for network cable and network
topology, and so on. These specifications govern the purchase of new parts of the physical architecture as well as
replacement parts.
Software Architecture
The software architecture of a computer system is the set of software systems that it contains. Components of a software
architecture include:
- Operating systems (server and desktop)
- Directory services (Lightweight Directory Access Protocol)
- Office suites (SmartSuite, Office 2000)
- CAD systems (Pro/Engineer, AutoCAD)
- Databases (Oracle, SQLServer)
- E-mail, newsgroup and collaborative systems (Domino, Exchange)
- Web software (browsers, web servers)
- Development tools (programming/scripting languages, modeling software)
- Security (digital certificates, firewalls, Secure Sockets Layer, Virtual Private Network)
- Enterprise systems (Enterprise Resource Planning, PDM, Electronic Document Management)
- Manufacturing systems (Manufacturing Execution System)
Interfaces of a software architecture include:
- Communication technologies (TCP/IP, X.25)
- CAD standards (STEP, IGES)
- Distributed object technologies (OLE, DCOM, CORBA)
- Database standards (SQL/3, Open Database Connectivity)
- E-mail standards (MIME, MAPI)
- Application standards (HTML 4.0, ECMAScript, HTTP 1.1)
- Product data management/document management standards (PDM Enablers, OpenDoc)
As is the case with physical architecture, specifications are important to software architecture - for example, a software
architecture may specify that e-mail systems must be MIME-compliant, that databases must support SQL/3, Web browsers must
support ECMAScript, and so on.
System Architecture
The system architecture of a computer system is a set of policies and idioms for the design of systems. Some examples of
logical idioms include:
- Pipe and filter architecture
- Layered architecture
- Simulation and feedback architecture
- Distributed system architecture
Some examples of policies are:
- Repository policies
- Client-server policies
- Management of change policies
- Retention and backup policies
- Authorization policies
- Information sharing policies
It is harder to design specifications for system architecture (because the components it deals with are more abstract), but it is
possible to do so. Although we speak of policies and idioms, that is not to say that system architectures do not have
components and interfaces. In a system architecture, however, a "component" may be as small as a software fragment (e.g.,
an applet) or it may be a complete Web server farm. The granularity of system architecture depends on the problem one is
attempting to model.
System architecture is essential if we hope to deploy a knowledge management system. Knowledge management is a new
and volatile field that means different things to each vendor that claims to provide a knowledge management solution. In
most cases, knowledge management is a combination of data warehousing, knowledge representation, powerful search tools,
and collaboration mechanisms that enable a business to retain and access more of its intellectual assets. At this time no
one-vendor product suite addresses all aspects of knowledge management in a satisfactory manner; knowledge management
architectures are still in their infancy. Thus, it is incumbent upon each business that targets knowledge management as a key
strategic initiative to define its own system architecture and to ensure that this architecture will contribute to a knowledge
management deployment.
Although not as easy to specify, system architecture is an arena of great importance to the strategic direction of a
corporation. Many specific technology choices do not dramatically impact a company's information future; whether one buys
PC workstations from X or Y computer vendor is largely a matter of price and past experience, and the decision to choose X
or Y is easily modified. The use of a web browser as the standard interface of choice is
also making decisions about software vendors less strategic.
What is fundamental is an organization's choice of system architecture. If a distributed solution to information management is
chosen, it will not be easily altered later on to a centralized solution, no matter what computers or software packages are
selected. If a corporation chooses to let its subsidiaries manage their own data, this decision is not easily reversed, if only
because the skills of central management will be allowed to atrophy.
Not everyone understands or cares about physical or software architecture. Most users of computer systems simply want a
computer that works, software similar to that of their colleagues, and the ability to access the information that they need to
do their job. But the same is not true of system architecture. Every employee needs to know where to find information, and
where to put information that they have developed - which implies at least a basic knowledge of the system architecture.
System architecture thus serves an important role as a means of communicating some of the basic and stable aspects of the
information system.
Architecture Goals and Objectives
The measure of a good system architecture is that it delivers the corporation's desired goals and objectives. Therefore, it is
important that goals be defined clearly in terms of themes that express the abilities of the desired system:
- Productivity
- Efficiency
- Scalability
- Interoperability
- Vendor Independence
- Reduction of Life-Cycle Costs
- Security
- Management
Productivity
User productivity improvements can be realized through the following objectives:
- Consistent User Interface:
A consistent user interface will ensure that all user accessible functions and services will appear and behave
in a similar, predictable fashion regardless of application or site. This will lead to better efficiency
and fewer user errors, which in turn may result in lower recovery costs.
- Integrated Applications:
Applications available to the user will behave in a logically consistent manner across user
environments, which will lead to the same benefits as a consistent user interface.
- Data Sharing:
Databases will be shared across the organization in the context of security and operational considerations,
leading to increased ease of access to required data.
Efficiency
The efficiency of development efforts can be improved through the following objectives:
- Common Development:
Applications that are common to multiple business areas can be developed or acquired once
and re-used rather than separately developed by each business area.
- Common Open Systems Environment:
A standards-based common operating environment which accommodates the
injection of new standards, technologies and applications on an organization-wide basis can be established. This
standards-based environment can provide the basis for development of common applications and facilitate software
reuse.
- Use of Products:
As far as possible, hardware-independent, off-the-shelf items should be used to satisfy requirements in
order to reduce dependence on custom developments and to reduce development and maintenance costs.
- Software Reuse:
For those applications that must be custom developed, development of portable applications will
reduce the amount of software developed and add to the inventory of software suitable for reuse by other systems.
- Resource Sharing:
Data processing resources (hardware, software and data) can be shared by all users requiring the
services of those resources. Resource sharing can be accomplished in the context of security and operational
considerations.
Scalability
The scalability of applications can be achieved through the following objectives:
- Portability:
Applications that adhere to Open Systems standards will be portable, leading to increased ease of
movement across heterogeneous computing platforms. Portable applications can allow sites to upgrade their platforms as
technological improvements occur, with minimal impact on operations.
- Configurable:
Applications that conform to the model will be configurable, allowing operation on the full spectrum of
platforms required.
Interoperability
Interoperability improvements across applications and business areas can be realized through the following objectives:
- Common Infrastructure:
The architecture should promote a communications and computing infrastructure based on
open systems and systems transparency including, but not limited to, operating systems, database management, data
interchange, network services, network management and user interfaces.
- Standardization:
By implementing standards-based platforms, applications can be provided that will be able to use a
common set of services that improve the opportunities for interoperability.
Vendor Independence
Vendor indenpedence will be increased through the following objectives:
- Interchangeable Components:
Only hardware and software that has standards-based interfaces should be selected, so
that upgrades or the insertion of new products will result in minimal disruption to the user's environment.
- Non-proprietary Specifications:
Capabilities should be defined in terms of non-proprietary specifications that support
full and open competition and are available to any vendor for use in developing commercial products.
Reduction of Life-Cycle Costs
Life-cycle costs can be reduced through most of the objectives discussed above. In addition, the following objectives directly
address reduction of life-cycle costs:
- Reduced Duplication:
Replacement of isolated systems and islands of automation with interconnected open systems will
lead to reductions in overlapping functionality, data duplication and unneeded redundancy, because open systems can
share data and other resources.
- Reduced Software Maintenance Costs:
Reductions in the quantity and variety of software used in the organization will
lead to reductions in the amount and cost of software maintenance. Use of standard off-the-shelf software will lead to
further reductions in costs since vendors of such software distribute their product maintenance costs across a much
larger user base.
- Incremental Replacement:
Common interfaces to shared infrastructure components allow for phased replacement or
upgrade with minimal operational disturbance.
- Reduced Training Costs:
Common systems and consistent human computer interfaces will lead to reduced training costs.
Security
Security will be improved in the organization's information through the following objectives:
- Consistent Security Interfaces for Applications:
Consistent security interfaces and procedures will lead to fewer
errors when developing applications and increased application portability. Not all applications will need
the same suite of security features, but any features used should be consistent across applications.
- Consistent Security Interfaces for Users:
A common user interface to security features will lead to reduced learning
time when moving from system to system.
- Security Independence:
Application deployment can use the security policy and mechanisms appropriate to the
particular environment if there is good layering in the architecture.
Management
Management improvement can be realized through the following objectives:
- Consistent Management Interface:
Consistent management practices and procedures will facilitate management across
all applications and their underlying support structures. A consistent interface can simplify the
management burden, leading to increased user efficiency.
- Reduced Operation, Administration and Maintenance Costs:
Operation, administration and maintenance costs may be reduced through the availability of improved
management products and increased standardization of the objects being managed.