Currently, the AOCS software is rewritten from scratch for every new system. Yet, the fact that the overall structure and requirements of an AOCS change little from mission to mission should allow a substantial level of reuse. For instance, all AOCS systems must be able to process telecommands, to generate telemetry, to perform failure detection checks, to implement control laws, etc. This project uses framework technology to capture this commonality of functionality and to make it re-usable across projects.
Software frameworks are a promising application of object-oriented technology that promote the reuse, extensibility and maintainability of software. They are well-established in the area of system software (graphical user interfaces, editors, operating systems). Frameworks differ from other re-use technologies because they make architectural (as opposed to code) re-use possible.
Back to Top, Back to Aocs Framework Project Home
Technological advances can be used either to expand the functionality of a class of software or to improve its quality. Historically, the emphasis has been on the former task. This is why successive revolutions in software engineering - the transition to compiled languages, then to procedural languages, and still later to modular languages - have not had a major impact on software quality (programs are as error prone and as poorly readable/reusable today as they were in the sixties!). The intention of this project is to concentrate on the latter task. Hence, the AOCS Framework covers only the present functionalities of AOCS systems. By constraining functionality to its present level, technological advances will be leveraged to improve quality and reduce development costs.
The framework design is therefore based on the following assumptions:
The term component is used here designates a binary unit of reuse that can be configured for use in a specific application at run-time. Real Time Operating Systems (RTOS) are examples of components with non-standard interfaces in use in the real-time field. RTOSīs offer a reusable solution to a specific problem and can be purchased as off-the-shelf items. This project attempts to show that in an AOCS system there are other parts of the software that can be packaged as reusable entities.
Collections of components with predefined cooperations among them are called frameworks. Frameworks capture an architectural design optimized for a specific domain. They predefine the composition and interaction of the components of a system while at the same time allowing for customization by providing hooks where default behaviour can be overridden. Frameworks differ from other reuse technologies because they make architectural (as opposed to code) reuse possible and because they rely on object composition and inheritance as functionality-extension mechanisms.
Software frameworks are built on object-oriented languages. The AOCS framework is being developed in C++ but could be ported to other OO languages.
Back to Top, Back to Aocs Framework Project Home
The question that was asked early in the AOCS project was: if the management of functionalities like task scheduling can be encapsulated in application-independent and hence reusable components, why shouldn't the same be possible for typical AOCS functionalities like telecommand management, telemetry management, controller management, failure detection and recovery management, etc?
A large part of the design of the AOCS framework can be seen as an attempt to provide a positive answer to this question. This was done by first isolating the functionalities present in an AOCS and then systematically applying to each the reusability model of the RTOS. This approach resulted in an architecture that sees the AOCS framework as a domain specific extension to the operating system.
Click here for a more detailed description of the framework architecture.
Back to Top, Back to Aocs Framework Project Home
At unit level, framework components were tested through conventional test harnesses that provide an environment within which the component under test can be embedded and its behaviour verified.
At system level, the prototype framework was used to instantiate a prototype AOCS application. The AOCS prototype is a simplified AOCS software which is implemented using the constructs offered by the AOCS prototype framework. It is not intended to be representative of any real AOCS. Its interest lies simply in the extent to which it allows the functionalities of the AOCS prototype framework to be exercised and the constructs exported by it to be utilized.
The AOCS prototype was tested on an ERC32 target simulator where measurements were also performed to estimate the overheads in terms of memory and CPU usage that are introduced by the use of framework technology. The results of these measurements are presented here.
It should be stressed that the amount of testing performed on the framework prototype is inadequate to allow its immediate operational usage. The objective of the AOCS framework study was not to develop a product for commercial use but rather to test and assess a new and promising technology. The prototype framework would however be suitable as a basis for the development of a commercial AOCS framework.
Back to Top, Back to Aocs Framework Project Home
Back to Top, Back to Aocs Framework Project Home
Back to Top, Back to Aocs Framework Project Home
Framelets are "small frameworks" that solve, as self-standing units, specific problems within the framework. They make no assumptions about application execution control and are designed to be composed with each other. A framework is obtained as a combination of framelets. Framelets simplify the development and extension of frameworks, and make their integration with other frameworks and with other software simpler.
Implementation cases are introduced as ways to continuously monitor the adequacy of an evolving framework design. They describe an aspect of the framework instantiation process by specifying how an architectural feature for an application can be implemented using the constructs offered by the framework. Implementation cases narrow the abstraction gap between frameworks and application by forcing designers to think about the reification of the abstractions they are creating while at the same time giving them the opportunity to test the adequacy of these abstractions. Implementation cases can also be used to specify a framework or as cookbook-style recipes to document its usage.
Click here for an overview of follow-up projects for the AOCS Framework Project.
Back to Top , Back to Aocs Framework Project Home