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.

Technology Overview
Product Lifecycle Management
Enterprise Content Management
Electronic Document Management
System Architecture