Distributed Systems, Distributed Design
A distributed systems approach can be an effective tool in software development for space missions. Read on to find out what a distributed system is and how it impacts the development and operations of a space system.
What is a distributed system?
A distributed system is a collection of computing elements that are all executing simultaneously and at least semi-independently. They can be on the same computer or different ones, they can also be simple or complex. Traditionally, you would think of a distributed system as a network, but it can also be operating on a single processor. A distributed system aims to achieve a common goal or implement a desired behaviour.
Space systems are already inherently distributed between space and ground, but it is important to see them as a whole, as a single system, where the responsibility is shared between computing elements.
However, the distribution does not have to stop at “space and ground”, it can be further extended to include multiple onboard computers, various smart payloads or even multiple satellites to form clusters and constellations. And while all the separate elements of such a system (e.g. multiple OBCs or multiple satellites) have their own functionality, only by working together they can complete the mission objectives.
The design of a distributed system, even if it needs to be extended beyond the “space and ground” elements, relies on different factors:
- mission objectives
- how the elements connect
- how they communicate with each other
- how the data is passed between them
- if there’s any automation
- where responsibilities lies
A relatively simple satellite with a single OBC for platform control and a single payload may not need a complex distributed system. But it is still important to view this as distributed as there are different elements working together to fulfil the mission, including the ground segment. A more complex system with multiple OBCs controlling the platform and multiple intelligent payloads can really benefit from the distributed approach.
Distributed systems come with their own challenges.
Having multiple elements means working with multiple interfaces. Integrating them together can be tricky.
From the operator’s perspective, it can be difficult to identify where issues occur. For example, if an operator wants to send a simple high level command to the spacecraft (e.g. “go to mission mode A”) and gets a failure message, it can be hard to identify where it happened in the system.
One way to try and stop this from happening is to develop elements that are loosely coupled and have a well-defined interface. This way the elements have clearly designed roles to perform, can be developed in complete isolation and are easier to test and re-use.
However, the challenge of multiple interfaces still remains, and this is where using the model-based approach can be very useful. It allows you to describe your entire distributed system in a model and use tooling to generate the interface software for communication between the various elements. This approach significantly reduces the complexity and removes human error.
Operating a distributed system means having multiple interactions to achieve overall system behaviour. You can reduce the complexity of operations by splitting and distributing the responsibility between elements. This means the operator has less orchestration to do and it makes automation a lot easier.
In practice, this means that when the operator executes high level commands (e.g. “go to mission mode A”), they do not need to worry about all the details happening in the background and can fully focus on achieving the desired behaviour.
If you do not distribute responsibility, the elements will not be able to work independently of the operator. This does keep the operator more in control, but it decreases the operability and makes it more difficult to automate the mission.
Viewing space systems as distributed can be a powerful approach, as it offers significant development and operational benefits. Our product suite is model-based and is designed to support distributed systems.
Learn more: Book a demo
We run regular demo sessions for our Flight Software Development Kit and Mission Control Software that you can book at any time. These are group sessions but you can join anonymously and participate as much or as little as you like. Book demo today.