page_title: Hardware architecture
section_title: Background
hierarchical_section_title: Hardware architecture / Background
caption_attribution_description: English: mbbradford, i made this image myself
context_page_description: In engineering, hardware architecture refers to the identification of a system's physical components and their interrelationships. This description, often called a hardware design model, allows hardware designers to understand how their components fit into a system architecture and provides to software component designers important information needed for software development and integration. Clear definition of a hardware architecture allows the various traditional engineering disciplines to work more effectively together to develop and manufacture new machines, devices and components.
  Hardware is also an expression used within the computer engineering industry to explicitly distinguish the hardware from the software that runs on 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.
context_section_description: 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 computer 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 programming 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 distinguish between the hardware that runs a computer program, the software, and the hardware device complete with its program.
  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 program; and the systems engineer or systems architect is responsible for seeing that the programming 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 or an electromechanical device capable of running a fixed or changeable program.
  A hardware architecture generally includes some form of analog, digital, or hybrid electronic computer, along with electronic and mechanical sensors and actuators. Hardware design may be viewed as a 'partitioning scheme,' or algorithm, which considers all of the system's present and foreseeable requirements and arranges the necessary hardware components into a workable set of cleanly bounded subsystems with no more parts than are required.  That is, it is a partitioning scheme that 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 connections and electronic communications needed among them.  In both software and hardware, a good subsystem tends to be seen as a meaningful "object."  Moreover, a clear allocation of user requirements to the architecture (hardware and software) provides an effective basis for validation tests of the user's requirements in the as-built system.
caption: A hardware architecture example, which is integrated as a handheld medical device for diabetes monitoring.
exif: {"Image ImageDescription": "OLYMPUS DIGITAL CAMERA", "Image Make": "OLYMPUS CORPORATION", "Image Model": "X250,D560Z,C350Z", "Image Orientation": "Horizontal (normal)", "Image XResolution": "72", "Image YResolution": "72", "Image ResolutionUnit": "Pixels/Inch", "Image Software": "GIMP 2.4.5", "Image DateTime": "2009:10:14 19:06:08", "Image YCbCrPositioning": "Co-sited", "Image ExifOffset": "264", "Thumbnail Compression": "JPEG (old-style)", "Thumbnail XResolution": "72", "Thumbnail YResolution": "72", "Thumbnail ResolutionUnit": "Pixels/Inch", "Thumbnail JPEGInterchangeFormat": "1860", "Thumbnail JPEGInterchangeFormatLength": "7758", "Thumbnail YCbCrPositioning": "Co-sited", "EXIF ExposureTime": "1/80", "EXIF FNumber": "23/5", "EXIF ExposureProgram": "Program Normal", "EXIF ISOSpeedRatings": "128", "EXIF ExifVersion": "0220", "EXIF DateTimeOriginal": "0000:00:00 00:00:00", "EXIF DateTimeDigitized": "0000:00:00 00:00:00", "EXIF ComponentsConfiguration": "YCbCr", "EXIF CompressedBitsPerPixel": "2", "EXIF ExposureBiasValue": "0", "EXIF MaxApertureValue": "22/5", "EXIF MeteringMode": "Pattern", "EXIF LightSource": "Unknown", "EXIF Flash": "Flash fired, auto mode", "EXIF FocalLength": "71/5", "EXIF FlashPixVersion": "0100", "EXIF ColorSpace": "sRGB", "EXIF ExifImageWidth": "436", "EXIF ExifImageLength": "420", "Interoperability InteroperabilityIndex": "R98", "Interoperability InteroperabilityVersion": "[48, 49, 48, 48]", "EXIF InteroperabilityOffset": "1718", "EXIF FileSource": "Digital Camera", "EXIF SceneType": "Directly Photographed", "EXIF CustomRendered": "Normal", "EXIF ExposureMode": "Auto Exposure", "EXIF WhiteBalance": "Auto", "EXIF DigitalZoomRatio": "0", "EXIF SceneCaptureType": "Standard", "EXIF GainControl": "Low gain up", "EXIF Contrast": "Normal", "EXIF Saturation": "Normal", "EXIF Sharpness": "Normal"}