Component Benefits Example


In order to understand the benefits of implementing the AOCS Framework components using a component standards, consider the problem of reporting data to telemetry. The skeleton of an object-oriented architecture for this problem was presented in another example. The proposed design is based on the following abstract class (represented using C++ style):

     class Telemeterable {
      void writeToTelemetry()=0;
     }

This class encapsulates the fundamental functionality required for telemetry data handling, namely the ability of an object to write its own state to a telemetry stream. The classes of objects whose state might have to be sent to telemetry are made to inherit from class Telemeterable. This means that they will have to provide an implementation for the writeToTelemetry method. The telemetry manager now must simply keep a list of references to objects of type Telemeterable and must periodically call method writeToTelemetry on each object in the list. The resulting architecture is shown in the figure:
 

The arrows indicate an inheritance relationship. The red box is the telemetry manager. This is an application-independent and hence fully reusable component. In the current implementation, the telemetry manager and its telemetry obects must reside in the same address space since the telemetry managers handles the telemetry objects through pointers to objects of type Telemeterable.

Telemetry management is a function that is usually performed by every subsystem on a satellite. If the subsystems are physically located on different processors, or even only in different partitions on the same processor, then each subsystem will require its own telemetry manager component. This is clearly wasteful. A more efficient architecture has a single telemetry manager that is able to see all its telemetry objects as if they resided in the same address space. A component infrastructure provides precisely the mechanisms to make this possible. This situation is shown in the next figure where the dashed line represents the boundary between the processor where the telemetry manager is located (normally the satellite central computer) and another processor (for instance, the AOCS computer). The telemetry manager performs calls to method writeToTelemetry upon objects that may reside on other processors (or in different partitions on the same processor) but is unaware of any difference with respect to the case of local method calls. The translation from one address space to another and the shuffling of any method parameters is done by the component infrastructure invisibly to the telemetry manager or its clients.
 

The basic implementation of the telemetry manager is as follows:

    Telemeterable* list[N];
    . . .
    for (all objects  in list) do
        list[i]->writeToTelemetry();

Unless a component infrastructure is assumed, the telemetry manager must reside in the same process (same address space) as the telemetry objects. Moreover, in practice, it will often be necessary for all participants in the telemetry management architecture to have been written in the same language and compiled with the same compiler.

If, however, both the telemetry manager and the telemetry objects are implemented on top of a component infrastructure (such as for instance CORBA or COM) then the telemetry manager may reside in one process and the telemetry objects may reside in other processes or even on other processors. This would make it possible to have on a satellite one single telemetry manager component located in the satellite computer that is responsible for controlling the telemetry flow from objects residing in all other satellite processors (eg. the AOCS computer).

Back to Framework Design Principles, Back to Aocs Framework Project Home


Last updated on Feb. 5-th 2002 by Alessandro Pasetti