Types of interfaces in product and process architectures
In the parlance of system architecture, an interface is a point of contact between interacting system elements and other subsystems or environment at the system boundaries. Interfaces can also be seen as contracts definitions between elements that are interacting with one another.
Interfaces between interacting system elements are known as internal interfaces while interfaces with other subsystems or environment at the system boundaries are considered as external interfaces.
This post documents the types of interfaces that we will typically find in product and process architectures. Note that the types are not mutually exclusive; an interface can be in the form of different types.
Most of the time, attachment interfaces are physical contact points that defines how components "stick" on both ends of the interaction. Interacting components usually have different physical forms that allow them to be interlocked.
Examples of attachment interfaces include:
- The studs, tubes and bars of lego bricks.
- The headphone jack on the headset.
- The headphone socket on your phone.
- The Peripheral Component Interconnect express (PCIe) slot on your computer motherboard.
- The Peripheral Component Interconnect express (PCIe) connector on your graphics card.
Spatial (volumetric) interfaces
Spatial or volumetric interfaces define contact points through space or volume restrictions. Examples of spatial or volumetric interfaces include:
- The size of your car boot, which determines how much you can carry in your car per trip.
- The dimensions of the display screen on your phone which determines who much of the web page that you can view at once.
- The storage space on your hard disk which determines how many videos that you can keep in it.
- The build chamber of your 3D printer which determines the maximum size of the 3D object that you can print.
Transfer interfaces are contact points that perform transformation of input and return the transformation as output. Transfer interfaces are very common in computer technology.
Examples of transfer interfaces can include:
- The VGA to HDMI Converter for you to connect your laptop with VGA port to the monitor which only supports HDMI connections.
- The power line adapter that transforms computer network signal into electrical signal and vice versa.
- Solar panel that transforms sunlight to electricity.
- The video converter software that converts one video file format to another.
- The Win32DiskImager software that writes operating system images to SD cards for running Raspberry Pi.
Control and communication interfaces
Control and communication interfaces are contact points which allow system elements to send signals to other system elements to perform certain tasks.
Examples of control and communication interfaces include:
- The traffic lights which signal drivers on the road to stop or continue driving the car.
- The remote controller which sends driving instructions to the remote control car.
- The air traffic controller who signals the pilot of an aircraft to land his/her airplane on the runway.
- The Basic Input/Output System (BIOS) that sends the signals to start the computer system when you switched on your computer.
- The wireless presenter that you use to signal your computer to display another slide in your presentation.
User interfaces define the contact points for users to interact with elements within the system. In user interactions, the human user is seen as being part of the system of concern.
Examples of user interfaces can include:
- The steering wheel on your car which you use to maneuver the car.
- This web page that you are reading, which allows you to view other content on Techcoil.
- Your Facebook wall which allows you to check out what your friends had shared with you or the public.
- The dashboard on your washing machine which allows you to determine how you want your washing machine to wash your clothes.
- The touch screen on your smartphone which provides you with an array of functions to control your phone.
A system environment can be described as the outside world of your system of concern. An environment interface is the contact point where elements of your system can interact with the system environment. Interactions from the environment can affect your system of concern in unintended ways.
Examples of environment interfaces can include:
- Your mouth that eat the breakfast from your plate.
- The HTTP endpoint of your C# web server or PHP web application that receives HTTP requests from unknown web browsers.
- Your corporate HTTP proxy server that sends HTTP requests on behalf of your workstation.
- The Nginx server of your LEMP stack that routes HTTP requests from web browsers to your WordPress site on your Raspberry Pi.
- The firewall in your operating system that decides the kind of network packets that can get into your computer.