Subsystem Interface
In this topic, we will define the boundary of your design, the subsystems, and the relationships and interactions between them. A subsystem interface can be used as a control tool to manage how different subsystems interact, and what signals the modules can expect to send and receive.
Example applications
Subsystem interface maps are used frequently in electronics in the form of schematic diagrams. These schematics trace the expected inputs and outputs of components, and by studying the schematic you can figure out how the circuit works. Some components act as ‘black boxes’, where it is not necessary to describe the internal behaviour. This is exactly the same principle for Subsystem Interfaces.
Similar to…
Subsystem interfaces are similar to classes and subroutines in software programming. A function or class will receive an input, conduct some processing, and send an output. If a data structure changes, it will have an effect on the whole program, and so establishing the expected input and output types is very important.
Steps
Constructing a Functional Block Diagram is the first step, describing what functions are packaged into each subsystem. This is easily created from the Functional Allocation step.
- cluster the brainstormed system elements from your model boundary chart and functional analysis
- decide what the subsystems are, keeping in mind that you are aiming to reduce interdependence between subsystems
The second step is to move from functions to components, and to start describing the physical components:
- replace the functions with physical subsystems and components
- each system and subsystem should have inputs and outputs, and that relationship should be drawn using an arrow. Each arrow should have a label describing what is travelling (eg wireless signal, heat) and what units/standards are involved (eg 802.11n, joules)
- consider might be external elements that the system relies on (eg. wireless transceiver)
Hints
- If your system is large, it may be worthwhile constructing a system-level interface, and then drawing the subsystems separately down to the component level
- Ensure that you are using standard interfaces between subsystems
- Consider modularity in your design - a goal to strive for is for each subsystem to be replaced without requiring re-engineering of other subsystems.
- Is your system prone to failure? What redundancies may be required to ensure safe operation?