There are many open challenges and current / future research directions for self-aware systems. We have shown that self-modeling systems address many of them, but we have not yet seen many replicable experiments that allow methods and results to be shared. In this paper, we describe an architecture for self-modeling systems, and how we expect to use it for experiments in self-awareness. These experiments support a system development and verification process that extends from system conception / definition time through run time operation.Self-Modeling, like Self-Awareness, is an approach to reach a goal, not an end in itself. The goal is survivability in difficult environments, and as much operational competence as possible. We think that run-time models are a minimum necessity for significant self-awareness, and our architecture makes significant use of them throughout.The theme for this paper: this is a beginning description of a reference architecture for a software controlled system that allows / encourages infrastructure analysis and performance prediction. It facilitates the evaluation of design choices at system definition time, so we can then specialize it to the expected run-time environment and specified run-time behavior constraints without losing the capability to "re-specialize" the architecture when the environmental conditions change.