Hardware architecture
From Wikipedia, the free encyclopedia
Hardware is an expression used within the engineering disciplines to explicitly distinguish the (electronic computer) hardware from the software which runs in it. But hardware, within the automation and software engineering disciplines, need not simply be a computer of some sort. A modern automobile runs vastly more software than the Apollo spacecraft; yet neither is seen as a computer. Similarly, a modern aircraft cannot function without running tens of millions of lines of software code, yet it too is not seen as merely a computer. Hardware may also represent the physical elements of an analog or hybrid computer.
Hardware architecture can best be thought of as a representation of an engineered (or To Be Engineered) electronic or electromechanical hardware system, and the process and discipline for effectively implementing the design(s) for such a system. It is generally part of a larger system encompassing information and software.
It is a representation because it is used to convey information about the related elements comprising a hardware system, the relationships among those elements, and the rules governing those relationships.
It is a process because a sequence of steps is prescribed to produce or change the architecture, and/or a design from that architecture, of a hardware system within a set of constraints.
It is a discipline because a body of knowledge is used to inform practitioners as to the most effective way to design the system within a set of constraints.
A hardware architecture is primarily concerned with the internal electrical (and, more rarely, the mechanical) interfaces among the system's components or subsystems, and the interface between the system and its external environment, especially the devices operated by or the electronic displays viewed by a user. (This latter, special interface, is known as the computer human interface, AKA human computer interface, or HCI; formerly called the man-machine interface.)
[edit] Background
Prior to the advent of digital computers, the electronics and other engineering disciplines used the terms system and hardware as they are still commonly used today. However, with the arrival of digital computers on the scene and the development of software engineering as a separate discipline, it was often necessary to distinguish among engineered hardware artifacts, software artifacts, and the combined artifacts.
A programmable hardware artifact, or machine, that lacks its software program is impotent; even as a software artifact, or program, is equally impotent unless it can be used to alter the sequential states of a suitable (hardware) machine. However, a hardware machine and its software program can be designed to perform an almost illimitable number of abstract and physical tasks. Within the computer and software engineering disciplines (and, often, other engineering disciplines, such as communications), then, the terms hardware, software, and system came to be used to distinguish among the hardware which could run a software program, the software program itself, and the hardware device complete with its program, respectively.
The hardware engineer or architect deals (more or less) exclusively with the hardware device; the software engineer or architect deals (more or less) exclusively with the software program; and the systems engineer or systems architect is responsible for seeing that the software program is capable of properly running within the hardware device, and that the system composed of the two entities is capable of properly interacting with its external environment, especially the user, and performing its intended function.
A hardware architecture, then, is an abstract representation of an electronic and/or an electromechanical device which is capable of running a fixed or changeable program. It is generally some form of analog, digital, or hybrid electronic computer and/or its electronic and mechanical accessories. A good architecture may be viewed as a 'partitioning scheme,' or algorithm, which partitions all of the system's present and foreseeable requirements into a workable set of cleanly bounded subsystems with nothing left over. That is, it is a partitioning scheme which is exclusive, inclusive, and exhaustive. A major purpose of the partitioning is to arrange the elements in the hardware subsystems so that there is a minimum of (electrical) communications needed among them. In both software and hardware, a good subsystem tends to be seen to be a meaningful "object." Moreover, a good architecture provides for an easy mapping to the user's requirements and the validation tests of the user's requirements. If everyone keeps to the religion, a mapping also exists from every least element to every requirement and test.
A robust hardware architecture is said to be one that exhibits an optimal degree of fault-tolerance, backward compatibility, forward compatibility, extensibility, reliability, maintainability, availability, serviceability, usability, and such other ilities as necessary and/or desirable.
[edit] See also
- Principles of system architecture
- Systems architecture / Systems architect
- Software architecture / Software architect
- Hardware architect
- Software engineering / Software engineer
- Requirements analysis / Requirements engineer
- hardware design
- Electrical engineering / Electrical engineer
- Electronics engineering / Electronics engineer