The term design is often used in a very informal way with very few constraints or rules. Here, it means the application of appropriate techniques to the specification and implementation of a technical system in order to achieve an intended set of outcomes and avoiding unwanted effects.
The Internet of Things (IoT) is an umbrella term covering a wide range of actual systems and applications. An essential feature of an IoT application is the use of small devices embedded in the physical environment which collect data via sensors, intiate physical actions or both. These edge devices are connected via the Internet to more powerful processing services which store and analyse the data collected, perform automatic control and management functions and provide an interface for the user.
The range of edge devices, methods of communication and types of application is vast, and the number of ways they can be combined is even larger. Fitting a solution to a given problem thus involves a complex series of choices over individual elements and over the ways they communicate together in order to achieve the intended goal.
In such a complex area, it is common to take an abstract perspective in order to escape some of the details of a particular solution. The main value of abstraction is that it can capture those aspects of a situation which are common from one case to another. This can help the design process in a number of ways such as breaking a task down into smaller sub-tasks, and identifying fundamental features.
One common method for defining the high-level requirements of a system is the Use-Case Diagram from Universal Modeling Language (UML). Figure 1 shows the result of applying the Use-Case Diagram to a typical IoT application.
The use cases shown in Figure 1 are described by the ITU as follows:
IoT sensing or actuating
Connecting with physical things, sensing the states of physical things or actuating the physical things
IoT data management
Capturing, transferring, storing and processing the data of physical things
IoT service provision
Providing services by the service provider and using services by the IoT user
IoT privacy protection
Securing and hiding the private information of the physical things
Viewing IoT systems in this way makes explicit the need for management and service provision functions. It also draws attention to the need for security features and indicates how those features are linked to the other use cases. However, significant additional detail is needed before an actual application can be specified. This is the nature of abstract models: they capture the main functional elements of a system and show how they interact, but their component parts are simply containers which need further elaboration in practice.
Two main concepts are discussed in these notes. The first is the idea of a reference system architecture which provides a structural perspective on the main elements of a system and their inter-relationships. The second is the design pattern which is relevant at a lower level of detail and provides a guiding framework for implementing a particular system function. Both techniques can be thought of as encapsulating the experience of previous designers in a way that can be used in a practical way in other contexts.
By using abstractions like architectures and patterns, the designer is obliged to take a top-down approach to system specification. This has a number of benefits:
- The main components of the eventual system are mapped out from the beginning
- It reduces the chance of incompatibilities between different parts of the system
- It ensures that major elements are not overlooked
- It avoids the need for trial-and-error
- It avoids rework when attention turns to a new system component