The European Space Agency (ESA) has created the Simulation Model Portability 2 (SMP2) standard with the purpose to provide a design solution for the project of Spacecraft Simulators.

In object orientation, the distinctive features of an object are expressed in interfaces which are used to specify the interactions between objects. In these conditions, the planning of the coding activity can be done by describing the objects and the business logic they share. If these descriptions are written before any programming language specialisation, we can call them design artefacts, or design models.

A different approach to the design of software is the specification of code functionalities through test code. Using only test code it is possible to design a piece of software before entering the stage of source code development. Similarly to design models, test code is a design artefact, but it does not follow a pre-defined semantic scheme as per design models. Nonetheless, test-driven development is a restrained process, carried out in closed loop through source code refactoring. While the model-driven design approach is appropriated for the development of component-based software systems, the technique of test code is well suited for the development of software frameworks.

The design solution reported in this dissertation aggregates the principles of both software architectures. The objective is to invert the top-down strategy of model-driven development with the SMP2 standard into a bottom-up development process of a SMP2 framework. The proposed solution also considers two development lines of two different frameworks: the first is the SMP2 framework that changes according to the design models, and the second is a framework destined to support the development of reusable behaviour implementations. Rather than refining the code headers derived from the design models, the behaviour implementations are developed separately and without a direct knowledge of the SMP2 framework. Two phases of decoupling are foreseen: the first decouples interface descriptions from code headers, and the second decouples code headers from behaviour implementations.

The transformation between design models and code headers is automated by the model-driven development environment, but the linking to the behaviour implementations must be made manually. The code that effectuates this task is designated as mission specific. The articulation of both framework and their components is accomplished by the GNU Build System. This tool provides modelling languages to specify dependencies between source packages and automate the process of makefile generation. Together with mission specific code, the possibility to model software dependencies at code level gives the developers the chance to combine components of both frameworks easily.