| ||Generic architectures|
The topic addresses generic architectures primarily with a view to reusing them in a given application domain.
Existing generic architectures and frameworks
OBOSS implements a generic architecture compliant with the CCSDS/ECSS Packet Utilisation Standard.
The AOCS Framework, complemented with data handling in the OBS Framework, aims at testing many techniques for architectural genericity; in particular design patterns, abstract interface, components, feature engineering, and Aspect weaver.
PISA is a software framework for integrated satellite payload controllers, based on Linux, allowing the separate development of several Principal Investigator applications on Linux systems. The applications are then integrated on the flight instrument.
In the frame of the on-board software harmonisation exercise, it is proposed to define common on-board software generic architectures implementing various avionics families, for example based on dependability criteria. The goal is to allow the emergence of clearly identified building blocks, with standardised interfaces, in order to make the integration easier and shorten the schedule.
The generic architectures will be developed in the frame of SOIS, a CCSDS standard defining the on board interface of the communication layers.
Techniques for genericity
Several ways of instantiating a framework for a particular application within the domain have been tried, in particular:
- turning the classes of the framework into the shape of a JavaBean in order to take advantage of a commercial BeanBuilder. However, BeanBuilders need classes with a graphical effect in order to combine them, and a ‘visual proxy’ had to be added to each of the classes
- expressing the variability of each class in an XML description, providing an XSD-based instantiation of the description in a configuration, and then modifying each class from this XML configuration
- using the notion of features to describe the variability of the application functionalities
- using the notion of Aspects to express the variability of various standpoints on a ‘passive’ code skeleton. An Aspect Weaver uses the Aspect language to transform the code skeleton into the desired code
- combining Aspects and Metadata (crosscutting concerns of the system's modules), where the Aspects provide the methodology and a Metadata repository provide a framework storing and managing the aspect-associated metadata. The framework, XML-based, helps developping tools to structure the knowledge, detect conflicts, and document.
Last update: 2 August 2007