The current flight software approach is monolithic in nature. Every module has tentacles that reach deep within dozens of other software modules. Because of these interdependencies between modules, functionality is difficult to extract and reuse for other missions.
A component software approach was deployed via a SysML model to a partitioned operating system that provides mechanisms to enforce strict time and memory space isolation between components. The component design enforces concrete interfaces that restrict communication across well-defined channels and ports to encapsulate functionality. The component modeling approach provides a plug-and-play mechanism for generation and configuration of implementation code. The objective is to demonstrate that a single modeling artifact can be used for both analysis and rapid deployment of software components on a partitioned or multicore real-time system.
The software application component model becomes the basis for analyzing the software architecture and auto-generating flight code to be run on a variety of different platforms in various partitioned configurations. Casting the software application into a formal model enabled explicit representation of a software architecture composed of components that only communicated to other components through interfaces represented as SysML ports. Ports are strongly typed and can only connect to other ports of the same type. SysML stereotypes indicate different types of components as active or passive. In addition, the component port interfaces are stereotyped as synchronous versus asynchronous, indicating methods of communication.
The model lent itself to analysis and was the source from which all components, ports, and communication lines were automatically generated. Once the model was constructed, the software developer manually developed functional code snippets to flesh-in the details within a component.
This work was done by Garth J. Watney, Timothy K. Canham, and Leonard J. Reder of Caltech for NASA’s Jet Propulsion Laboratory.