Author/Authors :
Emmanuel Ohayon، نويسنده , , Matthieu Lemerre ، نويسنده , , Vincent David، نويسنده ,
Abstract :
A good way to build secure systems is the top-down approach, where each step refines the software towards the final implementation. The result is well-integrated, but quite monolithic. Consequently, further extensions often lead to an overuse of preprocessor conditionals and some code duplication. It is then important to refactor and modularize the code, with the goal of increasing maintainability and code reuse.We are trying to apply this process to the implementation of the OASIS [9] kernel, an execution support for hard real-time safety critical applications. Modularizing this software has specific requirements. First, the configuration has to be chosen at compile-time (in particular, qualification for use in safety-critical environments requires that no dead code remains in the system). Second, modularity should not impact the degree of performance, in terms of execution time and memory footprint (for instance, modularity should not imply new indirections, like C++ virtual method tables). Thus, the tool should allow the static selection of a subset of the code in order to implement a specific behavior.CONFIGEN is the tool we built to that end. It is composed of two main parts. The first one is an interactive tool that helps selecting correct software options with respect to the dependencies between the modules, and is based on propositional logic. The second part builds the source code following the set of selected options.The paper is divided as follow. Section 2 explains the concepts and goals of Configen. Section 3 provides a set of good practice rules with concrete examples on how to use CONFIGEN, as well as our experience using it with the OASIS kernel [9]. Section 4 presents our current prototype, and the theoretical problems of its core component, the logic solver. Section 5 presents related works, and section 6 concludes.