We propose a design methodology for computationally intensive applications that is based on refinement by composition and transformation of multiple descriptions of different aspects of the system under design. By doing so, we want to achieve a separation of concerns and a localisation of design decisions. We want to exploit these properties to improve the design of families of implementations with similar functionality but different requirements.